[vorbis-dev] Small vorbis files with vorbisfile

Erik Olofsson erik at o3games.com
Thu Nov 22 22:44:39 PST 2001



Forgot to mention that I use rc2 source with vorbisfile.c from cvs

-----Original Message-----
From: Erik Olofsson [mailto:erik at o3games.com] 
Sent: den 23 november 2001 07:42
To: vorbis-dev at xiph.org
Subject: [vorbis-dev] Small vorbis files with vorbisfile

I think I have bumped into the small file error, or I'm doing something
stupid. The files are short audio effects for a game (embedded in our own
data format). 

Sample info:
Vorbis packets: 1 (4 kb)
Samples: 28672
Samplerate: 22 kHz
Channels: 2

This is what I'm doing when I want to get a number of bytes from the stream:

The problem is that ov_pcm_tell always returns 0. And so does ov_read (its
only one packet so EOF)

        virtual bool GetData(void *&_pData, int &_nBytes)
        {
                int NumTimesNoData = 0;
                while(_nBytes)
                {
                        
                        long ret;

                        int StartOffset =
ov_pcm_tell(&m_pDecoder->VorbisFile);

                        if (StartOffset<0)
                                Error("Decode","Offset error");
                        
                        // uninterleave samples
                        ret = ov_read(&m_pDecoder->VorbisFile,(char
*)_pData,_nBytes,0,2,1,&m_pDecoder->Section);

                        int EndOffset =
ov_pcm_tell(&m_pDecoder->VorbisFile);
                        if (EndOffset<0)
                                Error("Decode","Offset error");

                        if (EndOffset == StartOffset)
                                ++NumTimesNoData;
                        else
                                NumTimesNoData = 0;

                        _nBytes -= EndOffset - StartOffset;
                        pData += EndOffset - StartOffset;

                        if (NumTimesNoData > 2) 
                        {
                                if (m_pDecoder->m_bLoop)
                                {
                                        if
(ov_pcm_seek(&m_pDecoder->VorbisFile, 0))
                                                Error("Decode", "Seek error
in stream");
                                }
                                return true;
                        } 
                        else if (ret < 0) 
                        {
                                return false;
                        } 
                }

                return true;
        }

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to
'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis-dev mailing list