Browse Source

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

Should help dynamic filtergraph reconfiguration.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
tags/n3.0
Paul B Mahol 10 years ago
parent
commit
307b848218
1 changed files with 31 additions and 29 deletions
  1. +31
    -29
      libavfilter/af_dynaudnorm.c

+ 31
- 29
libavfilter/af_dynaudnorm.c View File

@@ -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",


Loading…
Cancel
Save