aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/af_dynaudnorm.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2020-01-04 10:27:46 +0100
committerPaul B Mahol <onemda@gmail.com>2020-01-04 10:27:46 +0100
commit6a1305e8b7d191e6b8647f89a22efbad7e81cc05 (patch)
tree8a69e7dab6fb14faa41519aeca5b0842de497807 /libavfilter/af_dynaudnorm.c
parent3c8da7b9826d03e370cab550a403ed0e14da24ef (diff)
downloadffmpeg-6a1305e8b7d191e6b8647f89a22efbad7e81cc05.tar.gz
avfilter/af_dynaudnorm: do not clip audio
Clipping can happen when smoothed gain is higher than maximum allowed gain factor for current frame and peak value option is set to enough low value.
Diffstat (limited to 'libavfilter/af_dynaudnorm.c')
-rw-r--r--libavfilter/af_dynaudnorm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/libavfilter/af_dynaudnorm.c b/libavfilter/af_dynaudnorm.c
index 4b9153e418..09d2aeb816 100644
--- a/libavfilter/af_dynaudnorm.c
+++ b/libavfilter/af_dynaudnorm.c
@@ -490,6 +490,7 @@ static void update_gain_history(DynamicAudioNormalizerContext *s, int channel,
double smoothed;
av_assert0(cqueue_size(s->gain_history_minimum[channel]) == s->filter_size);
smoothed = gaussian_filter(s, s->gain_history_minimum[channel]);
+ smoothed = FFMIN(smoothed, cqueue_peek(s->gain_history_minimum[channel], s->filter_size / 2));
cqueue_enqueue(s->gain_history_smoothed[channel], smoothed);