Mercurial > hg > libxtract
annotate examples/simpletest/WaveFile.h @ 285:89fe52066db1 tip master
MSCV missing ssize_t fix
author | Jamie Bullock <jamie@jamiebullock.com> |
---|---|
date | Tue, 16 Jul 2019 18:29:20 +0100 |
parents | 6c04845f83dd |
children |
rev | line source |
---|---|
jamie@233 | 1 #ifndef WaveFile_h__ |
jamie@233 | 2 #define WaveFile_h__ |
jamie@233 | 3 |
jamie@233 | 4 #include <string> |
jamie@233 | 5 |
jamie@233 | 6 ///\note All meta data is undefined if IsLoaded() == false |
jamie@233 | 7 class WaveFile |
jamie@233 | 8 { |
jamie@233 | 9 public: |
jamie@233 | 10 enum AudioFormat |
jamie@233 | 11 { |
jamie@233 | 12 PCM = 1, |
jamie@233 | 13 WAVE_FORMAT_IEEE_FLOAT = 3 |
jamie@233 | 14 }; |
jamie@233 | 15 |
jamie@233 | 16 WaveFile(); |
jamie@233 | 17 WaveFile(const std::string &filename); |
jamie@233 | 18 ~WaveFile(); |
jamie@233 | 19 |
jamie@233 | 20 bool Load(const std::string &filename); |
jamie@233 | 21 void Unload(); |
jamie@233 | 22 |
jamie@233 | 23 inline bool IsLoaded() const |
jamie@233 | 24 { |
jamie@233 | 25 return (data != nullptr && size != 0); |
jamie@233 | 26 } |
jamie@233 | 27 |
jamie@233 | 28 inline AudioFormat GetAudioFormat() const |
jamie@233 | 29 { |
jamie@233 | 30 return meta.audioFormat; |
jamie@233 | 31 } |
jamie@233 | 32 inline unsigned int GetNumChannels() const |
jamie@233 | 33 { |
jamie@233 | 34 return meta.numChannels; |
jamie@233 | 35 } |
jamie@233 | 36 inline unsigned int GetSampleRate() const |
jamie@233 | 37 { |
jamie@233 | 38 return meta.sampleRate; |
jamie@233 | 39 } |
jamie@233 | 40 inline unsigned int GetBitsPerSample() const |
jamie@233 | 41 { |
jamie@233 | 42 return meta.bitsPerSample; |
jamie@233 | 43 } |
jamie@233 | 44 |
jamie@233 | 45 inline const char *GetData() const |
jamie@233 | 46 { |
jamie@233 | 47 return data; |
jamie@233 | 48 } |
jamie@233 | 49 inline std::size_t GetDataSize() const |
jamie@233 | 50 { |
jamie@233 | 51 return size; |
jamie@233 | 52 } |
jamie@233 | 53 |
jamie@233 | 54 private: |
jamie@233 | 55 struct Meta |
jamie@233 | 56 { |
jamie@233 | 57 AudioFormat audioFormat; |
jamie@233 | 58 unsigned int numChannels; |
jamie@233 | 59 unsigned int sampleRate; |
jamie@233 | 60 unsigned int bitsPerSample; |
jamie@233 | 61 } meta; |
jamie@233 | 62 char *data; |
jamie@233 | 63 std::size_t size; |
jamie@233 | 64 }; |
jamie@233 | 65 |
jamie@233 | 66 #endif // WaveFile_h__ |