FCE-3503: Local audio extraction#60
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds “local microphone” audio extraction to the existing audio-sink pipeline so JS can receive raw audio from local tracks, and updates iOS CI to work around an Xcode toolchain regression affecting RN 0.71.4.
Changes:
- iOS: extend
WebRTCModule+AudioSinkto support local extraction via a sharedAVAudioEngineinput tap, alongside existing remote track extraction. - Android: introduce
AudioExtractionControllerto centralize remote + local extraction logic;WebRTCModuledelegates to it and wires the local mic path viaJavaAudioDeviceModule’s samples-ready callback. - CI: attempt to pin the iOS workflow to Xcode 26.3 to restore buildability on updated GitHub macOS runners.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| ios/RCTWebRTC/WebRTCModule+AudioSink.mm | Adds local mic audio extraction path (AVAudioEngine tap) and refactors extraction entrypoints to route local vs remote. |
| android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java | Delegates audio extraction to a new controller and wires local mic callback into the ADM builder. |
| android/src/main/java/com/oney/WebRTCModule/AudioExtractionController.java | New controller implementing local + remote extraction, JSI installer lifecycle, and option parsing. |
| .github/workflows/ios_ci.yml | Adds an Xcode selection step intended to pin the build to Xcode 26.3. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Magmusacy
approved these changes
Jun 26, 2026
Magmusacy
left a comment
There was a problem hiding this comment.
Looks good at a high level, I would just take a look at those 2 comments form copilot I left unresolved because they seem like cheap fixes
MiloszFilimowski
added a commit
that referenced
this pull request
Jul 7, 2026
Resolve conflicts in src/index.ts (dedupe audio-extraction exports that landed on master via #60, keep custom-video-track exports alphabetized) and WebRTCModule.java (drop MA_MAX_FILTER_ORDER, now owned by AudioExtractionController on master). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Description
AudioExtractionControllerencapsulating extraction logic, withWebRTCModuleslimmed down to delegate to it.WebRTCModule+AudioSink.mmto support local audio sinks/extraction.ios_ci.yml): pin the iOS job to Xcode 26.3. Themacos-26runner's new default Xcode 26.5 fails to compile RN 0.71.4's bundled Yogalog.cpp; 26.3 (also on the image) builds cleanly.Motivation and Context
Enables consuming local microphone audio from JS, completing the audio-extraction feature (FCE-3503). The CI pin unbreaks the iOS compile job, which was failing on master after a GitHub runner Xcode bump.
Documentation impact
Types of changes
not work as expected)