Repository navigation
A sender pair per shared window (GRYT-1905) - #134
Merged
Merged
Conversation
addScreen*/removeScreen* take a window index; 0 is today's path. A later window publishes on a screen slot of its own, asking the SFU for screens: n first, and the send budget treats every window as a share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second piece of sharing several windows at once (GRYT-1905), after Gryt-chat/sfu#67.
API.
addScreenVideoTrack,removeScreenVideoTrack,addScreenAudioTrackandremoveScreenAudioTracktake an optional windowindex. Index 0, the default, is exactly today's path, so the client keeps working unchanged until it passes an index.Later windows
extraScreensRef.publishOnSfuSlot, and never on the camera's m-line. The SFU gates that slot onshare_video, so a window there would need the wrong permission.screenSlotsRefgoes up toindex + 1, andrenegotiatenow carries{"screens": n}once n > 1. A 250 ms timer retries the waiting windows once signalling is stable again, which is after the SFU's new offer has been answered.Send budget.
VideoRoleis"camera" | "screen" |screen:${n}``, and the controller keeps its roles in a map, sosetVideoSendSettings("screen:1", …)gives a window its own quality. The budget treats every non-camera role as a share. `check-video-budget` asserts that a second window gets a share's cap.What to look at
addExtraScreenTrack: it takes the first video m-line in the SFU's offer as the camera's.removeScreen*or a disconnect clears it.Not tested end to end. That needs sfu#67 running and a client that shares two windows, which comes next.
typecheck,lint(0 errors) and every JS check pass after a build.🤖 Generated with Claude Code