From 98ae6b0a4d6d6909277b664937721e135c0a70ff Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Wed, 16 Oct 2019 18:24:31 +0200 Subject: [PATCH] vafilter/af_replaygain: fix undefined behaviour Fixes #8291 --- libavfilter/af_replaygain.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavfilter/af_replaygain.c b/libavfilter/af_replaygain.c index 97617346ed..53fe49d769 100644 --- a/libavfilter/af_replaygain.c +++ b/libavfilter/af_replaygain.c @@ -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]++;