X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/999ddaa2a3953f5e16549483cd8deb021685fc5b..9a262588610fbdf0c7e8ad1c6fa393adcbc35399:/lib/dvb/pmt.cpp diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 7f560c8e..c295df31 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -87,9 +87,9 @@ void eDVBServicePMTHandler::PMTready(int error) { m_have_cached_program = false; serviceEvent(eventNewProgramInfo); - eEPGCache::getInstance()->PMTready(this); if (!m_pvr_channel) // don't send campmt to camd.socket for playbacked services { + eEPGCache::getInstance()->PMTready(this); if(!m_ca_servicePtr) { int demuxes[2] = {0,0}; @@ -174,12 +174,13 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) program.pcrPid = -1; program.pmtPid = -1; program.textPid = -1; + program.defaultAudioStream = 0; if ( m_service && !m_service->cacheEmpty() ) { cached_vpid = m_service->getCacheEntry(eDVBService::cVPID); - cached_apid_mpeg = m_service->getCacheEntry(eDVBService::cAC3PID); - cached_apid_ac3 = m_service->getCacheEntry(eDVBService::cAPID); + cached_apid_mpeg = m_service->getCacheEntry(eDVBService::cAPID); + cached_apid_ac3 = m_service->getCacheEntry(eDVBService::cAC3PID); cached_tpid = m_service->getCacheEntry(eDVBService::cTPID); } @@ -318,12 +319,8 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) audio.pid = (*es)->getPid(); if ( !program.audioStreams.empty() && ( audio.pid == cached_apid_ac3 || audio.pid == cached_apid_mpeg) ) - { - program.audioStreams.push_back(program.audioStreams[0]); - program.audioStreams[0] = audio; - } - else - program.audioStreams.push_back(audio); + program.defaultAudioStream = program.audioStreams.size(); + program.audioStreams.push_back(audio); } else if (isvideo) { @@ -496,8 +493,9 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, } else { eDVBMetaParser parser; - - if (parser.parseFile(ref.path)) + + int ret=parser.parseFile(ref.path); + if (ret || !parser.m_ref.getServiceID().get() /* incorrect sid in meta file or recordings.epl*/ ) { eWarning("no .meta file found, trying to find PMT pid"); eDVBTSTools tstools; @@ -865,7 +863,7 @@ static PyObject *createTuple(int pid, const char *type) return r; } -static inline PyList_AppendSteal(PyObject *list, PyObject *item) +static inline void PyList_AppendSteal(PyObject *list, PyObject *item) { PyList_Append(list, item); Py_DECREF(item);