don't reorder audio streams, instead store thre default audio stream index in 'defaul...
[enigma2.git] / lib / dvb / pmt.cpp
index e70942009136e8739c1562878f743385302d9472..c295df31a174e317c9b541a1b97ecdf1604aa147 100644 (file)
@@ -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;