]> git.sesse.net Git - ffmpeg/commitdiff
vafilter/af_replaygain: fix undefined behaviour
authorPaul B Mahol <onemda@gmail.com>
Wed, 16 Oct 2019 16:24:31 +0000 (18:24 +0200)
committerPaul B Mahol <onemda@gmail.com>
Wed, 16 Oct 2019 16:28:32 +0000 (18:28 +0200)
Fixes #8291

libavfilter/af_replaygain.c

index 97617346edfed8855d63200791f849c3acfe50ad..53fe49d76976880ce035dc93ee7abdb28f69e6ad 100644 (file)
@@ -551,7 +551,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     AVFilterContext *ctx = inlink->dst;
     AVFilterLink *outlink = ctx->outputs[0];
     ReplayGainContext *s = ctx->priv;
-    uint32_t level;
+    int64_t level;
     AVFrame *out;
 
     out = ff_get_audio_buffer(outlink, in->nb_samples);
@@ -567,9 +567,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
                                                  out->nb_samples);
     butter_filter_stereo_samples(s, (float *)out->data[0],
                                              out->nb_samples);
-    level = (uint32_t)floor(100 * calc_stereo_rms((float *)out->data[0],
-                                                           out->nb_samples));
-    level = av_clip(level, 0, HISTOGRAM_SLOTS - 1);
+    level = lrint(floor(100 * calc_stereo_rms((float *)out->data[0],
+                                                           out->nb_samples)));
+    level = av_clip64(level, 0, HISTOGRAM_SLOTS - 1);
 
     s->histogram[level]++;