My guess would be that the "DiscontinuityDetected: triggering soft
is generated by the output device, and that causes the transfer mode
to be stoped and restarted. Maybe the output device chokes on something
in the TS stream?

The only place where a 3 second timeout plays a role that also
might cause a channel to become unavailable is in cDevice::Action(),

 // Check whether the TS packets are scrambled:

Maybe some packets have the TS_SCRAMBLING_CONTROL bits set here.
This could be caused by recording the PCR packets since version 1.7.12.
To debug this, just disable this check, and/or put in some debug printouts.

I've added some markers in device.c as per:
                // 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) {
                       printf("scramble detect ONE");
                         if (t > TS_SCRAMBLING_TIMEOUT)
                            DetachReceivers = true;
                      else if (t > TS_SCRAMBLING_TIME_OK) {
                       printf("scramble detect TWO");
                         DescramblingOk = true;
                         startScrambleDetection = 0;

Am getting lots of "scramble detect ONE" messages as per above.......

Now what?

vdr mailing list

Reply via email to