@@ -395,7 +395,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single,
const int is16bit, const int nb_codes, const int numbits,
VLCcode *buf, void *logctx)
{
- int minbits, maxbits, max;
+ int minbits, max;
unsigned count[VLC_MULTI_MAX_SYMBOLS-1] = { 0, };
VLC_MULTI_ELEM info = { { 0, }, 0, 0, };
int count0 = 0;
@@ -407,14 +407,9 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single,
}
}
- minbits = 32;
- maxbits = 0;
-
- for (int n = nb_codes - count0; n < nb_codes; n++) {
- minbits = FFMIN(minbits, buf[n].bits);
- maxbits = FFMAX(maxbits, buf[n].bits);
- }
- av_assert0(maxbits <= numbits);
+ //This is only correct if count0 > 0 and the table is sorted
+ //minbits is not used if count0 == 0 and other parts assume the table is sorted too
+ minbits = buf[nb_codes - 1].bits;
for (max = nb_codes; max > nb_codes - count0; max--) {
// We can only add a code that fits with the shortest other code into the table
nothing uses maxbits, so its removed minbits is just the last entry (verified with assert on fate) This basically reverts 58d9b5caf3d332c6495f9af437158bf45531a05e for the minbits computation Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavcodec/vlc.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)