/* 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 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(); /// set the data size void set_size(size_t size); /// grow the buffer void grow(size_t size); /// 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 of the buffer inline size_t buff_size() { return pcm_buff_size; } /// size of the audio data, 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; } private: unsigned char *pcm_data; unsigned int pcm_channels; unsigned int pcm_samplerate; unsigned int pcm_bitspersample; size_t pcm_size; size_t pcm_buff_size; }; } #endif // __INCLUDED_AUDIO_PCM_H__