summaryrefslogtreecommitdiff
path: root/libdtv/libsi
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2003-01-10 18:00:00 +0100
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2003-01-10 18:00:00 +0100
commit3e1d34f392792bbcf1bda4884c58ca9cec445d1d (patch)
treee2c9910b5a7d429784eeda4404ea7429e757a8f3 /libdtv/libsi
parent48fd2b04e9010bb67e19f33e8c7506a976b70e90 (diff)
downloadvdr-patch-lnbsharing-3e1d34f392792bbcf1bda4884c58ca9cec445d1d.tar.gz
vdr-patch-lnbsharing-3e1d34f392792bbcf1bda4884c58ca9cec445d1d.tar.bz2
Version 1.1.21vdr-1.1.21
- Fixed the 'channels.conf' entries for "Studio Universal" and "Disney Channel". - Fixed handling channels in the "Channels" menu in case there are ':@nnn' group separators without names (thanks to Guy Roussin for reporting this one). - The SVDRP command CHAN now also accepts channel IDs. - Increased the timeout until an index file is considerd no longer to be written (sometimes in time shift with heavy system load the index file was closed too early by the replay thread). - Implemented "Link Layer" based CAM support, which hopefully will solve the problems with CAMs we had in the past. To use this you need the driver version 2002-01-08 or higher (with the new firmware supporting the "Link Layer" protocol). - Added an EPG bugfix that moves the Subtitle data to the Extended Description in case the latter is empty and the Subtitle exceeds some useful length. - Since several channels put very long strings into the Subtitle part of their EPG data, that string is now limited in length when used in a recording's file name.
Diffstat (limited to 'libdtv/libsi')
-rw-r--r--libdtv/libsi/include/libsi.h23
-rw-r--r--libdtv/libsi/si_parser.c7
2 files changed, 29 insertions, 1 deletions
diff --git a/libdtv/libsi/include/libsi.h b/libdtv/libsi/include/libsi.h
index 366387a..8e9e260 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 be0d254..ccca6e5 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: