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;
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);
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());
{ 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."),