aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/scan.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-08-29 11:56:41 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-08-29 11:56:41 +0000
commite4d92d5b785abd120322479ab4f8ff287b06c983 (patch)
tree588909b4823ad46388c8a64a60f475ac5031fb9d /lib/dvb/scan.cpp
parente52de875e255153a9d15656d459fc784614fe4a6 (diff)
downloadenigma2-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.cpp49
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;
}