X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fservice%2Fservicedvb.cpp;h=0e6229c5126d582e68faf72409b82d5ad2fe0d00;hp=2f91971a43931687e0e380aefedd0450065daae5;hb=6ae5d719b93de2e8897a660ac61b0e9c5a190dde;hpb=4510fa62a33b31fec442fd0d77eb682d93ebf7e6 diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 2f91971..0e6229c 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -525,6 +525,7 @@ eServiceFactoryDVB::eServiceFactoryDVB() { std::list extensions; extensions.push_back("ts"); + extensions.push_back("trp"); sc->addServiceFactory(eServiceFactoryDVB::id, this, extensions); } @@ -1132,7 +1133,7 @@ RESULT eDVBServicePlay::pause(ePtr &ptr) RESULT eDVBServicePlay::setSlowMotion(int ratio) { - assert(ratio); /* The API changed: instead of calling setSlowMotion(0), call play! */ + ASSERT(ratio); /* The API changed: instead of calling setSlowMotion(0), call play! */ eDebug("eDVBServicePlay::setSlowMotion(%d)", ratio); setFastForward_internal(0); if (m_decoder) @@ -1144,7 +1145,7 @@ RESULT eDVBServicePlay::setSlowMotion(int ratio) RESULT eDVBServicePlay::setFastForward(int ratio) { eDebug("eDVBServicePlay::setFastForward(%d)", ratio); - assert(ratio); + ASSERT(ratio); return setFastForward_internal(ratio); } @@ -1601,7 +1602,7 @@ RESULT eDVBServicePlay::selectTrack(unsigned int i) { int ret = selectAudioStream(i); - if (m_decoder->play()) + if (m_decoder->set()) return -5; return ret; @@ -1715,11 +1716,16 @@ int eDVBServicePlay::selectAudioStream(int i) m_dvb_service->setCacheEntry(eDVBService::cAPID, apid); m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1); } - else + else if (apidtype == eDVBAudio::aAC3) { m_dvb_service->setCacheEntry(eDVBService::cAPID, -1); m_dvb_service->setCacheEntry(eDVBService::cAC3PID, apid); } + else + { + m_dvb_service->setCacheEntry(eDVBService::cAPID, -1); + m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1); + } } h.resetCachedProgram(); @@ -2290,8 +2296,18 @@ void eDVBServicePlay::updateDecoder() } } } - m_decoder->setAC3Delay(ac3_delay == -1 ? 0 : ac3_delay); - m_decoder->setPCMDelay(pcm_delay == -1 ? 0 : pcm_delay); + + std::string config_delay; + int config_delay_int = 0; + if(ePythonConfigQuery::getConfigValue("config.av.generalAC3delay", config_delay) == 0) + config_delay_int = atoi(config_delay.c_str()); + m_decoder->setAC3Delay(ac3_delay == -1 ? config_delay_int : ac3_delay + config_delay_int); + + if(ePythonConfigQuery::getConfigValue("config.av.generalPCMdelay", config_delay) == 0) + config_delay_int = atoi(config_delay.c_str()); + else + config_delay_int = 0; + m_decoder->setPCMDelay(pcm_delay == -1 ? config_delay_int : pcm_delay + config_delay_int); m_decoder->setVideoPID(vpid, vpidtype); selectAudioStream(); @@ -2305,13 +2321,6 @@ void eDVBServicePlay::updateDecoder() m_teletext_parser->start(program.textPid); -/* if (!m_is_primary) - m_decoder->setTrickmode(); - else */ if (m_is_paused) - m_decoder->pause(); - else - m_decoder->play(); - if (vpid > 0 && vpid < 0x2000) ; else @@ -2321,6 +2330,13 @@ void eDVBServicePlay::updateDecoder() m_decoder->setRadioPic(radio_pic); } +/* if (!m_is_primary) + m_decoder->setTrickmode(); + else */ if (m_is_paused) + m_decoder->pause(); + else + m_decoder->play(); + m_decoder->setAudioChannel(achannel); /* don't worry about non-existing services, nor pvr services */ @@ -2428,11 +2444,16 @@ void eDVBServicePlay::cutlistToCuesheet() std::multiset::iterator i(m_cue_entries.begin()); + int have_any_span = 0; + while (1) { if (i == m_cue_entries.end()) + { + if (!have_any_span) + break; out = length; - else { + } else { if (i->what == 0) /* in */ { in = i++->where; @@ -2456,7 +2477,10 @@ void eDVBServicePlay::cutlistToCuesheet() out = length; if (in < out) + { + have_any_span = 1; m_cue->addSourceSpan(in, out); + } in = length;