diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2008-06-03 13:26:16 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2008-06-03 13:26:16 +0000 |
| commit | 13fecd9a0a17ba5a02d3a9afa7e1e0067d3e1fec (patch) | |
| tree | 72371f7f89d42bf1bee1858f193fbf80c279b825 /lib/dvb/pmt.cpp | |
| parent | 8541df3bd4a92d4d2c873f528ba00c59d5f2e519 (diff) | |
| download | enigma2-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.cpp | 20 |
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; |
