aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-07-16 16:17:31 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-07-16 16:17:31 +0000
commitfdad4815a5c267a5f20f10604617b833d85ec32e (patch)
tree964224aa46557bcc9a9e8ba8b071b0a26d25ef5e
parent8b7bd9c03984b5f534a0c50561621c1368d926da (diff)
downloadenigma2-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.cpp20
-rw-r--r--lib/dvb/decoder.h4
-rw-r--r--lib/dvb/frontend.cpp34
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);