From 4e15f6d658139fca773b76088bf1523839c20ffd Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 6 Jan 2003 14:44:27 +0100 Subject: Implemented 'Link Layer' based CAM support --- libdtv/libsi/include/libsi.h | 23 +++++++++++++++++++++++ libdtv/libsi/si_parser.c | 7 ++++++- 2 files changed, 29 insertions(+), 1 deletion(-) (limited to 'libdtv/libsi') diff --git a/libdtv/libsi/include/libsi.h b/libdtv/libsi/include/libsi.h index 366387a3..8e9e2605 100644 --- a/libdtv/libsi/include/libsi.h +++ b/libdtv/libsi/include/libsi.h @@ -315,6 +315,29 @@ struct Descriptor { }; +/* ConditionalAccessDescriptor */ + +struct ConditionalAccessDescriptor { + struct NODE Node; + unsigned short Tag; + unsigned short Amount; /* Data */ + unsigned char *Data; +}; + +#define CreateConditionalAccessDescriptor(descr, amount, data) \ + do \ + { \ + unsigned char *tmpptr; \ + \ + xMemAlloc (amount, &tmpptr); \ + memcpy (tmpptr, data, amount); \ + xCreateNode (((struct ConditionalAccessDescriptor *)descr), NULL); \ + ((struct ConditionalAccessDescriptor *)descr)->Tag = DESCR_CA; \ + ((struct ConditionalAccessDescriptor *)descr)->Amount = amount; \ + ((struct ConditionalAccessDescriptor *)descr)->Data = tmpptr; \ + } while (0) + + /* Iso639LanguageDescriptor */ struct Iso639LanguageDescriptor { diff --git a/libdtv/libsi/si_parser.c b/libdtv/libsi/si_parser.c index be0d2549..ccca6e5e 100644 --- a/libdtv/libsi/si_parser.c +++ b/libdtv/libsi/si_parser.c @@ -705,6 +705,12 @@ void siParseDescriptor (struct LIST *Descriptors, u_char *Buffer) HILO (CastTimeShiftedEventDescriptor(Ptr)->reference_event_id)); break; + case DESCR_CA: + CreateConditionalAccessDescriptor (Descriptor, + *(Ptr + 1) + 2, // we'll need the entire raw data! + Ptr); + break; + case DESCR_ISO_639_LANGUAGE: CreateIso639LanguageDescriptor (Descriptor, CastIso639LanguageDescriptor(Buffer)->lang_code1, @@ -790,7 +796,6 @@ void siParseDescriptor (struct LIST *Descriptors, u_char *Buffer) case DESCR_DATA_STREAM_ALIGN: case DESCR_TARGET_BACKGRID: case DESCR_VIDEO_WINDOW: - case DESCR_CA: case DESCR_SYSTEM_CLOCK: case DESCR_MULTIPLEX_BUFFER_UTIL: case DESCR_COPYRIGHT: -- cgit v1.2.3