Skip to content

Add per-stream native microphone capture on iOS and tvOS - #736

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 per-stream native GameStream microphone forwarding for iOS/iPadOS 17+ and tvOS 17+. Apple TV requires an available compatible Bluetooth or Continuity input.

The app tile menu offers an explicit launch or resume action naming the actual app. It asks for recording permission and scopes the response to the current host and launch. The stream shows a separate microphone status alongside existing overlays. Inactivity, interruption, input loss and teardown revoke capture. Leaving the stream stops forwarding, and resuming requires a new explicit choice.

AudioQueue captures mono PCM. The bundled Opus encoder produces 5 ms frames for the shared sender in common-c PR173. The Windows host companion documents the required NVIDIA version/hash pins, host changes, source build and rollback.

Both unsigned arm64 device targets passed source and link checks with the resource phases omitted in temporary verification projects. The Mach-O outputs include the capture adapter, encoder, status callback and shared sender. Standard app packaging is pending because Xcode's asset tools require simulator runtimes that were absent on the verification Mac. Physical permission, duplex audio routing, status display, pause/stop and live host delivery need a device pass.

Native GameStream uses legacy AES-CBC without packet authentication, with repeated IVs and overlapping playback/microphone domains. Use the compatible host on a trusted private IPv4 network or secured tunnel. Sunshine microphone protocols are separate.

Add explicit launch or resume with microphone, permission and route gates, capture status and teardown on inactivity, interruption or disconnect. Encode through bundled Opus and send using common-c native transport.
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