--- /dev/null
+#ifndef MSP_AL_SOUND_H_
+#define MSP_AL_SOUND_H_
+
+#include <string>
+#include <vorbis/vorbisfile.h>
+#include "format.h"
+
+namespace Msp {
+namespace AL {
+
+/**
+This class facilitates loading sound files. Currently only Ogg Vorbis is
+supported.
+*/
+class SoundDecoder
+{
+private:
+ OggVorbis_File ovfile;
+ unsigned freq;
+ unsigned size;
+ Format format;
+ bool eof_flag;
+
+public:
+ SoundDecoder();
+ ~SoundDecoder();
+
+ void open_file(const std::string &);
+ void open_memory(const void *, unsigned);
+private:
+ void open_common();
+public:
+ void close();
+ void rewind();
+ unsigned read(char *, unsigned);
+ bool eof() const { return eof_flag; }
+
+ Format get_format() const { return format; }
+ unsigned get_frequency() const { return freq; }
+ unsigned get_size() const { return size; }
+};
+
+} // namespace AL
+} // namespace Msp
+
+#endif