X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Faf_amerge.c;h=2e45b7c27796bc9d56359c185ba2f1cb340e1e9e;hb=a04ad248a05e7b613abe09b3bb067f555108d794;hp=567f25982d8ff028f1e299414446051f773d8038;hpb=79025da3f2e7ab047c8f3c0c817952a98480b26b;p=ffmpeg diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c index 567f25982d8..2e45b7c2779 100644 --- a/libavfilter/af_amerge.c +++ b/libavfilter/af_amerge.c @@ -58,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; @@ -76,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); @@ -124,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()); @@ -342,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."),