mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2025-01-19 10:13:13 +00:00
avfilter/af_dynaudnorm: call uninit() from config_input()
Should help dynamic filtergraph reconfiguration. Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
b0c57206d5
commit
307b848218
@ -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…
x
Reference in New Issue
Block a user