zebra-report/web
Russell Ballestrini 1e4f0fa23d
zebra-spaces: jitterBufferTarget enforces 4s buffer (hint isn't honored on FF Android)
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.
2026-06-04 15:10:38 -04:00
..
blog phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
fonts phase 2: gap analysis — cat>> append + binary asset recovery 2026-05-27 13:54:19 -04:00
chat.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
host-your-own.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
how-it-works.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
index.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
kernel.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
stamp.js web: stamp each zebra-report page with build date + md5/sha256 2026-05-28 17:50:12 -04:00
zebra-audio.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
zebra-spaces.html zebra-spaces: jitterBufferTarget enforces 4s buffer (hint isn't honored on FF Android) 2026-06-04 15:10:38 -04:00