#ifndef MSP_AL_OGGDECODER_H_
#define MSP_AL_OGGDECODER_H_
+#include <stdexcept>
#include "sounddecoder.h"
namespace Msp {
namespace AL {
+class ogg_error: public std::runtime_error
+{
+public:
+ ogg_error(const std::string &, int);
+ virtual ~ogg_error() throw() { }
+
+private:
+ static std::string get_message(int);
+};
+
+
+/**
+Decoder for Ogg Vorbis files. Normally you should use one of the
+SoundDecoder::open_* functions to create a decoder.
+*/
class OggDecoder: public SoundDecoder
{
private:
OggDecoder(IO::Seekable &);
~OggDecoder();
- virtual void rewind();
+ static bool detect(const std::string &);
+
+ virtual void seek(unsigned);
virtual unsigned read(char *, unsigned);
};