updated copy of GetClippedNumProvidedSystems to the version used since VDR 1.7.15

This commit is contained in:
Frank Schmirler 2011-02-01 14:24:47 +01:00
parent 06d5418e42
commit 3a2936a140
3 changed files with 7 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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)