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