[Vorbis-dev] buffer overruns for small files
Steve Russell
srussell at innernet.net
Mon Nov 7 17:51:28 PST 2005
Oops -- I said that wrong. dwBufferLength is not the allocated length.
int pcmTotal = ov_pcm_total(&vf, -1);
int BufferSize = pcmTotal * vi->channels * 2;
----- Original Message -----
From: "Steve Russell" <srussell at innernet.net>
To: "Ian Malone" <ibm21 at cam.ac.uk>; <vorbis-dev at xiph.org>
Sent: Monday, November 07, 2005 8:46 PM
Subject: Re: [Vorbis-dev] buffer overruns for small files
> dwBufferLength is the allocated length.
>
> long bytes_read = ov_read(&vf, m_lpDataVorbis + dwBufferLength, 4096, 0,
> 2, 1, ¤t_section);
> if(bytes_read == 0)
> {
> // EOF
> eof = 1;
> }
> else
> dwBufferLength += bytes_read;
>
> As to trying example decoders, every time I try to compile something for a
> test, I run into at least one mysterious hangup. I guess it's related to
> Windows; maybe I simply lack some very pertinent knowledge. Same for
> Speex. In regard to vorbis_synthesis, where exactly would I place a TRACE?
> in what file?
> ----- Original Message -----
> From: "Ian Malone" <ibm21 at cam.ac.uk>
> To: <vorbis-dev at xiph.org>
> Sent: Sunday, November 06, 2005 8:34 AM
> Subject: Re: [Vorbis-dev] buffer overruns for small files
>
>
>> Not a clue, but since this hasn't been picked up:
>> How do the reference and example decoders handle these files?
>> Is dwBufferLength the allocated length or the attempted write
>> length? Can you trace into vorbis_synthesis and see how
>> much is being allocated?
>>
>> imalone
>>
>>
>> Steve Russell wrote:
>>> I wonder if anyone would have a comment on an experiment I have pretty
>>> much completed in my MFC/C++ project. With my simple libvorbis
>>> implementation, ogg decoding works just fine for files that are 10kb or
>>> larger. For anything smaller (actually, I don't have a 9kb file, so <=
>>> 8), it seems that I get an inaccurate value for ov_pcm_total. Though
>>> ov_read returns zero, I overflow the buffer and crash on ov_clear.
>>> These are my TRACE statements:
>>>
>>>
>>>>= 10kb:
>>>
>>>
>>> Opening Audio File 'no_0.ogg'
>>> vi->channels = '2'
>>> vi->rate = '44100'
>>> pcmTotal = '15341'
>>> pcmTotal * vi->channels * 2 = '61364'
>>> BufferSize = '61364'
>>> dwBufferLength = '61364'
>>> BufferSize = '61364'
>>> dwBufferLength - BufferSize = '0'
>>> ------------
>>> < 10kb:
>>>
>>> Opening Audio File 'Steel guitar_4.ogg'
>>> vi->channels = '2'
>>> vi->rate = '44100'
>>> pcmTotal = '9876'
>>> pcmTotal * vi->channels * 2 = '39504'
>>> BufferSize = '39504'
>>> dwBufferLength = '43264'
>>> BufferSize = '39504'
>>> dwBufferLength - BufferSize = '3760'
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Vorbis-dev mailing list
>>> Vorbis-dev at xiph.org
>>> http://lists.xiph.org/mailman/listinfo/vorbis-dev
>>
>> _______________________________________________
>> Vorbis-dev mailing list
>> Vorbis-dev at xiph.org
>> http://lists.xiph.org/mailman/listinfo/vorbis-dev
>
> _______________________________________________
> Vorbis-dev mailing list
> Vorbis-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/vorbis-dev
>
More information about the Vorbis-dev
mailing list