aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/pmt.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2008-06-03 13:26:16 +0000
committerFelix Domke <tmbinc@elitedvb.net>2008-06-03 13:26:16 +0000
commit13fecd9a0a17ba5a02d3a9afa7e1e0067d3e1fec (patch)
tree72371f7f89d42bf1bee1858f193fbf80c279b825 /lib/dvb/pmt.cpp
parent8541df3bd4a92d4d2c873f528ba00c59d5f2e519 (diff)
downloadenigma2-13fecd9a0a17ba5a02d3a9afa7e1e0067d3e1fec.tar.gz
enigma2-13fecd9a0a17ba5a02d3a9afa7e1e0067d3e1fec.zip
also parse user private ES streams, handle REGISTRATION_DESCRIPTOR for ac3
Diffstat (limited to 'lib/dvb/pmt.cpp')
-rw-r--r--lib/dvb/pmt.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp
index f6f33b52..555ffa79 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -231,6 +231,7 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program)
}
//break; fall through !!!
case 0x06: // PES Private
+ case 0x81: // user private
/* PES private can contain AC-3, DTS or lots of other stuff.
check descriptors to get the exact type. */
for (DescriptorConstIterator desc = (*es)->getDescriptors()->begin();
@@ -313,6 +314,25 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program)
program.caids.insert(descr->getCaSystemId());
break;
}
+ case REGISTRATION_DESCRIPTOR: /* some services don't have a separate AC3 descriptor */
+ {
+ /* libdvbsi++ doesn't yet support this descriptor type, so work around. */
+ if ((*desc)->getLength() != 4)
+ break;
+ unsigned char descr[6];
+ (*desc)->writeToBuffer(descr);
+ int format_identifier = (descr[2] << 24) | (descr[3] << 16) | (descr[4] << 8) | (descr[5]);
+ switch (format_identifier)
+ {
+ case 0x41432d33:
+ isaudio = 1;
+ audio.type = audioStream::atAC3;
+ break;
+ default:
+ break;
+ }
+ break;
+ }
}
}
break;