[vdr] vdr-1.7.15 problem with live TV [1.7.11 or older OK] [PROGRESS :) ]

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Sun Sep 5 15:23:02 CEST 2010


On 09/03/10 22:12, Simon Baxter wrote:
> ...
> So I've managed to get vdr-1.7.15 working just fine now, by disabling
> this scramble check in device.c.  Bit of a dirty hack!!!
> 
> 
> 
>> Here's what I changed in device.c
>>
>> void cDevice::Action(void)
>> {
>>  if (Running() && OpenDvr()) {
>>     while (Running()) {
>>           // Read data from the DVR device:
>>           uchar *b = NULL;
>>           if (GetTSPacket(b)) {
>>              if (b) {
>>                 int Pid = TsPid(b);
>>                 // Check whether the TS packets are scrambled:
>>                 bool DetachReceivers = false;
>>                 bool DescramblingOk = false;
>>                 int CamSlotNumber = 0;
>>                 if (startScrambleDetection) {
>>                   cCamSlot *cs = CamSlot();
>>                    CamSlotNumber = cs ? cs->SlotNumber() : 0;
>> //                    if (CamSlotNumber) {
>> //                       bool Scrambled = b[3] & TS_SCRAMBLING_CONTROL;
>> //                       int t = time(NULL) - startScrambleDetection;
>> //                       if (Scrambled) {
>> //                          if (t > TS_SCRAMBLING_TIMEOUT)
>> //                             DetachReceivers = true;
>> //                          }
>> //                       else if (t > TS_SCRAMBLING_TIME_OK) {
>> //                          DescramblingOk = true;
>> //                          startScrambleDetection = 0;
>> //                          }
>> //                       }
>>                 }
>>                 // Distribute the packet to all attached receivers:
>>                 Lock();

Looks like there are TS packets in your stream that are marked as
"scrambled", but not unscrambled by the CAM.

Do you have any CAM in your system at all?

Are the channels where this happens scrambled?

Do these channels have separate VPID and PPID?

Does the problem go away if, instead of the above change, you
comment out the line

   (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) &&

in cReceiver::AddPids()?

Klaus



More information about the vdr mailing list