Repository navigation
Conversation
9f8c168 to
4f655e5
Compare
|
The new clock-continuity tests exposed a problem in recovery from long signalling or scheduler stalls. The mixer’s existing catch-up mechanism can generate enough packets to exceed the encoder’s one-second send-timer window. Scheduling then resets while older packets remain queued, causing sequence numbers and timestamps to interleave within the same SSRC. This change prevents that catch-up burst by skipping overdue timer ticks. It fixes the reproduced failure—96 continuity failures before, zero afterward—but changes stall-recovery behaviour, so it needs review for buffered-audio latency and media-clock alignment during continuous speech and playback. The test also now drains idle media from both endpoints to avoid artificial backpressure in the harness. |
Permanent audio players already generate continuous mixed output and fill silent intervals. When
--dtx-delayisenabled, their input decoders also queue RTP behind an independent DTX timer. In a conference with AMR-WB phones, this can accumulate different speech delays for each source despite continuous outgoing RTP timestamps. A captured call showed approximately 0.68 seconds of engine-local delay for one phone and 2.58 seconds for the other.
Skip input DTX buffering when the decoder feeds a permanent audio player. Record clock ownership in the codec handler and recreate the decoder and its DTX queue when ownership changes. Explicit permanent selection must also override an earlier implicit player and implicit daemon defaults. Keep existing DTX handling for ordinary transcoding and implicitly enabled audio players; disabling DTX globally would affect unrelated media paths.
Add a real-RTP regression with PCMU input, a mono L16/16000 listener, and an observable 200 ms DTX delay. Reconfigure one call and SSRC between permanent, implicit, and ordinary transcoding, checking prompt speech in permanent mode, retained DTX delay in the other modes, and continuous mixer timestamps. Run it under default, transcoding, and play-media daemon settings.