]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/af_amerge.c
avcodec/opusdec: Fix extra samples read index
[ffmpeg] / libavfilter / af_amerge.c
index 410d6134d7b09d151a5eae49ef0bf3351e5103ca..2b4edb09ff7431d5748855f70eea042ce7b75927 100644 (file)
@@ -78,7 +78,7 @@ static int query_formats(AVFilterContext *ctx)
     int64_t inlayout[SWR_CH_MAX], outlayout = 0;
     AVFilterFormats *formats;
     AVFilterChannelLayouts *layouts;
-    int i, overlap = 0, nb_ch = 0;
+    int i, ret, overlap = 0, nb_ch = 0;
 
     for (i = 0; i < s->nb_inputs; i++) {
         if (!ctx->inputs[i]->in_channel_layouts ||
@@ -125,17 +125,22 @@ static int query_formats(AVFilterContext *ctx)
                     *(route[i]++) = out_ch_number++;
     }
     formats = ff_make_format_list(ff_packed_sample_fmts_array);
-    ff_set_common_formats(ctx, formats);
+    if ((ret = ff_set_common_formats(ctx, formats)) < 0)
+        return ret;
     for (i = 0; i < s->nb_inputs; i++) {
         layouts = NULL;
-        ff_add_channel_layout(&layouts, inlayout[i]);
-        ff_channel_layouts_ref(layouts, &ctx->inputs[i]->out_channel_layouts);
+        if ((ret = ff_add_channel_layout(&layouts, inlayout[i])) < 0)
+            return ret;
+        if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->out_channel_layouts)) < 0)
+            return ret;
     }
     layouts = NULL;
-    ff_add_channel_layout(&layouts, outlayout);
-    ff_channel_layouts_ref(layouts, &ctx->outputs[0]->in_channel_layouts);
-    ff_set_common_samplerates(ctx, ff_all_samplerates());
-    return 0;
+    if ((ret = ff_add_channel_layout(&layouts, outlayout)) < 0)
+        return ret;
+    if ((ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->in_channel_layouts)) < 0)
+        return ret;
+
+    return ff_set_common_samplerates(ctx, ff_all_samplerates());
 }
 
 static int config_output(AVFilterLink *outlink)