[FFmpeg-cvslog] avfilter/af_amerge: properly handle unknown input layouts

Marton Balint git at videolan.org
Sun Dec 25 22:11:06 EET 2016


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Thu Dec 15 03:28:20 2016 +0100| [0db48ee4257c16f583b7b077fdbd13cfd0b9f037] | committer: Marton Balint

avfilter/af_amerge: properly handle unknown input layouts

Reviewed-by: Nicolas George <george at nsup.org>
Signed-off-by: Marton Balint <cus at passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0db48ee4257c16f583b7b077fdbd13cfd0b9f037
---

 libavfilter/af_amerge.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c
index 40bf7ab..8ea01e2 100644
--- a/libavfilter/af_amerge.c
+++ b/libavfilter/af_amerge.c
@@ -96,10 +96,15 @@ static int query_formats(AVFilterContext *ctx)
             av_get_channel_layout_string(buf, sizeof(buf), 0, inlayout[i]);
             av_log(ctx, AV_LOG_INFO, "Using \"%s\" for input %d\n", buf, i + 1);
         }
-        s->in[i].nb_ch = av_get_channel_layout_nb_channels(inlayout[i]);
-        if (outlayout & inlayout[i])
+        s->in[i].nb_ch = FF_LAYOUT2COUNT(inlayout[i]);
+        if (s->in[i].nb_ch) {
             overlap++;
-        outlayout |= inlayout[i];
+        } else {
+            s->in[i].nb_ch = av_get_channel_layout_nb_channels(inlayout[i]);
+            if (outlayout & inlayout[i])
+                overlap++;
+            outlayout |= inlayout[i];
+        }
         nb_ch += s->in[i].nb_ch;
     }
     if (nb_ch > SWR_CH_MAX) {



More information about the ffmpeg-cvslog mailing list