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

Justin Ruggles justin.ruggles at gmail.com
Fri Sep 30 04:12:19 CEST 2011


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/

Note that the shorten decoder has a bug where it doesn't decode
everything in its internal buffer at the end of decoding, so this might
not trigger with all samples.  I have a patch in my local tree that I'm
sending to Libav soon to fix this.

-Justin


More information about the ffmpeg-devel mailing list