aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/service/servicedvb.cpp20
-rw-r--r--lib/service/servicedvb.h2
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 9cac25fa..1e58d848 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -1094,7 +1094,8 @@ void eDVBServicePlay::serviceEventTimeshift(int event)
if (m_skipmode < 0)
m_cue->seekTo(0, -1000);
- m_service_handler_timeshift.tune(r, 1, m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
+ ePtr<iDataSource> source = createDataSource(r);
+ m_service_handler_timeshift.tuneExt(r, 1, source, r.path.c_str(), m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
m_event((iPlayableService*)this, evUser+1);
}
@@ -1123,7 +1124,8 @@ void eDVBServicePlay::serviceEventTimeshift(int event)
m_service_handler_timeshift.free();
resetTimeshift(1);
- m_service_handler_timeshift.tune(r, 1, m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
+ ePtr<iDataSource> source = createDataSource(r);
+ m_service_handler_timeshift.tuneExt(r, 1, source, m_timeshift_file_next.c_str(), m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
m_event((iPlayableService*)this, evUser+1);
}
@@ -1153,7 +1155,8 @@ RESULT eDVBServicePlay::start()
m_event(this, evStart);
m_first_program_info = 1;
- m_service_handler.tune(service, m_is_pvr, m_cue, false, m_dvb_service);
+ ePtr<iDataSource> source = createDataSource(service);
+ m_service_handler.tuneExt(service, m_is_pvr, source, service.path.c_str(), m_cue, false, m_dvb_service);
if (m_is_pvr)
{
@@ -2357,6 +2360,13 @@ void eDVBServicePlay::resetTimeshift(int start)
m_timeshift_active = 0;
}
+ePtr<iDataSource> eDVBServicePlay::createDataSource(eServiceReferenceDVB &ref)
+{
+ eRawFile *f = new eRawFile();
+ f->open(ref.path.c_str());
+ return ePtr<iDataSource>(f);
+}
+
void eDVBServicePlay::switchToTimeshift()
{
if (m_timeshift_active)
@@ -2368,7 +2378,9 @@ void eDVBServicePlay::switchToTimeshift()
r.path = m_timeshift_file;
m_cue->seekTo(0, -1000);
- m_service_handler_timeshift.tune(r, 1, m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
+
+ ePtr<iDataSource> source = createDataSource(r);
+ m_service_handler_timeshift.tuneExt(r, 1, source, m_timeshift_file.c_str(), m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
eDebug("eDVBServicePlay::switchToTimeshift, in pause mode now.");
pause();
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index c49941b7..23675bf6 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -289,6 +289,8 @@ protected:
ePtr<eConnection> m_video_event_connection;
void video_event(struct iTSMPEGDecoder::videoEvent);
+
+ virtual ePtr<iDataSource> createDataSource(eServiceReferenceDVB &ref);
};
class eStaticServiceDVBBouquetInformation: public iStaticServiceInformation