vorbisStreamSource.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //--------------------------------------------
  2. // vorbisStreamSource.h
  3. // header for streaming audio source for Ogg Vorbis
  4. //
  5. // Kurtis Seebaldt
  6. //--------------------------------------------
  7. #ifndef _VORBISSTREAMSOURCE_H_
  8. #define _VORBISSTREAMSOURCE_H_
  9. #ifndef _AUDIOSTREAMSOURCE_H_
  10. #include "audio/audioStreamSource.h"
  11. #endif
  12. #include "vorbis/vorbisfile.h"
  13. class VorbisStreamSource: public AudioStreamSource
  14. {
  15. public:
  16. VorbisStreamSource(const char *filename);
  17. virtual ~VorbisStreamSource();
  18. virtual bool initStream();
  19. virtual bool updateBuffers();
  20. virtual void freeStream();
  21. virtual F32 getElapsedTime();
  22. virtual F32 getTotalTime();
  23. private:
  24. ALuint mBufferList[NUMBUFFERS];
  25. S32 mNumBuffers;
  26. S32 mBufferSize;
  27. Stream *stream;
  28. bool bReady;
  29. bool bFinished;
  30. ALenum format;
  31. ALsizei size;
  32. ALsizei freq;
  33. ALuint DataSize;
  34. ALuint DataLeft;
  35. ALuint buffersinqueue;
  36. bool bBuffersAllocated;
  37. bool bVorbisFileInitialized;
  38. int current_section;
  39. OggVorbis_File vf;
  40. void clear();
  41. long oggRead(char *buffer,int length, int bigendianp,int *bitstream);
  42. void resetStream();
  43. void setNewFile(const char * file);
  44. };
  45. #endif // _VORBISSTREAMSOURCE_H_