[FFmpeg-devel] [PATCH 7/8] Reject block size changes in the shorten decoder.

Justin Ruggles justin.ruggles at gmail.com
Sat Oct 1 01:02:53 CEST 2011


On 09/30/2011 06:43 PM, Laurent Aimar wrote:

> On Thu, Sep 29, 2011 at 10:12:19PM -0400, Justin Ruggles wrote:
>> On 09/29/2011 06:27 PM, Laurent Aimar wrote:
>>
>>> On Thu, Sep 29, 2011 at 06:24:35PM -0400, Justin Ruggles wrote:
>>>> On 09/29/2011 06:05 PM, fenrir at elivagar.org wrote:
>>>>
>>>>> From: Laurent Aimar <fenrir at videolan.org>
>>>>>
>>>>> ---
>>>>>  libavcodec/shorten.c |    9 +++++++--
>>>>>  1 files changed, 7 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
>>>>> index b39fcbd..966584d 100644
>>>>> --- a/libavcodec/shorten.c
>>>>> +++ b/libavcodec/shorten.c
>>>>> @@ -482,9 +482,14 @@ static int shorten_decode_frame(AVCodecContext *avctx,
>>>>>              case FN_BITSHIFT:
>>>>>                  s->bitshift = get_ur_golomb_shorten(&s->gb, BITSHIFTSIZE);
>>>>>                  break;
>>>>> -            case FN_BLOCKSIZE:
>>>>> -                s->blocksize = get_uint(s, av_log2(s->blocksize));
>>>>> +            case FN_BLOCKSIZE: {
>>>>> +                int blocksize = get_uint(s, av_log2(s->blocksize));
>>>>> +                if (blocksize != s->blocksize) {
>>>>> +                    av_log(avctx, AV_LOG_ERROR, "block size changes are not supported\n");
>>>>> +                    return AVERROR_PATCHWELCOME;
>>>>> +                }
>>>>>                  break;
>>>>> +            }
>>>>>              case FN_QUIT:
>>>>>                  *data_size = 0;
>>>>>                  return buf_size;
>>>>
>>>>
>>>> The last frame can use a different blocksize.
>>>  Ok. Sadly the current code don't support it as is, except maybe if it
>>> is shorter. Is that the case? And if yes, do you have a sample?
>>
>>
>> Yes, it is shorter. I was able to create my own sample that triggered
>> this with the shorten commandline program from
>> http://www.etree.org/shnutils/shorten/
> 
> New patch attached. It now only reject increasing block size changes.


looks fine. would also be good to check for blocksize == 0.

-Justin


More information about the ffmpeg-devel mailing list