From 31bb32f40543a2eb1599ee2cbc8a3ee16baa7633 Mon Sep 17 00:00:00 2001 From: Hiroshi Horie <548776+hiroshihorie@users.noreply.github.com> Date: Sun, 3 Oct 2021 23:05:38 +0900 Subject: [PATCH] change defaults to support voice isolation --- ios/Classes/SwiftLiveKitPlugin.swift | 34 ++++++++++++++++++++++++---- lib/src/track/audio_track.dart | 4 +--- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/ios/Classes/SwiftLiveKitPlugin.swift b/ios/Classes/SwiftLiveKitPlugin.swift index 2571257..329cf4c 100644 --- a/ios/Classes/SwiftLiveKitPlugin.swift +++ b/ios/Classes/SwiftLiveKitPlugin.swift @@ -79,15 +79,39 @@ public class SwiftLiveKitPlugin: NSObject, FlutterPlugin { print("[LiveKit] Configuring mode: ", configuration.mode) } - let session = RTCAudioSession.sharedInstance() - session.lockForConfiguration() + // get `RTCAudioSession` and lock + let rtcSession = RTCAudioSession.sharedInstance() + rtcSession.lockForConfiguration() + + var isLocked: Bool = true + let unlock = { + guard isLocked else { + print("[LiveKit] not locked, ignoring unlock") + return + } + rtcSession.unlockForConfiguration() + isLocked = false + } + + // always `unlock()` when exiting scope, calling multiple times has no side-effect defer { - session.unlockForConfiguration() + unlock() } do { - try session.setConfiguration(configuration, active: true) - print("[LiveKit] Configure success") + try rtcSession.setConfiguration(configuration, active: true) + // unlock here before configuring `AVAudioSession` + // unlock() + print("[LiveKit] RTCAudioSession Configure success") + + // also configure longFormAudio + // let avSession = AVAudioSession.sharedInstance() + // try avSession.setCategory(AVAudioSession.Category(rawValue: configuration.category), + // mode: AVAudioSession.Mode(rawValue: configuration.mode), + // policy: .default, + // options: configuration.categoryOptions) + // print("[LiveKit] AVAudioSession Configure success") + result(true) } catch let error { print("[LiveKit] Configure audio error: ", error) diff --git a/lib/src/track/audio_track.dart b/lib/src/track/audio_track.dart index cfb365e..26808ec 100644 --- a/lib/src/track/audio_track.dart +++ b/lib/src/track/audio_track.dart @@ -140,7 +140,6 @@ Future defaultNativeAudioConfigurationFunc( appleAudioCategory: AppleAudioCategory.playback, appleAudioCategoryOptions: { AppleAudioCategoryOption.mixWithOthers, - // IosAudioCategoryOption.duckOthers, }, appleAudioMode: AppleAudioMode.spokenAudio, ); @@ -153,9 +152,8 @@ Future defaultNativeAudioConfigurationFunc( appleAudioCategoryOptions: { AppleAudioCategoryOption.allowBluetooth, AppleAudioCategoryOption.mixWithOthers, - // IosAudioCategoryOption.duckOthers, }, - appleAudioMode: AppleAudioMode.voiceChat, + appleAudioMode: AppleAudioMode.videoChat, ); }