@ -439,15 +439,12 @@ static void update_gain_history(DynamicAudioNormalizerContext *s, int channel,
if ( cqueue_empty ( s - > gain_history_original [ channel ] ) | |
cqueue_empty ( s - > gain_history_minimum [ channel ] ) ) {
const int pre_fill_size = s - > filter_size / 2 ;
const double initial_value = s - > alt_boundary_mode ? current_gain_factor : 1.0 ;
s - > prev_amplification_factor [ channel ] = s - > alt_boundary_mode ? current_gain_factor : 1.0 ;
s - > prev_amplification_factor [ channel ] = initial_value ;
while ( cqueue_size ( s - > gain_history_original [ channel ] ) < pre_fill_size ) {
cqueue_enqueue ( s - > gain_history_original [ channel ] , s - > alt_boundary_mode ? current_gain_factor : 1.0 ) ;
}
while ( cqueue_size ( s - > gain_history_minimum [ channel ] ) < pre_fill_size ) {
cqueue_enqueue ( s - > gain_history_minimum [ channel ] , s - > alt_boundary_mode ? current_gain_factor : 1.0 ) ;
cqueue_enqueue ( s - > gain_history_original [ channel ] , initial_value ) ;
}
}
@ -456,6 +453,18 @@ static void update_gain_history(DynamicAudioNormalizerContext *s, int channel,
while ( cqueue_size ( s - > gain_history_original [ channel ] ) > = s - > filter_size ) {
double minimum ;
av_assert0 ( cqueue_size ( s - > gain_history_original [ channel ] ) = = s - > filter_size ) ;
if ( cqueue_empty ( s - > gain_history_minimum [ channel ] ) ) {
const int pre_fill_size = s - > filter_size / 2 ;
double initial_value = s - > alt_boundary_mode ? cqueue_peek ( s - > gain_history_original [ channel ] , 0 ) : 1.0 ;
int input = pre_fill_size ;
while ( cqueue_size ( s - > gain_history_minimum [ channel ] ) < pre_fill_size ) {
initial_value = FFMIN ( initial_value , cqueue_peek ( s - > gain_history_original [ channel ] , + + input ) ) ;
cqueue_enqueue ( s - > gain_history_minimum [ channel ] , initial_value ) ;
}
}
minimum = minimum_filter ( s - > gain_history_original [ channel ] ) ;
cqueue_enqueue ( s - > gain_history_minimum [ channel ] , minimum ) ;