]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/af_amerge.c
avfilter: Constify all AVFilters
[ffmpeg] / libavfilter / af_amerge.c
index 3961c90701d864b2f6df6bf7ad7d2788873638ff..2e45b7c27796bc9d56359c185ba2f1cb340e1e9e 100644 (file)
@@ -23,9 +23,6 @@
  * Audio merging filter
  */
 
-#define FF_INTERNAL_FIELDS 1
-#include "framequeue.h"
-
 #include "libavutil/avstring.h"
 #include "libavutil/bprint.h"
 #include "libavutil/channel_layout.h"
@@ -61,17 +58,22 @@ AVFILTER_DEFINE_CLASS(amerge);
 static av_cold void uninit(AVFilterContext *ctx)
 {
     AMergeContext *s = ctx->priv;
-    int i;
 
-    for (i = 0; i < s->nb_inputs; i++) {
-        if (ctx->input_pads)
-            av_freep(&ctx->input_pads[i].name);
-    }
     av_freep(&s->in);
+    for (unsigned i = 0; i < ctx->nb_inputs; i++)
+        av_freep(&ctx->input_pads[i].name);
 }
 
 static int query_formats(AVFilterContext *ctx)
 {
+    static const enum AVSampleFormat packed_sample_fmts[] = {
+        AV_SAMPLE_FMT_U8,
+        AV_SAMPLE_FMT_S16,
+        AV_SAMPLE_FMT_S32,
+        AV_SAMPLE_FMT_FLT,
+        AV_SAMPLE_FMT_DBL,
+        AV_SAMPLE_FMT_NONE
+    };
     AMergeContext *s = ctx->priv;
     int64_t inlayout[SWR_CH_MAX], outlayout = 0;
     AVFilterFormats *formats;
@@ -79,14 +81,14 @@ static int query_formats(AVFilterContext *ctx)
     int i, ret, overlap = 0, nb_ch = 0;
 
     for (i = 0; i < s->nb_inputs; i++) {
-        if (!ctx->inputs[i]->in_channel_layouts ||
-            !ctx->inputs[i]->in_channel_layouts->nb_channel_layouts) {
+        if (!ctx->inputs[i]->incfg.channel_layouts ||
+            !ctx->inputs[i]->incfg.channel_layouts->nb_channel_layouts) {
             av_log(ctx, AV_LOG_WARNING,
                    "No channel layout for input %d\n", i + 1);
             return AVERROR(EAGAIN);
         }
-        inlayout[i] = ctx->inputs[i]->in_channel_layouts->channel_layouts[0];
-        if (ctx->inputs[i]->in_channel_layouts->nb_channel_layouts > 1) {
+        inlayout[i] = ctx->inputs[i]->incfg.channel_layouts->channel_layouts[0];
+        if (ctx->inputs[i]->incfg.channel_layouts->nb_channel_layouts > 1) {
             char buf[256];
             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);
@@ -127,20 +129,20 @@ static int query_formats(AVFilterContext *ctx)
                 if ((inlayout[i] >> c) & 1)
                     *(route[i]++) = out_ch_number++;
     }
-    formats = ff_make_format_list(ff_packed_sample_fmts_array);
+    formats = ff_make_format_list(packed_sample_fmts);
     if ((ret = ff_set_common_formats(ctx, formats)) < 0)
         return ret;
     for (i = 0; i < s->nb_inputs; i++) {
         layouts = NULL;
         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)
+        if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
             return ret;
     }
     layouts = NULL;
     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)
+    if ((ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
         return ret;
 
     return ff_set_common_samplerates(ctx, ff_all_samplerates());
@@ -285,9 +287,9 @@ static int activate(AVFilterContext *ctx)
 
     FF_FILTER_FORWARD_STATUS_BACK_ALL(ctx->outputs[0], ctx);
 
-    nb_samples = ff_framequeue_queued_samples(&ctx->inputs[0]->fifo);
+    nb_samples = ff_inlink_queued_samples(ctx->inputs[0]);
     for (i = 1; i < ctx->nb_inputs && nb_samples > 0; i++) {
-        nb_samples = FFMIN(ff_framequeue_queued_samples(&ctx->inputs[i]->fifo), nb_samples);
+        nb_samples = FFMIN(ff_inlink_queued_samples(ctx->inputs[i]), nb_samples);
     }
 
     if (nb_samples) {
@@ -297,7 +299,7 @@ static int activate(AVFilterContext *ctx)
     }
 
     for (i = 0; i < ctx->nb_inputs; i++) {
-        if (ff_framequeue_queued_samples(&ctx->inputs[i]->fifo))
+        if (ff_inlink_queued_samples(ctx->inputs[i]))
             continue;
 
         if (ff_inlink_acknowledge_status(ctx->inputs[i], &status, &pts)) {
@@ -345,7 +347,7 @@ static const AVFilterPad amerge_outputs[] = {
     { NULL }
 };
 
-AVFilter ff_af_amerge = {
+const AVFilter ff_af_amerge = {
     .name          = "amerge",
     .description   = NULL_IF_CONFIG_SMALL("Merge two or more audio streams into "
                                           "a single multi-channel stream."),