X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/225c99450eab2aba7aa0e8ea3d2ff73da2910d46..1917887e66e15f79b06830993365f8659623d1aa:/lib/dvb/decoder.cpp 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(); }