[FFmpeg-devel] [PATCH 01/10] avcodec/dca: remove Rice code length limit

James Almer jamrial at gmail.com
Fri May 20 19:13:06 CEST 2016


On 5/20/2016 10:13 AM, Christophe Gisquet wrote:
> Hi,
> 
> 2016-05-20 15:09 GMT+02:00 foo86 <foobaz86 at gmail.com>:
> 
>>> Not that the patch is not ok, but I have a few uneducated questions:
>>> 1) Given the get_bits_long(gb, k) afterwards, won't that code cause
>>> overreads for corrupted bitstreams?
>>
>> This will cause overread, but that should not be a problem for checked
>> bitstream reader.
>>
>>> 2) I haven't checked the calling code, but consequently, wouldn't it
>>> be better to first check that at least k+1 bits are available?
>>
>> I don't think this is necessarry. Fixed length overread is safe; adding
>> explicit check will make code less readable IMO (and possibly slower).
> 
> I think the checked bitstream reader takes care of these.
> 
>>> 3) 128 is already fairly large; is the new code for valid bitstreams
>>> (in the sense of specs and actually generated) or for corrupted
>>> bitstreams? I don't know where the parsing is validated afterwards
>>> (e.g. if there have been overreads or invalid values parsed)
>>
>> This is for valid bitstreams. There is no indication of limit on maximum
>> Rice code length in the XLL spec, hence existing constant is not
>> strictly "valid" (but it always worked in practice with existing
>> encoders). Reference decoder also loops indefinitely until it sees stop
>> bit here.
> 
> OK. Out of curiosity, what are classical values there? "common" and max (128?).
> 
>> Parsing is validated at the end of chs_parse_band_data(), there is an
>> explicit check whether overread has occured (and if it has, entire
>> segment is zeroed out).
> 
> OK, so I think this patch is completely fine.
> 
> Thanks,

Pushed.



More information about the ffmpeg-devel mailing list