diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-07-12 11:01:42 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-07-12 11:01:42 +0000 |
| commit | b54375f8fc2def1ce7bb6201e2c347a570ae3413 (patch) | |
| tree | 6d11ca6a76b16f92f0b894669c79560812ab5404 /lib/service/servicedvb.cpp | |
| parent | ef441433e50dae11f11ffc0b2287f15f896d43ae (diff) | |
| download | enigma2-b54375f8fc2def1ce7bb6201e2c347a570ae3413.tar.gz enigma2-b54375f8fc2def1ce7bb6201e2c347a570ae3413.zip | |
use ac3/pcm delay from parent service (for subservices and recordings)
Diffstat (limited to 'lib/service/servicedvb.cpp')
| -rw-r--r-- | lib/service/servicedvb.cpp | 38 |
1 files changed, 22 insertions, 16 deletions
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<eDVBResourceManager> res_mgr; - if (!eDVBResourceManager::getInstance(res_mgr)) + eServiceReferenceDVB parent = ((eServiceReferenceDVB&)m_reference).getParentServiceReference(); + if (!parent && !m_reference.path.empty()) // is recording { - ePtr<iDVBChannelList> db; - if (!res_mgr->getChannelList(db)) + parent = (eServiceReferenceDVB&)m_reference; + parent.path=""; + } + if (parent) + { + ePtr<eDVBResourceManager> res_mgr; + if (!eDVBResourceManager::getInstance(res_mgr)) { - ePtr<eDVBService> origService; - eServiceReference tmp = m_reference; - tmp.path=""; - if (!db->getService((eServiceReferenceDVB&)tmp, origService)) + ePtr<iDVBChannelList> db; + if (!res_mgr->getChannelList(db)) { - ac3_delay = origService->getCacheEntry(eDVBService::cAC3DELAY); - pcm_delay = origService->getCacheEntry(eDVBService::cPCMDELAY); + ePtr<eDVBService> 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); |
