Petri Helin wrote: > Klaus Schmidinger wrote: >> Petri Helin wrote: >>> ... >>> BTW: I have been patching the device.c in 1.4.* series so that my other >>> card, TT budget DVB-C v1.0, is always preferred for FTA channel >>> recordings. Otherwise the precious CAM could be wasted in an FTA >>> recording. I understood that you are planning on restructuring the >>> priority model in 1.5.*. Have you taken in consideration the situation >>> with budget-only environment with one or more CIs? >> >> Please try the attached patch and let me know if it works >> as expected. >> >> Klaus >> > > Unfortunately it didn't work as (at least I) expected. What I am looking > for is as follows > > - card 1 (with CI) is tuned to channel A Does this mean that there are receivers attached to card 1? If so, VDR of course starts the new recording on card 1 in order to keep card 2 available for other recordings. > - card 2 (without CI) is tuned to channel B > - channels A and B are on on different transponders > - a recording is about to start on channel A > - VDR chooses card 2 and tunes it to channel A in order to actuate the > recording > > Currently I have achieved this with the attached patch. > > -Petri > > > ------------------------------------------------------------------------ > > --- vdr-1.4.4/device.c.orig 2006-09-03 13:13:25.000000000 +0300 > +++ vdr-1.4.4/device.c 2006-12-11 20:46:13.000000000 +0200 > @@ -292,11 +292,11 @@ > // to their individual severity, where the one listed first will make the most > // difference, because it results in the most significant bit of the result. > uint imp = 0; > + 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]->Receiving() || 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] == 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 would mean that if a recording is currently running on card 1 (with CI), and another recording on the same transponder shall be started, that new recording would use card 2, thus blocking the possibility of a third recording on a different transponder. Klaus