jamie@233: #ifndef WaveFile_h__ jamie@233: #define WaveFile_h__ jamie@233: jamie@233: #include jamie@233: jamie@233: ///\note All meta data is undefined if IsLoaded() == false jamie@233: class WaveFile jamie@233: { jamie@233: public: jamie@233: enum AudioFormat jamie@233: { jamie@233: PCM = 1, jamie@233: WAVE_FORMAT_IEEE_FLOAT = 3 jamie@233: }; jamie@233: jamie@233: WaveFile(); jamie@233: WaveFile(const std::string &filename); jamie@233: ~WaveFile(); jamie@233: jamie@233: bool Load(const std::string &filename); jamie@233: void Unload(); jamie@233: jamie@233: inline bool IsLoaded() const jamie@233: { jamie@233: return (data != nullptr && size != 0); jamie@233: } jamie@233: jamie@233: inline AudioFormat GetAudioFormat() const jamie@233: { jamie@233: return meta.audioFormat; jamie@233: } jamie@233: inline unsigned int GetNumChannels() const jamie@233: { jamie@233: return meta.numChannels; jamie@233: } jamie@233: inline unsigned int GetSampleRate() const jamie@233: { jamie@233: return meta.sampleRate; jamie@233: } jamie@233: inline unsigned int GetBitsPerSample() const jamie@233: { jamie@233: return meta.bitsPerSample; jamie@233: } jamie@233: jamie@233: inline const char *GetData() const jamie@233: { jamie@233: return data; jamie@233: } jamie@233: inline std::size_t GetDataSize() const jamie@233: { jamie@233: return size; jamie@233: } jamie@233: jamie@233: private: jamie@233: struct Meta jamie@233: { jamie@233: AudioFormat audioFormat; jamie@233: unsigned int numChannels; jamie@233: unsigned int sampleRate; jamie@233: unsigned int bitsPerSample; jamie@233: } meta; jamie@233: char *data; jamie@233: std::size_t size; jamie@233: }; jamie@233: jamie@233: #endif // WaveFile_h__