[libav-devel] [PATCH] [RFC] get_bits: Support max_depth > 2 in GET_RL_VLC_INTERNAL

Kieran Kunhya kierank at obe.tv
Sun Dec 13 22:26:17 CET 2015


On 13 December 2015 at 19:21, Luca Barbato <lu_zero at gentoo.org> wrote:
> On 13/12/15 19:02, Kieran Kunhya wrote:
>> ---
>>  libavcodec/get_bits.h | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h
>> index 0d3db1f..0a61c80 100644
>> --- a/libavcodec/get_bits.h
>> +++ b/libavcodec/get_bits.h
>> @@ -539,6 +539,17 @@ void ff_free_vlc(VLC *vlc);
>>              index = SHOW_UBITS(name, gb, nb_bits) + level;      \
>>              level = table[index].level;                         \
>>              n     = table[index].len;                           \
>> +            if (max_depth > 2 && n < 0) {                       \
>> +                LAST_SKIP_BITS(name, gb, nb_bits);              \
>> +                if (need_update) {                              \
>> +                    UPDATE_CACHE(name, gb);                     \
>> +                }                                               \
>> +                nb_bits = -n;                                   \
>> +                                                                \
>> +                index = SHOW_UBITS(name, gb, nb_bits) + level;  \
>> +                level = table[index].level;                     \
>> +                n     = table[index].len;                       \
>> +            }                                                   \
>>          }                                                       \
>>          run = table[index].run;                                 \
>>          SKIP_BITS(name, gb, n);                                 \
>>
>
> Where do you need it?

The author of the code tells me it is needed for the large VLCs in Cineform.

Kieran


More information about the libav-devel mailing list