Skip to content

Forward native GameStream microphone input on SDL-capable builds - #941

Open
Bargs wants to merge 1 commit into
moonlight-stream:masterfrom
Bargs:native-microphone-forwarding
Open

Bargs wants to merge 1 commit into
moonlight-stream:masterfrom
Bargs:native-microphone-forwarding

Conversation

@Bargs

@Bargs Bargs commented Nov 7, 2026

Copy link
Copy Markdown

Add command-line microphone forwarding for SDL-capable Moonlight Embedded builds. Run moonlight stream -microphone HOST to opt in for that invocation. Configuration files cannot enable capture, and view-only mode keeps it disabled.

The client opens the default SDL recording device after connection and native negotiation succeed. It encodes mono Opus and sends through the shared common-c transport PR. It reports capture state in the terminal and stops before SDL and connection teardown. The build requires SDL 2.0.5 or later for queued capture. Non-SDL builds retain their existing input paths. The common-c pin includes the upstream nanors transition, reflected in the Embedded library build list.

Validation covered strict compilation of the capture adapter and syntax checks of the CLI and session integration. SDL dummy capture on macOS produced 300 independently decrypted and decoded encrypted loopback frames, four PINGs and ten clean start/stop cycles. Full Linux package builds, physical input and live delivery with this adapter await verification.

This pairs with the Windows NVIDIA GameStream host companion and the desktop client PR. The native path uses legacy AES-CBC without authentication, with repeated IVs and overlapping playback and microphone domains. Use a trusted private IPv4 network or secured tunnel. The host source and manual disclose its privileged version-pinned changes and the distributed build's live acceptance work.

Add a command-line-only opt-in and keep view-only sessions silent. Capture the default SDL input and reuse the common-c sender. Stop capture before SDL and connection teardown, and preserve normal streaming when capture fails.
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