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 carel
for reporting "plugin doesn't honor APIVERSION" error in new Makefile for reporting "plugin doesn't honor APIVERSION" error in new Makefile
for helping to find a way to cleanly shutdown externremux with mencoder for helping to find a way to cleanly shutdown externremux with mencoder
for reporting that GetClippedNumProvidedSystems is no longer up-to-date
wolfi.m wolfi.m
for reporting a typo in externremux quality parameter value for reporting a typo in externremux quality parameter value

View File

@ -1,13 +1,15 @@
VDR Plugin 'streamdev' Revision History 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 - 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 - increased client side timeout for TUNE command
- more dsyslog messages to help troubleshouting channel switch issues - more dsyslog messages to help troubleshouting channel switch issues
- improved the channel switch code trying to move live TV to different card - 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 - 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 - switching away live TV failed even when "always suspended" (reported by
Michal Novotny) Michal Novotny)
- fixed regression: no receiver created for ES/PS/PES (reported by Gavin - 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 #if APIVERSNUM >= 10700
static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device) static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
{ {
int MaxNumProvidedSystems = 1 << AvailableBits; int MaxNumProvidedSystems = (1 << AvailableBits) - 1;
int NumProvidedSystems = Device->NumProvidedSystems(); int NumProvidedSystems = Device->NumProvidedSystems();
if (NumProvidedSystems > MaxNumProvidedSystems) { 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); 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() && (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 imp <<= 1; imp |= device->Receiving(); // avoid devices that are receiving
#if APIVERSNUM >= 10700 #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 #endif
imp <<= 1; imp |= device == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device 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) 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)