add return code
[enigma2.git] / lib / dvb / decoder.cpp
index b7118558a3ae7e712f61df7908afbf2f2cefc9da..951a2edf1e5d539d2f9c28ca4c2e0d1e476776d9 100644 (file)
@@ -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)