From f810ca63f804cd9f9da5e7a788ecc5b638b706c0 Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Thu, 14 Mar 2013 21:54:48 +0100 Subject: [PATCH] lavfi: detect merge failure for unknown layouts. Detect when filtering known layouts from an explicit list results in an empty list. Fix erratic behavior. --- libavfilter/formats.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavfilter/formats.c b/libavfilter/formats.c index 43718e4655..ea2462793e 100644 --- a/libavfilter/formats.c +++ b/libavfilter/formats.c @@ -184,6 +184,10 @@ AVFilterChannelLayouts *ff_merge_channel_layouts(AVFilterChannelLayouts *a, for (i = j = 0; i < b->nb_channel_layouts; i++) if (KNOWN(b->channel_layouts[i])) b->channel_layouts[j++] = b->channel_layouts[i]; + /* Not optimal: the unknown layouts of b may become known after + another merge. */ + if (!j) + return NULL; b->nb_channel_layouts = j; } MERGE_REF(b, a, channel_layouts, AVFilterChannelLayouts, fail);