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;
eDVBAudio::~eDVBAudio()
{
+ unfreeze();
if (m_fd >= 0)
::close(m_fd);
if (m_fd_demux >= 0)
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;
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");
}
setSlowMotion(0);
if (m_is_fast_forward)
setFastForward(0);
+ unfreeze();
if (m_fd >= 0)
::close(m_fd);
if (m_fd_demux >= 0)
}
RESULT eTSMPEGDecoder::start()
+{
+ RESULT r;
+ r = setState();
+ if (r)
+ return r;
+ return unfreeze();
+}
+
+ /* preroll is start in freezed mode. */
+RESULT eTSMPEGDecoder::preroll()
{
return setState();
}
eDebug("VIDEO_SELECT_SOURCE MEMORY failed (%m)");
if (ioctl(vfd, VIDEO_PLAY) < 0)
eDebug("VIDEO_PLAY failed (%m)");
+ if (::ioctl(vfd, VIDEO_CONTINUE) < 0)
+ eDebug("video: VIDEO_CONTINUE: %m");
int cnt=0;
int pos=0;
while(cnt<2)