Skip to content

Add opt-in native GameStream microphone forwarding to desktop clients - #2095

Open
Bargs wants to merge 2 commits into
moonlight-stream:masterfrom
Bargs:native-microphone-forwarding
Open

Bargs wants to merge 2 commits into
moonlight-stream:masterfrom
Bargs:native-microphone-forwarding

Conversation

@Bargs

@Bargs Bargs commented Nov 6, 2026 •

Copy link
Copy Markdown

Add microphone forwarding to a paired NVIDIA GameStream host for desktop Windows, macOS and Linux. The setting starts off, applies for the current app run and leaves ordinary streaming available if microphone negotiation or capture fails.

  • macOS uses the existing AudioQueue capture and OS microphone consent. Windows and Linux use SDL capture of the default input and the shared Opus-frame sender in common-c PR173. Steam Link remains gated off.
  • The stream shows a capture indicator. Ctrl+Alt+Shift+N stops capture immediately. Teardown closes capture before the stream UI and connection are released.
  • The Windows host companion provides the version-pinned host setup, source build, optional unsigned launcher and complete manual recovery. It uses NVIDIA's existing receiver, with a local four-byte patch, two registry flags and a SYSTEM helper.

The native path uses legacy AES-CBC without packet authentication. IVs repeat and overlap the playback domain. This client requires encrypted mode and a private IPv4 endpoint for use on a trusted network or a secured tunnel. Sunshine microphone protocols are separate.

The macOS release build passed. The SDL adapter and shared sender passed strict compilation and an SDL dummy capture fixture on macOS. The fixture independently decrypted and decoded 300 Opus frames and checked PINGs, negotiation gates, occupied source port and ten start/stop cycles. Earlier macOS tone and overlay tests cover the original macOS capture path. Windows and Linux builds and device-level acceptance remain pending.

Historical live speech used the original Mac-to-Windows prototype on GameStream 7.1.437.0, GeForce Experience 3.25.1.27 and native audio 4.37.0.0. The distributed Windows build passed public source builds and 93 isolated checks per PowerShell runtime. Live install/audio, reconnect stress, reboot and uninstall acceptance remain open. Runtime instruction replacement is non-atomic, and refresh handle lifetime needs review.

Would maintainers prefer the optional source-built launcher with full manual instructions, the manual/source-build path, or another integration and distribution approach?

Add per-run consent, native encrypted capture, a visible status and immediate stop shortcut, synchronous teardown, source-linked tests and explicit host/security boundaries.
Use SDL capture with the shared common-c sender, the existing per-run consent and stop lifecycle, and leave the Steam Link build gated off. Add a dummy-device wire and teardown fixture.
@Bargs Bargs changed the title macOS: add opt-in native GameStream microphone forwarding Add opt-in native GameStream microphone forwarding to desktop clients Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant