mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #40 from CvH/vdr-update
vdr-addon: update all addons to latest
This commit is contained in:
commit
6fe95eed43
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-plugin-dvbapi"
|
||||
PKG_VERSION="31f409d"
|
||||
PKG_VERSION="c76c24e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -17,18 +17,17 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-plugin-satip"
|
||||
PKG_VERSION="2.2.3"
|
||||
PKG_VERSION="18c9b79"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.saunalahti.fi/~rahrenbe/vdr/satip/"
|
||||
PKG_URL="http://www.saunalahti.fi/~rahrenbe/vdr/satip/files/${PKG_NAME/-plugin/}-$PKG_VERSION.tgz"
|
||||
PKG_SOURCE_DIR="satip-${PKG_VERSION}"
|
||||
PKG_URL="https://github.com/rofafor/vdr-plugin-satip/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr curl tinyxml"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="multimedia"
|
||||
PKG_SHORTDESC="vdr-satip: SAT>IP plugin for VDR"
|
||||
PKG_LONGDESC="vdr-satip is a SAT>IP plugin for VDR"
|
||||
PKG_SHORTDESC="VDR-satip: SAT>IP plugin for VDR"
|
||||
PKG_LONGDESC="This is an SAT>IP plugin for the Video Disk Recorder (VDR)."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
@ -1,402 +0,0 @@
|
||||
From 165fd5b14af2327f3cd5d5b6fbe814737a0ea423 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Grimm <etobi@debian.org>
|
||||
Date: Sat, 5 Dec 2015 16:59:28 +0100
|
||||
Subject: [PATCH 1/5] Reorderd the transponder URL parameter in a way the
|
||||
Panasonic CXW804 expects them (src/freq/pol/ro/msys/mtype/plts/sr/fec)
|
||||
|
||||
This only applies to DVB-S. DVB-C and DVB-T might need further tweaking.
|
||||
It's actually a bug of the Panasonic TV to expect the transponder parameters in
|
||||
a specific order in the query string, but for now this seems to be the most
|
||||
pragmatic workaround.
|
||||
---
|
||||
param.c | 22 +++++++++++-----------
|
||||
1 file changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/param.c b/param.c
|
||||
index c71902d..b5eaf1c 100644
|
||||
--- a/param.c
|
||||
+++ b/param.c
|
||||
@@ -163,11 +163,20 @@ cString GetTransponderUrlParameters(const cChannel *channelP)
|
||||
dtp.SetModulation(QPSK);
|
||||
dtp.SetRollOff(ROLLOFF_35);
|
||||
}
|
||||
+ ST(" S *") q += snprintf(q, STBUFLEFT, "src=%d&", ((src > 0) && (src <= 255)) ? src : 1);
|
||||
q += snprintf(q, STBUFLEFT, "freq=%s", *dtoa(freq, "%lg"));
|
||||
- ST(" S *") q += snprintf(q, STBUFLEFT, "&src=%d", ((src > 0) && (src <= 255)) ? src : 1);
|
||||
+ ST(" S *") q += snprintf(q, STBUFLEFT, "&pol=%c", tolower(dtp.Polarization()));
|
||||
+ ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.RollOff(), SatipRollOffValues);
|
||||
+ ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesSat);
|
||||
+ ST("C *") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesCable);
|
||||
+ ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesTerrestrial);
|
||||
+ ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
+ ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
+ ST("C 1") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
+ ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.Pilot(), SatipPilotValues);
|
||||
ST(" S *") q += snprintf(q, STBUFLEFT, "&sr=%d", channelP->Srate());
|
||||
+ ST("CST*") q += PrintUrlString(q, STBUFLEFT, dtp.CoderateH(), SatipCodeRateValues);
|
||||
ST("C 1") q += snprintf(q, STBUFLEFT, "&sr=%d", channelP->Srate());
|
||||
- ST(" S *") q += snprintf(q, STBUFLEFT, "&pol=%c", tolower(dtp.Polarization()));
|
||||
ST("C T2") q += snprintf(q, STBUFLEFT, "&plp=%d", dtp.StreamId());
|
||||
ST(" T2") q += snprintf(q, STBUFLEFT, "&t2id=%d", dtp.T2SystemId());
|
||||
ST("C 2") q += snprintf(q, STBUFLEFT, "&c2tft=%d", C2TuningFrequencyType);
|
||||
@@ -177,15 +186,6 @@ cString GetTransponderUrlParameters(const cChannel *channelP)
|
||||
ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Bandwidth(), SatipBandwidthValues);
|
||||
ST("C 2") q += PrintUrlString(q, STBUFLEFT, dtp.Bandwidth(), SatipBandwidthValues);
|
||||
ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Guard(), SatipGuardValues);
|
||||
- ST("CST*") q += PrintUrlString(q, STBUFLEFT, dtp.CoderateH(), SatipCodeRateValues);
|
||||
- ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.Pilot(), SatipPilotValues);
|
||||
- ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
- ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
- ST("C 1") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
- ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.RollOff(), SatipRollOffValues);
|
||||
- ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesSat);
|
||||
- ST("C *") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesCable);
|
||||
- ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesTerrestrial);
|
||||
ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Transmission(), SatipTransmissionValues);
|
||||
if ((channelP->Rid() % 100) > 0)
|
||||
snprintf(q, STBUFLEFT, "&fe=%d", channelP->Rid() % 100);
|
||||
|
||||
From c1a881ba9459146541ef07ea1519fd45e5603d2c Mon Sep 17 00:00:00 2001
|
||||
From: Rolf Ahrenberg <Rolf.Ahrenberg@sci.fi>
|
||||
Date: Sat, 5 Dec 2015 20:23:32 +0200
|
||||
Subject: [PATCH 2/5] Reorder also terrestrial and cable query parameters as
|
||||
introduced in the satip specification 1.2.2, although the ordering shouldn't
|
||||
matter according to it.
|
||||
|
||||
---
|
||||
param.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/param.c b/param.c
|
||||
index b5eaf1c..c9c4529 100644
|
||||
--- a/param.c
|
||||
+++ b/param.c
|
||||
@@ -163,32 +163,32 @@ cString GetTransponderUrlParameters(const cChannel *channelP)
|
||||
dtp.SetModulation(QPSK);
|
||||
dtp.SetRollOff(ROLLOFF_35);
|
||||
}
|
||||
+ if ((channelP->Rid() % 100) > 0)
|
||||
+ q += snprintf(q, STBUFLEFT, "&fe=%d", channelP->Rid() % 100);
|
||||
ST(" S *") q += snprintf(q, STBUFLEFT, "src=%d&", ((src > 0) && (src <= 255)) ? src : 1);
|
||||
q += snprintf(q, STBUFLEFT, "freq=%s", *dtoa(freq, "%lg"));
|
||||
ST(" S *") q += snprintf(q, STBUFLEFT, "&pol=%c", tolower(dtp.Polarization()));
|
||||
ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.RollOff(), SatipRollOffValues);
|
||||
+ ST("C 2") q += snprintf(q, STBUFLEFT, "&c2tft=%d", C2TuningFrequencyType);
|
||||
+ ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Bandwidth(), SatipBandwidthValues);
|
||||
+ ST("C 2") q += PrintUrlString(q, STBUFLEFT, dtp.Bandwidth(), SatipBandwidthValues);
|
||||
ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesSat);
|
||||
ST("C *") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesCable);
|
||||
ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.System(), SatipSystemValuesTerrestrial);
|
||||
+ ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Transmission(), SatipTransmissionValues);
|
||||
ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
ST("C 1") q += PrintUrlString(q, STBUFLEFT, dtp.Modulation(), SatipModulationValues);
|
||||
ST(" S *") q += PrintUrlString(q, STBUFLEFT, dtp.Pilot(), SatipPilotValues);
|
||||
ST(" S *") q += snprintf(q, STBUFLEFT, "&sr=%d", channelP->Srate());
|
||||
- ST("CST*") q += PrintUrlString(q, STBUFLEFT, dtp.CoderateH(), SatipCodeRateValues);
|
||||
ST("C 1") q += snprintf(q, STBUFLEFT, "&sr=%d", channelP->Srate());
|
||||
+ ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Guard(), SatipGuardValues);
|
||||
+ ST("CST*") q += PrintUrlString(q, STBUFLEFT, dtp.CoderateH(), SatipCodeRateValues);
|
||||
+ ST("C 2") q += snprintf(q, STBUFLEFT, "&ds=%d", DataSlice);
|
||||
ST("C T2") q += snprintf(q, STBUFLEFT, "&plp=%d", dtp.StreamId());
|
||||
ST(" T2") q += snprintf(q, STBUFLEFT, "&t2id=%d", dtp.T2SystemId());
|
||||
- ST("C 2") q += snprintf(q, STBUFLEFT, "&c2tft=%d", C2TuningFrequencyType);
|
||||
- ST("C 2") q += snprintf(q, STBUFLEFT, "&ds=%d", DataSlice);
|
||||
- ST("C 1") q += PrintUrlString(q, STBUFLEFT, dtp.Inversion(), SatipInversionValues);
|
||||
ST(" T2") q += PrintUrlString(q, STBUFLEFT, dtp.SisoMiso(), SatipSisoMisoValues);
|
||||
- ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Bandwidth(), SatipBandwidthValues);
|
||||
- ST("C 2") q += PrintUrlString(q, STBUFLEFT, dtp.Bandwidth(), SatipBandwidthValues);
|
||||
- ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Guard(), SatipGuardValues);
|
||||
- ST(" T*") q += PrintUrlString(q, STBUFLEFT, dtp.Transmission(), SatipTransmissionValues);
|
||||
- if ((channelP->Rid() % 100) > 0)
|
||||
- snprintf(q, STBUFLEFT, "&fe=%d", channelP->Rid() % 100);
|
||||
+ ST("C 1") q += PrintUrlString(q, STBUFLEFT, dtp.Inversion(), SatipInversionValues);
|
||||
#undef ST
|
||||
return buffer;
|
||||
}
|
||||
|
||||
From 9d5f7cc7030657f38c56f6041ff7f697774a9624 Mon Sep 17 00:00:00 2001
|
||||
From: chriszero <zerov83@gmail.com>
|
||||
Date: Thu, 7 Jan 2016 20:56:39 +0100
|
||||
Subject: [PATCH 3/5] Make it possible to specify the rtp and rtcp ports this
|
||||
makes it possible to use the satip through a NAT (e.g. a docker bridged
|
||||
network)
|
||||
|
||||
---
|
||||
README | 5 +++++
|
||||
config.c | 2 ++
|
||||
config.h | 6 ++++++
|
||||
satip.c | 40 ++++++++++++++++++++++++++++++++++++++--
|
||||
socket.c | 4 ++--
|
||||
socket.h | 2 +-
|
||||
tuner.c | 7 +++++--
|
||||
7 files changed, 59 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/README b/README
|
||||
index 49b0b38..1c3b610 100644
|
||||
--- a/README
|
||||
+++ b/README
|
||||
@@ -56,6 +56,11 @@ vdr -P 'satip -s <ipaddress>|<model>|<description>;...'
|
||||
vdr -P 'satip -s 192.168.0.1|DVBS2-2,DVBT2-2|Octo1'
|
||||
vdr -P 'satip -s 192.168.0.1|DVBS2-4|Octo1;192.168.0.2|DVBT2-4|Octo2'
|
||||
|
||||
+The plugin accepts a "--portrange" (-p) command-line parameter, that can
|
||||
+be used to manually specify the RTP & RTCP port range and therefore
|
||||
+enables using the plugin through a NAT (e.g. Docker bridged network).
|
||||
+A minimum of 2 ports per device is required.
|
||||
+
|
||||
SAT>IP satellite positions (aka. signal sources) shall be defined via
|
||||
sources.conf. If the source description begins with a number, it's used
|
||||
as SAT>IP signal source selection parameter. A special number zero can
|
||||
diff --git a/config.c b/config.c
|
||||
index 050453c..2243aaa 100644
|
||||
--- a/config.c
|
||||
+++ b/config.c
|
||||
@@ -17,6 +17,8 @@ cSatipConfig::cSatipConfig(void)
|
||||
ciExtensionM(0),
|
||||
eitScanM(1),
|
||||
useBytesM(1),
|
||||
+ portRangeStartM(0),
|
||||
+ portRangeStopM(0),
|
||||
detachedModeM(false),
|
||||
disableServerQuirksM(false),
|
||||
useSingleModelServersM(false)
|
||||
diff --git a/config.h b/config.h
|
||||
index b7745cf..b11b1d8 100644
|
||||
--- a/config.h
|
||||
+++ b/config.h
|
||||
@@ -19,6 +19,8 @@ class cSatipConfig
|
||||
unsigned int ciExtensionM;
|
||||
unsigned int eitScanM;
|
||||
unsigned int useBytesM;
|
||||
+ unsigned int portRangeStartM;
|
||||
+ unsigned int portRangeStopM;
|
||||
bool detachedModeM;
|
||||
bool disableServerQuirksM;
|
||||
bool useSingleModelServersM;
|
||||
@@ -74,6 +76,8 @@ class cSatipConfig
|
||||
int GetDisabledSources(unsigned int indexP) const;
|
||||
unsigned int GetDisabledFiltersCount(void) const;
|
||||
int GetDisabledFilters(unsigned int indexP) const;
|
||||
+ unsigned int GetPortRangeStart(void) const { return portRangeStartM; }
|
||||
+ unsigned int GetPortRangeStop(void) const { return portRangeStopM; }
|
||||
|
||||
void SetOperatingMode(unsigned int operatingModeP) { operatingModeM = operatingModeP; }
|
||||
void SetTraceMode(unsigned int modeP) { traceModeM = (modeP & eTraceModeMask); }
|
||||
@@ -86,6 +90,8 @@ class cSatipConfig
|
||||
void SetUseSingleModelServers(bool onOffP) { useSingleModelServersM = onOffP; }
|
||||
void SetDisabledSources(unsigned int indexP, int sourceP);
|
||||
void SetDisabledFilters(unsigned int indexP, int numberP);
|
||||
+ void SetPortRangeStart(unsigned int rangeStartP) { portRangeStartM = rangeStartP; }
|
||||
+ void SetPortRangeStop(unsigned int rangeStopP) { portRangeStopM = rangeStopP; }
|
||||
};
|
||||
|
||||
extern cSatipConfig SatipConfig;
|
||||
diff --git a/satip.c b/satip.c
|
||||
index 3453c48..35a92fe 100644
|
||||
--- a/satip.c
|
||||
+++ b/satip.c
|
||||
@@ -35,6 +35,7 @@ class cPluginSatip : public cPlugin {
|
||||
unsigned int deviceCountM;
|
||||
cSatipDiscoverServers *serversM;
|
||||
void ParseServer(const char *paramP);
|
||||
+ void ParsePortRange(const char *paramP);
|
||||
int ParseCicams(const char *valueP, int *cicamsP);
|
||||
int ParseSources(const char *valueP, int *sourcesP);
|
||||
int ParseFilters(const char *valueP, int *filtersP);
|
||||
@@ -87,7 +88,9 @@ const char *cPluginSatip::CommandLineHelp(void)
|
||||
" define hard-coded SAT>IP server(s)\n"
|
||||
" -D, --detach set the detached mode on\n"
|
||||
" -S, --single set the single model server mode on\n"
|
||||
- " -n, --noquirks disable all the server quirks\n";
|
||||
+ " -n, --noquirks disable all the server quirks\n"
|
||||
+ " -p, --portrange=<start>-<end> set a range of ports used for the RT[C]P server\n"
|
||||
+ " a minimum of 2 ports per device is required.\n";
|
||||
}
|
||||
|
||||
bool cPluginSatip::ProcessArgs(int argc, char *argv[])
|
||||
@@ -98,6 +101,7 @@ bool cPluginSatip::ProcessArgs(int argc, char *argv[])
|
||||
{ "devices", required_argument, NULL, 'd' },
|
||||
{ "trace", required_argument, NULL, 't' },
|
||||
{ "server", required_argument, NULL, 's' },
|
||||
+ { "portrange",required_argument, NULL, 'p' },
|
||||
{ "detach", no_argument, NULL, 'D' },
|
||||
{ "single", no_argument, NULL, 'S' },
|
||||
{ "noquirks", no_argument, NULL, 'n' },
|
||||
@@ -105,8 +109,9 @@ bool cPluginSatip::ProcessArgs(int argc, char *argv[])
|
||||
};
|
||||
|
||||
cString server;
|
||||
+ cString portrange;
|
||||
int c;
|
||||
- while ((c = getopt_long(argc, argv, "d:t:s:DSn", long_options, NULL)) != -1) {
|
||||
+ while ((c = getopt_long(argc, argv, "d:t:s:p:DSn", long_options, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'd':
|
||||
deviceCountM = strtol(optarg, NULL, 0);
|
||||
@@ -126,10 +131,15 @@ bool cPluginSatip::ProcessArgs(int argc, char *argv[])
|
||||
case 'n':
|
||||
SatipConfig.SetDisableServerQuirks(true);
|
||||
break;
|
||||
+ case 'p':
|
||||
+ portrange = optarg;
|
||||
+ break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+ if (!isempty(*portrange))
|
||||
+ ParsePortRange(portrange);
|
||||
// this must be done after all parameters are parsed
|
||||
if (!isempty(*server))
|
||||
ParseServer(*server);
|
||||
@@ -255,6 +265,32 @@ void cPluginSatip::ParseServer(const char *paramP)
|
||||
FREE_POINTER(p);
|
||||
}
|
||||
|
||||
+void cPluginSatip::ParsePortRange(const char *paramP)
|
||||
+{
|
||||
+ char *s, *p = skipspace(paramP);
|
||||
+ char *r = strtok_r(p, "-", &s);
|
||||
+ unsigned int rangeStart = 0;
|
||||
+ unsigned int rangeStop = 0;
|
||||
+ if (r) {
|
||||
+ rangeStart = strtol(r, NULL, 0);
|
||||
+ r = strtok_r(NULL, "-", &s);
|
||||
+ }
|
||||
+ if (r)
|
||||
+ rangeStop = strtol(r, NULL, 0);
|
||||
+ else {
|
||||
+ error("Port range argument not valid '%s'", paramP);
|
||||
+ rangeStart = 0;
|
||||
+ rangeStop = 0;
|
||||
+ }
|
||||
+ if (rangeStop - rangeStart + 1 < deviceCountM * 2) {
|
||||
+ error("The given port range is to small: %d < %d!", rangeStop - rangeStart + 1, deviceCountM * 2);
|
||||
+ rangeStart = 0;
|
||||
+ rangeStop = 0;
|
||||
+ }
|
||||
+ SatipConfig.SetPortRangeStart(rangeStart);
|
||||
+ SatipConfig.SetPortRangeStop(rangeStop);
|
||||
+}
|
||||
+
|
||||
int cPluginSatip::ParseCicams(const char *valueP, int *cicamsP)
|
||||
{
|
||||
debug1("%s (%s,)", __PRETTY_FUNCTION__, valueP);
|
||||
diff --git a/socket.c b/socket.c
|
||||
index 29c2602..35bc035 100644
|
||||
--- a/socket.c
|
||||
+++ b/socket.c
|
||||
@@ -34,7 +34,7 @@ cSatipSocket::~cSatipSocket()
|
||||
Close();
|
||||
}
|
||||
|
||||
-bool cSatipSocket::Open(const int portP)
|
||||
+bool cSatipSocket::Open(const int portP, const bool reuseAddrP)
|
||||
{
|
||||
// Bind to the socket if it is not active already
|
||||
if (socketDescM < 0) {
|
||||
@@ -46,7 +46,7 @@ bool cSatipSocket::Open(const int portP)
|
||||
ERROR_IF_FUNC(fcntl(socketDescM, F_SETFL, O_NONBLOCK), "fcntl(O_NONBLOCK)",
|
||||
Close(), return false);
|
||||
// Allow multiple sockets to use the same PORT number
|
||||
- int yes = 1;
|
||||
+ int yes = reuseAddrP;
|
||||
ERROR_IF_FUNC(setsockopt(socketDescM, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0,
|
||||
"setsockopt(SO_REUSEADDR)", Close(), return false);
|
||||
// Bind socket
|
||||
diff --git a/socket.h b/socket.h
|
||||
index f9a93d8..79bc991 100644
|
||||
--- a/socket.h
|
||||
+++ b/socket.h
|
||||
@@ -19,7 +19,7 @@ class cSatipSocket {
|
||||
public:
|
||||
cSatipSocket();
|
||||
virtual ~cSatipSocket();
|
||||
- bool Open(const int portP = 0);
|
||||
+ bool Open(const int portP = 0, const bool reuseAddrP = false);
|
||||
virtual void Close(void);
|
||||
int Fd(void) { return socketDescM; }
|
||||
int Port(void) { return socketPortM; }
|
||||
diff --git a/tuner.c b/tuner.c
|
||||
index c12a19e..fc47b51 100644
|
||||
--- a/tuner.c
|
||||
+++ b/tuner.c
|
||||
@@ -50,12 +50,15 @@ cSatipTuner::cSatipTuner(cSatipDeviceIf &deviceP, unsigned int packetLenP)
|
||||
debug1("%s (, %d) [device %d]", __PRETTY_FUNCTION__, packetLenP, deviceIdM);
|
||||
|
||||
// Open sockets
|
||||
- int i = 100;
|
||||
+ int i = SatipConfig.GetPortRangeStart() ? SatipConfig.GetPortRangeStop() - SatipConfig.GetPortRangeStart() - 1 : 100;
|
||||
+ int port = SatipConfig.GetPortRangeStart();
|
||||
while (i-- > 0) {
|
||||
- if (rtpM.Open(0) && rtcpM.Open(rtpM.Port() + 1))
|
||||
+ if (rtpM.Open(port) && rtcpM.Open(rtpM.Port() + 1))
|
||||
break;
|
||||
rtpM.Close();
|
||||
rtcpM.Close();
|
||||
+ if (SatipConfig.GetPortRangeStart())
|
||||
+ ++port;
|
||||
}
|
||||
if ((rtpM.Port() <= 0) || (rtcpM.Port() <= 0)) {
|
||||
error("Cannot open required RTP/RTCP ports [device %d]", deviceIdM);
|
||||
|
||||
From 8f12ce6f55d0db46e516cf9f471438f8ed84c403 Mon Sep 17 00:00:00 2001
|
||||
From: Rolf Ahrenberg <Rolf.Ahrenberg@sci.fi>
|
||||
Date: Sat, 30 Jan 2016 21:41:10 +0200
|
||||
Subject: [PATCH 4/5] Add a missing device name update.
|
||||
|
||||
---
|
||||
device.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/device.c b/device.c
|
||||
index ad96434..4a59291 100644
|
||||
--- a/device.c
|
||||
+++ b/device.c
|
||||
@@ -355,6 +355,7 @@ bool cSatipDevice::SetChannelDevice(const cChannel *channelP, bool liveViewP)
|
||||
}
|
||||
else if (pTunerM) {
|
||||
pTunerM->SetSource(NULL, 0, NULL, deviceIndexM);
|
||||
+ deviceNameM = cString::sprintf("%s %d", *DeviceType(), deviceIndexM);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
From b755dbf318874e4dadc5f4e4c7405e90dc4eeb2e Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Grimm <git@e-tobi.net>
|
||||
Date: Sat, 23 Jan 2016 18:38:44 +0100
|
||||
Subject: [PATCH 5/5] C++11 requires a mandatory space when concatenating
|
||||
string literals
|
||||
|
||||
---
|
||||
common.h | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/common.h b/common.h
|
||||
index ac9ea20..c85404b 100644
|
||||
--- a/common.h
|
||||
+++ b/common.h
|
||||
@@ -48,15 +48,15 @@
|
||||
esyslog("curl_easy_perform() [%s,%d] failed: %s (%d)", __FILE__, __LINE__, curl_easy_strerror(res), res); \
|
||||
}
|
||||
|
||||
-#define ERROR_IF_FUNC(exp, errstr, func, ret) \
|
||||
- do { \
|
||||
- if (exp) { \
|
||||
- char tmp[64]; \
|
||||
- esyslog("[%s,%d]: "errstr": %s", __FILE__, __LINE__, \
|
||||
- strerror_r(errno, tmp, sizeof(tmp))); \
|
||||
- func; \
|
||||
- ret; \
|
||||
- } \
|
||||
+#define ERROR_IF_FUNC(exp, errstr, func, ret) \
|
||||
+ do { \
|
||||
+ if (exp) { \
|
||||
+ char tmp[64]; \
|
||||
+ esyslog("[%s,%d]: " errstr ": %s", __FILE__, __LINE__, \
|
||||
+ strerror_r(errno, tmp, sizeof(tmp))); \
|
||||
+ func; \
|
||||
+ ret; \
|
||||
+ } \
|
||||
} while (0)
|
@ -22,7 +22,7 @@ PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://projects.vdr-developer.org/projects/plg-streamdev"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_URL="https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git/snapshot/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr libressl"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="multimedia"
|
||||
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-plugin-vnsiserver"
|
||||
PKG_VERSION="00b5779"
|
||||
PKG_VERSION="c63d8e8"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -24,7 +24,7 @@ PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.openelec.tv"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-vnsiserver vdr-plugin-iptv vdr-plugin-wirbelscan vdr-plugin-wirbelscancontrol vdr-plugin-dvbapi vdr-plugin-streamdev vdr-plugin-live vdr-plugin-epgsearch vdr-plugin-xmltv2vdr vdr-plugin-eepg vdr-plugin-dummydevice vdr-plugin-satip vdr-plugin-epgfixer vdr-plugin-restfulapi"
|
||||
PKG_DEPENDS_TARGET="toolchain vdr vdr-plugin-dummydevice vdr-plugin-dvbapi vdr-plugin-eepg vdr-plugin-epgfixer vdr-plugin-epgsearch vdr-plugin-iptv vdr-plugin-live vdr-plugin-restfulapi vdr-plugin-satip vdr-plugin-streamdev vdr-plugin-vnsiserver vdr-plugin-wirbelscan vdr-plugin-wirbelscancontrol vdr-plugin-xmltv2vdr"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="service.multimedia"
|
||||
PKG_SHORTDESC="vdr: A powerful DVB TV application"
|
||||
|
Loading…
x
Reference in New Issue
Block a user