Klaus Schmidinger wrote: > J?rn Reder wrote: > >> ... >> I'm having problems with VDR's decision of recording devices. The 1.4 >> change log states that budget cards are preferred, unfortunately my >> budget card has the CI. So when a recording starts and no pay TV channel >> is actually tuned, the CI device is blocked and I can't switch to a pay >> TV channel anymore (whithout stopping the recording). >> >> Is it possible to tell VDR to prefer my FF card for recordings instead >> of my CI budget device? > > > Please try the attached patch. > With this change "avoiding full featured or primary cards" gets > less priority than "using the device with the lowest priority > or the lowest number of CA methods". > > Klaus > > > ------------------------------------------------------------------------ > > --- device.c 2006/07/29 10:03:56 1.134 > +++ device.c 2006/08/06 09:37:21 > @@ -295,10 +295,10 @@ > 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) Note that the above ActualDevice() returns primary device when transfer mode is not active, so I guess if the user is for example watching a recording, this will cause VDR to prefer budget card anyway. Maybe replace it with cTransferControl::ReceiverDevice(), which returns NULL when transfer mode is not active? > - 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]->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; > -- Anssi Hannula