aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2009-04-23 13:21:41 +0200
committerghost <andreas.monzner@multimedia-labs.de>2009-04-23 13:21:41 +0200
commit4b7061b946278825a03d7dd07a65056c3f4e1373 (patch)
treefdc27c2cccab02c81fd4bb66a65c88803d72d5a5 /lib
parent556d6244747ea2b4b3590e682948e9f708b0a069 (diff)
downloadenigma2-4b7061b946278825a03d7dd07a65056c3f4e1373.tar.gz
enigma2-4b7061b946278825a03d7dd07a65056c3f4e1373.zip
get audio / video pid from pid cache (for serviceinfo dialog)
Diffstat (limited to 'lib')
-rw-r--r--lib/service/servicedvb.cpp30
1 files changed, 27 insertions, 3 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 2cece3eb..c8442161 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -1558,10 +1558,34 @@ int eDVBServicePlay::getInfo(int w)
break;
}
case sIsCrypted: if (no_program_info) return -1; return program.isCrypted();
- case sVideoPID: if (no_program_info) return -1; if (program.videoStreams.empty()) return -1; return program.videoStreams[0].pid;
+ case sVideoPID:
+ if (m_dvb_service)
+ {
+ int vpid = m_dvb_service->getCacheEntry(eDVBService::cVPID);
+ if (vpid != -1)
+ return vpid;
+ }
+ if (no_program_info) return -1; if (program.videoStreams.empty()) return -1; return program.videoStreams[0].pid;
case sVideoType: if (no_program_info) return -1; if (program.videoStreams.empty()) return -1; return program.videoStreams[0].type;
- case sAudioPID: if (no_program_info) return -1; if (program.audioStreams.empty()) return -1; return program.audioStreams[0].pid;
- case sPCRPID: if (no_program_info) return -1; return program.pcrPid;
+ case sAudioPID:
+ if (m_dvb_service)
+ {
+ int apid = m_dvb_service->getCacheEntry(eDVBService::cAPID);
+ if (apid != -1)
+ return apid;
+ apid = m_dvb_service->getCacheEntry(eDVBService::cAC3PID);
+ if (apid != -1)
+ return apid;
+ }
+ if (no_program_info) return -1; if (program.audioStreams.empty()) return -1; return program.audioStreams[0].pid;
+ case sPCRPID:
+ if (m_dvb_service)
+ {
+ int pcrpid = m_dvb_service->getCacheEntry(eDVBService::cPCRPID);
+ if (pcrpid != -1)
+ return pcrpid;
+ }
+ if (no_program_info) return -1; return program.pcrPid;
case sPMTPID: if (no_program_info) return -1; return program.pmtPid;
case sTXTPID: if (no_program_info) return -1; return program.textPid;
case sSID: return ((const eServiceReferenceDVB&)m_reference).getServiceID().get();