faster EPG (calculate number of sections and abort when all sections available) fix...
[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         virtual ~eDVBAudio();
18 };
19
20 class eDVBVideo: public iObject
21 {
22 DECLARE_REF(eDVBVideo);
23 private:
24         ePtr<eDVBDemux> m_demux;
25         int m_fd, m_fd_demux;
26 public:
27         eDVBVideo(eDVBDemux *demux, int dev);
28         int startPid(int pid);
29         void stop();
30         virtual ~eDVBVideo();
31 };
32
33 class eDVBPCR: public iObject
34 {
35 DECLARE_REF(eDVBPCR);
36 private:
37         ePtr<eDVBDemux> m_demux;
38         int m_fd_demux;
39 public:
40         eDVBPCR(eDVBDemux *demux);
41         int startPid(int pid);
42         void stop();
43         virtual ~eDVBPCR();
44 };
45
46 class eTSMPEGDecoder: public iTSMPEGDecoder
47 {
48 DECLARE_REF(eTSMPEGDecoder);
49 private:
50         ePtr<eDVBDemux> m_demux;
51         ePtr<eDVBAudio> m_audio;
52         ePtr<eDVBVideo> m_video;
53         ePtr<eDVBPCR> m_pcr;
54         int m_vpid, m_apid, m_atype, m_pcrpid;
55         enum
56         {
57                 changeVideo = 1, 
58                 changeAudio = 2, 
59                 changePCR   = 4
60         };
61         int m_changed;
62         int setState();
63 public:
64         enum { pidNone = -1 };
65         eTSMPEGDecoder(eDVBDemux *demux, int decoder);
66         virtual ~eTSMPEGDecoder();
67         RESULT setVideoPID(int vpid);
68         RESULT setAudioPID(int apid, int type);
69         RESULT setSyncPCR(int pcrpid);
70         RESULT setSyncMaster(int who);
71         RESULT start();
72         RESULT freeze(int cont);
73         RESULT unfreeze();
74         RESULT setSinglePictureMode(int when);
75         RESULT setPictureSkipMode(int what);
76         RESULT setSlowMotion(int repeat);
77         RESULT setZoom(int what);
78 };
79 #endif