From: Felix Domke Date: Tue, 3 Jun 2008 13:26:16 +0000 (+0000) Subject: also parse user private ES streams, handle REGISTRATION_DESCRIPTOR for ac3 X-Git-Tag: 2.6.0~1182 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/13fecd9a0a17ba5a02d3a9afa7e1e0067d3e1fec also parse user private ES streams, handle REGISTRATION_DESCRIPTOR for ac3 --- 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;