[FFmpeg-devel] [PATCH] avfilter/af_astats: fix possible crash because of undefined float to integer rounding
Marton Balint
cus at passwd.hu
Mon Jan 18 22:54:24 EET 2021
On Sat, 16 Jan 2021, Marton Balint wrote:
> Fixes ticket #9049.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> libavfilter/af_astats.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libavfilter/af_astats.c b/libavfilter/af_astats.c
> index ebaae29f44..f50cbe199c 100644
> --- a/libavfilter/af_astats.c
> +++ b/libavfilter/af_astats.c
> @@ -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)
Will apply soon.
Regards,
Marton
More information about the ffmpeg-devel
mailing list