summaryrefslogtreecommitdiff
path: root/vdr_decoder_ogg.h
blob: c64ae5e46f460a4cffd618b431fc3f2d494ed312 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*!								-*- c++ -*-
 *  \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 (mgItemGd * 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