X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/dce87891f204f8e1f7151c4a3ba00b9dd048e795..df8bb0da1dba17c9c89090b51e92ad5dd6364f1b:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index e3d960d4..b3ce13da 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); } @@ -1183,7 +1184,7 @@ RESULT eDVBServicePlay::setFastForward_internal(int ratio) return -1; if (ffratio == 0) - return m_decoder->play(); + ; /* return m_decoder->play(); is done in caller*/ else if (ffratio != 1) return m_decoder->setFastForward(ffratio); else @@ -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(); @@ -1877,20 +1883,7 @@ PyObject *eDVBServiceBase::getTransponderData(bool original) { ePtr fe; if(!channel->getFrontend(fe)) - { fe->getTransponderData(ret, original); - ePtr feparm; - channel->getCurrentFrontendParameters(feparm); - if (feparm) - { - eDVBFrontendParametersSatellite osat; - if (!feparm->getDVBS(osat)) - { - PutToDict(ret, "orbital_position", osat.orbital_position); - PutToDict(ret, "polarization", osat.polarisation); - } - } - } } } else @@ -2189,7 +2182,7 @@ void eDVBServicePlay::switchToTimeshift() r.path = m_timeshift_file; m_cue = new eCueSheet(); - m_service_handler_timeshift.tune(r, 1, m_cue); /* use the decoder demux for everything */ + m_service_handler_timeshift.tune(r, 1, m_cue, 0, m_dvb_service); /* use the decoder demux for everything */ eDebug("eDVBServicePlay::switchToTimeshift, in pause mode now."); pause(); @@ -2303,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(); @@ -2318,14 +2321,6 @@ void eDVBServicePlay::updateDecoder() m_teletext_parser->start(program.textPid); - if (!m_is_primary) - m_decoder->setTrickmode(); - - if (m_is_paused) - m_decoder->pause(); - else - m_decoder->play(); - if (vpid > 0 && vpid < 0x2000) ; else @@ -2335,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 */ @@ -2346,7 +2348,7 @@ void eDVBServicePlay::updateDecoder() m_dvb_service->setCacheEntry(eDVBService::cPCRPID, pcrpid); m_dvb_service->setCacheEntry(eDVBService::cTPID, tpid); } - } + } m_have_video_pid = (vpid > 0 && vpid < 0x2000); }