You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02: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:
		| @@ -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", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user