summaryrefslogtreecommitdiff
path: root/pat.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2012-04-15 10:52:34 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2012-04-15 10:52:34 +0200
commitf822cdf2613096a2b545daed6cab1ed3a5c8ef5b (patch)
tree1f9305095e919a624f94bfd55d9197d0da6f4b1e /pat.c
parentc650904794774733d505bb919170c8cbd5750395 (diff)
downloadvdr-f822cdf2613096a2b545daed6cab1ed3a5c8ef5b.tar.gz
vdr-f822cdf2613096a2b545daed6cab1ed3a5c8ef5b.tar.bz2
The new setup option "DVB/Standard compliance" can be used to switch between different variations of the DVB standard
Diffstat (limited to 'pat.c')
-rw-r--r--pat.c68
1 files changed, 39 insertions, 29 deletions
diff --git a/pat.c b/pat.c
index d9b93f6e..826e0eab 100644
--- a/pat.c
+++ b/pat.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: pat.c 2.17 2012/03/02 10:56:45 kls Exp $
+ * $Id: pat.c 2.18 2012/04/15 09:54:53 kls Exp $
*/
#include "pat.h"
@@ -456,37 +456,47 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
}
break;
- case 0x80: // STREAMTYPE_USER_PRIVATE - DigiCipher II VIDEO (ANSI/SCTE 57)
- Vpid = esPid;
- Ppid = pmt.getPCRPid();
- Vtype = 0x02; // compression based upon MPEG-2
- ProcessCaDescriptors = true;
- break;
- case 0x81: // STREAMTYPE_USER_PRIVATE - ATSC A/53 AUDIO (ANSI/SCTE 57)
- {
- char lang[MAXLANGCODE1] = { 0 };
- SI::Descriptor *d;
- for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) {
- switch (d->getDescriptorTag()) {
- case SI::ISO639LanguageDescriptorTag: {
- SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
- strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1);
- }
- break;
- default: ;
+ case 0x80: // STREAMTYPE_USER_PRIVATE
+ if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // DigiCipher II VIDEO (ANSI/SCTE 57)
+ Vpid = esPid;
+ Ppid = pmt.getPCRPid();
+ Vtype = 0x02; // compression based upon MPEG-2
+ ProcessCaDescriptors = true;
+ break;
+ }
+ // fall through
+ case 0x81: // STREAMTYPE_USER_PRIVATE
+ if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // ATSC A/53 AUDIO (ANSI/SCTE 57)
+ char lang[MAXLANGCODE1] = { 0 };
+ SI::Descriptor *d;
+ for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) {
+ switch (d->getDescriptorTag()) {
+ case SI::ISO639LanguageDescriptorTag: {
+ SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
+ strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1);
+ }
+ break;
+ default: ;
+ }
+ delete d;
}
- delete d;
+ if (NumDpids < MAXDPIDS) {
+ Dpids[NumDpids] = esPid;
+ Dtypes[NumDpids] = SI::AC3DescriptorTag;
+ strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1);
+ NumDpids++;
+ }
+ ProcessCaDescriptors = true;
+ break;
}
- if (NumDpids < MAXDPIDS) {
- Dpids[NumDpids] = esPid;
- Dtypes[NumDpids] = SI::AC3DescriptorTag;
- strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1);
- NumDpids++;
+ // fall through
+ case 0x82: // STREAMTYPE_USER_PRIVATE
+ if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // STANDARD SUBTITLE (ANSI/SCTE 27)
+ //TODO
+ break;
}
- ProcessCaDescriptors = true;
- }
- break;
- case 0x82 ... 0xFF: // STREAMTYPE_USER_PRIVATE
+ // fall through
+ case 0x83 ... 0xFF: // STREAMTYPE_USER_PRIVATE
{
char lang[MAXLANGCODE1] = { 0 };
bool IsAc3 = false;