/* audio/buffers.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_AUDIO_BUFFERS_H__ #define __INCLUDED_AUDIO_BUFFERS_H__ #include "sys/sys.h" #ifdef _OSX #include "OpenAL/al.h" #include "OpenAL/alc.h" #else #include "AL/al.h" #include "AL/alc.h" #endif #include #include namespace audio { const size_t MAXBUFFERS = 128; /// OpenAL buffers wrapper class class Buffers { public: static void init(); static void shutdown(); /// find previously loaded PCM data static size_t find(std::string name); /// load audio data into a buffer ans return the buffer index static size_t load(std::string name); /// bind a buffer to a source static void bind(ALuint source, std::string name); /// bind a specific buffer to a source static void bind(ALuint source, size_t id); private: static void clear(); typedef std::map::iterator iterator; static std::map registry; static size_t index; static ALuint buffers[MAXBUFFERS]; }; } #endif // __INCLUDED_AUDIO_BUFFERS_H__