summaryrefslogtreecommitdiff
path: root/vdr_decoder_ogg.h
blob: 1f5fcfc216e004ee5da7668918512461930fb9a8 (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
/*! \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