From 307b8482181685e9a87a8d2f4ab9c7d180eaf3ad Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Mon, 18 Jan 2016 19:55:40 +0100 Subject: [PATCH] avfilter/af_dynaudnorm: call uninit() from config_input() Should help dynamic filtergraph reconfiguration. Signed-off-by: Paul B Mahol --- libavfilter/af_dynaudnorm.c | 60 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/libavfilter/af_dynaudnorm.c b/libavfilter/af_dynaudnorm.c index d0bb51d789..1dd221ce57 100644 --- a/libavfilter/af_dynaudnorm.c +++ b/libavfilter/af_dynaudnorm.c @@ -255,12 +255,43 @@ static void init_gaussian_filter(DynamicAudioNormalizerContext *s) } } +static av_cold void uninit(AVFilterContext *ctx) +{ + DynamicAudioNormalizerContext *s = ctx->priv; + int c; + + av_freep(&s->prev_amplification_factor); + av_freep(&s->dc_correction_value); + av_freep(&s->compress_threshold); + av_freep(&s->fade_factors[0]); + av_freep(&s->fade_factors[1]); + + for (c = 0; c < s->channels; c++) { + if (s->gain_history_original) + cqueue_free(s->gain_history_original[c]); + if (s->gain_history_minimum) + cqueue_free(s->gain_history_minimum[c]); + if (s->gain_history_smoothed) + cqueue_free(s->gain_history_smoothed[c]); + } + + av_freep(&s->gain_history_original); + av_freep(&s->gain_history_minimum); + av_freep(&s->gain_history_smoothed); + + av_freep(&s->weights); + + ff_bufqueue_discard_all(&s->queue); +} + static int config_input(AVFilterLink *inlink) { AVFilterContext *ctx = inlink->dst; DynamicAudioNormalizerContext *s = ctx->priv; int c; + uninit(ctx); + s->frame_len = inlink->min_samples = inlink->max_samples = @@ -673,35 +704,6 @@ static int request_frame(AVFilterLink *outlink) return ret; } -static av_cold void uninit(AVFilterContext *ctx) -{ - DynamicAudioNormalizerContext *s = ctx->priv; - int c; - - av_freep(&s->prev_amplification_factor); - av_freep(&s->dc_correction_value); - av_freep(&s->compress_threshold); - av_freep(&s->fade_factors[0]); - av_freep(&s->fade_factors[1]); - - for (c = 0; c < s->channels; c++) { - if (s->gain_history_original) - cqueue_free(s->gain_history_original[c]); - if (s->gain_history_minimum) - cqueue_free(s->gain_history_minimum[c]); - if (s->gain_history_smoothed) - cqueue_free(s->gain_history_smoothed[c]); - } - - av_freep(&s->gain_history_original); - av_freep(&s->gain_history_minimum); - av_freep(&s->gain_history_smoothed); - - av_freep(&s->weights); - - ff_bufqueue_discard_all(&s->queue); -} - static const AVFilterPad avfilter_af_dynaudnorm_inputs[] = { { .name = "default",