summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave <vdr@pickles.me.uk>2010-09-26 11:45:19 +0100
committerDave <vdr@pickles.me.uk>2010-09-26 11:45:19 +0100
commit5fe3a865573fea8ffc100bf34037dec955281bdf (patch)
treede6eeebf58f61044c703acb2475a52e8bc704f12
parent59f78a41725524d56c442c1d39734f0a1d905958 (diff)
downloadvdrtva-5fe3a865573fea8ffc100bf34037dec955281bdf.tar.gz
vdrtva-5fe3a865573fea8ffc100bf34037dec955281bdf.tar.bz2
Improved compliance with ETSI TS 102 323. For vdr 1.7.16.
-rw-r--r--vdrtva-1.7.16.diff (renamed from vdrtva-1.7.15.diff)217
1 files changed, 92 insertions, 125 deletions
diff --git a/vdrtva-1.7.15.diff b/vdrtva-1.7.16.diff
index 3f91141..68bb7d0 100644
--- a/vdrtva-1.7.15.diff
+++ b/vdrtva-1.7.16.diff
@@ -1,6 +1,6 @@
-diff -ur vdr-1.7.15/channels.c vdr-1.7/channels.c
---- vdr-1.7.15/channels.c 2010-06-05 14:33:57.000000000 +0100
-+++ vdr-1.7/channels.c 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/channels.c vdr-test/channels.c
+--- vdr-1.7.16/channels.c 2010-06-05 14:33:57.000000000 +0100
++++ vdr-test/channels.c 2010-09-23 18:01:18.000000000 +0100
@@ -61,6 +61,7 @@
shortName = strdup("");
provider = strdup("");
@@ -97,9 +97,9 @@ diff -ur vdr-1.7.15/channels.c vdr-1.7/channels.c
if (!GetChannelID().Valid()) {
esyslog("ERROR: channel data results in invalid ID!");
return false;
-diff -ur vdr-1.7.15/channels.h vdr-1.7/channels.h
---- vdr-1.7.15/channels.h 2010-06-05 14:12:54.000000000 +0100
-+++ vdr-1.7/channels.h 2010-06-06 14:57:09.000000000 +0100
+diff -ur vdr-1.7.16/channels.h vdr-test/channels.h
+--- vdr-1.7.16/channels.h 2010-06-05 14:12:54.000000000 +0100
++++ vdr-test/channels.h 2010-09-23 18:01:18.000000000 +0100
@@ -96,6 +96,7 @@
char *shortName;
char *provider;
@@ -124,9 +124,9 @@ diff -ur vdr-1.7.15/channels.h vdr-1.7/channels.h
void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
void SetCaIds(const int *CaIds); // list must be zero-terminated
void SetCaDescriptors(int Level);
-diff -ur vdr-1.7.15/config.c vdr-1.7/config.c
---- vdr-1.7.15/config.c 2010-06-06 11:06:43.000000000 +0100
-+++ vdr-1.7/config.c 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/config.c vdr-test/config.c
+--- vdr-1.7.16/config.c 2010-06-06 11:06:43.000000000 +0100
++++ vdr-test/config.c 2010-09-23 18:01:18.000000000 +0100
@@ -353,6 +353,7 @@
UseSubtitle = 1;
UseVps = 0;
@@ -151,9 +151,9 @@ diff -ur vdr-1.7.15/config.c vdr-1.7/config.c
Store("RecordingDirs", RecordingDirs);
Store("FoldersInTimerMenu", FoldersInTimerMenu);
Store("NumberKeysForChars", NumberKeysForChars);
-diff -ur vdr-1.7.15/config.h vdr-1.7/config.h
---- vdr-1.7.15/config.h 2010-06-06 10:53:02.000000000 +0100
-+++ vdr-1.7/config.h 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/config.h vdr-test/config.h
+--- vdr-1.7.16/config.h 2010-09-12 12:31:21.000000000 +0100
++++ vdr-test/config.h 2010-09-23 18:01:18.000000000 +0100
@@ -252,6 +252,7 @@
int UseSubtitle;
int UseVps;
@@ -162,69 +162,41 @@ diff -ur vdr-1.7.15/config.h vdr-1.7/config.h
int RecordingDirs;
int FoldersInTimerMenu;
int NumberKeysForChars;
-diff -ur vdr-1.7.15/eit.c vdr-1.7/eit.c
---- vdr-1.7.15/eit.c 2010-05-14 15:08:35.000000000 +0100
-+++ vdr-1.7/eit.c 2010-06-06 14:54:48.000000000 +0100
-@@ -121,6 +121,8 @@
- SI::Descriptor *d;
- SI::ExtendedEventDescriptors *ExtendedEventDescriptors = NULL;
- SI::ShortEventDescriptor *ShortEventDescriptor = NULL;
-+ SI::ContentIdentifierDescriptor *itemCrid = NULL;
-+ SI::ContentIdentifierDescriptor *seriesCrid = NULL;
- cLinkChannels *LinkChannels = NULL;
- cComponents *Components = NULL;
- for (SI::Loop::Iterator it2; (d = SiEitEvent.eventDescriptors.getNext(it2)); ) {
-@@ -265,6 +267,23 @@
+diff -ur vdr-1.7.16/eit.c vdr-test/eit.c
+--- vdr-1.7.16/eit.c 2010-05-14 15:08:35.000000000 +0100
++++ vdr-test/eit.c 2010-09-25 14:49:53.000000000 +0100
+@@ -265,6 +265,27 @@
}
}
break;
+ case SI::ContentIdentifierDescriptorTag: {
+ SI::ContentIdentifierDescriptor *cd = (SI::ContentIdentifierDescriptor *)d;
-+ switch (cd->getCridType()) {
-+ case 0x01:
-+ case 0x31: {
-+ itemCrid = cd;
-+ d = NULL; // so that it is not deleted
-+ break;
-+ }
-+ case 0x02:
-+ case 0x32: {
-+ seriesCrid = cd;
-+ d = NULL; // so that it is not deleted
-+ break;
-+ }
++ SI::ContentIdentifierDescriptor::Identifier cde;
++ for (SI::Loop::Iterator ite; (cd->identifierLoop.getNext(cde,ite)); ) {
++ if (cde.getCridLocation() == 0) {
++ char buffer[Utf8BufSize(256)];
++ strcpy (buffer, channel->DefaultAuthority());
++ strcat(buffer, cde.identifier.getText());
++ switch (cde.getCridType()) {
++ case 0x01:
++ case 0x31:
++ pEvent->SetItemCRID(buffer);
++ break;
++ case 0x02:
++ case 0x32:
++ pEvent->SetSeriesCRID(buffer);
++ break;
++ }
++ }
+ }
+ }
default: ;
}
delete d;
-@@ -286,9 +305,23 @@
- }
- else if (!HasExternalData)
- pEvent->SetDescription(NULL);
-+ if (itemCrid && (itemCrid->getCridLocation() == 0)) {
-+ char buffer[Utf8BufSize(256)];
-+ strcpy (buffer, channel->DefaultAuthority());
-+ strcat(buffer, itemCrid->entry.getText());
-+ pEvent->SetItemCRID(buffer);
- }
-+ if (seriesCrid && (seriesCrid->getCridLocation() == 0)) {
-+ char buffer[Utf8BufSize(256)];
-+ strcpy (buffer, channel->DefaultAuthority());
-+ strcat(buffer, seriesCrid->entry.getText());
-+ pEvent->SetSeriesCRID(buffer);
-+ }
-+ }
- delete ExtendedEventDescriptors;
- delete ShortEventDescriptor;
-+ delete itemCrid;
-+ delete seriesCrid;
-
- pEvent->SetComponents(Components);
-diff -ur vdr-1.7.15/epg.c vdr-1.7/epg.c
---- vdr-1.7.15/epg.c 2010-02-28 14:24:55.000000000 +0000
-+++ vdr-1.7/epg.c 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/epg.c vdr-test/epg.c
+--- vdr-1.7.16/epg.c 2010-02-28 14:24:55.000000000 +0000
++++ vdr-test/epg.c 2010-09-23 18:01:18.000000000 +0100
@@ -117,6 +117,8 @@
startTime = 0;
duration = 0;
@@ -282,9 +254,9 @@ diff -ur vdr-1.7.15/epg.c vdr-1.7/epg.c
default: esyslog("ERROR: unexpected tag while reading EPG data: %s", s);
return false;
}
-diff -ur vdr-1.7.15/epg.h vdr-1.7/epg.h
---- vdr-1.7.15/epg.h 2010-01-08 15:20:34.000000000 +0000
-+++ vdr-1.7/epg.h 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/epg.h vdr-test/epg.h
+--- vdr-1.7.16/epg.h 2010-01-08 15:20:34.000000000 +0000
++++ vdr-test/epg.h 2010-09-23 18:01:18.000000000 +0100
@@ -86,6 +86,8 @@
int duration; // Duration of this event in seconds
time_t vps; // Video Programming Service timestamp (VPS, aka "Programme Identification Label", PIL)
@@ -312,29 +284,33 @@ diff -ur vdr-1.7.15/epg.h vdr-1.7/epg.h
void SetSeen(void);
cString ToDescr(void) const;
void Dump(FILE *f, const char *Prefix = "", bool InfoOnly = false) const;
-diff -ur vdr-1.7.15/libsi/descriptor.c vdr-1.7/libsi/descriptor.c
---- vdr-1.7.15/libsi/descriptor.c 2007-02-03 11:45:58.000000000 +0000
-+++ vdr-1.7/libsi/descriptor.c 2010-06-06 14:54:48.000000000 +0100
-@@ -643,6 +643,29 @@
+diff -ur vdr-1.7.16/libsi/descriptor.c vdr-test/libsi/descriptor.c
+--- vdr-1.7.16/libsi/descriptor.c 2007-02-03 11:45:58.000000000 +0000
++++ vdr-test/libsi/descriptor.c 2010-09-25 15:04:17.000000000 +0100
+@@ -643,6 +643,33 @@
textualServiceIdentifier.setData(data+sizeof(descr_service_identifier), getLength()-sizeof(descr_service_identifier));
}
+void ContentIdentifierDescriptor::Parse() {
++ identifierLoop.setData(data+sizeof(descr_content_identifier), getLength()-sizeof(descr_content_identifier));
++}
++
++void ContentIdentifierDescriptor::Identifier::Parse() {
+ int offset=0;
-+ data.setPointerAndOffset<const descr_content_identifier>(s, offset);
++ data.setPointerAndOffset<const content_identifier_entry>(s, offset);
+ if (s->crid_location == 0) {
-+ entry.setData(data+(offset-1), s->crid_length);
++ identifier.setData(data+(offset-1), s->crid_length);
+ }
+ else {
-+ entry.setData(data+(offset-1), 2);
++ identifier.setData(data+(offset-1), 2);
+ }
+}
+
-+int ContentIdentifierDescriptor::getCridType() const {
++int ContentIdentifierDescriptor::Identifier::getCridType() const {
+ return s->crid_type;
+}
+
-+int ContentIdentifierDescriptor::getCridLocation() const {
++int ContentIdentifierDescriptor::Identifier::getCridLocation() const {
+ return s->crid_location;
+}
+
@@ -345,23 +321,29 @@ diff -ur vdr-1.7.15/libsi/descriptor.c vdr-1.7/libsi/descriptor.c
void MultilingualNameDescriptor::Parse() {
nameLoop.setData(data+sizeof(descr_multilingual_network_name), getLength()-sizeof(descr_multilingual_network_name));
}
-diff -ur vdr-1.7.15/libsi/descriptor.h vdr-1.7/libsi/descriptor.h
---- vdr-1.7.15/libsi/descriptor.h 2007-02-03 11:45:58.000000000 +0000
-+++ vdr-1.7/libsi/descriptor.h 2010-06-06 14:54:48.000000000 +0100
-@@ -361,6 +361,25 @@
+diff -ur vdr-1.7.16/libsi/descriptor.h vdr-test/libsi/descriptor.h
+--- vdr-1.7.16/libsi/descriptor.h 2007-02-03 11:45:58.000000000 +0000
++++ vdr-test/libsi/descriptor.h 2010-09-23 18:20:14.000000000 +0100
+@@ -361,6 +361,31 @@
virtual void Parse();
};
+class ContentIdentifierDescriptor : public Descriptor {
+public:
-+ String entry;
-+ int getCridType() const;
-+ int getCridLocation() const;
-+// virtual int getLength() { return sizeof(descr_content_identifier)+entry.getLength(); }
++ class Identifier : public LoopElement {
++ public:
++ String identifier;
++ int getCridType() const;
++ int getCridLocation() const;
++ virtual int getLength() { return sizeof(content_identifier_entry)+identifier.getLength(); }
++ protected:
++ virtual void Parse();
+ private:
-+ const descr_content_identifier *s;
++ const content_identifier_entry *s;
++ };
++ StructureLoop<Identifier> identifierLoop;
+protected:
-+ virtual void Parse();
++ virtual void Parse();
+};
+
+class DefaultAuthorityDescriptor : public Descriptor {
@@ -374,31 +356,14 @@ diff -ur vdr-1.7.15/libsi/descriptor.h vdr-1.7/libsi/descriptor.h
//abstract base class
class MultilingualNameDescriptor : public Descriptor {
public:
-diff -ur vdr-1.7.15/libsi/headers.h vdr-1.7/libsi/headers.h
---- vdr-1.7.15/libsi/headers.h 2007-02-03 11:45:58.000000000 +0000
-+++ vdr-1.7/libsi/headers.h 2010-06-06 14:54:48.000000000 +0100
-@@ -1673,11 +1673,39 @@
+diff -ur vdr-1.7.16/libsi/headers.h vdr-test/libsi/headers.h
+--- vdr-1.7.16/libsi/headers.h 2007-02-03 11:45:58.000000000 +0000
++++ vdr-test/libsi/headers.h 2010-09-22 19:42:12.000000000 +0100
+@@ -1680,6 +1681,24 @@
u_char descriptor_length :8;
};
-+struct entry_tva_id {
-+ u_char tva_id_hi :8;
-+ u_char tva_id_lo :8;
-+#if BYTE_ORDER == BIG_ENDIAN
-+ u_char reserved :5;
-+ u_char running_status :3;
-+#else
-+ u_char running_status :3;
-+ u_char reserved :5;
-+#endif
-+};
-+
-+
- /* 0x76 content_identifier_descriptor (ETSI TS 102 323) */
-
- struct descr_content_identifier {
- u_char descriptor_tag :8;
- u_char descriptor_length :8;
++struct content_identifier_entry {
+#if BYTE_ORDER == BIG_ENDIAN
+ u_char crid_type :6;
+ u_char crid_location :2;
@@ -414,12 +379,14 @@ diff -ur vdr-1.7.15/libsi/headers.h vdr-1.7/libsi/headers.h
+ u_char crid_byte :8;
+ u_char crid_ref_lo :8;
+ };
- };
-
++};
++
/* 0x77 time_slice_fec_identifier_descriptor (ETSI EN 301 192) */
-diff -ur vdr-1.7.15/libsi/si.c vdr-1.7/libsi/si.c
---- vdr-1.7.15/libsi/si.c 2010-02-13 10:31:52.000000000 +0000
-+++ vdr-1.7/libsi/si.c 2010-06-06 14:54:48.000000000 +0100
+
+ struct descr_time_slice_fec_identifier {
+diff -ur vdr-1.7.16/libsi/si.c vdr-test/libsi/si.c
+--- vdr-1.7.16/libsi/si.c 2010-02-13 10:31:52.000000000 +0000
++++ vdr-test/libsi/si.c 2010-09-19 15:09:18.000000000 +0100
@@ -606,6 +606,12 @@
case ExtensionDescriptorTag:
d=new ExtensionDescriptor();
@@ -444,9 +411,9 @@ diff -ur vdr-1.7.15/libsi/si.c vdr-1.7/libsi/si.c
case TimeSliceFecIdentifierDescriptorTag:
case ECMRepetitionRateDescriptorTag:
case EnhancedAC3DescriptorTag:
-diff -ur vdr-1.7.15/menu.c vdr-1.7/menu.c
---- vdr-1.7.15/menu.c 2010-06-06 10:56:16.000000000 +0100
-+++ vdr-1.7/menu.c 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/menu.c vdr-test/menu.c
+--- vdr-1.7.16/menu.c 2010-06-06 10:56:16.000000000 +0100
++++ vdr-test/menu.c 2010-09-23 18:01:18.000000000 +0100
@@ -3051,6 +3051,7 @@
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use episode name"), &data.UseSubtitle));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use VPS"), &data.UseVps));
@@ -455,9 +422,9 @@ diff -ur vdr-1.7.15/menu.c vdr-1.7/menu.c
Add(new cMenuEditBoolItem(tr("Setup.Recording$Mark instant recording"), &data.MarkInstantRecord));
Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord)));
Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"), &data.InstantRecordTime, 1, MAXINSTANTRECTIME));
-diff -ur vdr-1.7.15/sdt.c vdr-1.7/sdt.c
---- vdr-1.7.15/sdt.c 2010-05-16 15:23:21.000000000 +0100
-+++ vdr-1.7/sdt.c 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/sdt.c vdr-test/sdt.c
+--- vdr-1.7.16/sdt.c 2010-05-16 15:23:21.000000000 +0100
++++ vdr-test/sdt.c 2010-09-23 18:01:18.000000000 +0100
@@ -128,6 +128,12 @@
}
}
@@ -471,9 +438,9 @@ diff -ur vdr-1.7.15/sdt.c vdr-1.7/sdt.c
default: ;
}
delete d;
-diff -ur vdr-1.7.15/timers.c vdr-1.7/timers.c
---- vdr-1.7.15/timers.c 2010-01-16 11:18:53.000000000 +0000
-+++ vdr-1.7/timers.c 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/timers.c vdr-test/timers.c
+--- vdr-1.7.16/timers.c 2010-01-16 11:18:53.000000000 +0000
++++ vdr-test/timers.c 2010-09-23 18:01:18.000000000 +0100
@@ -423,7 +423,7 @@
}
@@ -483,9 +450,9 @@ diff -ur vdr-1.7.15/timers.c vdr-1.7/timers.c
if (Margin || !Directly) {
startTime = event->StartTime();
stopTime = event->EndTime();
-diff -ur vdr-1.7.15/vdr.5 vdr-1.7/vdr.5
---- vdr-1.7.15/vdr.5 2010-05-16 13:15:48.000000000 +0100
-+++ vdr-1.7/vdr.5 2010-06-06 14:54:48.000000000 +0100
+diff -ur vdr-1.7.16/vdr.5 vdr-test/vdr.5
+--- vdr-1.7.16/vdr.5 2010-05-16 13:15:48.000000000 +0100
++++ vdr-test/vdr.5 2010-09-19 15:09:18.000000000 +0100
@@ -247,6 +247,9 @@
.B RID
The Radio ID of this channel (typically 0, may be used to distinguish channels where