diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2010-11-10 20:30:42 +0100 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2010-11-10 20:30:42 +0100 |
| commit | 8c55e2715c847f0dc5edd25af7ec3e4146592770 (patch) | |
| tree | 48d6bd1badef649002606b33cc93582ec19b3fc8 | |
| parent | 961f33b8fa7a02154a5da9504ca0056990b424bd (diff) | |
| download | enigma2-8c55e2715c847f0dc5edd25af7ec3e4146592770.tar.gz enigma2-8c55e2715c847f0dc5edd25af7ec3e4146592770.zip | |
use newer eDVBServicePMTHandler::tuneExt call, add a virtual createDataSource function to make the code more re-usable
| -rw-r--r-- | lib/service/servicedvb.cpp | 20 | ||||
| -rw-r--r-- | lib/service/servicedvb.h | 2 |
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 |
