Hi, On Sun, Apr 2, 2017 at 6:32 PM, Kyle Swanson <k...@ylo.ph> wrote:
> Signed-off-by: Kyle Swanson <k...@ylo.ph> > --- > libavfilter/af_loudnorm.c | 58 +++++++++++++++++++++++++++--- > ----------------- > 1 file changed, 34 insertions(+), 24 deletions(-) > > diff --git a/libavfilter/af_loudnorm.c b/libavfilter/af_loudnorm.c > index 9d91c76..e3e815e 100644 > --- a/libavfilter/af_loudnorm.c > +++ b/libavfilter/af_loudnorm.c > @@ -682,6 +682,7 @@ static int request_frame(AVFilterLink *outlink) > > static int query_formats(AVFilterContext *ctx) > { > + LoudNormContext *s = ctx->priv; > AVFilterFormats *formats; > AVFilterChannelLayouts *layouts; > AVFilterLink *inlink = ctx->inputs[0]; > @@ -707,15 +708,17 @@ static int query_formats(AVFilterContext *ctx) > if (ret < 0) > return ret; > > - formats = ff_make_format_list(input_srate); > - if (!formats) > - return AVERROR(ENOMEM); > - ret = ff_formats_ref(formats, &inlink->out_samplerates); > - if (ret < 0) > - return ret; > - ret = ff_formats_ref(formats, &outlink->in_samplerates); > - if (ret < 0) > - return ret; > + if (s->frame_type != LINEAR_MODE) { > + formats = ff_make_format_list(input_srate); > + if (!formats) > + return AVERROR(ENOMEM); > + ret = ff_formats_ref(formats, &inlink->out_samplerates); > + if (ret < 0) > + return ret; > + ret = ff_formats_ref(formats, &outlink->in_samplerates); > + if (ret < 0) > + return ret; > + } > > return 0; > } > @@ -754,21 +757,6 @@ static int config_input(AVFilterLink *inlink) > > init_gaussian_filter(s); > > - s->frame_type = FIRST_FRAME; > - > - if (s->linear) { > - double offset, offset_tp; > - offset = s->target_i - s->measured_i; > - offset_tp = s->measured_tp + offset; > - > - if (s->measured_tp != 99 && s->measured_thresh != -70 && > s->measured_lra != 0 && s->measured_i != 0) { > - if ((offset_tp <= s->target_tp) && (s->measured_lra <= > s->target_lra)) { > - s->frame_type = LINEAR_MODE; > - s->offset = offset; > - } > - } > - } > - > if (s->frame_type != LINEAR_MODE) { > inlink->min_samples = > inlink->max_samples = > @@ -790,6 +778,27 @@ static int config_input(AVFilterLink *inlink) > return 0; > } > > +static av_cold int init(AVFilterContext *ctx) > +{ > + LoudNormContext *s = ctx->priv; > + s->frame_type = FIRST_FRAME; > + > + if (s->linear) { > + double offset, offset_tp; > + offset = s->target_i - s->measured_i; > + offset_tp = s->measured_tp + offset; > + > + if (s->measured_tp != 99 && s->measured_thresh != -70 && > s->measured_lra != 0 && s->measured_i != 0) { > + if ((offset_tp <= s->target_tp) && (s->measured_lra <= > s->target_lra)) { > + s->frame_type = LINEAR_MODE; > + s->offset = offset; > + } > + } > + } > + > + return 0; > +} > + > static av_cold void uninit(AVFilterContext *ctx) > { > LoudNormContext *s = ctx->priv; > @@ -914,6 +923,7 @@ AVFilter ff_af_loudnorm = { > .priv_size = sizeof(LoudNormContext), > .priv_class = &loudnorm_class, > .query_formats = query_formats, > + .init = init, > .uninit = uninit, > .inputs = avfilter_af_loudnorm_inputs, > .outputs = avfilter_af_loudnorm_outputs, > -- > 2.10.1 > > If no one has anything for this, I'll push it in the next day or so. Kyle _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel