Fox 2026-06-05: "we should switch feeds immediately I don't want any algo slowing that down." The previous lip-sync algorithm set video receiver playoutDelayHint to match audio's worklet delay (up to 4s on listeners). That made spotlight-switching take up to 4s — the new tile's <video> element had to wait for a keyframe to appear inside the 4s-deep receiver buffer before showing the first frame. Changes (listener role only): - handleRemoteSfuTrack screen/camera/game branch: vDelay = 0 for listener (browser-lowest). Speaker/cohost/host unchanged. - refreshLipSyncForUuid: early-return for myRole === 'listener'. No more retargeting video to match audio for listeners. - retargetAllReceivers (called on role change): audio retargets per role; VIDEO retargets to 0 for listener, role-aware for others. Listener video now plays at browser-default minimum delay. Tile switches are instant — keyframe wait + native buffer pre-roll only, typically <300ms. Tradeoff accepted: listener mouth-leads-voice by approximately the audio worklet's current cushion (1.3–4s adaptive). For consume- content mode (lean-back listener) this is correct; switching shares is far more important than per-syllable lip-sync. Speakers/cohosts/hosts unaffected — their audio cushion is ~0.5s, video matches it via lip-sync, mouths and voice align naturally. |
||
|---|---|---|
| .. | ||
| blog | ||
| fonts | ||
| chat.html | ||
| host-your-own.html | ||
| how-it-works.html | ||
| index.html | ||
| kernel.html | ||
| stamp.js | ||
| zebra-audio.html | ||
| zebra-spaces.html | ||