mirror of
				https://github.com/rofafor/vdr-plugin-iptv.git
				synced 2023-10-10 11:37:03 +00:00 
			
		
		
		
	Initial import.
This commit is contained in:
		
							
								
								
									
										277
									
								
								patches/vdr-1.5.13-pluginparam.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										277
									
								
								patches/vdr-1.5.13-pluginparam.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,277 @@ | ||||
| diff -Nru vdr-1.5.13-vanilla/channels.c vdr-1.5.13-pluginparam/channels.c | ||||
| --- vdr-1.5.13-vanilla/channels.c	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/channels.c	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -166,6 +166,7 @@ | ||||
|    shortName = strdup(""); | ||||
|    provider = strdup(""); | ||||
|    portalName = strdup(""); | ||||
| +  pluginParam = strdup(""); | ||||
|    memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__); | ||||
|    inversion    = INVERSION_AUTO; | ||||
|    bandwidth    = BANDWIDTH_AUTO; | ||||
| @@ -187,6 +188,7 @@ | ||||
|    shortName = NULL; | ||||
|    provider = NULL; | ||||
|    portalName = NULL; | ||||
| +  pluginParam = NULL; | ||||
|    schedule     = NULL; | ||||
|    linkChannels = NULL; | ||||
|    refChannel   = NULL; | ||||
| @@ -215,6 +217,7 @@ | ||||
|    free(shortName); | ||||
|    free(provider); | ||||
|    free(portalName); | ||||
| +  free(pluginParam); | ||||
|  } | ||||
|   | ||||
|  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); | ||||
| +  pluginParam = strcpyrealloc(pluginParam, Channel.pluginParam); | ||||
|    memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__); | ||||
|    return *this; | ||||
|  } | ||||
| @@ -280,9 +284,26 @@ | ||||
|       transmission = Channel->transmission; | ||||
|       guard        = Channel->guard; | ||||
|       hierarchy    = Channel->hierarchy; | ||||
| +     if (IsPlug())  pluginParam = strcpyrealloc(pluginParam, Channel->pluginParam); | ||||
|       } | ||||
|  } | ||||
|   | ||||
| +bool cChannel::SetPlugTransponderData(int Source, int Frequency, const char *PluginParam) | ||||
| +{ | ||||
| +  if (source != Source || frequency != Frequency || (strcmp(pluginParam, PluginParam) != 0)) { | ||||
| +       if (Number()) { | ||||
| +          dsyslog("changing transponder data of channel %d from %s:%d:%s to %s:%d:%s", Number(), *cSource::ToString(source), frequency, pluginParam, *cSource::ToString(Source), Frequency, PluginParam); | ||||
| +          modification |= CHANNELMOD_TRANSP; | ||||
| +          Channels.SetModified(); | ||||
| +          } | ||||
| +       source = Source; | ||||
| +       frequency = Frequency; | ||||
| +       pluginParam = strcpyrealloc(pluginParam, PluginParam); | ||||
| +       schedule = NULL; | ||||
| +       } | ||||
| +    return true; | ||||
| +} | ||||
| + | ||||
|  bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH) | ||||
|  { | ||||
|    // Workarounds for broadcaster stupidity: | ||||
| @@ -407,6 +428,18 @@ | ||||
|       } | ||||
|  } | ||||
|   | ||||
| +void cChannel::SetPluginParam(const char *PluginParam) | ||||
| +{ | ||||
| +  if (!isempty(PluginParam) && strcmp(pluginParam, PluginParam) != 0) { | ||||
| +     if (Number()) { | ||||
| +        dsyslog("changing plugin parameters of channel %d from '%s' to '%s'", Number(), pluginParam, PluginParam); | ||||
| +        modification |= CHANNELMOD_TRANSP; | ||||
| +        Channels.SetModified(); | ||||
| +        } | ||||
| +     pluginParam = strcpyrealloc(pluginParam, PluginParam); | ||||
| +     } | ||||
| +} | ||||
| + | ||||
|  #define STRDIFF 0x01 | ||||
|  #define VALDIFF 0x02 | ||||
|   | ||||
| @@ -593,7 +626,7 @@ | ||||
|    if (isdigit(type)) | ||||
|       type = 'S'; | ||||
|  #define ST(s) if (strchr(s, type)) | ||||
| -  char buffer[64]; | ||||
| +  char buffer[256]; | ||||
|    char *q = buffer; | ||||
|    *q = 0; | ||||
|    ST(" S ")  q += sprintf(q, "%c", polarization); | ||||
| @@ -605,6 +638,7 @@ | ||||
|    ST("  T")  q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues)); | ||||
|    ST("  T")  q += PrintParameter(q, 'G', MapToUser(guard, GuardValues)); | ||||
|    ST("  T")  q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues)); | ||||
| +  ST("P  ")  snprintf(buffer, sizeof(buffer), "%s", pluginParam); | ||||
|    return buffer; | ||||
|  } | ||||
|   | ||||
| @@ -626,7 +660,7 @@ | ||||
|   | ||||
|  bool cChannel::StringToParameters(const char *s) | ||||
|  { | ||||
| -  while (s && *s) { | ||||
| +  while (s && *s && !IsPlug()) { | ||||
|          switch (toupper(*s)) { | ||||
|            case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break; | ||||
|            case 'C': s = ParseParameter(s, coderateH, CoderateValues); break; | ||||
| @@ -736,7 +770,7 @@ | ||||
|          dpids[0] = 0; | ||||
|          ok = false; | ||||
|          if (parambuf && sourcebuf && vpidbuf && apidbuf) { | ||||
| -           ok = StringToParameters(parambuf) && (source = cSource::FromString(sourcebuf)) >= 0; | ||||
| +           ok = ((source = cSource::FromString(sourcebuf)) >= 0) && StringToParameters(parambuf); | ||||
|   | ||||
|             char *p = strchr(vpidbuf, '+'); | ||||
|             if (p) | ||||
| @@ -827,6 +861,7 @@ | ||||
|             shortName = strcpyrealloc(shortName, p); | ||||
|             } | ||||
|          name = strcpyrealloc(name, namebuf); | ||||
| +        if (IsPlug()) pluginParam = strcpyrealloc(pluginParam, parambuf); | ||||
|   | ||||
|          free(parambuf); | ||||
|          free(sourcebuf); | ||||
| diff -Nru vdr-1.5.13-vanilla/channels.h vdr-1.5.13-pluginparam/channels.h | ||||
| --- vdr-1.5.13-vanilla/channels.h	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/channels.h	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -114,6 +114,7 @@ | ||||
|    char *shortName; | ||||
|    char *provider; | ||||
|    char *portalName; | ||||
| +  char *pluginParam; | ||||
|    int __BeginData__; | ||||
|    int frequency; // MHz | ||||
|    int source; | ||||
| @@ -165,6 +166,7 @@ | ||||
|    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 | ||||
| +  const char *PluginParam(void) const { return pluginParam; } | ||||
|    int Source(void) const { return source; } | ||||
|    int Srate(void) const { return srate; } | ||||
|    int Vpid(void) const { return vpid; } | ||||
| @@ -199,6 +201,7 @@ | ||||
|    int Hierarchy(void) const { return hierarchy; } | ||||
|    const cLinkChannels* LinkChannels(void) const { return linkChannels; } | ||||
|    const cChannel *RefChannel(void) const { return refChannel; } | ||||
| +  bool IsPlug(void) const { return cSource::IsPlug(source); } | ||||
|    bool IsCable(void) const { return cSource::IsCable(source); } | ||||
|    bool IsSat(void) const { return cSource::IsSat(source); } | ||||
|    bool IsTerr(void) const { return cSource::IsTerr(source); } | ||||
| @@ -206,12 +209,14 @@ | ||||
|    bool HasTimer(void) const; | ||||
|    int Modification(int Mask = CHANNELMOD_ALL); | ||||
|    void CopyTransponderData(const cChannel *Channel); | ||||
| +  bool SetPlugTransponderData(int Source, int Frequency, const char *PluginParam); | ||||
|    bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH); | ||||
|    bool SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH); | ||||
|    bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission); | ||||
|    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 SetPluginParam(const char *PluginParam); | ||||
|    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 -Nru vdr-1.5.13-vanilla/config.h vdr-1.5.13-pluginparam/config.h | ||||
| --- vdr-1.5.13-vanilla/config.h	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/config.h	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -30,6 +30,8 @@ | ||||
|  #define APIVERSION  "1.5.13" | ||||
|  #define APIVERSNUM   10513  // Version * 10000 + Major * 100 + Minor | ||||
|   | ||||
| +#define PLUGINPARAMPATCHVERSNUM 1 | ||||
| + | ||||
|  // When loading plugins, VDR searches them by their APIVERSION, which | ||||
|  // may be smaller than VDRVERSION in case there have been no changes to | ||||
|  // VDR header files since the last APIVERSION. This allows compiled | ||||
| diff -Nru vdr-1.5.13-vanilla/menu.c vdr-1.5.13-pluginparam/menu.c | ||||
| --- vdr-1.5.13-vanilla/menu.c	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/menu.c	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -219,6 +219,7 @@ | ||||
|    cChannel *channel; | ||||
|    cChannel data; | ||||
|    char name[256]; | ||||
| +  char pluginParam[256]; | ||||
|    void Setup(void); | ||||
|  public: | ||||
|    cMenuEditChannel(cChannel *Channel, bool New = false); | ||||
| @@ -251,6 +252,7 @@ | ||||
|   | ||||
|    // Parameters for all types of sources: | ||||
|    strn0cpy(name, data.name, sizeof(name)); | ||||
| +  strn0cpy(pluginParam, data.pluginParam, sizeof(pluginParam)); | ||||
|    Add(new cMenuEditStrItem( tr("Name"),          name, sizeof(name))); | ||||
|    Add(new cMenuEditSrcItem( tr("Source"),       &data.source)); | ||||
|    Add(new cMenuEditIntItem( tr("Frequency"),    &data.frequency)); | ||||
| @@ -281,6 +283,7 @@ | ||||
|    ST("  T")  Add(new cMenuEditMapItem( tr("Transmission"), &data.transmission, TransmissionValues)); | ||||
|    ST("  T")  Add(new cMenuEditMapItem( tr("Guard"),        &data.guard,        GuardValues)); | ||||
|    ST("  T")  Add(new cMenuEditMapItem( tr("Hierarchy"),    &data.hierarchy,    HierarchyValues, tr("none"))); | ||||
| +  ST("P  ")  Add(new cMenuEditStrItem( tr("Parameters"),    pluginParam, sizeof(pluginParam), tr(FileNameChars))); | ||||
|   | ||||
|    SetCurrent(Get(current)); | ||||
|    Display(); | ||||
| @@ -295,6 +298,7 @@ | ||||
|       if (Key == kOk) { | ||||
|          if (Channels.HasUniqueChannelID(&data, channel)) { | ||||
|             data.name = strcpyrealloc(data.name, name); | ||||
| +           data.pluginParam = strcpyrealloc(data.pluginParam, pluginParam); | ||||
|             if (channel) { | ||||
|                *channel = data; | ||||
|                isyslog("edited channel %d %s", channel->Number(), *data.ToText()); | ||||
| diff -Nru vdr-1.5.13-vanilla/po/fi_FI.po vdr-1.5.13-pluginparam/po/fi_FI.po | ||||
| --- vdr-1.5.13-vanilla/po/fi_FI.po	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/po/fi_FI.po	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -1001,3 +1001,6 @@ | ||||
|  #, c-format | ||||
|  msgid "VDR will shut down in %s minutes" | ||||
|  msgstr "VDR sammuu %s minuutin kuluttua" | ||||
| + | ||||
| +msgid "Parameters" | ||||
| +msgstr "Parametrit" | ||||
| diff -Nru vdr-1.5.13-vanilla/sources.c vdr-1.5.13-pluginparam/sources.c | ||||
| --- vdr-1.5.13-vanilla/sources.c	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/sources.c	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -37,6 +37,7 @@ | ||||
|    char buffer[16]; | ||||
|    char *q = buffer; | ||||
|    switch (Code & st_Mask) { | ||||
| +    case stPlug:  *q++ = 'P'; break; | ||||
|      case stCable: *q++ = 'C'; break; | ||||
|      case stSat:   *q++ = 'S'; | ||||
|                    { | ||||
| @@ -56,6 +57,7 @@ | ||||
|  { | ||||
|    int type = stNone; | ||||
|    switch (toupper(*s)) { | ||||
| +    case 'P': type = stPlug;  break; | ||||
|      case 'C': type = stCable; break; | ||||
|      case 'S': type = stSat;   break; | ||||
|      case 'T': type = stTerr;  break; | ||||
| diff -Nru vdr-1.5.13-vanilla/sources.conf vdr-1.5.13-pluginparam/sources.conf | ||||
| --- vdr-1.5.13-vanilla/sources.conf	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/sources.conf	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -188,3 +188,7 @@ | ||||
|  # Terrestrial | ||||
|   | ||||
|  T       Terrestrial | ||||
| + | ||||
| +# Plugin | ||||
| + | ||||
| +P       Plugin | ||||
| diff -Nru vdr-1.5.13-vanilla/sources.h vdr-1.5.13-pluginparam/sources.h | ||||
| --- vdr-1.5.13-vanilla/sources.h	2008-01-13 17:31:25.000000000 +0200 | ||||
| +++ vdr-1.5.13-pluginparam/sources.h	2008-01-20 02:00:08.000000000 +0200 | ||||
| @@ -16,10 +16,11 @@ | ||||
|  public: | ||||
|    enum eSourceType { | ||||
|      stNone  = 0x0000, | ||||
| +    stPlug  = 0x2000, | ||||
|      stCable = 0x4000, | ||||
|      stSat   = 0x8000, | ||||
|      stTerr  = 0xC000, | ||||
| -    st_Mask = 0xC000, | ||||
| +    st_Mask = 0xE000, | ||||
|      st_Neg  = 0x0800, | ||||
|      st_Pos  = 0x07FF, | ||||
|      }; | ||||
| @@ -35,6 +36,7 @@ | ||||
|    static cString ToString(int Code); | ||||
|    static int FromString(const char *s); | ||||
|    static int FromData(eSourceType SourceType, int Position = 0, bool East = false); | ||||
| +  static bool IsPlug(int Code) { return (Code & st_Mask) == stPlug; } | ||||
|    static bool IsCable(int Code) { return (Code & st_Mask) == stCable; } | ||||
|    static bool IsSat(int Code) { return (Code & st_Mask) == stSat; } | ||||
|    static bool IsTerr(int Code) { return (Code & st_Mask) == stTerr; } | ||||
		Reference in New Issue
	
	Block a user