[FFmpeg-devel] [PATCH] misc libvorbis.c fixes

Pascal Massimino pascal.massimino
Tue Jul 20 23:55:58 CEST 2010


On Fri, Jul 16, 2010 at 3:10 PM, David Conrad <lessen42 at gmail.com> wrote:

> 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
>

applied (yes, was a long day)

thanks!



More information about the ffmpeg-devel mailing list