X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5..afb996e31e73607e2ef25ba679a15f15c94701e4:/lib/dvb/decoder.h diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index 6694e9fc..dd396967 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -4,9 +4,9 @@ #include #include -class eDVBAudio: public virtual iObject +class eDVBAudio: public iObject { -DECLARE_REF; +DECLARE_REF(eDVBAudio); private: ePtr m_demux; int m_fd, m_fd_demux; @@ -14,12 +14,19 @@ public: eDVBAudio(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(); + void unfreeze(); virtual ~eDVBAudio(); }; -class eDVBVideo: public virtual iObject +class eDVBVideo: public iObject { -DECLARE_REF; +DECLARE_REF(eDVBVideo); private: ePtr m_demux; int m_fd, m_fd_demux; @@ -27,17 +34,37 @@ 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(); + void unfreeze(); virtual ~eDVBVideo(); }; -class eTSMPEGDecoder: public virtual 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 eTSMPEGDecoder: public Object, public iTSMPEGDecoder { -DECLARE_REF; +DECLARE_REF(eTSMPEGDecoder); private: ePtr m_demux; ePtr m_audio; ePtr m_video; - + ePtr m_pcr; int m_vpid, m_apid, m_atype, m_pcrpid; enum { @@ -47,6 +74,9 @@ private: }; int m_changed; int setState(); + ePtr m_demux_event; + + void demux_event(int event); public: enum { pidNone = -1 }; eTSMPEGDecoder(eDVBDemux *demux, int decoder); @@ -62,5 +92,6 @@ public: RESULT setPictureSkipMode(int what); RESULT setSlowMotion(int repeat); RESULT setZoom(int what); + RESULT flush(); }; #endif