Fox 2026-06-04 — definitive observation: "the phone as a listener doesn't seem to be 4 secs behind ever." playoutDelayHint is a HINT the browser is free to ignore; Firefox Android apparently does. The phone's actual buffer was near-zero — so every host-side encoder stall propagated audibly to listeners with no cushion. Three changes: 1. Set RTCRtpReceiver.jitterBufferTarget = 4000 (ms) alongside playoutDelayHint. jitterBufferTarget is NOT a hint — it's a target the receiver must aim for. Chromium 113+ (May 2023), Firefox 124+ (2024). Older browsers silently ignore the assignment (try/catch). 2. Applied at all THREE attach sites: - SFU video receiver (screen/camera/game) - SFU mic receiver - mesh peer mic receiver 3. Add `jbuf=Xs` to telemetry, computed from inbound-rtp jitterBufferDelay / jitterBufferEmittedCount. This is the ACTUAL average buffer depth — we can now see whether the receiver is holding ~4s or 0.05s. If jbuf stays small after this deploy, the browser is ignoring the target too and we need a different approach (AudioWorklet manual buffering, or move to HTTP-pull DJ path for listeners). Existing playoutDelayHint setting kept for older browsers that honor it but don't yet support jitterBufferTarget. |
||
|---|---|---|
| .. | ||
| blog | ||
| fonts | ||
| chat.html | ||
| host-your-own.html | ||
| how-it-works.html | ||
| index.html | ||
| kernel.html | ||
| stamp.js | ||
| zebra-audio.html | ||
| zebra-spaces.html | ||