diff options
Diffstat (limited to 'obsolete-patch/vdrtva-1.6.0-2.diff')
| -rw-r--r-- | obsolete-patch/vdrtva-1.6.0-2.diff | 534 |
1 files changed, 0 insertions, 534 deletions
diff --git a/obsolete-patch/vdrtva-1.6.0-2.diff b/obsolete-patch/vdrtva-1.6.0-2.diff deleted file mode 100644 index a8032f4..0000000 --- a/obsolete-patch/vdrtva-1.6.0-2.diff +++ /dev/null @@ -1,534 +0,0 @@ -diff -ur vdr-1.6.0/channels.c vdr-1.5/channels.c ---- vdr-1.6.0/channels.c 2008-03-05 16:42:50.000000000 +0000 -+++ vdr-1.5/channels.c 2008-03-16 12:55:17.000000000 +0000 -@@ -166,6 +166,7 @@ - shortName = strdup(""); - provider = strdup(""); - portalName = strdup(""); -+ defaultAuthority = strdup(""); - memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__); - inversion = INVERSION_AUTO; - bandwidth = BANDWIDTH_AUTO; -@@ -187,6 +188,7 @@ - shortName = NULL; - provider = NULL; - portalName = NULL; -+ defaultAuthority = NULL; - schedule = NULL; - linkChannels = NULL; - refChannel = NULL; -@@ -215,6 +217,7 @@ - free(shortName); - free(provider); - free(portalName); -+ free(defaultAuthority); - } - - cChannel& cChannel::operator= (const cChannel &Channel) -@@ -223,6 +226,7 @@ - shortName = strcpyrealloc(shortName, Channel.shortName); - provider = strcpyrealloc(provider, Channel.provider); - portalName = strcpyrealloc(portalName, Channel.portalName); -+ defaultAuthority = strcpyrealloc(defaultAuthority, Channel.defaultAuthority); - memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__); - return *this; - } -@@ -407,6 +411,13 @@ - } - } - -+void cChannel::SetDefaultAuthority(const char *DefaultAuthority) -+{ -+ if (!isempty(DefaultAuthority) && strcmp(defaultAuthority, DefaultAuthority) != 0) { -+ defaultAuthority = strcpyrealloc(defaultAuthority, DefaultAuthority); -+ } -+} -+ - #define STRDIFF 0x01 - #define VALDIFF 0x02 - -@@ -681,11 +692,11 @@ - q += IntArrayToString(q, Channel->dpids, 10, Channel->dlangs); - } - *q = 0; -- char caidbuf[MAXCAIDS * 5 + 10]; // 5: 4 digits plus delimiting ',', 10: paranoia -+ char caidbuf[MAXCAIDS * 5 + 10 + 256]; // 5: 4 digits plus delimiting ',', 10 + max DNS domain length: paranoia - q = caidbuf; - q += IntArrayToString(q, Channel->caids, 16); - *q = 0; -- buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->ParametersToString(), *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid); -+ buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d:%s\n", FullName, Channel->frequency, *Channel->ParametersToString(), *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid, Channel->defaultAuthority); - } - return buffer; - } -@@ -720,13 +731,16 @@ - char *vpidbuf = NULL; - char *apidbuf = NULL; - char *caidbuf = NULL; -- int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%d :%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, ¶mbuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpid, &caidbuf, &sid, &nid, &tid, &rid); -+ char *dabuf = NULL; -+ int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%d :%a[^:]:%d :%d :%d :%d :%a[^:]", &namebuf, &frequency, ¶mbuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpid, &caidbuf, &sid, &nid, &tid, &rid, &dabuf); - if (fields >= 9) { - if (fields == 9) { - // allow reading of old format - sid = atoi(caidbuf); - delete caidbuf; - caidbuf = NULL; -+ delete dabuf; -+ dabuf = NULL; - caids[0] = tpid; - caids[1] = 0; - tpid = 0; -@@ -828,12 +842,17 @@ - } - name = strcpyrealloc(name, namebuf); - -+ if (dabuf) { -+ defaultAuthority = strcpyrealloc(defaultAuthority, dabuf); -+ } -+ - free(parambuf); - free(sourcebuf); - free(vpidbuf); - free(apidbuf); - free(caidbuf); - free(namebuf); -+ free(dabuf); - if (!GetChannelID().Valid()) { - esyslog("ERROR: channel data results in invalid ID!"); - return false; -diff -ur vdr-1.6.0/channels.h vdr-1.5/channels.h ---- vdr-1.6.0/channels.h 2008-02-08 13:48:31.000000000 +0000 -+++ vdr-1.5/channels.h 2008-02-17 15:13:46.000000000 +0000 -@@ -114,6 +114,7 @@ - char *shortName; - char *provider; - char *portalName; -+ char *defaultAuthority; - int __BeginData__; - int frequency; // MHz - int source; -@@ -162,6 +163,7 @@ - const char *ShortName(bool OrName = false) const { return (OrName && isempty(shortName)) ? name : shortName; } - const char *Provider(void) const { return provider; } - const char *PortalName(void) const { return portalName; } -+ const char *DefaultAuthority(void) const { return defaultAuthority; } - int Frequency(void) const { return frequency; } ///< Returns the actual frequency, as given in 'channels.conf' - int Transponder(void) const; ///< Returns the transponder frequency in MHz, plus the polarization in case of sat - static int Transponder(int Frequency, char Polarization); ///< builds the transponder from the given Frequency and Polarization -@@ -212,6 +214,7 @@ - void SetId(int Nid, int Tid, int Sid, int Rid = 0); - void SetName(const char *Name, const char *ShortName, const char *Provider); - void SetPortalName(const char *PortalName); -+ void SetDefaultAuthority(const char *DefaultAuthority); - void SetPids(int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, 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.6.0/config.c vdr-1.5/config.c ---- vdr-1.6.0/config.c 2008-02-17 13:39:00.000000000 +0000 -+++ vdr-1.5/config.c 2009-12-31 15:11:46.000000000 +0000 -@@ -255,6 +255,7 @@ - UseSubtitle = 1; - UseVps = 0; - VpsMargin = 120; -+ VpsFallback = 0; - RecordingDirs = 1; - VideoDisplayFormat = 1; - VideoFormat = 0; -@@ -428,6 +429,7 @@ - else if (!strcasecmp(Name, "UseSubtitle")) UseSubtitle = atoi(Value); - else if (!strcasecmp(Name, "UseVps")) UseVps = atoi(Value); - else if (!strcasecmp(Name, "VpsMargin")) VpsMargin = atoi(Value); -+ else if (!strcasecmp(Name, "VpsFallback")) VpsFallback = atoi(Value); - else if (!strcasecmp(Name, "RecordingDirs")) RecordingDirs = atoi(Value); - else if (!strcasecmp(Name, "VideoDisplayFormat")) VideoDisplayFormat = atoi(Value); - else if (!strcasecmp(Name, "VideoFormat")) VideoFormat = atoi(Value); -@@ -511,6 +513,7 @@ - Store("UseSubtitle", UseSubtitle); - Store("UseVps", UseVps); - Store("VpsMargin", VpsMargin); -+ Store("VpsFallback", VpsFallback); - Store("RecordingDirs", RecordingDirs); - Store("VideoDisplayFormat", VideoDisplayFormat); - Store("VideoFormat", VideoFormat); -diff -ur vdr-1.6.0/config.h vdr-1.5/config.h ---- vdr-1.6.0/config.h 2010-01-03 19:44:47.000000000 +0000 -+++ vdr-1.5/config.h 2009-12-31 15:09:37.000000000 +0000 -@@ -237,6 +237,7 @@ - int UseSubtitle; - int UseVps; - int VpsMargin; -+ int VpsFallback; - int RecordingDirs; - int VideoDisplayFormat; - int VideoFormat; -diff -ur vdr-1.6.0/dvbdevice.h vdr-1.5/dvbdevice.h ---- vdr-1.6.0/dvbdevice.h 2008-02-08 13:48:31.000000000 +0000 -+++ vdr-1.5/dvbdevice.h 2009-05-31 16:28:58.000000000 +0100 -@@ -15,8 +15,8 @@ - #include "device.h" - #include "dvbspu.h" - --#if DVB_API_VERSION != 3 --#error VDR requires Linux DVB driver API version 3! -+#if (DVB_API_VERSION != 3) && (DVB_API_VERSION != 5) -+#error VDR requires Linux DVB driver API version 3 or 5! - #endif - - #define MAXDVBDEVICES 8 -diff -ur vdr-1.6.0/eit.c vdr-1.5/eit.c ---- vdr-1.6.0/eit.c 2010-01-03 19:44:41.000000000 +0000 -+++ vdr-1.5/eit.c 2008-10-14 20:10:48.000000000 +0100 -@@ -110,6 +110,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)); ) { -@@ -227,6 +229,23 @@ - } - } - 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; -+ } -+ } -+ } - default: ; - } - delete d; -@@ -248,9 +267,27 @@ - } - else if (!HasExternalData) - pEvent->SetDescription(NULL); -+ if (itemCrid && (itemCrid->getCridLocation() == 0)) { -+ char buffer[Utf8BufSize(256)]; -+ char buff2[Utf8BufSize(256)]; -+ strcpy (buffer, channel->DefaultAuthority()); -+ itemCrid->entry.getText(buff2, sizeof(buff2)); -+ strcat(buffer, buff2); -+ pEvent->SetItemCRID(buffer); - } -+ if (seriesCrid && (seriesCrid->getCridLocation() == 0)) { -+ char buffer[Utf8BufSize(256)]; -+ char buff2[Utf8BufSize(256)]; -+ strcpy (buffer, channel->DefaultAuthority()); -+ seriesCrid->entry.getText(buff2, sizeof(buff2)); -+ strcat(buffer, buff2); -+ pEvent->SetSeriesCRID(buffer); -+ } -+ } - delete ExtendedEventDescriptors; - delete ShortEventDescriptor; -+ delete itemCrid; -+ delete seriesCrid; - - pEvent->SetComponents(Components); - -diff -ur vdr-1.6.0/epg.c vdr-1.5/epg.c ---- vdr-1.6.0/epg.c 2008-02-16 16:09:12.000000000 +0000 -+++ vdr-1.5/epg.c 2008-02-23 12:28:13.000000000 +0000 -@@ -113,6 +113,8 @@ - startTime = 0; - duration = 0; - vps = 0; -+ itemCRID = NULL; -+ seriesCRID = NULL; - SetSeen(); - } - -@@ -121,6 +123,8 @@ - free(title); - free(shortText); - free(description); -+ free(itemCRID); -+ free(seriesCRID); - delete components; - } - -@@ -205,6 +209,16 @@ - vps = Vps; - } - -+void cEvent::SetItemCRID(const char *CRID) -+{ -+ itemCRID = strcpyrealloc(itemCRID, CRID); -+} -+ -+void cEvent::SetSeriesCRID(const char *CRID) -+{ -+ seriesCRID = strcpyrealloc(seriesCRID, CRID); -+} -+ - void cEvent::SetSeen(void) - { - seen = time(NULL); -@@ -278,6 +292,10 @@ - } - if (vps) - fprintf(f, "%sV %ld\n", Prefix, vps); -+ if (!isempty(itemCRID)) -+ fprintf(f, "%sI %s\n", Prefix, itemCRID); -+ if (!isempty(seriesCRID)) -+ fprintf(f, "%sR %s\n", Prefix, seriesCRID); - if (!InfoOnly) - fprintf(f, "%se\n", Prefix); - } -@@ -300,6 +318,10 @@ - break; - case 'V': SetVps(atoi(t)); - break; -+ case 'I': SetItemCRID(t); -+ break; -+ case 'R': SetSeriesCRID(t); -+ break; - default: esyslog("ERROR: unexpected tag while reading EPG data: %s", s); - return false; - } -diff -ur vdr-1.6.0/epg.h vdr-1.5/epg.h ---- vdr-1.6.0/epg.h 2006-10-07 14:47:19.000000000 +0100 -+++ vdr-1.5/epg.h 2008-02-17 15:13:46.000000000 +0000 -@@ -66,6 +66,8 @@ - int duration; // Duration of this event in seconds - time_t vps; // Video Programming Service timestamp (VPS, aka "Programme Identification Label", PIL) - time_t seen; // When this event was last seen in the data stream -+ char *itemCRID; // Item CRID -+ char *seriesCRID; // Series CRID - public: - cEvent(tEventID EventID); - ~cEvent(); -@@ -84,6 +86,8 @@ - time_t EndTime(void) const { return startTime + duration; } - int Duration(void) const { return duration; } - time_t Vps(void) const { return vps; } -+ const char *ItemCRID(void) const { return itemCRID; } -+ const char *SeriesCRID(void) const { return seriesCRID; } - time_t Seen(void) const { return seen; } - bool SeenWithin(int Seconds) const { return time(NULL) - seen < Seconds; } - bool HasTimer(void) const; -@@ -103,6 +107,8 @@ - void SetStartTime(time_t StartTime); - void SetDuration(int Duration); - void SetVps(time_t Vps); -+ void SetItemCRID(const char *CRID); -+ void SetSeriesCRID(const char *CRID); - void SetSeen(void); - cString ToDescr(void) const; - void Dump(FILE *f, const char *Prefix = "", bool InfoOnly = false) const; -diff -ur vdr-1.6.0/libsi/descriptor.c vdr-1.5/libsi/descriptor.c ---- vdr-1.6.0/libsi/descriptor.c 2007-02-03 11:45:58.000000000 +0000 -+++ vdr-1.5/libsi/descriptor.c 2008-02-17 15:13:46.000000000 +0000 -@@ -643,6 +643,29 @@ - textualServiceIdentifier.setData(data+sizeof(descr_service_identifier), getLength()-sizeof(descr_service_identifier)); - } - -+void ContentIdentifierDescriptor::Parse() { -+ int offset=0; -+ data.setPointerAndOffset<const descr_content_identifier>(s, offset); -+ if (s->crid_location == 0) { -+ entry.setData(data+(offset-1), s->crid_length); -+ } -+ else { -+ entry.setData(data+(offset-1), 2); -+ } -+} -+ -+int ContentIdentifierDescriptor::getCridType() const { -+ return s->crid_type; -+} -+ -+int ContentIdentifierDescriptor::getCridLocation() const { -+ return s->crid_location; -+} -+ -+void DefaultAuthorityDescriptor::Parse() { -+ DefaultAuthority.setData(data+sizeof(descr_default_authority), getLength()-sizeof(descr_default_authority)); -+} -+ - void MultilingualNameDescriptor::Parse() { - nameLoop.setData(data+sizeof(descr_multilingual_network_name), getLength()-sizeof(descr_multilingual_network_name)); - } -diff -ur vdr-1.6.0/libsi/descriptor.h vdr-1.5/libsi/descriptor.h ---- vdr-1.6.0/libsi/descriptor.h 2007-02-03 11:45:58.000000000 +0000 -+++ vdr-1.5/libsi/descriptor.h 2008-02-17 15:13:46.000000000 +0000 -@@ -361,6 +361,25 @@ - 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(); } -+ private: -+ const descr_content_identifier *s; -+protected: -+ virtual void Parse(); -+}; -+ -+class DefaultAuthorityDescriptor : public Descriptor { -+public: -+ String DefaultAuthority; //ID -+protected: -+ virtual void Parse(); -+}; -+ - //abstract base class - class MultilingualNameDescriptor : public Descriptor { - public: -diff -ur vdr-1.6.0/libsi/headers.h vdr-1.5/libsi/headers.h ---- vdr-1.6.0/libsi/headers.h 2007-02-03 11:45:58.000000000 +0000 -+++ vdr-1.5/libsi/headers.h 2008-02-17 15:13:46.000000000 +0000 -@@ -1673,11 +1673,39 @@ - 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; -+#if BYTE_ORDER == BIG_ENDIAN -+ u_char crid_type :6; -+ u_char crid_location :2; -+#else -+ u_char crid_location :2; -+ u_char crid_type :6; -+#endif -+ union { -+ u_char crid_length :8; -+ u_char crid_ref_hi :8; -+ }; -+ union { -+ 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.6.0/libsi/si.c vdr-1.5/libsi/si.c ---- vdr-1.6.0/libsi/si.c 2008-03-05 17:00:55.000000000 +0000 -+++ vdr-1.5/libsi/si.c 2008-03-16 12:55:17.000000000 +0000 -@@ -605,6 +605,12 @@ - case ExtensionDescriptorTag: - d=new ExtensionDescriptor(); - break; -+ case ContentIdentifierDescriptorTag: -+ d=new ContentIdentifierDescriptor(); -+ break; -+ case DefaultAuthorityDescriptorTag: -+ d=new DefaultAuthorityDescriptor(); -+ break; - - //note that it is no problem to implement one - //of the unimplemented descriptors. -@@ -647,10 +653,8 @@ - case TransportStreamDescriptorTag: - - //defined in ETSI EN 300 468 v 1.7.1 -- case DefaultAuthorityDescriptorTag: - case RelatedContentDescriptorTag: - case TVAIdDescriptorTag: -- case ContentIdentifierDescriptorTag: - case TimeSliceFecIdentifierDescriptorTag: - case ECMRepetitionRateDescriptorTag: - case EnhancedAC3DescriptorTag: -diff -ur vdr-1.6.0/menu.c vdr-1.5/menu.c ---- vdr-1.6.0/menu.c 2008-03-16 11:15:28.000000000 +0000 -+++ vdr-1.5/menu.c 2009-12-31 15:14:34.000000000 +0000 -@@ -2753,6 +2753,7 @@ - Add(new cMenuEditBoolItem(tr("Setup.Recording$Use episode name"), &data.UseSubtitle)); - Add(new cMenuEditBoolItem(tr("Setup.Recording$Use VPS"), &data.UseVps)); - Add(new cMenuEditIntItem( tr("Setup.Recording$VPS margin (s)"), &data.VpsMargin, 0)); -+ Add(new cMenuEditBoolItem(tr("Setup.Recording$Use running status as VPS fallback"), &data.VpsFallback)); - 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.6.0/sdt.c vdr-1.5/sdt.c ---- vdr-1.6.0/sdt.c 2008-02-08 13:48:31.000000000 +0000 -+++ vdr-1.5/sdt.c 2008-02-17 15:13:46.000000000 +0000 -@@ -123,6 +123,12 @@ - } - } - break; -+ case SI::DefaultAuthorityDescriptorTag: { -+ SI::DefaultAuthorityDescriptor *da = (SI::DefaultAuthorityDescriptor *)d; -+ char DaBuf[Utf8BufSize(1024)]; -+ da->DefaultAuthority.getText(DaBuf, sizeof(DaBuf)); -+ channel->SetDefaultAuthority(DaBuf); -+ } - default: ; - } - delete d; -diff -ur vdr-1.6.0/timers.c vdr-1.5/timers.c ---- vdr-1.6.0/timers.c 2010-01-03 19:44:41.000000000 +0000 -+++ vdr-1.5/timers.c 2009-12-31 15:16:18.000000000 +0000 -@@ -413,7 +413,7 @@ - } - - if (HasFlags(tfActive)) { -- if (HasFlags(tfVps) && event && event->Vps()) { -+ if (HasFlags(tfVps) && event && (Setup.VpsFallback || event->Vps())) { - if (Margin || !Directly) { - startTime = event->StartTime(); - stopTime = event->EndTime(); -diff -ur vdr-1.6.0/vdr.5 vdr-1.5/vdr.5 ---- vdr-1.6.0/vdr.5 2008-03-09 15:46:57.000000000 +0000 -+++ vdr-1.5/vdr.5 2008-03-16 12:55:17.000000000 +0000 -@@ -177,6 +177,9 @@ - .B RID - The Radio ID of this channel (typically 0, may be used to distinguish channels where - NID, TID and SID are all equal). -+.TP -+.B Default Authority -+The Default Authority for CRIDs on this channel (TVAnytime). - .PP - A particular channel can be uniquely identified by its \fBchannel\ ID\fR, - which is a string that looks like this: -@@ -620,6 +623,8 @@ - \fBD\fR@<description> - \fBX\fR@<stream> <type> <language> <descr> - \fBV\fR@<vps time> -+\fBI\fR@<item CRID> -+\fBR\fR@<series CRID> - \fBe\fR@ - \fBc\fR@ - .TE -@@ -653,6 +658,8 @@ - <language> @is the three letter language code (optionally two codes, separated by '+') - <descr> @is the description of this stream component - <vps time> @is the Video Programming Service time of this event -+<item CRID> @is the CRID of this event (TVAnytime) -+<series CRID> @is the CRID of the series which this event is part of (TVAnytime) - .TE - - This file will be read at program startup in order to restore the results of |
