[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