X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6977ff954d9c08c2f3ca7727cf997ccd7be201ed..6c4436a60b0d992131ea5ac47b783a35704d150b:/lib/dvb/decoder.cpp diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index b7118558..951a2edf 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -98,6 +98,18 @@ void eDVBAudio::flush() if (::ioctl(m_fd, AUDIO_CLEAR_BUFFER) < 0) eDebug("audio: AUDIO_CLEAR_BUFFER: %m"); } + +void eDVBAudio::freeze() +{ + if (::ioctl(m_fd, AUDIO_PAUSE) < 0) + eDebug("video: AUDIO_PAUSE: %m"); +} + +void eDVBAudio::unfreeze() +{ + if (::ioctl(m_fd, AUDIO_CONTINUE) < 0) + eDebug("video: AUDIO_CONTINUE: %m"); +} eDVBAudio::~eDVBAudio() { @@ -183,6 +195,18 @@ void eDVBVideo::flush() eDebug("video: VIDEO_CLEAR_BUFFER: %m"); } +void eDVBVideo::freeze() +{ + if (::ioctl(m_fd, VIDEO_FREEZE) < 0) + eDebug("video: VIDEO_FREEZE: %m"); +} + +void eDVBVideo::unfreeze() +{ + if (::ioctl(m_fd, VIDEO_CONTINUE) < 0) + eDebug("video: VIDEO_CONTINUE: %m"); +} + eDVBVideo::~eDVBVideo() { if (m_fd >= 0) @@ -407,12 +431,24 @@ RESULT eTSMPEGDecoder::start() RESULT eTSMPEGDecoder::freeze(int cont) { - return -1; + if (m_video) + m_video->freeze(); + + if (m_audio) + m_audio->freeze(); + + return 0; } RESULT eTSMPEGDecoder::unfreeze() { - return -1; + if (m_video) + m_video->unfreeze(); + + if (m_audio) + m_audio->unfreeze(); + + return 0; } RESULT eTSMPEGDecoder::setSinglePictureMode(int when)