My guess would be that the "DiscontinuityDetected: triggering soft start" 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(), under
// 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?