summaryrefslogtreecommitdiff
path: root/patches/vdr/vdr-1.4.7-pluginparam.patch
diff options
context:
space:
mode:
authorVDR user <vdr@yavdr.gitarren.local>2010-03-14 13:15:46 +0100
committerVDR user <vdr@yavdr.gitarren.local>2010-03-14 13:15:46 +0100
commit8c00e6eb8fd0fca7f09e1091d1d07a5e0f7ca9b6 (patch)
treed48e044719599ded9e2cb722187484838e5377c2 /patches/vdr/vdr-1.4.7-pluginparam.patch
downloadvdr-plugin-pvrinput-8c00e6eb8fd0fca7f09e1091d1d07a5e0f7ca9b6.tar.gz
vdr-plugin-pvrinput-8c00e6eb8fd0fca7f09e1091d1d07a5e0f7ca9b6.tar.bz2
init
Diffstat (limited to 'patches/vdr/vdr-1.4.7-pluginparam.patch')
-rw-r--r--patches/vdr/vdr-1.4.7-pluginparam.patch299
1 files changed, 299 insertions, 0 deletions
diff --git a/patches/vdr/vdr-1.4.7-pluginparam.patch b/patches/vdr/vdr-1.4.7-pluginparam.patch
new file mode 100644
index 0000000..42cee49
--- /dev/null
+++ b/patches/vdr/vdr-1.4.7-pluginparam.patch
@@ -0,0 +1,299 @@
+diff -Nru vdr-1.4.7-vanilla/channels.c vdr-1.4.7-pluginparam/channels.c
+--- vdr-1.4.7-vanilla/channels.c 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/channels.c 2007-10-27 01:09:05.000000000 +0300
+@@ -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
+
+@@ -579,7 +612,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);
+@@ -591,6 +624,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;
+ }
+
+@@ -612,7 +646,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;
+@@ -722,7 +756,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)
+@@ -813,6 +847,7 @@
+ shortName = strcpyrealloc(shortName, p);
+ }
+ name = strcpyrealloc(name, namebuf);
++ if (IsPlug()) pluginParam = strcpyrealloc(pluginParam, parambuf);
+
+ free(parambuf);
+ free(sourcebuf);
+diff -Nru vdr-1.4.7-vanilla/channels.h vdr-1.4.7-pluginparam/channels.h
+--- vdr-1.4.7-vanilla/channels.h 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/channels.h 2007-10-27 01:12:37.000000000 +0300
+@@ -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; }
+@@ -198,6 +200,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); }
+@@ -205,12 +208,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 Tpid);
+ void SetCaIds(const int *CaIds); // list must be zero-terminated
+ void SetCaDescriptors(int Level);
+diff -Nru vdr-1.4.7-vanilla/config.h vdr-1.4.7-pluginparam/config.h
+--- vdr-1.4.7-vanilla/config.h 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/config.h 2007-10-27 01:14:39.000000000 +0300
+@@ -29,6 +29,8 @@
+ #define APIVERSION "1.4.5"
+ #define APIVERSNUM 10405 // 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.4.7-vanilla/i18n.c vdr-1.4.7-pluginparam/i18n.c
+--- vdr-1.4.7-vanilla/i18n.c 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/i18n.c 2007-10-27 01:11:38.000000000 +0300
+@@ -6126,6 +6126,28 @@
+ "Ingen titel",
+ "Bez názvu",
+ },
++ { "Parameters",
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "Parametrit",
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ },
+ { NULL }
+ };
+
+diff -Nru vdr-1.4.7-vanilla/menu.c vdr-1.4.7-pluginparam/menu.c
+--- vdr-1.4.7-vanilla/menu.c 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/menu.c 2007-10-27 01:09:05.000000000 +0300
+@@ -216,6 +216,7 @@
+ cChannel *channel;
+ cChannel data;
+ char name[256];
++ char pluginParam[256];
+ void Setup(void);
+ public:
+ cMenuEditChannel(cChannel *Channel, bool New = false);
+@@ -248,6 +249,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), tr(FileNameChars)));
+ Add(new cMenuEditSrcItem( tr("Source"), &data.source));
+ Add(new cMenuEditIntItem( tr("Frequency"), &data.frequency));
+@@ -276,6 +278,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();
+@@ -290,6 +293,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.4.7-vanilla/sources.c vdr-1.4.7-pluginparam/sources.c
+--- vdr-1.4.7-vanilla/sources.c 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/sources.c 2007-10-27 01:09:20.000000000 +0300
+@@ -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.4.7-vanilla/sources.conf vdr-1.4.7-pluginparam/sources.conf
+--- vdr-1.4.7-vanilla/sources.conf 2007-10-27 01:08:39.000000000 +0300
++++ vdr-1.4.7-pluginparam/sources.conf 2007-10-27 01:09:20.000000000 +0300
+@@ -188,3 +188,7 @@
+ # Terrestrial
+
+ T Terrestrial
++
++# Plugin
++
++P Plugin
+diff -Nru vdr-1.4.7-vanilla/sources.h vdr-1.4.7-pluginparam/sources.h
+--- vdr-1.4.7-vanilla/sources.h 2007-10-27 01:08:40.000000000 +0300
++++ vdr-1.4.7-pluginparam/sources.h 2007-10-27 01:09:20.000000000 +0300
+@@ -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; }