From 913cbe91fcba552dc14d6123572398415b40eb40 Mon Sep 17 00:00:00 2001 From: ghost Date: Tue, 22 Sep 2009 11:47:48 +0200 Subject: [PATCH] fix wrong encoding of event description during pvr playback.. when info button is pressed --- lib/dvb/pmt.cpp | 10 ++-------- lib/service/servicedvb.cpp | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index a4fa212d..9bd065b3 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -184,7 +184,6 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) int first_ac3 = -1; program.defaultAudioStream = 0; - int rdsPid = -1; audioStream *prev_audio = 0; if ( m_service && !m_service->cacheEmpty() ) @@ -698,10 +697,7 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, eDVBCIInterfaces::getInstance()->addPMTHandler(this); } else if (!simulate) // no simulation of playback services { - eDVBMetaParser parser; - - int ret=parser.parseFile(ref.path); - if (ret || !parser.m_ref.getServiceID().get() /* incorrect sid in meta file or recordings.epl*/ ) + if (!ref.getServiceID().get() /* incorrect sid in meta file or recordings.epl*/ ) { eWarning("no .meta file found, trying to find PMT pid"); eDVBTSTools tstools; @@ -717,9 +713,7 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, m_pmt_pid = pmt_pid; } } - } else - m_reference = parser.m_ref; - + } eDebug("alloc PVR"); /* allocate PVR */ res = m_resourceManager->allocatePVRChannel(m_pvr_channel); diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 06285190..1a28fbdd 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -1061,22 +1061,30 @@ void eDVBServicePlay::serviceEventTimeshift(int event) RESULT eDVBServicePlay::start() { - int r; + eServiceReferenceDVB service = (eServiceReferenceDVB&)m_reference; + /* in pvr mode, we only want to use one demux. in tv mode, we're using two (one for decoding, one for data source), as we must be prepared to start recording from the data demux. */ if (m_is_pvr) + { + eDVBMetaParser meta; + if (!meta.parseFile(m_reference.path)) + { + service = meta.m_ref; + service.path = m_reference.path; + } m_cue = new eCueSheet(); + } else m_event(this, evStart); m_first_program_info = 1; - eServiceReferenceDVB &service = (eServiceReferenceDVB&)m_reference; - r = m_service_handler.tune(service, m_is_pvr, m_cue, false, m_dvb_service); + m_service_handler.tune(service, m_is_pvr, m_cue, false, m_dvb_service); - /* inject EIT if there is a stored one */ if (m_is_pvr) { + /* inject EIT if there is a stored one */ std::string filename = service.path; filename.erase(filename.length()-2, 2); filename+="eit"; @@ -1087,10 +1095,6 @@ RESULT eDVBServicePlay::start() m_event_handler.inject(event, 0); m_event_handler.inject(empty, 1); } - } - - if (m_is_pvr) - { loadCuesheet(); m_event(this, evStart); } -- 2.30.2