From 2bd95ab23ee9122be23b31a96754e92153f37180 Mon Sep 17 00:00:00 2001 From: Rolf Ahrenberg Date: Fri, 26 Oct 2007 23:13:24 +0000 Subject: [PATCH] Added preliminary support for vdr-1.4.7. --- HISTORY | 1 + README | 5 +- common.h | 10 +- iptv.c | 10 +- patches/vdr-1.4.7-closefilter.patch | 80 +++++++ patches/vdr-1.4.7-pluginparam.patch | 299 +++++++++++++++++++++++++++ patches/vdr-1.5.10-pluginparam.patch | 26 ++- setup.c | 11 +- 8 files changed, 425 insertions(+), 17 deletions(-) create mode 100644 patches/vdr-1.4.7-closefilter.patch create mode 100644 patches/vdr-1.4.7-pluginparam.patch diff --git a/HISTORY b/HISTORY index 4faef08..de5f2bc 100644 --- a/HISTORY +++ b/HISTORY @@ -17,3 +17,4 @@ VDR Plugin 'iptv' Revision History - Fixed shutdown crash. - Added some minor tweaks. - RTP payload now restricted to TS only. +- Added preliminary support for vdr-1.4.7. diff --git a/README b/README index 92c5642..b84b52d 100644 --- a/README +++ b/README @@ -17,8 +17,7 @@ See the file COPYING for more information. Requirements: -An IPTV patched VDR-1.5.10 (or later) setup and DVB compatible MPEG1/2 -network video streams. +An IPTV patched VDR setup and DVB compatible MPEG1/2 network video streams. Description: @@ -45,7 +44,7 @@ cd /put/your/path/here/VDR/PLUGINS/src tar -xzf /put/your/path/here/vdr-iptv-X.Y.Z.tgz ln -s iptv-X.Y.Z iptv cd /put/your/path/here/VDR -patch -p1 < PLUGINS/src/iptv/patches/vdr-X.Y.Z-pluginparam.patch +patch -p1 < PLUGINS/src/iptv/patches/vdr-X.Y.Z-*.patch cp sources.conf /path/to/vdrconf/ cp -R PLUGINS/src/iptv/iptv /path/to/vdrconf/plugins/ make diff --git a/common.h b/common.h index 0b2a2d2..3a576f9 100644 --- a/common.h +++ b/common.h @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: common.h,v 1.15 2007/10/22 19:32:19 ajhseppa Exp $ + * $Id: common.h,v 1.16 2007/10/26 23:13:24 rahrenbe Exp $ */ #ifndef __IPTV_COMMON_H @@ -19,6 +19,14 @@ #define error(x...) esyslog("IPTV: " x); #endif +#ifndef trNOOP +#define trNOOP(s) (s) +#endif + +#ifndef trVDR +#define trVDR(s) tr(s) +#endif + #define IPTV_DEVICE_INFO_ALL 0 #define IPTV_DEVICE_INFO_GENERAL 1 #define IPTV_DEVICE_INFO_PIDS 2 diff --git a/iptv.c b/iptv.c index 97fd769..90e639c 100644 --- a/iptv.c +++ b/iptv.c @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: iptv.c,v 1.25 2007/10/22 16:22:11 rahrenbe Exp $ + * $Id: iptv.c,v 1.26 2007/10/26 23:13:24 rahrenbe Exp $ */ #include @@ -13,8 +13,12 @@ #include "setup.h" #include "device.h" -#if defined(APIVERSNUM) && APIVERSNUM < 10510 -#error "VDR-1.5.10 API version or greater is required!" +#ifndef PLUGINPARAMPATCHVERSNUM +#error "You must apply the pluginparam patch for VDR!" +#endif + +#if defined(APIVERSNUM) && APIVERSNUM < 10510 && !defined(CLOSEFILTERPATCHVERSNUM) +#error "You must apply the closefilter patch for VDR!" #endif static const char *VERSION = "0.0.3"; diff --git a/patches/vdr-1.4.7-closefilter.patch b/patches/vdr-1.4.7-closefilter.patch new file mode 100644 index 0000000..f922c93 --- /dev/null +++ b/patches/vdr-1.4.7-closefilter.patch @@ -0,0 +1,80 @@ +diff -Nru vdr-1.4.7-vanilla/config.h vdr-1.4.7-closefilter/config.h +--- vdr-1.4.7-vanilla/config.h 2007-10-27 01:08:39.000000000 +0300 ++++ vdr-1.4.7-closefilter/config.h 2007-10-27 01:39:43.000000000 +0300 +@@ -29,6 +29,8 @@ + #define APIVERSION "1.4.5" + #define APIVERSNUM 10405 // Version * 10000 + Major * 100 + Minor + ++#define CLOSEFILTERPATCHVERSNUM 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/device.c vdr-1.4.7-closefilter/device.c +--- vdr-1.4.7-vanilla/device.c 2007-10-27 01:08:39.000000000 +0300 ++++ vdr-1.4.7-closefilter/device.c 2007-10-27 01:37:34.000000000 +0300 +@@ -509,6 +509,11 @@ + return -1; + } + ++void cDevice::CloseFilter(int Handle) ++{ ++ close(Handle); ++} ++ + void cDevice::AttachFilter(cFilter *Filter) + { + if (sectionHandler) +diff -Nru vdr-1.4.7-vanilla/device.h vdr-1.4.7-closefilter/device.h +--- vdr-1.4.7-vanilla/device.h 2007-10-27 01:08:39.000000000 +0300 ++++ vdr-1.4.7-closefilter/device.h 2007-10-27 01:37:19.000000000 +0300 +@@ -302,6 +302,11 @@ + ///< Opens a file handle for the given filter data. + ///< A derived device that provides section data must + ///< implement this function. ++ virtual void CloseFilter(int Handle); ++ ///< Closes a file handle that has previously been opened ++ ///< by OpenFilter(). If this is as simple as calling close(Handle), ++ ///< a derived class need not implement this function, because this ++ ///< is done by the default implementation. + void AttachFilter(cFilter *Filter); + ///< Attaches the given filter to this device. + void Detach(cFilter *Filter); +diff -Nru vdr-1.4.7-vanilla/dvbdevice.c vdr-1.4.7-closefilter/dvbdevice.c +--- vdr-1.4.7-vanilla/dvbdevice.c 2007-10-27 01:08:39.000000000 +0300 ++++ vdr-1.4.7-closefilter/dvbdevice.c 2007-10-27 01:37:50.000000000 +0300 +@@ -726,6 +726,11 @@ + return -1; + } + ++void cDvbDevice::CloseFilter(int Handle) ++{ ++ close(Handle); ++} ++ + void cDvbDevice::TurnOffLiveMode(bool LiveView) + { + if (LiveView) { +diff -Nru vdr-1.4.7-vanilla/dvbdevice.h vdr-1.4.7-closefilter/dvbdevice.h +--- vdr-1.4.7-vanilla/dvbdevice.h 2007-10-27 01:08:39.000000000 +0300 ++++ vdr-1.4.7-closefilter/dvbdevice.h 2007-10-27 01:37:59.000000000 +0300 +@@ -79,6 +79,7 @@ + + protected: + virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask); ++ virtual void CloseFilter(int Handle); + + // Image Grab facilities + +diff -Nru vdr-1.4.7-vanilla/sections.c vdr-1.4.7-closefilter/sections.c +--- vdr-1.4.7-vanilla/sections.c 2007-10-27 01:08:39.000000000 +0300 ++++ vdr-1.4.7-closefilter/sections.c 2007-10-27 01:34:06.000000000 +0300 +@@ -105,7 +105,7 @@ + for (fh = filterHandles.First(); fh; fh = filterHandles.Next(fh)) { + if (fh->filterData.Is(FilterData->pid, FilterData->tid, FilterData->mask)) { + if (--fh->used <= 0) { +- close(fh->handle); ++ device->CloseFilter(fh->handle); + filterHandles.Del(fh); + break; + } diff --git a/patches/vdr-1.4.7-pluginparam.patch b/patches/vdr-1.4.7-pluginparam.patch new file mode 100644 index 0000000..42cee49 --- /dev/null +++ b/patches/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; } diff --git a/patches/vdr-1.5.10-pluginparam.patch b/patches/vdr-1.5.10-pluginparam.patch index 7f69eb6..6d2e4dc 100644 --- a/patches/vdr-1.5.10-pluginparam.patch +++ b/patches/vdr-1.5.10-pluginparam.patch @@ -1,6 +1,6 @@ diff -Nru vdr-1.5.10-vanilla/channels.c vdr-1.5.10-pluginparam/channels.c --- vdr-1.5.10-vanilla/channels.c 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/channels.c 2007-10-14 20:31:12.000000000 +0300 ++++ vdr-1.5.10-pluginparam/channels.c 2007-10-27 01:53:27.000000000 +0300 @@ -166,6 +166,7 @@ shortName = strdup(""); provider = strdup(""); @@ -124,7 +124,7 @@ diff -Nru vdr-1.5.10-vanilla/channels.c vdr-1.5.10-pluginparam/channels.c free(sourcebuf); diff -Nru vdr-1.5.10-vanilla/channels.h vdr-1.5.10-pluginparam/channels.h --- vdr-1.5.10-vanilla/channels.h 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/channels.h 2007-10-14 20:32:16.000000000 +0300 ++++ vdr-1.5.10-pluginparam/channels.h 2007-10-27 01:53:27.000000000 +0300 @@ -114,6 +114,7 @@ char *shortName; char *provider; @@ -164,9 +164,21 @@ diff -Nru vdr-1.5.10-vanilla/channels.h vdr-1.5.10-pluginparam/channels.h 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.10-vanilla/config.h vdr-1.5.10-pluginparam/config.h +--- vdr-1.5.10-vanilla/config.h 2007-10-14 18:21:57.000000000 +0300 ++++ vdr-1.5.10-pluginparam/config.h 2007-10-27 01:53:59.000000000 +0300 +@@ -30,6 +30,8 @@ + #define APIVERSION "1.5.10" + #define APIVERSNUM 10510 // 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.10-vanilla/menu.c vdr-1.5.10-pluginparam/menu.c --- vdr-1.5.10-vanilla/menu.c 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/menu.c 2007-10-14 20:31:12.000000000 +0300 ++++ vdr-1.5.10-pluginparam/menu.c 2007-10-27 01:53:27.000000000 +0300 @@ -219,6 +219,7 @@ cChannel *channel; cChannel data; @@ -201,7 +213,7 @@ diff -Nru vdr-1.5.10-vanilla/menu.c vdr-1.5.10-pluginparam/menu.c isyslog("edited channel %d %s", channel->Number(), *data.ToText()); diff -Nru vdr-1.5.10-vanilla/po/fi_FI.po vdr-1.5.10-pluginparam/po/fi_FI.po --- vdr-1.5.10-vanilla/po/fi_FI.po 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/po/fi_FI.po 2007-10-14 20:34:41.000000000 +0300 ++++ vdr-1.5.10-pluginparam/po/fi_FI.po 2007-10-27 01:53:27.000000000 +0300 @@ -998,3 +998,6 @@ #, c-format msgid "VDR will shut down in %s minutes" @@ -211,7 +223,7 @@ diff -Nru vdr-1.5.10-vanilla/po/fi_FI.po vdr-1.5.10-pluginparam/po/fi_FI.po +msgstr "Parametrit" diff -Nru vdr-1.5.10-vanilla/sources.c vdr-1.5.10-pluginparam/sources.c --- vdr-1.5.10-vanilla/sources.c 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/sources.c 2007-10-14 20:31:12.000000000 +0300 ++++ vdr-1.5.10-pluginparam/sources.c 2007-10-27 01:53:27.000000000 +0300 @@ -37,6 +37,7 @@ char buffer[16]; char *q = buffer; @@ -230,7 +242,7 @@ diff -Nru vdr-1.5.10-vanilla/sources.c vdr-1.5.10-pluginparam/sources.c case 'T': type = stTerr; break; diff -Nru vdr-1.5.10-vanilla/sources.conf vdr-1.5.10-pluginparam/sources.conf --- vdr-1.5.10-vanilla/sources.conf 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/sources.conf 2007-10-14 20:31:12.000000000 +0300 ++++ vdr-1.5.10-pluginparam/sources.conf 2007-10-27 01:53:27.000000000 +0300 @@ -188,3 +188,7 @@ # Terrestrial @@ -241,7 +253,7 @@ diff -Nru vdr-1.5.10-vanilla/sources.conf vdr-1.5.10-pluginparam/sources.conf +P Plugin diff -Nru vdr-1.5.10-vanilla/sources.h vdr-1.5.10-pluginparam/sources.h --- vdr-1.5.10-vanilla/sources.h 2007-10-14 18:21:57.000000000 +0300 -+++ vdr-1.5.10-pluginparam/sources.h 2007-10-14 20:31:12.000000000 +0300 ++++ vdr-1.5.10-pluginparam/sources.h 2007-10-27 01:53:27.000000000 +0300 @@ -16,10 +16,11 @@ public: enum eSourceType { diff --git a/setup.c b/setup.c index e0a45be..d44a6bf 100644 --- a/setup.c +++ b/setup.c @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: setup.c,v 1.41 2007/10/20 20:35:06 rahrenbe Exp $ + * $Id: setup.c,v 1.42 2007/10/26 23:13:24 rahrenbe Exp $ */ #include @@ -154,7 +154,6 @@ void cIptvMenuEditChannel::SetChannelData(cChannel *Channel) cString param; char alangs[MAXAPIDS][MAXLANGCODE2] = { "" }; char dlangs[MAXDPIDS][MAXLANGCODE2] = { "" }; - char slangs[MAXSPIDS][MAXLANGCODE2] = { "" }; switch (data.protocol) { case eProtocolEXT: param = cString::sprintf("IPTV|EXT|%s|%d", data.location, data.parameter); @@ -170,7 +169,12 @@ void cIptvMenuEditChannel::SetChannelData(cChannel *Channel) param = cString::sprintf("IPTV|UDP|%s|%d", data.location, data.parameter); break; } +#if defined(APIVERSNUM) && APIVERSNUM < 10510 + Channel->SetPids(data.vpid, data.ppid, data.apid, alangs, data.dpid, dlangs, data.tpid); +#else + char slangs[MAXSPIDS][MAXLANGCODE2] = { "" }; Channel->SetPids(data.vpid, data.ppid, data.apid, alangs, data.dpid, dlangs, data.spid, slangs, data.tpid); +#endif Channel->SetCaIds(data.caids); Channel->SetId(data.nid, data.tid, data.sid, data.rid); Channel->SetName(data.name, "", "IPTV"); @@ -517,8 +521,9 @@ public: }; cIptvMenuInfo::cIptvMenuInfo() -:cOsdMenu(tr("IPTV Information")), text(""), timeout(INFO_TIMEOUT_MS), page(IPTV_DEVICE_INFO_GENERAL) +:cOsdMenu(tr("IPTV Information")), text(""), timeout(), page(IPTV_DEVICE_INFO_GENERAL) { + timeout.Set(INFO_TIMEOUT_MS); UpdateInfo(); SetHelp(tr("General"), tr("Pids"), tr("Filters"), tr("Bits/bytes")); }