fix: raise drift cap to 1s — stops constant resetting on jittery links
150ms cap was too tight for Iran relay (high jitter), causing constant audio drops. Raised to 1s — packet bursts are absorbed smoothly, drift reset only fires on real accumulation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -193,9 +193,14 @@ function playAudio(pcmInt16) {
|
|||||||
|
|
||||||
const now = audioCtx.currentTime;
|
const now = audioCtx.currentTime;
|
||||||
|
|
||||||
if (nextPlayTime < now || nextPlayTime > now + 0.2) {
|
const drift = nextPlayTime - now;
|
||||||
// Behind or drifted too far ahead — snap to now + 40ms
|
if (drift < 0) {
|
||||||
nextPlayTime = now + 0.04;
|
// Fell behind — catch up
|
||||||
|
nextPlayTime = now + 0.02;
|
||||||
|
} else if (drift > 1.0) {
|
||||||
|
// More than 1 second ahead — hard reset (real drift)
|
||||||
|
console.log('drift reset:', drift.toFixed(3) + 's');
|
||||||
|
nextPlayTime = now + 0.02;
|
||||||
}
|
}
|
||||||
source.start(nextPlayTime);
|
source.start(nextPlayTime);
|
||||||
nextPlayTime += buffer.duration;
|
nextPlayTime += buffer.duration;
|
||||||
|
|||||||
Reference in New Issue
Block a user