add pause support
[vuplus_dvbapp] / 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         void freeze();
41         void unfreeze();
42         virtual ~eDVBVideo();
43 };
44
45 class eDVBPCR: public iObject
46 {
47 DECLARE_REF(eDVBPCR);
48 private:
49         ePtr<eDVBDemux> m_demux;
50         int m_fd_demux;
51 public:
52         eDVBPCR(eDVBDemux *demux);
53         int startPid(int pid);
54         void stop();
55         virtual ~eDVBPCR();
56 };
57
58 class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
59 {
60 DECLARE_REF(eTSMPEGDecoder);
61 private:
62         ePtr<eDVBDemux> m_demux;
63         ePtr<eDVBAudio> m_audio;
64         ePtr<eDVBVideo> m_video;
65         ePtr<eDVBPCR> m_pcr;
66         int m_vpid, m_apid, m_atype, m_pcrpid;
67         enum
68         {
69                 changeVideo = 1, 
70                 changeAudio = 2, 
71                 changePCR   = 4
72         };
73         int m_changed;
74         int setState();
75         ePtr<eConnection> m_demux_event;
76         
77         void demux_event(int event);
78 public:
79         enum { pidNone = -1 };
80         eTSMPEGDecoder(eDVBDemux *demux, int decoder);
81         virtual ~eTSMPEGDecoder();
82         RESULT setVideoPID(int vpid);
83         RESULT setAudioPID(int apid, int type);
84         RESULT setSyncPCR(int pcrpid);
85         RESULT setSyncMaster(int who);
86         RESULT start();
87         RESULT freeze(int cont);
88         RESULT unfreeze();
89         RESULT setSinglePictureMode(int when);
90         RESULT setPictureSkipMode(int what);
91         RESULT setSlowMotion(int repeat);
92         RESULT setZoom(int what);
93         RESULT flush();
94 };
95 #endif