Repository navigation
Design broadcast mode: one IVS stream of the whole wall past the direct capacity - #1384
Conversation
…direct capacity docs/fleet/ARCHITECTURE.md gains "Broadcast mode": who gets the broadcast (--direct-capacity seats, default 500 from the measured elbow; a toggle for every viewer, forced on and locked for a viewer admitted after the seats are held; no promotion mid-session), server-side enforcement with HMAC direct tokens that renderers and aggregators check, the composite (a coordinator child reading every tile, one 720p x264 encode, IVS standard channel renditions), the overlay synced to the shown frame's t carried in a per-frame SEI, the reduced controls, staging access through private-channel playback tokens, failure behavior, the coordinator's 5,000-socket limit, and the IVS against CloudFront comparison. Two invariants added. fleet/tools/ivsmeasure is the page that measured it: per presented frame, display time minus the frame's wall time from its SEI. Measured on a g4dn.2xlarge (renderer, composite and headless Chrome on one clock), five 60 s cycles: glass to glass 1.79 s median, 1.87 s p95 over 7,514 frames; the composite 84 ms of it; startup 0.21 s median; 5.18 s median without an audio track.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 5 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 779947655c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Each cycle's requestVideoFrameCallback loop stayed registered on the shared <video>, so later cycles ran every earlier cycle's callback per frame. The cycle now cancels its callback before deleting the player. test_player.mjs runs the page's loop against a mocked player and video: three frame callbacks stayed registered after three cycles before the fix, none after.
|
@codex review |
|
Codex Review: Didn't find any major issues. 🎉 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
ejc3
left a comment
There was a problem hiding this comment.
NOT-A-DEFECT: Codex's review bodies on this PR carry no finding of their own; each inline finding they announced is answered with a disposition in its thread.
Design for broadcast mode: past the direct-mode capacity, viewers get one composite of the whole wall delivered by Amazon IVS, with a toggle every viewer has, forced on and locked for a late viewer.
Contract
docs/fleet/ARCHITECTURE.mdgains "Broadcast mode", the architecture pass for the stack that follows:--direct-capacityseats (default 500, the elbow measured in fleet/renderer/README.md "Viewers per renderer"), a seat ticket kept 60 s across a reconnect, a toggle for every viewer, locked on for a viewer admitted with every seat held, no promotion mid-session (offered on reload).admit=) that renderers and aggregators check when they hold the coordinator's key; a late viewer never receives one, andclaim_gpuis refused to it.tin a per-frame SEI, matched to the presented frame by media time; the overlay draws the snapshot in effect at that frame./liveconnection behind Access), failure behavior, the coordinator's ~5,000-socket limit, cost per 1000 viewer-hours.fleet/tools/ivsmeasureis the page that took the numbers.Measurements (2026-10-27)
One g4dn.2xlarge from the tile AMI: its renderer drawing the whole image at 1280x720, the broadcast aggregator from the next PR, an IVS standard low-latency channel in us-east-1, headless Chrome 156 with IVS player 1.57.0 on the same instance (one clock). Five cycles of 60 s each.
getLiveLatency()load()to the first frameCloudFront + a self-packaged LL-HLS origin was not built: the owner approved IVS ("IVS is good") and asked for the LL-HLS arm only if IVS did not measure as expected. The cost comparison is in the doc: IVS is $72 per 1000 viewer-hours at 720p against about $126 for CloudFront at the same rendition.
Downstream impact and evidence
Documentation and a measurement page only; nothing runs differently. Evidence is the table above and the command in
fleet/tools/ivsmeasure/serve.py.Stack: this PR, then #1385 (push and coordinator broadcast), then admission, the page, enforcement, and the ejc3/aws infrastructure.