summaryrefslogtreecommitdiff
path: root/muggle-plugin/vdr_decoder_ogg.h
diff options
context:
space:
mode:
Diffstat (limited to 'muggle-plugin/vdr_decoder_ogg.h')
-rw-r--r--muggle-plugin/vdr_decoder_ogg.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/muggle-plugin/vdr_decoder_ogg.h b/muggle-plugin/vdr_decoder_ogg.h
new file mode 100644
index 0000000..1f5fcfc
--- /dev/null
+++ b/muggle-plugin/vdr_decoder_ogg.h
@@ -0,0 +1,63 @@
+/*! \file vdr_decoder_ogg.h
+ * \ingroup vdr
+ *
+ * The file contains a decoder which is used by the player to decode ogg vorbis audio files.
+ *
+ * Adapted from
+ * MP3/MPlayer plugin to VDR (C++)
+ * (C) 2001-2003 Stefan Huelswitt <huels@iname.com>
+ */
+
+#ifndef ___DECODER_OGG_H
+#define ___DECODER_OGG_H
+
+#define DEC_OGG DEC_ID('O','G','G',' ')
+#define DEC_OGG_STR "OGG"
+
+#ifdef HAVE_VORBISFILE
+
+#include "vdr_decoder.h"
+
+// ----------------------------------------------------------------
+
+class mgOggFile;
+
+/*!
+ * \brief A decoder for Ogg Vorbis files
+ *
+ */
+class mgOggDecoder:public mgDecoder
+{
+ private:
+
+ mgOggFile * m_file;
+ struct mgDecode m_ds;
+ struct mad_pcm *m_pcm;
+ unsigned long long m_index;
+
+//
+ void init (void);
+ bool clean (void);
+ struct mgDecode *done (eDecodeStatus status);
+
+ public:
+
+ mgOggDecoder (mgContentItem * item);
+ ~mgOggDecoder ();
+
+ virtual mgPlayInfo *playInfo ();
+
+ virtual bool valid ();
+
+ virtual bool start ();
+
+ virtual bool stop ();
+
+ virtual bool skip (int Seconds, int Avail, int Rate);
+
+ virtual struct mgDecode *decode (void);
+};
+
+// ----------------------------------------------------------------
+#endif //HAVE_VORBISFILE
+#endif //___DECODER_OGG_H