summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Schmirler <vdr@schmirler.de>2011-02-01 14:24:47 +0100
committerFrank Schmirler <vdr@schmirler.de>2011-02-01 14:24:47 +0100
commit7dfbd50573bfc07ecb51880544ebb1d262c8955d (patch)
treed3ba937266436f4c325629ac07786e114e954fd4
parent1b5285b26db690659e6adc5fd72477ccffa9549e (diff)
downloadvdr-plugin-streamdev-7dfbd50573bfc07ecb51880544ebb1d262c8955d.tar.gz
vdr-plugin-streamdev-7dfbd50573bfc07ecb51880544ebb1d262c8955d.tar.bz2
updated copy of GetClippedNumProvidedSystems to the version used since VDR 1.7.15
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY6
-rw-r--r--server/connection.c4
3 files changed, 7 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index a44d75c..5ff638f 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -152,6 +152,7 @@ Eric Valette
carel
for reporting "plugin doesn't honor APIVERSION" error in new Makefile
for helping to find a way to cleanly shutdown externremux with mencoder
+ for reporting that GetClippedNumProvidedSystems is no longer up-to-date
wolfi.m
for reporting a typo in externremux quality parameter value
diff --git a/HISTORY b/HISTORY
index c3c0a84..81a2d6e 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,13 +1,15 @@
VDR Plugin 'streamdev' Revision History
---------------------------------------
+- updated copy of GetClippedNumProvidedSystems to the version used since
+ VDR 1.7.15 (reported by carel@vdrportal)
- fixed the code deciding if a device is in use for live TV or not. It did
- not work as expected for FF cards (reported by wtor)
+ not work as expected for FF cards (reported by wtor@vdrportal)
- increased client side timeout for TUNE command
- more dsyslog messages to help troubleshouting channel switch issues
- improved the channel switch code trying to move live TV to different card
- make sure that a client doesn't interrupt replaying on server's FF card
- (reported by wtor)
+ (reported by wtor@vdrportal)
- switching away live TV failed even when "always suspended" (reported by
Michal Novotny)
- fixed regression: no receiver created for ES/PS/PES (reported by Gavin
diff --git a/server/connection.c b/server/connection.c
index 824ba97..78a023a 100644
--- a/server/connection.c
+++ b/server/connection.c
@@ -189,7 +189,7 @@ bool cServerConnection::Respond(const char *Message, bool Last, ...)
#if APIVERSNUM >= 10700
static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
{
- int MaxNumProvidedSystems = 1 << AvailableBits;
+ int MaxNumProvidedSystems = (1 << AvailableBits) - 1;
int NumProvidedSystems = Device->NumProvidedSystems();
if (NumProvidedSystems > MaxNumProvidedSystems) {
esyslog("ERROR: device %d supports %d modulation systems but cDevice::GetDevice() currently only supports %d delivery systems which should be fixed", Device->CardIndex() + 1, NumProvidedSystems, MaxNumProvidedSystems);
@@ -261,7 +261,7 @@ cDevice* cServerConnection::CheckDevice(const cChannel *Channel, int Priority, b
imp <<= 1; imp |= !device->Receiving() && (device != cTransferControl::ReceiverDevice() || device->IsPrimaryDevice()) || ndr; // use receiving devices if we don't need to detach existing receivers, but avoid primary device in local transfer mode
imp <<= 1; imp |= device->Receiving(); // avoid devices that are receiving
#if APIVERSNUM >= 10700
- imp <<= 2; imp |= GetClippedNumProvidedSystems(2, device) - 1; // avoid cards which support multiple delivery systems
+ imp <<= 4; imp |= GetClippedNumProvidedSystems(4, device) - 1; // avoid cards which support multiple delivery systems
#endif
imp <<= 1; imp |= device == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
imp <<= 8; imp |= min(max(device->Priority() + MAXPRIORITY, 0), 0xFF); // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)