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