diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-07-16 16:17:31 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-07-16 16:17:31 +0000 |
| commit | fdad4815a5c267a5f20f10604617b833d85ec32e (patch) | |
| tree | 964224aa46557bcc9a9e8ba8b071b0a26d25ef5e | |
| parent | 8b7bd9c03984b5f534a0c50561621c1368d926da (diff) | |
| download | enigma2-fdad4815a5c267a5f20f10604617b833d85ec32e.tar.gz enigma2-fdad4815a5c267a5f20f10604617b833d85ec32e.zip | |
fix no more working sec with old api
fix get video pts for old api
| -rw-r--r-- | lib/dvb/decoder.cpp | 20 | ||||
| -rw-r--r-- | lib/dvb/decoder.h | 4 | ||||
| -rw-r--r-- | lib/dvb/frontend.cpp | 34 |
3 files changed, 38 insertions, 20 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 7b2284d3..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,6 +539,10 @@ 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) diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index 2c47834a..cd59b3d9 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -40,7 +40,9 @@ DECLARE_REF(eDVBVideo); private: ePtr<eDVBDemux> m_demux; int m_fd, m_fd_demux, m_dev; - +#if HAVE_DVB_API_VERSION < 3 + m_fd_video; +#endif int m_is_slow_motion, m_is_fast_forward, m_is_freezed; eSocketNotifier *m_sn; void video_event(int what); diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 04b794d4..1906a8f4 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -449,21 +449,6 @@ int eDVBFrontend::openFrontend() { case FE_QPSK: m_type = iDVBFrontend::feSatellite; -#if HAVE_DVB_API_VERSION < 3 - if (m_secfd < 0) - { - m_secfd = ::open(m_sec_filename, O_RDWR); - if (m_secfd < 0) - { - eWarning("failed! (%s) %m", m_sec_filename); - ::close(m_fd); - m_fd=-1; - return -1; - } - } - else - eWarning("sec %d already opened", m_dvbid); -#endif break; case FE_QAM: m_type = iDVBFrontend::feCable; @@ -480,6 +465,25 @@ int eDVBFrontend::openFrontend() eDebug("detected %s frontend", "satellite\0cable\0 terrestrial"+fe_info.type*10); } +#if HAVE_DVB_API_VERSION < 3 + if (m_type == iDVBFrontend::feSatellite) + { + if (m_secfd < 0) + { + m_secfd = ::open(m_sec_filename, O_RDWR); + if (m_secfd < 0) + { + eWarning("failed! (%s) %m", m_sec_filename); + ::close(m_fd); + m_fd=-1; + return -1; + } + } + else + eWarning("sec %d already opened", m_dvbid); + } +#endif + setTone(iDVBFrontend::toneOff); setVoltage(iDVBFrontend::voltageOff); |
