{
std::list<std::string> extensions;
extensions.push_back("ts");
+ extensions.push_back("trp");
sc->addServiceFactory(eServiceFactoryDVB::id, this, extensions);
}
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)
RESULT eDVBServicePlay::setFastForward(int ratio)
{
eDebug("eDVBServicePlay::setFastForward(%d)", ratio);
- assert(ratio);
+ ASSERT(ratio);
return setFastForward_internal(ratio);
}
{
int ret = selectAudioStream(i);
- if (m_decoder->play())
+ if (m_decoder->set())
return -5;
return ret;
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();
}
}
}
- 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();
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
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 */
std::multiset<cueEntry>::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;
out = length;
if (in < out)
+ {
+ have_any_span = 1;
m_cue->addSourceSpan(in, out);
+ }
in = length;