summaryrefslogtreecommitdiff
path: root/pat.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2010-06-05 13:50:56 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2010-06-05 13:50:56 +0200
commit9377d831b3db032990dd71b1969713b8e361860a (patch)
tree88e5edba613906c74ddbdd848a2eead12dfcd3c5 /pat.c
parent174eaaffbd056de9cfc63d2077b8cc996dbb618e (diff)
downloadvdr-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.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pat.c b/pat.c
index d998d40a..56ad5aeb 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.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);
}