On Mon, Dec 10, 2012 at 4:18 PM, Måns Rullgård <[email protected]> wrote:
> Jindřich Makovička <[email protected]> writes:
>
>> On Mon, Dec 10, 2012 at 3:00 PM, Måns Rullgård <[email protected]> wrote:
>>> Jindřich Makovička <[email protected]> writes:
>>>
>>>> diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c
>>>> index add9f18..dac2372 100644
>>>> --- a/libavcodec/aacsbr.c
>>>> +++ b/libavcodec/aacsbr.c
>>>> @@ -926,7 +926,9 @@ static void read_sbr_extension(AACContext *ac, 
>>>> SpectralBandReplication *sbr,
>>>>          }
>>>>          break;
>>>>      default:
>>>> -        av_log_missing_feature(ac->avctx, "Reserved SBR extensions", 1);
>>>> +        // some files contain 0-padding
>>>> +        if (bs_extension_id || *num_bits_left > 16 || show_bits(gb, 
>>>> *num_bits_left))
>>>
>>> show_bits() is undefined for lengths >25.  Does something guarantee that
>>> this can't happen here?
>>
>> AFAICS, the *num_bits_left > 16 comparison just before show_bits() .
>
> I guess I'm blind.

To be more precise, when *num_bits_left > 16, the whole expression
evaluates as true and show_bits(gb, *num_bits_left) won't be called.
So get_bits() will be used to get 16 bits at most.

--
Jindřich Makovička
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to