diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2008-08-29 11:56:41 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2008-08-29 11:56:41 +0000 |
| commit | e4d92d5b785abd120322479ab4f8ff287b06c983 (patch) | |
| tree | 588909b4823ad46388c8a64a60f475ac5031fb9d /lib/dvb/scan.cpp | |
| parent | e52de875e255153a9d15656d459fc784614fe4a6 (diff) | |
| download | enigma2-e4d92d5b785abd120322479ab4f8ff287b06c983.tar.gz enigma2-e4d92d5b785abd120322479ab4f8ff287b06c983.zip | |
ignore some descriptors when the streamtype is already detected
Diffstat (limited to 'lib/dvb/scan.cpp')
| -rw-r--r-- | lib/dvb/scan.cpp | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp index 54e1b8d0..0d466f96 100644 --- a/lib/dvb/scan.cpp +++ b/lib/dvb/scan.cpp @@ -299,35 +299,38 @@ void eDVBScan::PMTready(int err) for (DescriptorConstIterator desc = (*es)->getDescriptors()->begin(); desc != (*es)->getDescriptors()->end(); ++desc) { - switch ((*desc)->getTag()) + uint8_t tag = (*desc)->getTag(); + if (!isaudio && !isvideo) { - case DTS_DESCRIPTOR: - case AAC_DESCRIPTOR: - isaudio = 1; - case AC3_DESCRIPTOR: - isaudio = 1; - break; - case CA_DESCRIPTOR: - is_scrambled = 1; - 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) + switch (tag) { - case 0x41432d33: + case DTS_DESCRIPTOR: + case AAC_DESCRIPTOR: + isaudio = 1; + case AC3_DESCRIPTOR: isaudio = 1; - default: + 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; + default: + break; + } break; } - break; - } + } } + if (tag == CA_DESCRIPTOR) + is_scrambled = 1; } break; } |
