summaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorsmlee <smlee@dev3>2016-02-26 08:04:33 (GMT)
committersmlee <smlee@dev3>2016-02-26 08:04:33 (GMT)
commitf7826b7569f779fde77e6aeb9ea384289e834497 (patch)
tree97062800df53544ff95616a4a0312240dd686227 /lib/dvb
parent3471f51d97a519560b8b01428085076fd041bd68 (diff)
Cache ddp/aac/he-aac pid in lamedb
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/idvb.h4
-rw-r--r--lib/dvb/pmt.cpp39
2 files changed, 38 insertions, 5 deletions
diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h
index 3dd3481..2c11ff8 100644
--- a/lib/dvb/idvb.h
+++ b/lib/dvb/idvb.h
@@ -277,9 +277,9 @@ class eDVBService: public iStaticServiceInformation
public:
enum cacheID
{
- cVPID, cAPID, cTPID, cPCRPID, cAC3PID,
+ cVPID, cMPEGAPID, cTPID, cPCRPID, cAC3PID,
cVTYPE, cACHANNEL, cAC3DELAY, cPCMDELAY,
- cSUBTITLE, cacheMax
+ cSUBTITLE, cAACHEAPID=12, cDDPPID, cAACAPID, cacheMax
};
int getCacheEntry(cacheID);
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp
index 6f0c9ee..b3e8aeb 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -490,7 +490,10 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
{
ePtr<eTable<ProgramMapSection> > ptr;
int cached_apid_ac3 = -1;
+ int cached_apid_ddp = -1;
int cached_apid_mpeg = -1;
+ int cached_apid_aache = -1;
+ int cached_apid_aac = -1;
int cached_vpid = -1;
int cached_tpid = -1;
int ret = -1;
@@ -509,8 +512,11 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
if ( m_service && !m_service->cacheEmpty() )
{
cached_vpid = m_service->getCacheEntry(eDVBService::cVPID);
- cached_apid_mpeg = m_service->getCacheEntry(eDVBService::cAPID);
+ cached_apid_mpeg = m_service->getCacheEntry(eDVBService::cMPEGAPID);
cached_apid_ac3 = m_service->getCacheEntry(eDVBService::cAC3PID);
+ cached_apid_ddp = m_service->getCacheEntry(eDVBService::cDDPPID);
+ cached_apid_aache = m_service->getCacheEntry(eDVBService::cAACHEAPID);
+ cached_apid_aac = m_service->getCacheEntry(eDVBService::cAACAPID);
cached_tpid = m_service->getCacheEntry(eDVBService::cTPID);
}
@@ -912,11 +918,11 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
audio.pid = (*es)->getPid();
/* if we find the cached pids, this will be our default stream */
- if (audio.pid == cached_apid_ac3 || audio.pid == cached_apid_mpeg)
+ if (audio.pid == cached_apid_ac3 || audio.pid == cached_apid_ddp || audio.pid == cached_apid_mpeg || audio.pid == cached_apid_aache || audio.pid == cached_apid_aac)
program.defaultAudioStream = program.audioStreams.size();
/* also, we need to know the first non-mpeg (i.e. "ac3"/dts/...) stream */
- if ((audio.type != audioStream::atMPEG) && ((first_ac3 == -1) || (audio.pid == cached_apid_ac3)))
+ if ((audio.type != audioStream::atMPEG) && ((first_ac3 == -1) || (audio.pid == cached_apid_ac3) || (audio.pid == cached_apid_ddp)))
first_ac3 = program.audioStreams.size();
program.audioStreams.push_back(audio);
@@ -968,6 +974,33 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
program.audioStreams.push_back(s);
++cnt;
}
+ if ( cached_apid_ddp != -1 )
+ {
+ audioStream s;
+ s.type = audioStream::atDDP;
+ s.pid = cached_apid_ddp;
+ s.rdsPid = -1;
+ program.audioStreams.push_back(s);
+ ++cnt;
+ }
+ if ( cached_apid_aache != -1 )
+ {
+ audioStream s;
+ s.type = audioStream::atAACHE;
+ s.pid = cached_apid_aache;
+ s.rdsPid = -1;
+ program.audioStreams.push_back(s);
+ ++cnt;
+ }
+ if ( cached_apid_aac != -1 )
+ {
+ audioStream s;
+ s.type = audioStream::atAAC;
+ s.pid = cached_apid_aac;
+ s.rdsPid = -1;
+ program.audioStreams.push_back(s);
+ ++cnt;
+ }
if ( cached_apid_mpeg != -1 )
{
audioStream s;