mirror of
https://github.com/rofafor/vdr-plugin-iptv.git
synced 2023-10-10 11:37:03 +00:00
updated vdr patch and added a preliminary channel editor.
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
diff -Nru vdr-1.5.9-vanilla/channels.c vdr-1.5.9-iptv/channels.c
|
||||
--- vdr-1.5.9-vanilla/channels.c 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/channels.c 2007-09-11 20:22:48.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/channels.c 2007-09-18 19:36:45.000000000 +0300
|
||||
@@ -166,6 +166,7 @@
|
||||
shortName = strdup("");
|
||||
provider = strdup("");
|
||||
portalName = strdup("");
|
||||
+ param = strdup("");
|
||||
+ pluginParam = strdup("");
|
||||
memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
|
||||
inversion = INVERSION_AUTO;
|
||||
bandwidth = BANDWIDTH_AUTO;
|
||||
@@ -13,7 +13,7 @@ diff -Nru vdr-1.5.9-vanilla/channels.c vdr-1.5.9-iptv/channels.c
|
||||
shortName = NULL;
|
||||
provider = NULL;
|
||||
portalName = NULL;
|
||||
+ param = NULL;
|
||||
+ pluginParam = NULL;
|
||||
schedule = NULL;
|
||||
linkChannels = NULL;
|
||||
refChannel = NULL;
|
||||
@@ -21,7 +21,7 @@ diff -Nru vdr-1.5.9-vanilla/channels.c vdr-1.5.9-iptv/channels.c
|
||||
free(shortName);
|
||||
free(provider);
|
||||
free(portalName);
|
||||
+ free(param);
|
||||
+ free(pluginParam);
|
||||
}
|
||||
|
||||
cChannel& cChannel::operator= (const cChannel &Channel)
|
||||
@@ -29,61 +29,98 @@ diff -Nru vdr-1.5.9-vanilla/channels.c vdr-1.5.9-iptv/channels.c
|
||||
shortName = strcpyrealloc(shortName, Channel.shortName);
|
||||
provider = strcpyrealloc(provider, Channel.provider);
|
||||
portalName = strcpyrealloc(portalName, Channel.portalName);
|
||||
+ param = strcpyrealloc(param, Channel.param);
|
||||
+ pluginParam = strcpyrealloc(pluginParam, Channel.pluginParam);
|
||||
memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__);
|
||||
return *this;
|
||||
}
|
||||
@@ -582,15 +586,16 @@
|
||||
char buffer[64];
|
||||
@@ -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);
|
||||
- ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
|
||||
- ST("CST") q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
|
||||
- ST(" T") q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
|
||||
- ST("C T") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
|
||||
- ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
|
||||
- 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(" S ") q += sprintf(q, "%c", polarization);
|
||||
+ ST(" CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
|
||||
+ ST(" CST") q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
|
||||
+ ST(" T") q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
|
||||
+ ST(" C T") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
|
||||
+ ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
|
||||
+ 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 ") q += sprintf(q, "%s", param);
|
||||
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 +617,7 @@
|
||||
@@ -612,7 +646,7 @@
|
||||
|
||||
bool cChannel::StringToParameters(const char *s)
|
||||
{
|
||||
- while (s && *s) {
|
||||
+ while (s && *s && IsPlug()) {
|
||||
+ while (s && *s && !IsPlug()) {
|
||||
switch (toupper(*s)) {
|
||||
case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
|
||||
case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
|
||||
@@ -813,6 +818,7 @@
|
||||
@@ -813,6 +847,7 @@
|
||||
shortName = strcpyrealloc(shortName, p);
|
||||
}
|
||||
name = strcpyrealloc(name, namebuf);
|
||||
+ param = strcpyrealloc(param, parambuf);
|
||||
+ if (IsPlug()) pluginParam = strcpyrealloc(pluginParam, parambuf);
|
||||
|
||||
free(parambuf);
|
||||
free(sourcebuf);
|
||||
diff -Nru vdr-1.5.9-vanilla/channels.h vdr-1.5.9-iptv/channels.h
|
||||
--- vdr-1.5.9-vanilla/channels.h 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/channels.h 2007-09-11 20:22:48.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/channels.h 2007-09-18 19:36:24.000000000 +0300
|
||||
@@ -114,6 +114,7 @@
|
||||
char *shortName;
|
||||
char *provider;
|
||||
char *portalName;
|
||||
+ char *param;
|
||||
+ char *pluginParam;
|
||||
int __BeginData__;
|
||||
int frequency; // MHz
|
||||
int source;
|
||||
@@ -91,7 +128,7 @@ diff -Nru vdr-1.5.9-vanilla/channels.h vdr-1.5.9-iptv/channels.h
|
||||
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 *Param(void) const { return param; }
|
||||
+ 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; }
|
||||
@@ -103,14 +140,29 @@ diff -Nru vdr-1.5.9-vanilla/channels.h vdr-1.5.9-iptv/channels.h
|
||||
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 Tpid);
|
||||
void SetCaIds(const int *CaIds); // list must be zero-terminated
|
||||
void SetCaDescriptors(int Level);
|
||||
diff -Nru vdr-1.5.9-vanilla/menu.c vdr-1.5.9-iptv/menu.c
|
||||
--- vdr-1.5.9-vanilla/menu.c 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/menu.c 2007-09-11 20:23:26.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/menu.c 2007-09-18 19:36:24.000000000 +0300
|
||||
@@ -219,6 +219,7 @@
|
||||
cChannel *channel;
|
||||
cChannel data;
|
||||
char name[256];
|
||||
+ char param[256];
|
||||
+ char pluginParam[256];
|
||||
void Setup(void);
|
||||
public:
|
||||
cMenuEditChannel(cChannel *Channel, bool New = false);
|
||||
@@ -118,41 +170,29 @@ diff -Nru vdr-1.5.9-vanilla/menu.c vdr-1.5.9-iptv/menu.c
|
||||
|
||||
// Parameters for all types of sources:
|
||||
strn0cpy(name, data.name, sizeof(name));
|
||||
+ strn0cpy(param, data.param, sizeof(param));
|
||||
+ 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));
|
||||
@@ -269,16 +271,17 @@
|
||||
Add(new cMenuEditIntItem( tr("Rid"), &data.rid, 0));
|
||||
XXX*/
|
||||
// Parameters for specific types of sources:
|
||||
- ST(" S ") Add(new cMenuEditChrItem( tr("Polarization"), &data.polarization, "hvlr"));
|
||||
- ST("CS ") Add(new cMenuEditIntItem( tr("Srate"), &data.srate));
|
||||
- ST("CST") Add(new cMenuEditMapItem( tr("Inversion"), &data.inversion, InversionValues, tr("off")));
|
||||
- ST("CST") Add(new cMenuEditMapItem( tr("CoderateH"), &data.coderateH, CoderateValues, tr("none")));
|
||||
- ST(" T") Add(new cMenuEditMapItem( tr("CoderateL"), &data.coderateL, CoderateValues, tr("none")));
|
||||
- ST("C T") Add(new cMenuEditMapItem( tr("Modulation"), &data.modulation, ModulationValues, "QPSK"));
|
||||
- ST(" T") Add(new cMenuEditMapItem( tr("Bandwidth"), &data.bandwidth, BandwidthValues));
|
||||
- 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(" S ") Add(new cMenuEditChrItem( tr("Polarization"), &data.polarization, "hvlr"));
|
||||
+ ST(" CS ") Add(new cMenuEditIntItem( tr("Srate"), &data.srate));
|
||||
+ ST(" CST") Add(new cMenuEditMapItem( tr("Inversion"), &data.inversion, InversionValues, tr("off")));
|
||||
+ ST(" CST") Add(new cMenuEditMapItem( tr("CoderateH"), &data.coderateH, CoderateValues, tr("none")));
|
||||
+ ST(" T") Add(new cMenuEditMapItem( tr("CoderateL"), &data.coderateL, CoderateValues, tr("none")));
|
||||
+ ST(" C T") Add(new cMenuEditMapItem( tr("Modulation"), &data.modulation, ModulationValues, "QPSK"));
|
||||
+ ST(" T") Add(new cMenuEditMapItem( tr("Bandwidth"), &data.bandwidth, BandwidthValues));
|
||||
+ 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"), param, sizeof(param), tr(FileNameChars)));
|
||||
@@ -279,6 +281,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();
|
||||
@@ -293,6 +296,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.9-vanilla/po/fi_FI.po vdr-1.5.9-iptv/po/fi_FI.po
|
||||
--- vdr-1.5.9-vanilla/po/fi_FI.po 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/po/fi_FI.po 2007-09-11 20:24:22.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/po/fi_FI.po 2007-09-18 19:36:24.000000000 +0300
|
||||
@@ -1271,3 +1271,7 @@
|
||||
#, c-format
|
||||
msgid "VDR will shut down in %s minutes"
|
||||
@@ -163,7 +203,7 @@ diff -Nru vdr-1.5.9-vanilla/po/fi_FI.po vdr-1.5.9-iptv/po/fi_FI.po
|
||||
+msgstr "Parametrit"
|
||||
diff -Nru vdr-1.5.9-vanilla/sources.c vdr-1.5.9-iptv/sources.c
|
||||
--- vdr-1.5.9-vanilla/sources.c 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/sources.c 2007-09-11 20:22:48.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/sources.c 2007-09-18 19:36:24.000000000 +0300
|
||||
@@ -37,6 +37,7 @@
|
||||
char buffer[16];
|
||||
char *q = buffer;
|
||||
@@ -182,7 +222,7 @@ diff -Nru vdr-1.5.9-vanilla/sources.c vdr-1.5.9-iptv/sources.c
|
||||
case 'T': type = stTerr; break;
|
||||
diff -Nru vdr-1.5.9-vanilla/sources.conf vdr-1.5.9-iptv/sources.conf
|
||||
--- vdr-1.5.9-vanilla/sources.conf 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/sources.conf 2007-09-11 20:22:48.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/sources.conf 2007-09-18 19:36:24.000000000 +0300
|
||||
@@ -188,3 +188,7 @@
|
||||
# Terrestrial
|
||||
|
||||
@@ -193,7 +233,7 @@ diff -Nru vdr-1.5.9-vanilla/sources.conf vdr-1.5.9-iptv/sources.conf
|
||||
+P Plugin
|
||||
diff -Nru vdr-1.5.9-vanilla/sources.h vdr-1.5.9-iptv/sources.h
|
||||
--- vdr-1.5.9-vanilla/sources.h 2007-08-26 18:45:20.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/sources.h 2007-09-11 20:22:48.000000000 +0300
|
||||
+++ vdr-1.5.9-iptv/sources.h 2007-09-18 19:36:24.000000000 +0300
|
||||
@@ -16,10 +16,11 @@
|
||||
public:
|
||||
enum eSourceType {
|
||||
|
||||
Reference in New Issue
Block a user