aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicedvb.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-02-17 16:44:45 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-02-17 16:44:45 +0000
commitb96f203b700c91e463eff20889d734119530bce0 (patch)
tree0f17dba15d739889e7d4816021515341241dd2e4 /lib/service/servicedvb.cpp
parent5e8e6de17ab3140b57d21e5d2373b8a0707f1ce2 (diff)
downloadenigma2-b96f203b700c91e463eff20889d734119530bce0.tar.gz
enigma2-b96f203b700c91e463eff20889d734119530bce0.zip
use AUDIO_GET_STC, VIDEO_GET_STC
Diffstat (limited to 'lib/service/servicedvb.cpp')
-rw-r--r--lib/service/servicedvb.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 3487c3e6..5f5aae65 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -604,6 +604,11 @@ void eDVBServicePlay::serviceEvent(int event)
updateTimeshiftPids();
if (!m_timeshift_active)
updateDecoder();
+ if (m_first_program_info && m_is_pvr)
+ {
+ m_first_program_info = 0;
+ seekTo(0);
+ }
m_event((iPlayableService*)this, evUpdatedInfo);
break;
}
@@ -637,6 +642,7 @@ RESULT eDVBServicePlay::start()
two (one for decoding, one for data source), as we must be prepared
to start recording from the data demux. */
m_cue = new eCueSheet();
+ m_first_program_info = 1;
r = m_service_handler.tune((eServiceReferenceDVB&)m_reference, m_is_pvr, m_cue);
m_event(this, evStart);
m_event((iPlayableService*)this, evSeekableStatusChanged);
@@ -815,7 +821,18 @@ RESULT eDVBServicePlay::getPlayPosition(pts_t &pos)
if ((m_timeshift_enabled ? m_service_handler_timeshift : m_service_handler).getPVRChannel(pvr_channel))
return -1;
- return pvr_channel->getCurrentPosition(m_decode_demux, pos, 1);
+ int r = 0;
+
+ /* if there is a decoder, use audio or video PTS */
+ if (m_decoder)
+ {
+ r = m_decoder->getPTS(0, pos);
+ if (r)
+ return r;
+ }
+
+ /* fixup */
+ return pvr_channel->getCurrentPosition(m_decode_demux, pos, m_decoder ? 1 : 0);
}
RESULT eDVBServicePlay::setTrickmode(int trick)