From 7cbced0c124a2d03290d82953c09f199602b1f7f Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 4 Jan 2014 11:17:24 +0100 Subject: Made GetCaDescriptors() and GetCaPids() return all values if CaSystemIds is 0xFFFF --- pat.c | 6 +++--- pat.h | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pat.c b/pat.c index 9f5f12de..5246e074 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 3.1 2014/01/01 12:02:39 kls Exp $ + * $Id: pat.c 3.2 2014/01/04 11:17:24 kls Exp $ */ #include "pat.h" @@ -167,7 +167,7 @@ int cCaDescriptors::GetCaDescriptors(const int *CaSystemIds, int BufSize, uchar if (EsPid < 0 || d->EsPid() == EsPid) { const int *caids = CaSystemIds; do { - if (d->CaSystem() == *caids) { + if (*caids == 0xFFFF || d->CaSystem() == *caids) { if (length + d->Length() <= BufSize) { memcpy(Data + length, d->Data(), d->Length()); length += d->Length(); @@ -192,7 +192,7 @@ int cCaDescriptors::GetCaPids(const int *CaSystemIds, int BufSize, int *Pids) for (cCaDescriptor *d = caDescriptors.First(); d; d = caDescriptors.Next(d)) { const int *caids = CaSystemIds; do { - if (d->CaSystem() == *caids) { + if (*caids == 0xFFFF || d->CaSystem() == *caids) { if (numPids + 1 < BufSize) { Pids[numPids++] = d->CaPid(); Pids[numPids] = 0; diff --git a/pat.h b/pat.h index b45e720e..7f04575e 100644 --- a/pat.h +++ b/pat.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.h 3.1 2013/12/30 11:32:40 kls Exp $ + * $Id: pat.h 3.2 2014/01/04 11:16:48 kls Exp $ */ #ifndef __PAT_H @@ -36,7 +36,8 @@ int GetCaDescriptors(int Source, int Transponder, int ServiceId, const int *CaSy ///< Gets all CA descriptors for a given channel. ///< Copies all available CA descriptors for the given Source, Transponder and ServiceId ///< into the provided buffer at Data (at most BufSize bytes). Only those CA descriptors - ///< are copied that match one of the given CA system IDs. + ///< are copied that match one of the given CA system IDs (or all of them, if CaSystemIds + ///< is 0xFFFF). ///< Returns the number of bytes copied into Data (0 if no CA descriptors are ///< available), or -1 if BufSize was too small to hold all CA descriptors. @@ -44,7 +45,8 @@ int GetCaPids(int Source, int Transponder, int ServiceId, const int *CaSystemIds ///< Gets all CA pids for a given channel. ///< Copies all available CA pids from the CA descriptors for the given Source, Transponder and ServiceId ///< into the provided buffer at Pids (at most BufSize - 1 entries, the list will be zero-terminated). - ///< Only the CA pids of those CA descriptors are copied that match one of the given CA system IDs. + ///< Only the CA pids of those CA descriptors are copied that match one of the given CA system IDs + ///< (or all of them, if CaSystemIds is 0xFFFF). ///< Returns the number of pids copied into Pids (0 if no CA descriptors are ///< available), or -1 if BufSize was too small to hold all CA pids. -- cgit v1.2.3