On 11.06.2011 12:24, Klaus Schmidinger wrote:
> On 11.06.2011 00:30, Luboš Doležel wrote:
>> On 10.6.2011 23:59, Klaus Schmidinger wrote:
>>> The defualt is "5".
>>>
>>> From MANUAL:
>>>
>>> DVB:
>>>
>>> Update channels = 5 Controls the automatic channel update
>>> function. '0' means
>>> no update, '1' will only update channel names,
>>> '2' will
>>> only update PIDs, '3' will update channel
>>> names and PIDs,
>>> '4' will perform all updates and also add
>>> newly found channels,
>>> and '5' will also add newly found transponders.
>>> Note that adding new transponders only works
>>> if the "EPG scan"
>>> is active.
>>>
>>> Klaus
>>
>> Now I know why I disabled this function. Right after enabling it, VDR
>> added CAIDs to all encrypted channels and I cannot tune them any more
>> (I use streamdev-server).
>>
>> CT HD;CS
>> Link:11973:v:S23.5E:27500:2010=27:2020=cze@4,2023=qaa@4;2021=cze@106:0:D0F,624,D70,D03,D96:14070:3:3214:0
>>
>>
>> How should I tell VDR not to care about encryption, as the decryption
>> is fully handled by the dvbloopback virtual DVB device (sasc-ng)?
>
> I guess that's something the streamdev-server should handle.
One solution is to use the patch
streamdev/patches/vdr-1.6.0-intcamdevices.patch (also attached) for VDR,
so that VDR won't try to decrypt channels received by streamdev-client.
I wrote it in 2008 to allow receiving channels in streamdev client that
are already decrypted by the CAM of the "main" VDR instance, while
allowing the use of the same channels.conf.
(it may not apply cleanly anymore)
--
Anssi Hannula
Index: vdr-1.6.0-nocamdevices/device.c
===
--- vdr-1.6.0-nocamdevices/device.c
+++ vdr-1.6.0-nocamdevices/device.c 2008-04-27 18:55:37.0 +0300
@@ -363,6 +363,7 @@
int NumCamSlots = CamSlots.Count();
int SlotPriority[NumCamSlots];
int NumUsableSlots = 0;
+ bool InternalCamNeeded = false;
if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used
@@ -376,7 +377,7 @@
}
}
if (!NumUsableSlots)
-return NULL; // no CAM is able to decrypt this channel
+InternalCamNeeded = true; // no CAM is able to decrypt this channel
}
bool NeedsDetachReceivers = false;
@@ -392,11 +393,13 @@
continue; // this device shall be temporarily avoided
if (Channel->Ca() && Channel->Ca() <= CA_DVB_MAX && Channel->Ca() != device[i]->CardIndex() + 1)
continue; // a specific card was requested, but not this one
- if (NumUsableSlots && !CamSlots.Get(j)->Assign(device[i], true))
+ if (InternalCamNeeded && !device[i]->HasInternalCam())
+ continue; // no CAM is able to decrypt this channel and the device uses vdr handled CAMs
+ if (NumUsableSlots && !device[i]->HasInternalCam() && !CamSlots.Get(j)->Assign(device[i], true))
continue; // CAM slot can't be used with this device
bool ndr;
if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job
- if (NumUsableSlots && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j))
+ if (NumUsableSlots && !device[i]->HasInternalCam() && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j))
ndr = true; // using a different CAM slot requires detaching receivers
// Put together an integer number that reflects the "impact" using
// this device would have on the overall system. Each condition is represented
@@ -410,18 +413,18 @@
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((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
+ imp <<= 8; imp |= min(max(((NumUsableSlots && !device[i]->HasInternalCam()) ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
imp <<= 1; imp |= ndr; // avoid devices if we need to detach existing receivers
imp <<= 1; imp |= device