4 #include <lib/base/object.h>
5 #include <lib/dvb/demux.h>
7 class eDVBAudio: public iObject
9 DECLARE_REF(eDVBAudio);
11 ePtr<eDVBDemux> m_demux;
12 int m_fd, m_fd_demux, m_dev;
14 enum { aMPEG, aAC3, aDTS, aAAC };
15 eDVBAudio(eDVBDemux *demux, int dev);
16 int startPid(int pid, int type);
18 #if HAVE_DVB_API_VERSION < 3
25 int getPTS(pts_t &now);
29 class eDVBVideo: public iObject
31 DECLARE_REF(eDVBVideo);
33 ePtr<eDVBDemux> m_demux;
34 int m_fd, m_fd_demux, m_dev;
36 int m_is_slow_motion, m_is_fast_forward;
38 enum { MPEG2, MPEG4_H264 };
39 eDVBVideo(eDVBDemux *demux, int dev);
40 int startPid(int pid, int type);
42 #if HAVE_DVB_API_VERSION < 3
48 int setSlowMotion(int repeat);
49 int setFastForward(int skip);
51 int getPTS(pts_t &now);
55 class eDVBPCR: public iObject
59 ePtr<eDVBDemux> m_demux;
62 eDVBPCR(eDVBDemux *demux);
63 int startPid(int pid);
68 class eDVBTText: public iObject
70 DECLARE_REF(eDVBTText);
72 ePtr<eDVBDemux> m_demux;
75 eDVBTText(eDVBDemux *demux);
76 int startPid(int pid);
81 class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
83 DECLARE_REF(eTSMPEGDecoder);
85 ePtr<eDVBDemux> m_demux;
86 ePtr<eDVBAudio> m_audio;
87 ePtr<eDVBVideo> m_video;
89 ePtr<eDVBTText> m_text;
90 int m_vpid, m_vtype, m_apid, m_atype, m_pcrpid, m_textpid;
98 int m_changed, m_decoder;
99 int m_is_ff, m_is_sm, m_is_trickmode;
101 ePtr<eConnection> m_demux_event;
103 void demux_event(int event);
105 enum { pidNone = -1 };
106 eTSMPEGDecoder(eDVBDemux *demux, int decoder);
107 virtual ~eTSMPEGDecoder();
108 RESULT setVideoPID(int vpid, int type);
109 RESULT setAudioPID(int apid, int type);
110 RESULT setSyncPCR(int pcrpid);
111 RESULT setTextPID(int textpid);
112 RESULT setSyncMaster(int who);
114 RESULT freeze(int cont);
116 RESULT setSinglePictureMode(int when);
117 RESULT setPictureSkipMode(int what);
118 RESULT setFastForward(int frames_to_skip);
119 RESULT setSlowMotion(int repeat);
120 RESULT setZoom(int what);
122 RESULT setTrickmode(int what);
124 /* what 0=auto, 1=video, 2=audio. */
125 RESULT getPTS(int what, pts_t &pts);