[FFmpeg-devel] [PATCH 3/7] avcodec/golomb, h264*: Fix get_ue_golomb_31()

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Tue Jul 14 23:43:51 EEST 2020


Michael Niedermayer:
> On Tue, Jul 14, 2020 at 05:34:50PM +0200, Andreas Rheinhardt wrote:
>> get_ue_golomb_31() uses a LUT of 512 entries; therefore it can be used
>> to parse exp-golomb codes of length <= 9, i.e. those codes with at most
>> four leading bits that have five effective bits; this implies a range of
>> 0..30 and not 31. In particular, this function must not be used to parse
>> e.g. the H.264 SPS id.
> 
> hmm, are you sure ?
> 

Yes.

> 1           0
> 01X         1-2
> 001XX       3-6
> 0001XXX     7-14
> 00001XXXX   15-30
> 000001..... 31
> 
> we need to read 9 bits for this, we do not need to read the bits marked with
> a "." because the code is already determined at this point.
> 
The code is only determined at the point if one already presumes that it
can't be anything >31. Without this assumption, one needs to look at all
the five "." in order to distinguish it from 32..62. By looking at only
9 digits one can not rule out 32-34.
And if you take a look at ff_ue_golomb_vlc_code, you will see that it
does not even contain 31 at all. It returns the values 0-30 for the
codes with length <= 9 and returns 32 for the rest.

- Andreas


More information about the ffmpeg-devel mailing list