diff options
Diffstat (limited to 'src/audio/pcm.h')
-rw-r--r-- | src/audio/pcm.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/audio/pcm.h b/src/audio/pcm.h new file mode 100644 index 0000000..740a23c --- /dev/null +++ b/src/audio/pcm.h @@ -0,0 +1,57 @@ +/* + audio/pcm.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_AUDIO_PCM_H__ +#define __INCLUDED_AUDIO_PCM_H__ + +#include <string> + +namespace audio { + +/// class to hold PCM audio data +class PCM { + +public: + PCM(unsigned int samplerate, unsigned int samplesize, unsigned int channels, size_t size); + ~PCM(); + + void clear(); + + /// pointer to the raw pcm data + inline unsigned char *data() { return pcm_data; } + + /// index into the raw pcm data + inline unsigned char *operator[](size_t index) { return &pcm_data[index]; } + + /// size in bytes + inline size_t size() { return pcm_size; } + + /// samplerate in samples per second + inline unsigned int samplerate() const { return pcm_samplerate; } + + /// number of bits per sample + inline unsigned int bitspersample() const { return pcm_bitspersample; } + + /// number of channels + inline unsigned int channels() const { return pcm_channels; } + + /// load PCM audio data from file + static void load(std::string const & name); + + static void load(const char *name); + +private: + unsigned char *pcm_data; + + unsigned int pcm_channels; + unsigned int pcm_samplerate; + unsigned int pcm_bitspersample; + size_t pcm_size; +}; + +} + +#endif // __INCLUDED_AUDIO_PCM_H__ |