From: Felix Domke Date: Tue, 17 Apr 2007 15:47:54 +0000 (+0000) Subject: add preroll, to start in frozen mode after play X-Git-Tag: 2.6.0~2288 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/1917887e66e15f79b06830993365f8659623d1aa add preroll, to start in frozen mode after play --- diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index b49bb2c7..fcc38901 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -99,6 +99,8 @@ int eDVBAudio::startPid(int pid, int type) if (::ioctl(m_fd, AUDIO_SET_BYPASS_MODE, bypass) < 0) eWarning("audio: AUDIO_SET_BYPASS_MODE: %m"); + freeze(); + if (::ioctl(m_fd, AUDIO_PLAY) < 0) eWarning("audio: AUDIO_PLAY: %m"); return 0; @@ -225,6 +227,10 @@ int eDVBVideo::startPid(int pid, int type) eWarning("video: DMX_START: %m"); return -errno; } + + eDebug("FREEZE.\n"); + freeze(); + if (::ioctl(m_fd, VIDEO_PLAY) < 0) eWarning("video: VIDEO_PLAY: %m"); return 0; @@ -257,12 +263,14 @@ void eDVBVideo::flush() void eDVBVideo::freeze() { + eDebug("VIDEO_FREEZE"); if (::ioctl(m_fd, VIDEO_FREEZE) < 0) eDebug("video: VIDEO_FREEZE: %m"); } void eDVBVideo::unfreeze() { + eDebug("VIDEO_CONTINUE"); if (::ioctl(m_fd, VIDEO_CONTINUE) < 0) eDebug("video: VIDEO_CONTINUE: %m"); } @@ -698,6 +706,16 @@ RESULT eTSMPEGDecoder::setSyncMaster(int who) } RESULT eTSMPEGDecoder::start() +{ + RESULT r; + r = setState(); + if (r) + return r; + return unfreeze(); +} + + /* preroll is start in freezed mode. */ +RESULT eTSMPEGDecoder::preroll() { return setState(); } diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index c864c095..001139e5 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -132,6 +132,7 @@ public: RESULT setTextPID(int textpid); RESULT setSyncMaster(int who); RESULT start(); + RESULT preroll(); RESULT freeze(int cont); RESULT unfreeze(); RESULT setSinglePictureMode(int when);