X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fdvb%2Fdecoder.h;h=834499b0c01ccc5c17a73a1d9727b0fc3aff0ff9;hb=1f3788c5e1a47fa9b0412902acba38c86b53bb63;hp=dd39696736c9a8df83c70d7087679412c0a61146;hpb=4a4c68a81ef807175d3c193eab4743169d3f9627;p=vuplus_dvbapp diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index dd39696..834499b 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -9,10 +9,11 @@ class eDVBAudio: public iObject DECLARE_REF(eDVBAudio); private: ePtr m_demux; - int m_fd, m_fd_demux; + int m_fd, m_fd_demux, m_dev; public: + enum { aMPEG, aAC3, aDTS, aAAC }; eDVBAudio(eDVBDemux *demux, int dev); - int startPid(int pid); + int startPid(int pid, int type); void stop(); #if HAVE_DVB_API_VERSION < 3 void start(); @@ -21,6 +22,7 @@ public: void flush(); void freeze(); void unfreeze(); + int getPTS(pts_t &now); virtual ~eDVBAudio(); }; @@ -29,10 +31,13 @@ class eDVBVideo: public iObject DECLARE_REF(eDVBVideo); private: ePtr m_demux; - int m_fd, m_fd_demux; + int m_fd, m_fd_demux, m_dev; + + int m_is_slow_motion, m_is_fast_forward; public: + enum { MPEG2, MPEG4_H264 }; eDVBVideo(eDVBDemux *demux, int dev); - int startPid(int pid); + int startPid(int pid, int type); void stop(); #if HAVE_DVB_API_VERSION < 3 void start(); @@ -40,7 +45,10 @@ public: #endif void flush(); void freeze(); + int setSlowMotion(int repeat); + int setFastForward(int skip); void unfreeze(); + int getPTS(pts_t &now); virtual ~eDVBVideo(); }; @@ -57,6 +65,19 @@ public: virtual ~eDVBPCR(); }; +class eDVBTText: public iObject +{ +DECLARE_REF(eDVBTText); +private: + ePtr m_demux; + int m_fd_demux; +public: + eDVBTText(eDVBDemux *demux); + int startPid(int pid); + void stop(); + virtual ~eDVBTText(); +}; + class eTSMPEGDecoder: public Object, public iTSMPEGDecoder { DECLARE_REF(eTSMPEGDecoder); @@ -65,14 +86,17 @@ private: ePtr m_audio; ePtr m_video; ePtr m_pcr; - int m_vpid, m_apid, m_atype, m_pcrpid; + ePtr m_text; + int m_vpid, m_vtype, m_apid, m_atype, m_pcrpid, m_textpid; enum { changeVideo = 1, changeAudio = 2, - changePCR = 4 + changePCR = 4, + changeText = 8 }; - int m_changed; + int m_changed, m_decoder; + int m_is_ff, m_is_sm, m_is_trickmode; int setState(); ePtr m_demux_event; @@ -81,17 +105,24 @@ public: enum { pidNone = -1 }; eTSMPEGDecoder(eDVBDemux *demux, int decoder); virtual ~eTSMPEGDecoder(); - RESULT setVideoPID(int vpid); + RESULT setVideoPID(int vpid, int type); RESULT setAudioPID(int apid, int type); RESULT setSyncPCR(int pcrpid); + RESULT setTextPID(int textpid); RESULT setSyncMaster(int who); RESULT start(); RESULT freeze(int cont); RESULT unfreeze(); RESULT setSinglePictureMode(int when); RESULT setPictureSkipMode(int what); + RESULT setFastForward(int frames_to_skip); RESULT setSlowMotion(int repeat); RESULT setZoom(int what); RESULT flush(); + RESULT setTrickmode(int what); + + /* what 0=auto, 1=video, 2=audio. */ + RESULT getPTS(int what, pts_t &pts); }; + #endif