[ANNOUNCE] VDR developer version 1.5.0
Commit Message
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
- 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
Comments
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
@@ -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) {