Merge branch 'master' into obi/master
[enigma2.git] / lib / service / servicedvb.cpp
index 9cac25fa0207a1632d9c380a4548917faf7c8a5e..0d617c3043e984cbbb8d20022148f31407af94e0 100644 (file)
@@ -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<iTsSource> source = createTsSource(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<iTsSource> source = createTsSource(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<iTsSource> source = createTsSource(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<iTsSource> eDVBServicePlay::createTsSource(eServiceReferenceDVB &ref)
+{
+       eRawFile *f = new eRawFile();
+       f->open(ref.path.c_str());
+       return ePtr<iTsSource>(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<iTsSource> source = createTsSource(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();