Repository navigation
feat(windows): RemoteIdd mosaic capture - #7
Open
mlopezsegura wants to merge 3 commits into
Open
mlopezsegura wants to merge 3 commits into
mlopezsegura wants to merge 3 commits into
Conversation
When OpenStreamMS writes osms-mosaic.txt next to sunshine.conf listing this session and others, the RemoteIdd backend streams a canvas of the client's size split like a 2x2 grid, with every listed session copied into its part. - One FrameConsumer per session; waits on any FrameReady, copies only the tiles that changed (CopySubresourceRegion, no shaders), keeps the rest. - Layout changes are picked up every 250 ms and reinitialize the capture. - Absolute mouse is offset to this session's part. - FrameConsumer (copied from OpenStreamMS): ReadyEvent() and LatestFrameId(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- osms-mosaic.txt may set "canvas W H" (OpenStreamMS uses the host session's own resolution); the encoder scales it to the client like any display. - parse_mosaic_layout(), mosaic_area_cells() and mosaic_rect() are public so they can be unit tested; canvas_texture() exposes the canvas to tests. - Tests: part names, parsing (comments, CRLF, overlaps, bad lines, canvas), odd-size split, composition of two published sessions with a static one keeping its frame, mouse offset, and reinit on layout changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
3 tasks done
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.
Adds a mosaic mode to the RemoteIdd capture backend: one stream shows up to four OpenStreamMS sessions in a 2×2 grid. OpenStreamMS drives it (OpenstreamCo/OpenStreamMultiSeat,
feature/stream-mosaic).How it works
osms-mosaic.txtnext to the host session'ssunshine.conf:<Terminal Services session id> <part>line per session; parts are the 2×2 grid names used for split seats (Full,Left,Right,Top,Bottom,TopLeft…).display_ridd_vram_topens oneFrameConsumerper session, waits on any of theirFrameReadyevents and copies only the tiles that changed onto a canvas (CopySubresourceRegion, no shaders). A session that does not present keeps its last frame. The canvas is then copied into the capture image; the encoder scales it to the client like any display.capture_e::reinit, so sessions join and leave without dropping the stream.offset_x/offset_y); outside it, the cursor stays on the edge.FrameConsumer(copied from OpenStreamMS):ReadyEvent()andLatestFrameId().Testing
test_sunshine --gtest_filter=RemoteIdd*: 10/10 on a real GPU, none skipped. New tests: part names, layout parsing (comments, CRLF, overlaps, bad lines, canvas), odd-size split, composition of two published sessions checked per pixel (a static session keeps its frame), mouse offset, and reinit when the layout changes.🤖 Generated with Claude Code