[FFmpeg-devel] [PATCH] misc libvorbis.c fixes
David Conrad
lessen42
Sat Jul 17 00:10:11 CEST 2010
On Jul 11, 2010, at 11:53 AM, Pascal Massimino wrote:
> Aurelien,
>
> On Sun, Jul 11, 2010 at 5:21 AM, Aurelien Jacobs <aurel at gnuage.org> wrote:
>
>> On Sun, Jul 11, 2010 at 12:07:53AM -0700, Pascal Massimino wrote:
>>> David,
>>>
>>> On Sat, Jul 3, 2010 at 12:35 AM, David Conrad <lessen42 at gmail.com>
>> wrote:
>>>
>>>> Sorry for the delays...
>>>>
>>>> On Jun 29, 2010, at 3:44 AM, Pascal Massimino wrote:
>>>>
>>>>> Index: libavcodec/libvorbis.c
>>>>> ===================================================================
>>>>> --- libavcodec/libvorbis.c (revision 23816)
>>>>> +++ libavcodec/libvorbis.c (working copy)
>>>>> @@ -84,11 +84,14 @@
>>>>> return vorbis_encode_setup_init(vi);
>>>>> }
>>>>>
>>>>> +/* How many bytes are needed for a buffer of length 'l' */
>>>>> +static int xiph_len(int l) { return (1 + l / 255 + l); }
>>>>> +
>>>>> static av_cold int oggvorbis_encode_init(AVCodecContext *avccontext)
>> {
>>>>> OggVorbisContext *context = avccontext->priv_data ;
>>>>> ogg_packet header, header_comm, header_code;
>>>>> uint8_t *p;
>>>>> - unsigned int offset, len;
>>>>> + unsigned int offset;
>>>>>
>>>>> vorbis_info_init(&context->vi) ;
>>>>> if(oggvorbis_init_encoder(&context->vi, avccontext) < 0) {
>>>>> @@ -104,9 +107,10 @@
>>>>> vorbis_analysis_headerout(&context->vd, &context->vc, &header,
>>>>> &header_comm, &header_code);
>>>>>
>>>>> - len = header.bytes + header_comm.bytes + header_code.bytes;
>>>>> - avccontext->extradata_size= 64 + len + len/255;
>>>>> - p = avccontext->extradata=
>> av_mallocz(avccontext->extradata_size);
>>>>> + avccontext->extradata_size=
>>>>> + 1 + xiph_len(header.bytes) + xiph_len(header_comm.bytes) +
>>>>> + header_code.bytes;
>>>>> + p = avccontext->extradata =
>> av_malloc(avccontext->extradata_size);
>>>>
>>>> Might as well add in the missing FF_INPUT_BUFFER_PADDING_SIZE while
>> you're
>>>> at it
>>>>
>>>
>>> ok, as in the new patch attached?
>>
>> No...
>>
>>> Index: libvorbis.c
>>> ===================================================================
>>> --- libvorbis.c (revision 24184)
>>> +++ libvorbis.c (working copy)
>>> @@ -105,9 +108,10 @@
>>> vorbis_analysis_headerout(&context->vd, &context->vc, &header,
>>> &header_comm, &header_code);
>>>
>>> - len = header.bytes + header_comm.bytes + header_code.bytes;
>>> - avccontext->extradata_size= 64 + len + len/255;
>>> - p = avccontext->extradata= av_mallocz(avccontext->extradata_size);
>>> + len= 1 + xiph_len(header.bytes) + xiph_len(header_comm.bytes) +
>>> + header_code.bytes;
>>> + avccontext->extradata_size= len + FF_INPUT_BUFFER_PADDING_SIZE;
>>> + p = avccontext->extradata = av_malloc(avccontext->extradata_size);
>>
>> extradata must be allocated with FF_INPUT_BUFFER_PADDING_SIZE, but
>> FF_INPUT_BUFFER_PADDING_SIZE must not be added to extradata_size.
>>
>
> oh! i see. New attempt attached...
OK
More information about the ffmpeg-devel
mailing list