X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1f3788c5e1a47fa9b0412902acba38c86b53bb63..d1e450f95a9b79b144a00dcf0f9356ff6cb9bfb2:/lib/dvb/decoder.h diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index 834499b0..c864c095 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -4,6 +4,8 @@ #include #include +class eSocketNotifier; + class eDVBAudio: public iObject { DECLARE_REF(eDVBAudio); @@ -14,6 +16,8 @@ public: enum { aMPEG, aAC3, aDTS, aAAC }; eDVBAudio(eDVBDemux *demux, int dev); int startPid(int pid, int type); + enum { aMonoLeft, aStereo, aMonoRight }; + void setChannel(int channel); void stop(); #if HAVE_DVB_API_VERSION < 3 void start(); @@ -26,7 +30,7 @@ public: virtual ~eDVBAudio(); }; -class eDVBVideo: public iObject +class eDVBVideo: public iObject, public Object { DECLARE_REF(eDVBVideo); private: @@ -34,10 +38,13 @@ private: int m_fd, m_fd_demux, m_dev; int m_is_slow_motion, m_is_fast_forward; + eSocketNotifier *m_sn; + void video_event(int what); + Signal1 m_event; public: enum { MPEG2, MPEG4_H264 }; eDVBVideo(eDVBDemux *demux, int dev); - int startPid(int pid, int type); + int startPid(int pid, int type=MPEG2); void stop(); #if HAVE_DVB_API_VERSION < 3 void start(); @@ -50,6 +57,7 @@ public: void unfreeze(); int getPTS(pts_t &now); virtual ~eDVBVideo(); + RESULT connectEvent(const Slot1 &event, ePtr &conn); }; class eDVBPCR: public iObject @@ -80,7 +88,11 @@ public: class eTSMPEGDecoder: public Object, public iTSMPEGDecoder { + static int m_pcm_delay; + static int m_ac3_delay; + static int m_audio_channel; DECLARE_REF(eTSMPEGDecoder); + std::string m_radio_pic; private: ePtr m_demux; ePtr m_audio; @@ -98,15 +110,24 @@ private: int m_changed, m_decoder; int m_is_ff, m_is_sm, m_is_trickmode; int setState(); - ePtr m_demux_event; + ePtr m_demux_event_conn; + ePtr m_video_event_conn; void demux_event(int event); + void video_event(struct videoEvent); + Signal1 m_video_event; public: enum { pidNone = -1 }; eTSMPEGDecoder(eDVBDemux *demux, int decoder); virtual ~eTSMPEGDecoder(); RESULT setVideoPID(int vpid, int type); RESULT setAudioPID(int apid, int type); + RESULT setAudioChannel(int channel); + int getAudioChannel(); + RESULT setPCMDelay(int delay); + int getPCMDelay() { return m_pcm_delay; } + RESULT setAC3Delay(int delay); + int getAC3Delay() { return m_ac3_delay; } RESULT setSyncPCR(int pcrpid); RESULT setTextPID(int textpid); RESULT setSyncMaster(int who); @@ -120,9 +141,11 @@ public: RESULT setZoom(int what); RESULT flush(); RESULT setTrickmode(int what); - + RESULT showSinglePic(const char *filename); + RESULT setRadioPic(const std::string &filename); /* what 0=auto, 1=video, 2=audio. */ RESULT getPTS(int what, pts_t &pts); + RESULT connectVideoEvent(const Slot1 &event, ePtr &connection); }; #endif