From: Andreas Monzner Date: Wed, 12 Jul 2006 11:01:42 +0000 (+0000) Subject: use ac3/pcm delay from parent service (for subservices and recordings) X-Git-Tag: 2.6.0~3180 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/b54375f8fc2def1ce7bb6201e2c347a570ae3413 use ac3/pcm delay from parent service (for subservices and recordings) --- diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 581f64c5..7d737c22 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -751,7 +751,10 @@ RESULT eDVBServicePlay::start() m_first_program_info = 1; eServiceReferenceDVB &service = (eServiceReferenceDVB&)m_reference; r = m_service_handler.tune(service, m_is_pvr, m_cue); - + + // get back correct service reference (after parsing of recording meta files) + m_service_handler.getServiceReference(service); + /* inject EIT if there is a stored one */ if (m_is_pvr) { @@ -1689,29 +1692,32 @@ void eDVBServicePlay::updateDecoder() ac3_delay = m_dvb_service->getCacheEntry(eDVBService::cAC3DELAY); pcm_delay = m_dvb_service->getCacheEntry(eDVBService::cPCMDELAY); } -/* - else if (m_reference.path.length()) // workaround for recordings + else // subservice or recording { - eDebug("playback %s", m_reference.toString().c_str()); - - ePtr res_mgr; - if (!eDVBResourceManager::getInstance(res_mgr)) + eServiceReferenceDVB parent = ((eServiceReferenceDVB&)m_reference).getParentServiceReference(); + if (!parent && !m_reference.path.empty()) // is recording { - ePtr db; - if (!res_mgr->getChannelList(db)) + parent = (eServiceReferenceDVB&)m_reference; + parent.path=""; + } + if (parent) + { + ePtr res_mgr; + if (!eDVBResourceManager::getInstance(res_mgr)) { - ePtr origService; - eServiceReference tmp = m_reference; - tmp.path=""; - if (!db->getService((eServiceReferenceDVB&)tmp, origService)) + ePtr db; + if (!res_mgr->getChannelList(db)) { - ac3_delay = origService->getCacheEntry(eDVBService::cAC3DELAY); - pcm_delay = origService->getCacheEntry(eDVBService::cPCMDELAY); + ePtr origService; + if (!db->getService(parent, origService)) + { + ac3_delay = origService->getCacheEntry(eDVBService::cAC3DELAY); + pcm_delay = origService->getCacheEntry(eDVBService::cPCMDELAY); + } } } } } -*/ m_decoder->setAC3Delay(ac3_delay == -1 ? 0 : ac3_delay); m_decoder->setPCMDelay(pcm_delay == -1 ? 0 : pcm_delay);