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 a patch that was used to implement processing the "frequency list descriptor"
|
||||||
for suggesting that cDevice::GetDevice() should prefer any device that's already
|
for suggesting that cDevice::GetDevice() should prefer any device that's already
|
||||||
receiving and doesn't require detatching receivers
|
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>
|
Antti Hartikainen <ami+vdr@ah.fi>
|
||||||
for updating 'S13E' in 'sources.conf'
|
for updating 'S13E' in 'sources.conf'
|
||||||
@ -1972,3 +1973,7 @@ Norbert Wentz <norbert.wentz@online.de>
|
|||||||
Frank Schmirler <vdr@schmirler.de>
|
Frank Schmirler <vdr@schmirler.de>
|
||||||
for fixing handling client side termination of SVDRP connections
|
for fixing handling client side termination of SVDRP connections
|
||||||
for fixing assigning schedules to channels in case there is no initial EPG information
|
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,
|
- 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ä
|
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).
|
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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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"
|
#include "device.h"
|
||||||
@ -294,11 +294,11 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDe
|
|||||||
uint imp = 0;
|
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(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]->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] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
|
||||||
imp <<= 1; imp |= device[i]->IsPrimaryDevice(); // avoid the primary device
|
|
||||||
imp <<= 1; imp |= device[i]->HasDecoder(); // avoid full featured cards
|
|
||||||
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]->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 <<= 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) {
|
if (imp < Impact) {
|
||||||
// This device has less impact than any previous one, so we take it.
|
// This device has less impact than any previous one, so we take it.
|
||||||
Impact = imp;
|
Impact = imp;
|
||||||
|
Loading…
Reference in New Issue
Block a user