diff options
| author | Dave <vdr@pickles.me.uk> | 2010-01-31 15:12:31 +0000 |
|---|---|---|
| committer | Dave <vdr@pickles.me.uk> | 2010-01-31 15:12:31 +0000 |
| commit | 3356629afcfa66c078d3db04a7495c586d773433 (patch) | |
| tree | 00ecfffaa138ae9cee0d2c2b327f9ccdbe94c9cf /vdrtva-1.7.11.diff | |
| parent | a42d7b97b0f5d42ac97be8544c92b17e958acf0b (diff) | |
| download | vdrtva-3356629afcfa66c078d3db04a7495c586d773433.tar.gz vdrtva-3356629afcfa66c078d3db04a7495c586d773433.tar.bz2 | |
Updated patch for vdr-1.7.12
Diffstat (limited to 'vdrtva-1.7.11.diff')
| -rw-r--r-- | vdrtva-1.7.11.diff | 516 |
1 files changed, 0 insertions, 516 deletions
diff --git a/vdrtva-1.7.11.diff b/vdrtva-1.7.11.diff deleted file mode 100644 index c10da1c..0000000 --- a/vdrtva-1.7.11.diff +++ /dev/null @@ -1,516 +0,0 @@ -diff -ur vdr-1.7.11/channels.c vdr-1.7/channels.c ---- vdr-1.7.11/channels.c 2010-01-02 17:38:40.000000000 +0000 -+++ vdr-1.7/channels.c 2010-01-06 12:54:34.000000000 +0000 -@@ -188,6 +188,7 @@ - shortName = strdup(""); - provider = strdup(""); - portalName = strdup(""); -+ defaultAuthority = strdup(""); - memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__); - inversion = INVERSION_AUTO; - bandwidth = 8000000; -@@ -211,6 +212,7 @@ - shortName = NULL; - provider = NULL; - portalName = NULL; -+ defaultAuthority = NULL; - schedule = NULL; - linkChannels = NULL; - refChannel = NULL; -@@ -239,6 +241,7 @@ - free(shortName); - free(provider); - free(portalName); -+ free(defaultAuthority); - } - - cChannel& cChannel::operator= (const cChannel &Channel) -@@ -247,6 +250,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; - } -@@ -439,6 +443,13 @@ - } - } - -+void cChannel::SetDefaultAuthority(const char *DefaultAuthority) -+{ -+ if (!isempty(DefaultAuthority) && strcmp(defaultAuthority, DefaultAuthority) != 0) { -+ defaultAuthority = strcpyrealloc(defaultAuthority, DefaultAuthority); -+ } -+} -+ - #define STRDIFF 0x01 - #define VALDIFF 0x02 - -@@ -758,11 +769,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; - } -@@ -797,13 +808,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; -@@ -912,12 +926,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.7.11/channels.h vdr-1.7/channels.h ---- vdr-1.7.11/channels.h 2009-12-06 12:57:45.000000000 +0000 -+++ vdr-1.7/channels.h 2010-01-06 12:54:34.000000000 +0000 -@@ -116,6 +116,7 @@ - char *shortName; - char *provider; - char *portalName; -+ char *defaultAuthority; - int __BeginData__; - int frequency; // MHz - int source; -@@ -171,6 +172,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 -@@ -227,6 +229,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 Vtype, 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.7.11/config.c vdr-1.7/config.c ---- vdr-1.7.11/config.c 2009-12-05 15:30:30.000000000 +0000 -+++ vdr-1.7/config.c 2010-01-06 12:54:34.000000000 +0000 -@@ -258,6 +258,7 @@ - UseSubtitle = 1; - UseVps = 0; - VpsMargin = 120; -+ VpsFallback = 0; - RecordingDirs = 1; - VideoDisplayFormat = 1; - VideoFormat = 0; -@@ -445,6 +446,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); -@@ -537,6 +539,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.7.11/config.h vdr-1.7/config.h ---- vdr-1.7.11/config.h 2009-11-22 19:55:04.000000000 +0000 -+++ vdr-1.7/config.h 2010-01-06 12:54:34.000000000 +0000 -@@ -238,6 +238,7 @@ - int UseSubtitle; - int UseVps; - int VpsMargin; -+ int VpsFallback; - int RecordingDirs; - int VideoDisplayFormat; - int VideoFormat; -diff -ur vdr-1.7.11/eit.c vdr-1.7/eit.c ---- vdr-1.7.11/eit.c 2010-01-03 15:35:21.000000000 +0000 -+++ vdr-1.7/eit.c 2010-01-06 12:54:34.000000000 +0000 -@@ -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 @@ - } - } - 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; -@@ -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.11/epg.c vdr-1.7/epg.c ---- vdr-1.7.11/epg.c 2010-01-03 14:10:20.000000000 +0000 -+++ vdr-1.7/epg.c 2010-01-06 13:03:01.000000000 +0000 -@@ -117,6 +117,8 @@ - startTime = 0; - duration = 0; - vps = 0; -+ itemCRID = NULL; -+ seriesCRID = NULL; - SetSeen(); - } - -@@ -125,6 +127,8 @@ - free(title); - free(shortText); - free(description); -+ free(itemCRID); -+ free(seriesCRID); - delete components; - } - -@@ -220,6 +224,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); -@@ -450,6 +464,10 @@ - } - if (vps) - fprintf(f, "%sV %ld\n", Prefix, vps); -+ if (!isempty(itemCRID)) -+ fprintf(f, "%sY %s\n", Prefix, itemCRID); -+ if (!isempty(seriesCRID)) -+ fprintf(f, "%sZ %s\n", Prefix, seriesCRID); - if (!InfoOnly) - fprintf(f, "%se\n", Prefix); - } -@@ -488,6 +506,10 @@ - break; - case 'V': SetVps(atoi(t)); - break; -+ case 'Y': SetItemCRID(t); -+ break; -+ case 'Z': SetSeriesCRID(t); -+ break; - default: esyslog("ERROR: unexpected tag while reading EPG data: %s", s); - return false; - } -diff -ur vdr-1.7.11/epg.h vdr-1.7/epg.h ---- vdr-1.7.11/epg.h 2010-01-03 14:39:14.000000000 +0000 -+++ vdr-1.7/epg.h 2010-01-06 12:54:34.000000000 +0000 -@@ -83,6 +83,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(); -@@ -103,6 +105,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; -@@ -126,6 +130,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.7.11/libsi/descriptor.c vdr-1.7/libsi/descriptor.c ---- vdr-1.7.11/libsi/descriptor.c 2007-02-03 11:45:58.000000000 +0000 -+++ vdr-1.7/libsi/descriptor.c 2009-06-06 09:48:00.000000000 +0100 -@@ -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.7.11/libsi/descriptor.h vdr-1.7/libsi/descriptor.h ---- vdr-1.7.11/libsi/descriptor.h 2007-02-03 11:45:58.000000000 +0000 -+++ vdr-1.7/libsi/descriptor.h 2009-06-06 09:48:00.000000000 +0100 -@@ -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.7.11/libsi/headers.h vdr-1.7/libsi/headers.h ---- vdr-1.7.11/libsi/headers.h 2007-02-03 11:45:58.000000000 +0000 -+++ vdr-1.7/libsi/headers.h 2009-06-06 09:48:00.000000000 +0100 -@@ -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.7.11/libsi/si.c vdr-1.7/libsi/si.c ---- vdr-1.7.11/libsi/si.c 2009-12-05 16:20:12.000000000 +0000 -+++ vdr-1.7/libsi/si.c 2010-01-06 12:54:34.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.7.11/menu.c vdr-1.7/menu.c ---- vdr-1.7.11/menu.c 2009-12-06 11:29:05.000000000 +0000 -+++ vdr-1.7/menu.c 2010-01-06 12:54:34.000000000 +0000 -@@ -2698,6 +2698,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.7.11/sdt.c vdr-1.7/sdt.c ---- vdr-1.7.11/sdt.c 2009-12-23 16:02:47.000000000 +0000 -+++ vdr-1.7/sdt.c 2010-01-06 12:54:34.000000000 +0000 -@@ -127,6 +127,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.7.11/timers.c vdr-1.7/timers.c ---- vdr-1.7.11/timers.c 2009-08-09 13:43:20.000000000 +0100 -+++ vdr-1.7/timers.c 2009-12-30 09:28:39.000000000 +0000 -@@ -423,7 +423,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.7.11/vdr.5 vdr-1.7/vdr.5 ---- vdr-1.7.11/vdr.5 2010-01-03 13:37:07.000000000 +0000 -+++ vdr-1.7/vdr.5 2010-01-06 13:04:40.000000000 +0000 -@@ -240,6 +240,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: -@@ -699,6 +702,8 @@ - \fBR\fR@<parental rating> - \fBX\fR@<stream> <type> <language> <descr> - \fBV\fR@<vps time> -+\fBY\fR@<item CRID> -+\fBZ\fR@<series CRID> - \fBe\fR@ - \fBc\fR@ - .TE -@@ -733,6 +738,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 |
