[FFmpeg-cvslog] avcodec/vlc: fix min/max bits calculation in multi vlc
Paul B Mahol
git at videolan.org
Tue Sep 26 23:45:29 EEST 2023
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Tue Sep 26 21:50:45 2023 +0200| [58d9b5caf3d332c6495f9af437158bf45531a05e] | committer: Paul B Mahol
avcodec/vlc: fix min/max bits calculation in multi vlc
Improves speed with >8 bit depth inputs.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=58d9b5caf3d332c6495f9af437158bf45531a05e
---
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)
More information about the ffmpeg-cvslog
mailing list