change defaults to support voice isolation

This commit is contained in:
Hiroshi Horie
2021-10-03 23:05:38 +09:00
parent ffb1d25ed1
commit 31bb32f405
2 changed files with 30 additions and 8 deletions
+29 -5
View File
@@ -79,15 +79,39 @@ public class SwiftLiveKitPlugin: NSObject, FlutterPlugin {
print("[LiveKit] Configuring mode: ", configuration.mode) print("[LiveKit] Configuring mode: ", configuration.mode)
} }
let session = RTCAudioSession.sharedInstance() // get `RTCAudioSession` and lock
session.lockForConfiguration() 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 { defer {
session.unlockForConfiguration() unlock()
} }
do { do {
try session.setConfiguration(configuration, active: true) try rtcSession.setConfiguration(configuration, active: true)
print("[LiveKit] Configure success") // 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) result(true)
} catch let error { } catch let error {
print("[LiveKit] Configure audio error: ", error) print("[LiveKit] Configure audio error: ", error)
+1 -3
View File
@@ -140,7 +140,6 @@ Future<NativeAudioConfiguration> defaultNativeAudioConfigurationFunc(
appleAudioCategory: AppleAudioCategory.playback, appleAudioCategory: AppleAudioCategory.playback,
appleAudioCategoryOptions: { appleAudioCategoryOptions: {
AppleAudioCategoryOption.mixWithOthers, AppleAudioCategoryOption.mixWithOthers,
// IosAudioCategoryOption.duckOthers,
}, },
appleAudioMode: AppleAudioMode.spokenAudio, appleAudioMode: AppleAudioMode.spokenAudio,
); );
@@ -153,9 +152,8 @@ Future<NativeAudioConfiguration> defaultNativeAudioConfigurationFunc(
appleAudioCategoryOptions: { appleAudioCategoryOptions: {
AppleAudioCategoryOption.allowBluetooth, AppleAudioCategoryOption.allowBluetooth,
AppleAudioCategoryOption.mixWithOthers, AppleAudioCategoryOption.mixWithOthers,
// IosAudioCategoryOption.duckOthers,
}, },
appleAudioMode: AppleAudioMode.voiceChat, appleAudioMode: AppleAudioMode.videoChat,
); );
} }