X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdecoder.h;h=a652e094d359ff0d7c18547079f4ba3fedd8dfd9;hp=f8719869b859fa00ce1110ea5075b9eba1f6d13d;hb=10e7e45ae92d4fe06f70126ed256b87896dbc432;hpb=4e8cae716ad3fdf29a7b2a45e5eec0a530f93277 diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index f871986..a652e09 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -4,22 +4,28 @@ #include #include +class eSocketNotifier; + class eDVBAudio: public iObject { -DECLARE_REF(eDVBAudio); + DECLARE_REF(eDVBAudio); private: ePtr m_demux; - int m_fd, m_fd_demux, m_dev; + int m_fd, m_fd_demux, m_dev, m_is_freezed; 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(); - void stopPid(); + int setPid(int pid, int type); + int startPid(); + int start(); + int stopPid(); + int setAVSync(int val); +#else + int startPid(int pid, int type); #endif void flush(); void freeze(); @@ -28,22 +34,30 @@ public: virtual ~eDVBAudio(); }; -class eDVBVideo: public iObject +class eDVBVideo: public iObject, public Object { -DECLARE_REF(eDVBVideo); + DECLARE_REF(eDVBVideo); private: ePtr m_demux; int m_fd, m_fd_demux, m_dev; - - int m_is_slow_motion, m_is_fast_forward; +#if HAVE_DVB_API_VERSION < 3 + m_fd_video; +#endif + int m_is_slow_motion, m_is_fast_forward, m_is_freezed; + ePtr 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); void stop(); #if HAVE_DVB_API_VERSION < 3 - void start(); - void stopPid(); + int setPid(int pid); + int startPid(); + int start(); + int stopPid(); +#else + int startPid(int pid, int type=MPEG2); #endif void flush(); void freeze(); @@ -52,24 +66,30 @@ public: void unfreeze(); int getPTS(pts_t &now); virtual ~eDVBVideo(); + RESULT connectEvent(const Slot1 &event, ePtr &conn); }; class eDVBPCR: public iObject { -DECLARE_REF(eDVBPCR); + DECLARE_REF(eDVBPCR); private: ePtr m_demux; int m_fd_demux; public: eDVBPCR(eDVBDemux *demux); +#if HAVE_DVB_API_VERSION < 3 + int setPid(int pid); + int startPid(); +#else int startPid(int pid); +#endif void stop(); virtual ~eDVBPCR(); }; class eDVBTText: public iObject { -DECLARE_REF(eDVBTText); + DECLARE_REF(eDVBTText); private: ePtr m_demux; int m_fd_demux; @@ -82,8 +102,12 @@ public: class eTSMPEGDecoder: public Object, public iTSMPEGDecoder { -DECLARE_REF(eTSMPEGDecoder); + DECLARE_REF(eTSMPEGDecoder); private: + static int m_pcm_delay; + static int m_ac3_delay; + static int m_audio_channel; + std::string m_radio_pic; ePtr m_demux; ePtr m_audio; ePtr m_video; @@ -100,9 +124,15 @@ 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; + int m_video_clip_fd; + eTimer m_showSinglePicTimer; + void finishShowSinglePic(); // called by timer public: enum { pidNone = -1 }; eTSMPEGDecoder(eDVBDemux *demux, int decoder); @@ -110,10 +140,16 @@ public: 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); RESULT start(); + RESULT preroll(); RESULT freeze(int cont); RESULT unfreeze(); RESULT setSinglePictureMode(int when); @@ -123,9 +159,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