Message ID | 20170402233220.77422-1-k@ylo.ph |
---|---|
State | Accepted |
Headers | show |
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
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.
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,
Signed-off-by: Kyle Swanson <k@ylo.ph> --- libavfilter/af_loudnorm.c | 58 +++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 24 deletions(-)