static int config_output(AVFilterLink *outlink) { AVFilterContext *ctx = outlink->src; SidechainCompressContext *s = ctx->priv; if (ctx->inputs[0]->sample_rate != ctx->inputs[1]->sample_rate) { av_log(ctx, AV_LOG_ERROR, "Inputs must have the same sample rate " "%d for in0 vs %d for in1\n", ctx->inputs[0]->sample_rate, ctx->inputs[1]->sample_rate); return AVERROR(EINVAL); } outlink->sample_rate = ctx->inputs[0]->sample_rate; outlink->time_base = ctx->inputs[0]->time_base; outlink->channel_layout = ctx->inputs[0]->channel_layout; outlink->channels = ctx->inputs[0]->channels; s->fifo[0] = av_audio_fifo_alloc(ctx->inputs[0]->format, ctx->inputs[0]->channels, 1024); s->fifo[1] = av_audio_fifo_alloc(ctx->inputs[1]->format, ctx->inputs[1]->channels, 1024); if (!s->fifo[0] || !s->fifo[1]) return AVERROR(ENOMEM); compressor_config_output(outlink); return 0; }
static int config_output(AVFilterLink *outlink) { AVFilterContext *ctx = outlink->src; if (ctx->inputs[0]->sample_rate != ctx->inputs[1]->sample_rate) { av_log(ctx, AV_LOG_ERROR, "Inputs must have the same sample rate " "%d for in0 vs %d for in1\n", ctx->inputs[0]->sample_rate, ctx->inputs[1]->sample_rate); return AVERROR(EINVAL); } outlink->sample_rate = ctx->inputs[0]->sample_rate; outlink->time_base = ctx->inputs[0]->time_base; outlink->channel_layout = ctx->inputs[0]->channel_layout; outlink->channels = ctx->inputs[0]->channels; compressor_config_output(outlink); return 0; }