-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change AVAudioSession defaults to iOS defaults #7
Conversation
this looks good to me. question is how does this work for existing flutter-webrtc users? LiveKit iOS SDK already handles management of the audio session. feels like flutter-webrtc should add this management layer before upgrading to this build. here's the logic that we use to init audio session when the first audio track is received. and here is when it's published @cloudwebrtc, do you want to add this to flutter-webrtc first? |
@davidzhao Thanks for pointing this out, this is my concern also. For flutter_webrtc, it would be ideal to have a new I'm still thinking but perhaps if I might come up with a PR later, and would like to hear @cloudwebrtc's opinion about the design. |
hey, @davidzhao @hiroshihorie I think we need to find whether there is a localStream (including audio track) in the flutter-webrtc plugin to switch These operations can be done internally by flutter-webrtc native, and users have no perception. What do you think? |
Yes! I agree this could be done transparently by flutter-webrtc. I think only two actions are needed:
|
@cloudwebrtc @davidzhao Yes I agree it should be handled internally, but there should be an option for this to be off. So if the developer is managing the audio session themself it will not cause conflict. |
if we only set audiosession if it's set to ambient, then it should be ok right? if dev set it to something else, we would not override. similarly with playAndRecord, we would only set it if it wasn't set |
Should be ok most of the time but I'm still thinking if it's ok for the uncommon cases. Some I think it still might be safe to have an option to turn off this auto-management of audio session, since it's hard to understand 100% of developer's intention.
Actually this is over-complicating the issue haha 😅 |
You are right that it's possible they might want ambient. I think it's ok for users to actually tell us those use cases.. and we can add a toggle then to disable this? Just trying to avoid over-engineering this for the initial version. So proposal is:
wdyt? |
@davidzhao Sounds good! won't hurt to have an option to turn this off tho! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
As a first step we only want to enable frame pacing for the case where min playout delay == 0 and max playout delay > 0. (cherry picked from commit b2745ba) Bug: chromium:1237402, chromium:1239469 Change-Id: Icf9641db7566083d0279135efa8618e435d881eb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228640 Commit-Queue: Johannes Kron <[email protected]> Reviewed-by: Ilya Nikolaevskiy <[email protected]> Cr-Original-Commit-Position: refs/heads/master@{#34752} Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229021 Cr-Commit-Position: refs/branch-heads/4577@{#7} Cr-Branched-From: 5196931-refs/heads/master@{#34463}
…cally assigned payload types to allow for downstream users to upgrade. BUG=chromium:1338902 (cherry picked from commit c501f30) No-Try: true Change-Id: Ie1205ad2c9c1be3f4ed8e133b1a5e54afd04ebd9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/268193 Commit-Queue: Philipp Hancke <[email protected]> Reviewed-by: Tomas Gunnarsson <[email protected]> Cr-Original-Commit-Position: refs/heads/main@{#37501} Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/268469 Commit-Queue: Henrik Boström <[email protected]> Reviewed-by: Henrik Boström <[email protected]> Cr-Commit-Position: refs/branch-heads/5112@{#7} Cr-Branched-From: a976a87-refs/heads/main@{#37168}
…dk#7/n) The wrapping ICE controller will allow existing ICE controller implementations to migrate to the active interface, and eventually deprecate the legacy interface. Follow-up CL has unit tests for P2PTransportChannel using the new wrapping controller. Bug: webrtc:14367, webrtc:14131 Change-Id: I6c517449ff1e503e8268a7ef91afda793723fdeb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275302 Reviewed-by: Per Kjellander <[email protected]> Reviewed-by: Jonas Oreland <[email protected]> Commit-Queue: Sameer Vijaykar <[email protected]> Cr-Commit-Position: refs/heads/main@{#38130}
…ebrtc-sdk#7/n)" This reverts commit 6326c9c. Reason for revert: breaks upstream project Original change's description: > Add an active ICE controller that wraps a legacy controller (webrtc-sdk#7/n) > > The wrapping ICE controller will allow existing ICE controller implementations to migrate to the active interface, and eventually deprecate the legacy interface. > > Follow-up CL has unit tests for P2PTransportChannel using the new wrapping controller. > > Bug: webrtc:14367, webrtc:14131 > Change-Id: I6c517449ff1e503e8268a7ef91afda793723fdeb > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275302 > Reviewed-by: Per Kjellander <[email protected]> > Reviewed-by: Jonas Oreland <[email protected]> > Commit-Queue: Sameer Vijaykar <[email protected]> > Cr-Commit-Position: refs/heads/main@{#38130} Bug: webrtc:14367, webrtc:14131 Change-Id: I61dd98de62657852068c7566b55f19f662df9ff4 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276043 Reviewed-by: Per Kjellander <[email protected]> Reviewed-by: Jonas Oreland <[email protected]> Commit-Queue: Per Kjellander <[email protected]> Auto-Submit: Sameer Vijaykar <[email protected]> Bot-Commit: [email protected] <[email protected]> Cr-Commit-Position: refs/heads/main@{#38131}
…ebrtc-sdk#7/n)" This is a reland of commit 6326c9c Original change's description: > Add an active ICE controller that wraps a legacy controller (webrtc-sdk#7/n) > > The wrapping ICE controller will allow existing ICE controller implementations to migrate to the active interface, and eventually deprecate the legacy interface. > > Follow-up CL has unit tests for P2PTransportChannel using the new wrapping controller. > > Bug: webrtc:14367, webrtc:14131 > Change-Id: I6c517449ff1e503e8268a7ef91afda793723fdeb > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275302 > Reviewed-by: Per Kjellander <[email protected]> > Reviewed-by: Jonas Oreland <[email protected]> > Commit-Queue: Sameer Vijaykar <[email protected]> > Cr-Commit-Position: refs/heads/main@{#38130} Bug: webrtc:14367, webrtc:14131 Change-Id: I5662595db1df8c06b3acac9b39749f236906fa7e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276044 Auto-Submit: Sameer Vijaykar <[email protected]> Reviewed-by: Jonas Oreland <[email protected]> Reviewed-by: Per Kjellander <[email protected]> Commit-Queue: Per Kjellander <[email protected]> Cr-Commit-Position: refs/heads/main@{#38149}
allow listen-only mode in AudioUnit, adjust when category changes release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) * use `AVAudioSession` defaults * remove isRecordingEnabled feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) * feat: add audio device changes detect for windows. * Update audio_device_core_win.cc fix iOS/macOS/Android compile. fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) * progress * tweak * clean * simplify audio unit restart call to SetupAudioBuffersForActiveAudioSession() might not be needed since sample rate won't change during restart. This might help reduce the unwanted noise when restarting audio unit. * clean Stop recording on mute (turn off mic indicator) (#55) * initial impl * more comments * more comment * adjust indent * comments Cherry pick audio selection from m97 release (#35) * [Mac] Allow audio device selection (#21) * first attempt * remove unused dep * init playout / recording * use AudioDeviceID as guid * switch device method * equality * default device * `isDefault` property * dont format default device name * type param * bypass * refactor * fix * append Audio to thread labels * ref * lk headers * low level apis * fix thread checks Some methods of ADM needs to be run on worker thread, otherwise RTC's thread check will fail. * switch to default device when removed * close mixerManager if didn't switch to default device * default audio device switched * expose devices update handler * fix ios compile * fix bug: don't always recreate RTCAudioDeviceModule * handle guid. Co-authored-by: Hiroshi Horie <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) Allow custom audio processing by exposing AudioProcessingModule (#85) Expose audio sample buffers for Android (#89) feat: add external audio processor for android. (#103) android: make audio output attributes modifiable (#118) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]> Co-authored-by: davidliu <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (#2) release mic when category changes (#5) Change defaults to iOS defaults (#7) Sync audio session config (#8) feat: support bypass voice processing for iOS. (#15) Remove MacBookPro audio pan right code (#22) fix: Fix can't open mic alone when built-in AEC is enabled. (#29) feat: add audio device changes detect for windows. (#41) fix Linux compile (#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) Stop recording on mute (turn off mic indicator) (#55) Cherry pick audio selection from m97 release (#35) [Mac] Allow audio device selection (#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) Allow custom audio processing by exposing AudioProcessingModule (#85) Expose audio sample buffers for Android (#89) feat: add external audio processor for android. (#103) android: make audio output attributes modifiable (#118) Fix external audio processor sample rate calculation (#108) Expose remote audio sample buffers on RTCAudioTrack (#84) Fix memory leak when creating audio CMSampleBuffer #86 Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]> Co-authored-by: davidliu <[email protected]>
Use M125 as the latest version and migrate historical patches to m125 Patches Group: ## 1. Update README.md b6c65fc * Add Apache-2.0 license and some note to README.md. (#9) * Updated readme detailing changes from original (#42) * Adding membrane framework (#51) * Updated readme (#83) ## 2. Audio Device Optimization 7454824 * allow listen-only mode in AudioUnit, adjust when category changes (#2) * release mic when category changes (#5) * Change defaults to iOS defaults (#7) * Sync audio session config (#8) * feat: support bypass voice processing for iOS. (#15) * Remove MacBookPro audio pan right code (#22) * fix: Fix can't open mic alone when built-in AEC is enabled. (#29) * feat: add audio device changes detect for windows. (#41) * fix Linux compile (#47) * AudioUnit: Don't rely on category switch for mic indicator to turn off (#52) * Stop recording on mute (turn off mic indicator) (#55) * Cherry pick audio selection from m97 release (#35) * [Mac] Allow audio device selection (#21) * RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (#80) * Allow custom audio processing by exposing AudioProcessingModule (#85) * Expose audio sample buffers for Android (#89) * feat: add external audio processor for android. (#103) * android: make audio output attributes modifiable (#118) * Fix external audio processor sample rate calculation (#108) * Expose remote audio sample buffers on RTCAudioTrack (#84) * Fix memory leak when creating audio CMSampleBuffer #86 ## 3. Simulcast/SVC support for iOS/Android. b0b9fe9 - Simulcast support for iOS SDK (#4) - Support for simulcast in Android SDK (#3) - include simulcast headers for mac also (#10) - Fix simulcast using hardware encoder on Android (#48) - Add scalabilityMode support for AV1/VP9. (#90) ## 4. Android improvements. 9aaaab5 - Start/Stop receiving stream method for VideoTrack (#25) - Properly remove observer upon deconstruction (#26) - feat: Expose setCodecPreferences/getCapabilities for android. (#61) - fix: add WrappedVideoDecoderFactory.java. (#74) ## 5. Darwin improvements a13ea17 - [Mac/iOS] feat: Add RTCYUVHelper for darwin. (#28) - Cross-platform `RTCMTLVideoView` for both iOS / macOS (#40) - rotationOverride should not be assign (#44) - [ObjC] Expose properties / methods required for AV1 codec support (#60) - Workaround: Render PixelBuffer in RTCMTLVideoView (#58) - Improve iOS/macOS H264 encoder (#70) - fix: fix video encoder not resuming correctly upon foregrounding (#75). - add PrivacyInfo.xcprivacy to darwin frameworks. (#112) - Add NSPrivacyCollectedDataTypes key to xcprivacy file (#114) - Thread-safe `RTCInitFieldTrialDictionary` (#116) - Set RTCCameraVideoCapturer initial zoom factor (#121) - Unlock configuration before starting capture session (#122) ## 6. Desktop Capture for macOS. 841d78f - [Mac] feat: Support screen capture for macOS. (#24) (#36) - fix: Get thumbnails asynchronously. (#37) - fix: Use CVPixelBuffer to build DesktopCapture Frame, fix the crash caused by non-CVPixelBuffer frame in RTCVideoEncoderH264 that cannot be cropped. (#63) - Fix the crash when setting the fps of the virtual camera. (#62) ## 7. Frame Cryptor Support. fc08745 - feat: Frame Cryptor (aes gcm/cbc). (#54) - feat: key ratchet/derive. (#66) - fix: skip invalid key when decryption failed. (#81) - Improve e2ee, add setSharedKey to KeyProvider. (#88) - add failure tolerance for framecryptor. (#91) - fix h264 freeze. (#93) - Fix/send frame cryptor events from signaling thread (#95) - more improvements for E2EE. (#96) - remove too verbose logs (#107) - Add key ring size to keyProviderOptions. (#109) ## 8. Other improvements. eed6c8a - Added yuv_helper (#57) - ABGRToI420, ARGBToI420 & ARGBToRGB24 (#65) - more yuv wrappers (#87) - Fix naming for yuv helper (#113) - Fix missing `RTC_OBJC_TYPE` macros (#100) --------- Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]> Co-authored-by: davidliu <[email protected]> Co-authored-by: Angelika Serwa <[email protected]> Co-authored-by: Théo Monnom <[email protected]>
allow listen-only mode in AudioUnit, adjust when category changes (webrtc-sdk#2) release mic when category changes (webrtc-sdk#5) Change defaults to iOS defaults (webrtc-sdk#7) Sync audio session config (webrtc-sdk#8) feat: support bypass voice processing for iOS. (webrtc-sdk#15) Remove MacBookPro audio pan right code (webrtc-sdk#22) fix: Fix can't open mic alone when built-in AEC is enabled. (webrtc-sdk#29) feat: add audio device changes detect for windows. (webrtc-sdk#41) fix Linux compile (webrtc-sdk#47) AudioUnit: Don't rely on category switch for mic indicator to turn off (webrtc-sdk#52) Stop recording on mute (turn off mic indicator) (webrtc-sdk#55) Cherry pick audio selection from m97 release (webrtc-sdk#35) [Mac] Allow audio device selection (webrtc-sdk#21) RTCAudioDeviceModule.outputDevice / inputDevice getter and setter (webrtc-sdk#80) Co-authored-by: Hiroshi Horie <[email protected]> Co-authored-by: David Zhao <[email protected]>
Currently, the default category is
AVAudioSessionCategoryPlayAndRecord
which will automatically turn-on the microphone even for listen/view-only cases.Instead of forcing developer to use
playAndRecord
, developer should be responsible to set the relevant category, which will result mic to turn on ifplayAndRecord
orrecord
is used. (PR #5)This PR sets the defaults to iOS defaults.
https://developer.apple.com/documentation/avfaudio/avaudiosession/capturing_stereo_audio_from_built-in_microphones