volume-control:
[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         eDVBAudio(eDVBDemux *demux, int dev);
15         int startPid(int pid);
16         void stop();
17 #if HAVE_DVB_API_VERSION < 3
18         void start();
19         void stopPid();
20 #endif
21         void flush();
22         virtual ~eDVBAudio();
23 };
24
25 class eDVBVideo: public iObject
26 {
27 DECLARE_REF(eDVBVideo);
28 private:
29         ePtr<eDVBDemux> m_demux;
30         int m_fd, m_fd_demux;
31 public:
32         eDVBVideo(eDVBDemux *demux, int dev);
33         int startPid(int pid);
34         void stop();
35 #if HAVE_DVB_API_VERSION < 3
36         void start();
37         void stopPid();
38 #endif
39         void flush();
40         virtual ~eDVBVideo();
41 };
42
43 class eDVBPCR: public iObject
44 {
45 DECLARE_REF(eDVBPCR);
46 private:
47         ePtr<eDVBDemux> m_demux;
48         int m_fd_demux;
49 public:
50         eDVBPCR(eDVBDemux *demux);
51         int startPid(int pid);
52         void stop();
53         virtual ~eDVBPCR();
54 };
55
56 class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
57 {
58 DECLARE_REF(eTSMPEGDecoder);
59 private:
60         ePtr<eDVBDemux> m_demux;
61         ePtr<eDVBAudio> m_audio;
62         ePtr<eDVBVideo> m_video;
63         ePtr<eDVBPCR> m_pcr;
64         int m_vpid, m_apid, m_atype, m_pcrpid;
65         enum
66         {
67                 changeVideo = 1, 
68                 changeAudio = 2, 
69                 changePCR   = 4
70         };
71         int m_changed;
72         int setState();
73         ePtr<eConnection> m_demux_event;
74         
75         void demux_event(int event);
76 public:
77         enum { pidNone = -1 };
78         eTSMPEGDecoder(eDVBDemux *demux, int decoder);
79         virtual ~eTSMPEGDecoder();
80         RESULT setVideoPID(int vpid);
81         RESULT setAudioPID(int apid, int type);
82         RESULT setSyncPCR(int pcrpid);
83         RESULT setSyncMaster(int who);
84         RESULT start();
85         RESULT freeze(int cont);
86         RESULT unfreeze();
87         RESULT setSinglePictureMode(int when);
88         RESULT setPictureSkipMode(int what);
89         RESULT setSlowMotion(int repeat);
90         RESULT setZoom(int what);
91         RESULT flush();
92 };
93 #endif