blip  0.1
AudioDecoder.hpp
Go to the documentation of this file.
1 #ifndef __blip_AudioDecoder_hpp
2 #define __blip_AudioDecoder_hpp
3 
4 #include <blip/Blip.hpp>
5 #include <blip/AudioFormat.hpp>
6 
7 #include <commonc++/DataReader.h++>
8 
9 namespace blip {
10 
11 class AudioClip;
12 
29 {
30  public:
31 
35  AudioDecoder(ccxx::DataReader* reader);
36 
38  virtual ~AudioDecoder();
39 
45  void decodeMetadata();
46 
54  void decodeAudio(AudioClip* audio);
55 
59  inline const AudioFormat& getAudioFormat() const
60  { return(_format); }
61 
65  inline uint32_t getNumSamples() const
66  { return(_numSamples); }
67 
68  protected:
69 
76  virtual void readMetadata(ccxx::DataReader* reader) = 0;
77 
84  virtual void readAudio(ccxx::DataReader* reader, AudioClip* audio) = 0;
85 
89  inline void setAudioFormat(const AudioFormat& format)
90  { _format = format; }
91 
95  inline void setNumSamples(uint32_t numSamples)
96  { _numSamples = numSamples; }
97 
98  private:
99 
100  ccxx::DataReader* _reader;
101  AudioFormat _format;
102  uint32_t _numSamples;
103  bool _metadataRead;
104  bool _audioRead;
105 
106  CCXX_COPY_DECLS(AudioDecoder);
107 };
108 
109 } // namespace blip
110 
111 #endif // __blip_AudioDecoder_hpp
An abstract base class for audio decoders.
Definition: AudioDecoder.hpp:28
virtual void readAudio(ccxx::DataReader *reader, AudioClip *audio)=0
This method must be implemented to perform the audio data decoding.
void setNumSamples(uint32_t numSamples)
This method should be called from readMetadata() to store the number of PCM samples, once it has been determined.
Definition: AudioDecoder.hpp:95
An object that describes an audio data format.
Definition: AudioFormat.hpp:12
uint32_t getNumSamples() const
Get the number of PCM samples in the audio data.
Definition: AudioDecoder.hpp:65
WAV file format details at: https://ccrma.stanford.edu/courses/422/projects/WaveFormat/.
Definition: AccelerometerSensorEvent.cpp:3
void decodeMetadata()
Decode the metadata for the audio clip.
Definition: AudioDecoder.cpp:31
AudioDecoder(ccxx::DataReader *reader)
Construct a new AudioDecoder that will read an image from the given DataReader.
Definition: AudioDecoder.cpp:13
virtual void readMetadata(ccxx::DataReader *reader)=0
This method must be implemented to perform the audio metadata decoding.
void decodeAudio(AudioClip *audio)
Decode the audio clip itself.
Definition: AudioDecoder.cpp:43
virtual ~AudioDecoder()
Destructor.
Definition: AudioDecoder.cpp:24
const AudioFormat & getAudioFormat() const
Get the audio format.
Definition: AudioDecoder.hpp:59
A container for audio data.
Definition: AudioClip.hpp:13
void setAudioFormat(const AudioFormat &format)
This method should be called from readMetadata() to store the audio format information, once it has been determined.
Definition: AudioDecoder.hpp:89