X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/53a9d8fb94c67581d0d97f723c63e674ab94143e..612e765ceb09fce886ffc02120f039f7d880048f:/lib/dvb/decoder.cpp diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 8877f3ef..c93fe26d 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -305,6 +305,9 @@ eDVBVideo::eDVBVideo(eDVBDemux *demux, int dev) char filename[128]; #if HAVE_DVB_API_VERSION < 3 sprintf(filename, "/dev/dvb/card%d/video%d", demux->adapter, dev); + m_fd_video = ::open("/dev/video", O_RDWR); + if (m_fd_video < 0) + eWarning("/dev/video: %m"); #else sprintf(filename, "/dev/dvb/adapter%d/video%d", demux->adapter, dev); #endif @@ -509,12 +512,17 @@ int eDVBVideo::setFastForward(int skip) int eDVBVideo::getPTS(pts_t &now) { - eDebugNoNewLine("VIDEO_GET_PTS - "); +#if HAVE_DVB_API_VERSION < 3 + #define VIDEO_GET_PTS_OLD _IOR('o', 1, unsigned int*) + unsigned int pts; + int ret = ::ioctl(m_fd_video, VIDEO_GET_PTS_OLD, &pts); + now = pts; + now *= 2; +#else int ret = ::ioctl(m_fd, VIDEO_GET_PTS, &now); +#endif if (ret < 0) - eDebug("failed(%m)"); - else - eDebug("ok"); + eDebug("VIDEO_GET_PTS failed(%m)"); return ret; } @@ -531,13 +539,17 @@ eDVBVideo::~eDVBVideo() ::close(m_fd); if (m_fd_demux >= 0) ::close(m_fd_demux); +#if HAVE_DVB_API_VERSION < 3 + if (m_fd_video >= 0) + ::close(m_fd_video); +#endif } void eDVBVideo::video_event(int) { #if HAVE_DVB_API_VERSION >= 3 struct video_event evt; - eDebugNoNewLine("VIDEO_GET_EVENT - " + eDebugNoNewLine("VIDEO_GET_EVENT - "); if (::ioctl(m_fd, VIDEO_GET_EVENT, &evt) < 0) eDebug("failed (%m)"); else @@ -696,7 +708,7 @@ int eDVBTText::startPid(int pid) return -errno; } eDebug("ok"); - eDebugNoNewLine("DEMUX_START - pcr - ", pid); + eDebugNoNewLine("DEMUX_START - pcr - "); if (::ioctl(m_fd_demux, DMX_START) < 0) { eDebug("failed(%m)");