fix inverted setting (meaning was inverted too)
[enigma2.git] / lib / dvb / decoder.h
1 #ifndef __decoder_h
2 #define __decoder_h
3
4 #include <lib/base/object.h>
5 #include <lib/dvb/demux.h>
6
7 class eDVBAudio: public iObject
8 {
9 DECLARE_REF(eDVBAudio);
10 private:
11         ePtr<eDVBDemux> m_demux;
12         int m_fd, m_fd_demux;
13 public:
14         enum {aMPEG, aAC3, aDTS };
15         eDVBAudio(eDVBDemux *demux, int dev);
16         int startPid(int pid, int type);
17         void stop();
18 #if HAVE_DVB_API_VERSION < 3
19         void start();
20         void stopPid();
21 #endif
22         void flush();
23         void freeze();
24         void unfreeze();
25         virtual ~eDVBAudio();
26 };
27
28 class eDVBVideo: public iObject
29 {
30 DECLARE_REF(eDVBVideo);
31 private:
32         ePtr<eDVBDemux> m_demux;
33         int m_fd, m_fd_demux;
34         
35         int m_is_slow_motion, m_is_fast_forward;
36 public:
37         eDVBVideo(eDVBDemux *demux, int dev);
38         int startPid(int pid);
39         void stop();
40 #if HAVE_DVB_API_VERSION < 3
41         void start();
42         void stopPid();
43 #endif
44         void flush();
45         void freeze();
46         int setSlowMotion(int repeat);
47         int setFastForward(int skip);
48         void unfreeze();
49         virtual ~eDVBVideo();
50 };
51
52 class eDVBPCR: public iObject
53 {
54 DECLARE_REF(eDVBPCR);
55 private:
56         ePtr<eDVBDemux> m_demux;
57         int m_fd_demux;
58 public:
59         eDVBPCR(eDVBDemux *demux);
60         int startPid(int pid);
61         void stop();
62         virtual ~eDVBPCR();
63 };
64
65 class eDVBTText: public iObject
66 {
67 DECLARE_REF(eDVBTText);
68 private:
69         ePtr<eDVBDemux> m_demux;
70         int m_fd_demux;
71 public:
72         eDVBTText(eDVBDemux *demux);
73         int startPid(int pid);
74         void stop();
75         virtual ~eDVBTText();
76 };
77
78 class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
79 {
80 DECLARE_REF(eTSMPEGDecoder);
81 private:
82         ePtr<eDVBDemux> m_demux;
83         ePtr<eDVBAudio> m_audio;
84         ePtr<eDVBVideo> m_video;
85         ePtr<eDVBPCR> m_pcr;
86         ePtr<eDVBTText> m_text;
87         int m_vpid, m_apid, m_atype, m_pcrpid, m_textpid;
88         enum
89         {
90                 changeVideo = 1, 
91                 changeAudio = 2, 
92                 changePCR   = 4,
93                 changeText  = 8
94         };
95         int m_changed;
96         int m_is_ff, m_is_sm, m_is_trickmode;
97         int setState();
98         ePtr<eConnection> m_demux_event;
99         
100         void demux_event(int event);
101 public:
102         enum { pidNone = -1 };
103         eTSMPEGDecoder(eDVBDemux *demux, int decoder);
104         virtual ~eTSMPEGDecoder();
105         RESULT setVideoPID(int vpid);
106         RESULT setAudioPID(int apid, int type);
107         RESULT setSyncPCR(int pcrpid);
108         RESULT setTextPID(int textpid);
109         RESULT setSyncMaster(int who);
110         RESULT start();
111         RESULT freeze(int cont);
112         RESULT unfreeze();
113         RESULT setSinglePictureMode(int when);
114         RESULT setPictureSkipMode(int what);
115         RESULT setFastForward(int frames_to_skip);
116         RESULT setSlowMotion(int repeat);
117         RESULT setZoom(int what);
118         RESULT flush();
119         RESULT setTrickmode(int what);
120 };
121 #endif