Commit 307b8482 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/af_dynaudnorm: call uninit() from config_input()

Should help dynamic filtergraph reconfiguration.
Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent b0c57206
...@@ -255,12 +255,43 @@ static void init_gaussian_filter(DynamicAudioNormalizerContext *s) ...@@ -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) static int config_input(AVFilterLink *inlink)
{ {
AVFilterContext *ctx = inlink->dst; AVFilterContext *ctx = inlink->dst;
DynamicAudioNormalizerContext *s = ctx->priv; DynamicAudioNormalizerContext *s = ctx->priv;
int c; int c;
uninit(ctx);
s->frame_len = s->frame_len =
inlink->min_samples = inlink->min_samples =
inlink->max_samples = inlink->max_samples =
...@@ -673,35 +704,6 @@ static int request_frame(AVFilterLink *outlink) ...@@ -673,35 +704,6 @@ static int request_frame(AVFilterLink *outlink)
return ret; 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[] = { static const AVFilterPad avfilter_af_dynaudnorm_inputs[] = {
{ {
.name = "default", .name = "default",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment