From 58d9b5caf3d332c6495f9af437158bf45531a05e Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Tue, 26 Sep 2023 21:50:45 +0200 Subject: [PATCH] avcodec/vlc: fix min/max bits calculation in multi vlc Improves speed with >8 bit depth inputs. --- libavcodec/vlc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 8beab9a0a2..21b9fffe27 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -403,8 +403,14 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, unsigned count[VLC_MULTI_MAX_SYMBOLS-1] = { 0, }; VLC_MULTI_ELEM info = { { 0, }, 0, }; - minbits = buf[nb_codes-1].bits; - maxbits = FFMIN(buf[0].bits, numbits); + minbits = buf[0].bits; + maxbits = buf[0].bits; + + for (int n = 1; n < nb_codes; n++) { + minbits = FFMIN(minbits, buf[n].bits); + maxbits = FFMAX(maxbits, buf[n].bits); + } + maxbits = FFMIN(maxbits, numbits); while (max >= nb_codes/2) { if (buf[max].bits+minbits > maxbits)