X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1aeefd997cc362c3b37c1587c5f08891b35c3a75..477c468861635555c7179f2f4397dd765f499656:/lib/dvb/decoder.h diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index b1e65611..b8b58786 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -6,47 +6,98 @@ class eDVBAudio: public iObject { -DECLARE_REF; +DECLARE_REF(eDVBAudio); private: ePtr m_demux; int m_fd, m_fd_demux; public: + enum {aMPEG, aAC3, aDTS }; 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(); + void stopPid(); +#endif + void flush(); + void freeze(); + void unfreeze(); virtual ~eDVBAudio(); }; class eDVBVideo: public iObject { -DECLARE_REF; +DECLARE_REF(eDVBVideo); private: ePtr m_demux; int m_fd, m_fd_demux; + + int m_is_slow_motion, m_is_fast_forward; public: eDVBVideo(eDVBDemux *demux, int dev); int startPid(int pid); void stop(); +#if HAVE_DVB_API_VERSION < 3 + void start(); + void stopPid(); +#endif + void flush(); + void freeze(); + int setSlowMotion(int repeat); + int setFastForward(int skip); + void unfreeze(); virtual ~eDVBVideo(); }; -class eTSMPEGDecoder: public iTSMPEGDecoder +class eDVBPCR: public iObject +{ +DECLARE_REF(eDVBPCR); +private: + ePtr m_demux; + int m_fd_demux; +public: + eDVBPCR(eDVBDemux *demux); + int startPid(int pid); + void stop(); + virtual ~eDVBPCR(); +}; + +class eDVBTText: public iObject { -DECLARE_REF; +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); private: ePtr m_demux; ePtr m_audio; ePtr m_video; - - int m_vpid, m_apid, m_atype, m_pcrpid; + ePtr m_pcr; + ePtr m_text; + int m_vpid, m_apid, m_atype, m_pcrpid, m_textpid; enum { changeVideo = 1, changeAudio = 2, - changePCR = 4 + changePCR = 4, + changeText = 8 }; int m_changed; + int m_is_ff, m_is_sm, m_is_trickmode; int setState(); + ePtr m_demux_event; + + void demux_event(int event); public: enum { pidNone = -1 }; eTSMPEGDecoder(eDVBDemux *demux, int decoder); @@ -54,13 +105,17 @@ public: RESULT setVideoPID(int vpid); 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); }; #endif