[ANNOUNCE] VDR developer version 1.5.0

Message ID 45A95FDC.4080304@googlemail.com
State New
Headers

Commit Message

Petri Helin Jan. 13, 2007, 10:40 p.m. UTC
  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

Klaus Schmidinger Jan. 14, 2007, 10:23 a.m. UTC | #1
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
  

Patch

--- 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) {