mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Changed the way a device is selected for receiving in order to keep devices with CAMs better available
This commit is contained in:
parent
7390eaf765
commit
713093670f
@ -1955,6 +1955,7 @@ Anssi Hannula <anssi.hannula@gmail.com>
|
||||
for a patch that was used to implement processing the "frequency list descriptor"
|
||||
for suggesting that cDevice::GetDevice() should prefer any device that's already
|
||||
receiving and doesn't require detatching receivers
|
||||
for improving handling Transfer Mode devices when selecting a device to receive
|
||||
|
||||
Antti Hartikainen <ami+vdr@ah.fi>
|
||||
for updating 'S13E' in 'sources.conf'
|
||||
@ -1972,3 +1973,7 @@ Norbert Wentz <norbert.wentz@online.de>
|
||||
Frank Schmirler <vdr@schmirler.de>
|
||||
for fixing handling client side termination of SVDRP connections
|
||||
for fixing assigning schedules to channels in case there is no initial EPG information
|
||||
|
||||
Jörn Reder <joern@zyn.de>
|
||||
for reporting that a recording may unnecessarily block a device with a CAM, while
|
||||
it could record on the primary device as well
|
||||
|
4
HISTORY
4
HISTORY
@ -4866,3 +4866,7 @@ Video Disk Recorder Revision History
|
||||
- Made the cCiSession members sessionId and resourceId uint16_t and uint32_t,
|
||||
respectively, to match their types in the CI session data (thanks to Ville Skyttä
|
||||
for reporting that there are places where ntohs() is assigned to different types).
|
||||
- Changed the way a device is selected for receiving in order to keep devices with
|
||||
CAMs better available, even if this means recording on the primary device (reported
|
||||
by Jörn Reder; thanks to Anssi Hannula for improving handling Transfer Mode devices
|
||||
in this).
|
||||
|
8
device.c
8
device.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: device.c 1.134 2006/07/29 10:03:56 kls Exp $
|
||||
* $Id: device.c 1.135 2006/08/12 11:33:34 kls Exp $
|
||||
*/
|
||||
|
||||
#include "device.h"
|
||||
@ -294,11 +294,11 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDe
|
||||
uint imp = 0;
|
||||
imp <<= 1; imp |= !device[i]->Receiving(true) || ndr; // use receiving devices if we don't need to detach existing receivers
|
||||
imp <<= 1; imp |= device[i]->Receiving(); // avoid devices that are receiving
|
||||
imp <<= 1; imp |= device[i] == ActualDevice(); // avoid the actual device (in case of Transfer Mode)
|
||||
imp <<= 1; imp |= device[i]->IsPrimaryDevice(); // avoid the primary device
|
||||
imp <<= 1; imp |= device[i]->HasDecoder(); // avoid full featured cards
|
||||
imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
|
||||
imp <<= 8; imp |= min(max(device[i]->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[i]->ProvidesCa(Channel), 0), 0xFF); // use the device that provides the lowest number of conditional access methods
|
||||
imp <<= 1; imp |= device[i]->IsPrimaryDevice(); // avoid the primary device
|
||||
imp <<= 1; imp |= device[i]->HasDecoder(); // avoid full featured cards
|
||||
if (imp < Impact) {
|
||||
// This device has less impact than any previous one, so we take it.
|
||||
Impact = imp;
|
||||
|
Loading…
Reference in New Issue
Block a user