From 537c16a43b1e012ea5bd16fb4b39e6f9dcc5e64b Mon Sep 17 00:00:00 2001 From: Rolf Ahrenberg Date: Mon, 28 Jan 2008 21:36:32 +0000 Subject: [PATCH] Added support for vdr-1.5.14. --- device.c | 7 +- device.h | 3 +- patches/vdr-1.5.14-pluginparam.patch | 288 +++++++++++++++++++++++++++ 3 files changed, 296 insertions(+), 2 deletions(-) create mode 100644 patches/vdr-1.5.14-pluginparam.patch diff --git a/device.c b/device.c index 7d0a687..d42f765 100644 --- a/device.c +++ b/device.c @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: device.c,v 1.78 2008/01/19 21:08:02 ajhseppa Exp $ + * $Id: device.c,v 1.79 2008/01/28 21:36:32 rahrenbe Exp $ */ #include "config.h" @@ -216,6 +216,11 @@ bool cIptvDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *N return result; } +int cIptvDevice::NumProvidedSystems(void) const +{ + return 1; +} + bool cIptvDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) { int parameter; diff --git a/device.h b/device.h index f7e4c1d..ce77e9f 100644 --- a/device.h +++ b/device.h @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: device.h,v 1.35 2008/01/04 23:36:37 ajhseppa Exp $ + * $Id: device.h,v 1.36 2008/01/28 21:36:33 rahrenbe Exp $ */ #ifndef __IPTV_DEVICE_H @@ -77,6 +77,7 @@ public: virtual bool ProvidesSource(int Source) const; virtual bool ProvidesTransponder(const cChannel *Channel) const; virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const; + virtual int NumProvidedSystems(void) const; protected: virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); diff --git a/patches/vdr-1.5.14-pluginparam.patch b/patches/vdr-1.5.14-pluginparam.patch new file mode 100644 index 0000000..23a3600 --- /dev/null +++ b/patches/vdr-1.5.14-pluginparam.patch @@ -0,0 +1,288 @@ +diff -Nru vdr-1.5.14-vanilla/channels.c vdr-1.5.14-pluginparam/channels.c +--- vdr-1.5.14-vanilla/channels.c 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/channels.c 2008-01-28 23:32:58.000000000 +0200 +@@ -216,6 +216,7 @@ + shortName = strdup(""); + provider = strdup(""); + portalName = strdup(""); ++ pluginParam = strdup(""); + memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__); + inversion = DVBFE_INVERSION_AUTO; + bandwidth = DVBFE_BANDWIDTH_AUTO; +@@ -241,6 +242,7 @@ + shortName = NULL; + provider = NULL; + portalName = NULL; ++ pluginParam = NULL; + schedule = NULL; + linkChannels = NULL; + refChannel = NULL; +@@ -269,6 +271,7 @@ + free(shortName); + free(provider); + free(portalName); ++ free(pluginParam); + } + + cChannel& cChannel::operator= (const cChannel &Channel) +@@ -277,6 +280,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; + } +@@ -338,9 +342,27 @@ + alpha = Channel->alpha; + priority = Channel->priority; + rollOff = Channel->rollOff; ++ 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)) { ++ cString OldParameters = ParametersToString(); ++ source = Source; ++ frequency = Frequency; ++ pluginParam = strcpyrealloc(pluginParam, PluginParam); ++ schedule = NULL; ++ if (Number()) { ++ dsyslog("changing transponder data of channel %d from %s:%d:%s to %s:%d:%s", Number(), *OldParameters, frequency, pluginParam, *cSource::ToString(Source), Frequency, PluginParam); ++ modification |= CHANNELMOD_TRANSP; ++ Channels.SetModified(); ++ } ++ } ++ return true; ++} ++ + bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff) + { + // Workarounds for broadcaster stupidity: +@@ -472,6 +494,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 + +@@ -658,7 +692,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); +@@ -674,6 +708,7 @@ + ST(" S ") q += PrintParameter(q, 'S', MapToUser(system, SystemValues)); + ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues)); + ST(" T") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues)); ++ ST("P ") snprintf(buffer, sizeof(buffer), "%s", pluginParam); + return buffer; + } + +@@ -695,7 +730,7 @@ + + bool cChannel::StringToParameters(const char *s) + { +- while (s && *s) { ++ while (s && *s && !IsPlug()) { + switch (toupper(*s)) { + case 'A': s = ParseParameter(s, alpha, AlphaValues); break; + case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break; +@@ -810,7 +845,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) +@@ -901,6 +936,7 @@ + shortName = strcpyrealloc(shortName, p); + } + name = strcpyrealloc(name, namebuf); ++ if (IsPlug()) pluginParam = strcpyrealloc(pluginParam, parambuf); + + free(parambuf); + free(sourcebuf); +diff -Nru vdr-1.5.14-vanilla/channels.h vdr-1.5.14-pluginparam/channels.h +--- vdr-1.5.14-vanilla/channels.h 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/channels.h 2008-01-28 23:32:58.000000000 +0200 +@@ -118,6 +118,7 @@ + char *shortName; + char *provider; + char *portalName; ++ char *pluginParam; + int __BeginData__; + int frequency; // MHz + int source; +@@ -173,6 +174,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; } +@@ -211,6 +213,7 @@ + int RollOff(void) const { return rollOff; } + 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); } +@@ -218,12 +221,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, int Modulation, int System, int RollOff); + 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, int Alpha, int Priority); + 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.14-vanilla/config.h vdr-1.5.14-pluginparam/config.h +--- vdr-1.5.14-vanilla/config.h 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/config.h 2008-01-28 23:32:58.000000000 +0200 +@@ -30,6 +30,8 @@ + #define APIVERSION "1.5.14" + #define APIVERSNUM 10514 // 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.14-vanilla/menu.c vdr-1.5.14-pluginparam/menu.c +--- vdr-1.5.14-vanilla/menu.c 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/menu.c 2008-01-28 23:32:58.000000000 +0200 +@@ -155,6 +155,7 @@ + cChannel *channel; + cChannel data; + char name[256]; ++ char pluginParam[256]; + void Setup(void); + public: + cMenuEditChannel(cChannel *Channel, bool New = false); +@@ -187,6 +188,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)); +@@ -221,6 +223,7 @@ + ST(" T") Add(new cMenuEditMapItem( tr("Alpha"), &data.alpha, AlphaValues)); + ST(" T") Add(new cMenuEditMapItem( tr("Priority"), &data.priority, PriorityValues)); + ST(" S ") Add(new cMenuEditMapItem( tr("Rolloff"), &data.rollOff, RollOffValues)); ++ ST("P ") Add(new cMenuEditStrItem( tr("Parameters"), pluginParam, sizeof(pluginParam), tr(FileNameChars))); + + SetCurrent(Get(current)); + Display(); +@@ -235,6 +238,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.14-vanilla/po/fi_FI.po vdr-1.5.14-pluginparam/po/fi_FI.po +--- vdr-1.5.14-vanilla/po/fi_FI.po 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/po/fi_FI.po 2008-01-28 23:32:58.000000000 +0200 +@@ -1019,3 +1019,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.14-vanilla/po/fr_FR.po vdr-1.5.14-pluginparam/po/fr_FR.po +--- vdr-1.5.14-vanilla/po/fr_FR.po 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/po/fr_FR.po 2008-01-28 23:32:58.000000000 +0200 +@@ -1022,3 +1022,6 @@ + #, c-format + msgid "VDR will shut down in %s minutes" + msgstr "VDR s'arrêtera dans %s minutes" ++ ++msgid "Parameters" ++msgstr "Paramètres" +diff -Nru vdr-1.5.14-vanilla/sources.c vdr-1.5.14-pluginparam/sources.c +--- vdr-1.5.14-vanilla/sources.c 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/sources.c 2008-01-28 23:32:58.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.14-vanilla/sources.conf vdr-1.5.14-pluginparam/sources.conf +--- vdr-1.5.14-vanilla/sources.conf 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/sources.conf 2008-01-28 23:32:58.000000000 +0200 +@@ -188,3 +188,7 @@ + # Terrestrial + + T Terrestrial ++ ++# Plugin ++ ++P Plugin +diff -Nru vdr-1.5.14-vanilla/sources.h vdr-1.5.14-pluginparam/sources.h +--- vdr-1.5.14-vanilla/sources.h 2008-01-27 23:04:26.000000000 +0200 ++++ vdr-1.5.14-pluginparam/sources.h 2008-01-28 23:32:58.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; }