1.9 KiB
1.9 KiB
ECP-0086: Web Watcher Jitter Budget Override
Status: Implemented
Problem
Browser live playback on every.channel stays connected but still cuts in and out. A Chrome browser repro against https://every.channel/watch?url=https%3A%2F%2Fcdn.moq.dev%2Fanon&name=la-nbc showed no remounts or request failures, but the @moq/watch@0.2.0 player emitted continuous skipping slow group warnings plus frequent small seek corrections.
Constraints
- Keep the existing
@moq/watchintegration and WebTransport-only path. - Avoid forking upstream player code for a site-level playback tuning change.
- Keep the fix reversible and local to the web app wiring.
Decision
Set the web watcher's jitter attribute to 750 milliseconds in apps/web/app.js before connect.
Browser evidence for the same live stream showed:
- default
jitter=100:2762warnings over the sample, including324seek corrections, finalreadyState=1 - forced
jitter=750:2482warnings over the sample, including75seek corrections, finalreadyState=4
This does not eliminate upstream skipping slow group churn entirely, but it substantially reduces the seek-thrash that most directly surfaces as visible cut-in/cut-out playback.
Alternatives Considered
- Leave the default
100msjitter budget. Rejected because the browser repro showed sustained seek churn under live playback. - Raise jitter further (for example
1500ms). Rejected for now because it reduced some warnings but regressed playback advancement more than750msin the same sample. - Fork
@moq/watch. Rejected because the exposedjittercontrol was sufficient for a first mitigation.
Rollout / Teardown
- Deploy the
jitter=750override and validate live watch continuity in Chrome against public relay streams. - If the extra latency is unacceptable or upstream player behavior changes, remove the override and fall back to the library default.