diff options
author | Jamie Bullock <jamie@jamiebullock.com> | 2014-06-04 18:09:43 +0100 |
---|---|---|
committer | Jamie Bullock <jamie@jamiebullock.com> | 2014-06-04 18:10:59 +0100 |
commit | 8d6a75dddfedb54db4f70a3600013530df2acda1 (patch) | |
tree | 383198e125920d62553ce4aeb5c50672ef987b4f /examples/simpletest/WaveFile.h | |
parent | cff6ba15377fa37bd7801cba4b71ae2e64e1ad5f (diff) | |
download | LibXtract-8d6a75dddfedb54db4f70a3600013530df2acda1.tar.gz LibXtract-8d6a75dddfedb54db4f70a3600013530df2acda1.tar.bz2 LibXtract-8d6a75dddfedb54db4f70a3600013530df2acda1.zip |
Add WaveFile class for loading audio files in simpletest
Diffstat (limited to 'examples/simpletest/WaveFile.h')
-rw-r--r-- | examples/simpletest/WaveFile.h | 66 |
1 files changed, 66 insertions, 0 deletions
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 <string> + +///\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__ |