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__