On Tue, Apr 4, 2017 at 7:14 AM, Kyle Swanson <k...@ylo.ph> wrote: > 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 >
Pushed. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel