feat(streaming): add native WebRTC compatibility mode - #1089
Merged
Merged
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
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.
Native WebRTC compatibility
Add a default-off WebRTC compatibility mode option under Settings → Network → Advanced. NVIDIA and alliance accounts can opt into WebRTC before launch. NVST remains the default; the setting warns that WebRTC is for compatibility and users should expect lower performance. The initial profile is capped at 1080p60 with H.264, 8-bit 4:2:0 SDR and stereo. Saved quality preferences are not overwritten.
The Rust streamer owns NVIDIA WebSocket signaling, SDP/ICE, and str0m media/input transport. Offers may contain microphone and inactive sections: their MIDs and order are retained, upload is disabled, and the selected incoming video MID is carried directly to feedback. Rejected microphone codecs retain valid SDP format identifiers. Compressed frames feed the existing native decoder and Qt GPU presenter; this does not restore Electron or add another renderer. Queues, startup/stall recovery, cancellation, and neutral input teardown are bounded. WebSocket signaling reads are nonblocking, with bounded buffered writes, so idle or partial signaling cannot hold up input and media feedback. GPU publication progress works across embedded platforms without treating compressed submissions or Windows initialization placeholders as decoded output.
Core-owned transport/profile provenance survives sparse polls, restart, and toggle-off resume. Explicit WSS descriptors are preferred; legacy RTSP-shaped descriptors for an owned WebRTC allocation resolve to the documented WSS service on port 443, matching Android. Redacted endpoint-shape diagnostics expose protocol/port selection without credentials or URLs. Foreign WebRTC seats require explicit opt-in. Contradictory native allocations are refused without converting, deleting, or replacing the cloud game. Legacy transport settings cannot bypass owned preparation.
Verification and limits
OpenNOW-WebRTC-offer-fix-a788825c-Windows-x64.zip, built locally froma788825cand attached in the implementation thread. SHA-256:04c0ce183a5319fa28f4ae288dc14fb8fa272f88df1e4d737743b6a12c4144d0. This supersedes previous test artifacts.This is an opt-in compatibility alternative, not automatic mid-seat NVST conversion. Direct UDP connectivity is required; TURN gathering, microphone upload, clipboard text, and native HID passthrough are not implemented. No live alliance account was exercised, so provider interoperability, congestion behavior, and real Windows gameplay remain acceptance gates. The runbook documents those checks.