diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2010-06-05 13:50:56 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2010-06-05 13:50:56 +0200 |
commit | 9377d831b3db032990dd71b1969713b8e361860a (patch) | |
tree | 88e5edba613906c74ddbdd848a2eead12dfcd3c5 /pat.c | |
parent | 174eaaffbd056de9cfc63d2077b8cc996dbb618e (diff) | |
download | vdr-9377d831b3db032990dd71b1969713b8e361860a.tar.gz vdr-9377d831b3db032990dd71b1969713b8e361860a.tar.bz2 |
Added full handling of the stream types of Dolby Digital pids
Diffstat (limited to 'pat.c')
-rw-r--r-- | pat.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.c 2.10 2010/05/16 11:12:57 kls Exp $ + * $Id: pat.c 2.11 2010/06/05 13:26:47 kls Exp $ */ #include "pat.h" @@ -334,6 +334,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length int Apids[MAXAPIDS + 1] = { 0 }; // these lists are zero-terminated int Atypes[MAXDPIDS + 1] = { 0 }; int Dpids[MAXDPIDS + 1] = { 0 }; + int Dtypes[MAXDPIDS + 1] = { 0 }; int Spids[MAXSPIDS + 1] = { 0 }; uchar SubtitlingTypes[MAXSPIDS + 1] = { 0 }; uint16_t CompositionPageIds[MAXSPIDS + 1] = { 0 }; @@ -399,6 +400,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length //XXX case 8: // STREAMTYPE_13818_DSMCC { int dpid = 0; + int dtype = 0; char lang[MAXLANGCODE1] = { 0 }; SI::Descriptor *d; for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { @@ -406,6 +408,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length case SI::AC3DescriptorTag: case SI::EnhancedAC3DescriptorTag: dpid = esPid; + dtype = d->getDescriptorTag(); ProcessCaDescriptors = true; break; case SI::SubtitlingDescriptorTag: @@ -446,6 +449,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length if (dpid) { if (NumDpids < MAXDPIDS) { Dpids[NumDpids] = dpid; + Dtypes[NumDpids] = dtype; strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1); NumDpids++; } @@ -485,7 +489,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length } } if (Setup.UpdateChannels >= 2) { - Channel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, DLangs, Spids, SLangs, Tpid); + Channel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, Dtypes, DLangs, Spids, SLangs, Tpid); Channel->SetCaIds(CaDescriptors->CaIds()); Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds); } |