#ifndef GAME_SOUND_SOUND_DECODER_H #define GAME_SOUND_SOUND_DECODER_H #include namespace MWSound { enum SampleType { SampleType_UInt8, SampleType_Int16 }; const char *getSampleTypeName(SampleType type); enum ChannelConfig { ChannelConfig_Mono, ChannelConfig_Stereo }; const char *getChannelConfigName(ChannelConfig config); size_t framesToBytes(size_t frames, ChannelConfig config, SampleType type); size_t bytesToFrames(size_t bytes, ChannelConfig config, SampleType type); class Sound_Decoder { public: virtual void open(const std::string &fname) = 0; virtual void close() = 0; virtual void getInfo(int *samplerate, ChannelConfig *chans, SampleType *type) = 0; virtual size_t read(char *buffer, size_t bytes) = 0; virtual void rewind() = 0; virtual ~Sound_Decoder() { } friend class OpenAL_Output; friend class SoundManager; }; } #endif