From 8d6a75dddfedb54db4f70a3600013530df2acda1 Mon Sep 17 00:00:00 2001 From: Jamie Bullock Date: Wed, 4 Jun 2014 18:09:43 +0100 Subject: Add WaveFile class for loading audio files in simpletest --- examples/simpletest/WaveFile.h | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 examples/simpletest/WaveFile.h (limited to 'examples/simpletest/WaveFile.h') diff --git a/examples/simpletest/WaveFile.h b/examples/simpletest/WaveFile.h new file mode 100644 index 0000000..b684b41 --- /dev/null +++ b/examples/simpletest/WaveFile.h @@ -0,0 +1,66 @@ +#ifndef WaveFile_h__ +#define WaveFile_h__ + +#include + +///\note All meta data is undefined if IsLoaded() == false +class WaveFile +{ +public: + enum AudioFormat + { + PCM = 1, + WAVE_FORMAT_IEEE_FLOAT = 3 + }; + + WaveFile(); + WaveFile(const std::string &filename); + ~WaveFile(); + + bool Load(const std::string &filename); + void Unload(); + + inline bool IsLoaded() const + { + return (data != nullptr && size != 0); + } + + inline AudioFormat GetAudioFormat() const + { + return meta.audioFormat; + } + inline unsigned int GetNumChannels() const + { + return meta.numChannels; + } + inline unsigned int GetSampleRate() const + { + return meta.sampleRate; + } + inline unsigned int GetBitsPerSample() const + { + return meta.bitsPerSample; + } + + inline const char *GetData() const + { + return data; + } + inline std::size_t GetDataSize() const + { + return size; + } + +private: + struct Meta + { + AudioFormat audioFormat; + unsigned int numChannels; + unsigned int sampleRate; + unsigned int bitsPerSample; + } meta; + char *data; + std::size_t size; +}; + +#endif // WaveFile_h__ -- cgit v1.2.3