Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-05-18 09:21:20 +0000
committerStijn Buys <ingar@osirion.org>2008-05-18 09:21:20 +0000
commit4a2bad92171ff8a9a248599f47087cfe39e93653 (patch)
treeb8a4fe7f616b3e4f707d89a35fff5e8b5fdcfcc8 /src/audio/pcm.h
parenta185c11f2397c0296a4b62cc266b4fa00a63c1e2 (diff)
OpenAL support
Diffstat (limited to 'src/audio/pcm.h')
-rw-r--r--src/audio/pcm.h57
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__