/* Copyright (c) 2013 Alex Diener This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Alex Diener adiener@sacredsoftware.net */ #ifndef __VorbisAudioStream_H__ #define __VorbisAudioStream_H__ #ifdef __cplusplus extern "C" { #endif typedef struct VorbisAudioStream VorbisAudioStream; #define VorbisAudioStream_superclass PCMAudioStream #include "pcmaudio/PCMAudioStream.h" #include #include #define OV_EXCLUDE_STATIC_CALLBACKS #include "vorbis/vorbisfile.h" #undef OV_EXCLUDE_STATIC_CALLBACKS #include "utilities/IOUtilities.h" #define VorbisAudioStream_ivars \ PCMAudioStream_ivars \ \ struct memreadContext readContext; \ bool dataOwned; \ bool fileOwned; \ OggVorbis_File vorbisFile; \ int currentSection; \ AudioFrameIndex frameCount; #define VorbisAudioStream_vtable(self_type) \ PCMAudioStream_vtable(self_type) stemobject_declare(VorbisAudioStream) VorbisAudioStream * VorbisAudioStream_createWithFile(const char * filePath); VorbisAudioStream * VorbisAudioStream_createWithData(void * data, size_t length, bool takeOwnership); bool VorbisAudioStream_initWithFile(VorbisAudioStream * self, const char * filePath); bool VorbisAudioStream_initWithData(VorbisAudioStream * self, void * data, size_t length, bool takeOwnership); void VorbisAudioStream_dispose(VorbisAudioStream * self); AudioFrameIndex VorbisAudioStream_read(VorbisAudioStream * self, AudioFrameIndex frameCount, void * outBuffer, bool loop); void VorbisAudioStream_seek(VorbisAudioStream * self, AudioFrameIndex offset, int whence); #ifdef __cplusplus } #endif #endif