]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/af_astats: fix possible crash because of undefined float to integer rounding
authorMarton Balint <cus@passwd.hu>
Sun, 10 Jan 2021 23:12:39 +0000 (00:12 +0100)
committerMarton Balint <cus@passwd.hu>
Sat, 23 Jan 2021 18:54:14 +0000 (19:54 +0100)
Fixes ticket #9049.

Signed-off-by: Marton Balint <cus@passwd.hu>
libavfilter/af_astats.c

index ebaae29f447a4c76638a4afc63bf75fff9a5e3bc..f50cbe199c8bed53376fe896791774be40e5d25d 100644 (file)
@@ -329,11 +329,11 @@ static inline void update_stat(AudioStatsContext *s, ChannelStats *p, double d,
 
     drop = p->win_samples[p->win_pos];
     p->win_samples[p->win_pos] = nd;
-    index = av_clip(FFABS(av_clipd(nd, -1.0, 1.0)) * HISTOGRAM_MAX, 0, HISTOGRAM_MAX);
+    index = av_clip(lrint(av_clipd(FFABS(nd), 0.0, 1.0) * HISTOGRAM_MAX), 0, HISTOGRAM_MAX);
     p->max_index = FFMAX(p->max_index, index);
     p->histogram[index]++;
     if (!isnan(p->noise_floor))
-        p->histogram[av_clip(FFABS(drop) * HISTOGRAM_MAX, 0, HISTOGRAM_MAX)]--;
+        p->histogram[av_clip(lrint(av_clipd(FFABS(drop), 0.0, 1.0) * HISTOGRAM_MAX), 0, HISTOGRAM_MAX)]--;
     p->win_pos++;
 
     while (p->histogram[p->max_index] == 0)