aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/decoder.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2007-04-17 15:47:54 +0000
committerFelix Domke <tmbinc@elitedvb.net>2007-04-17 15:47:54 +0000
commit1917887e66e15f79b06830993365f8659623d1aa (patch)
tree2ecc1fc67ec70176ebf8a7abf3fea6ad693f4825 /lib/dvb/decoder.cpp
parent225c99450eab2aba7aa0e8ea3d2ff73da2910d46 (diff)
downloadenigma2-1917887e66e15f79b06830993365f8659623d1aa.tar.gz
enigma2-1917887e66e15f79b06830993365f8659623d1aa.zip
add preroll, to start in frozen mode after play
Diffstat (limited to 'lib/dvb/decoder.cpp')
-rw-r--r--lib/dvb/decoder.cpp18
1 files changed, 18 insertions, 0 deletions
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");
}
@@ -699,6 +707,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();
}