From cf11b06f3e7ca9ceb6a1f88122e8dca9b9442911 Mon Sep 17 00:00:00 2001 From: TrueZhuanjia Date: Thu, 30 Oct 2025 15:41:10 +0800 Subject: [PATCH] multi-audioChannel test --- VoidLink/Stream/Connection.m | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/VoidLink/Stream/Connection.m b/VoidLink/Stream/Connection.m index 5aa3284c..4d654644 100644 --- a/VoidLink/Stream/Connection.m +++ b/VoidLink/Stream/Connection.m @@ -290,10 +290,11 @@ int ArInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig, v TemporarySettings* tempSettings = [dataMan getSettings]; bool useBluetoothD2P = tempSettings.useBuiltinMic || !tempSettings.redirectMic; AVAudioSessionCategoryOptions bluetoothAudioOption = useBluetoothD2P ? AVAudioSessionCategoryOptionAllowBluetoothA2DP : AVAudioSessionCategoryOptionAllowBluetooth; + AVAudioSessionCategoryOptions audioMixOption = opusConfig->channelCount > 2 ? 0 : AVAudioSessionCategoryOptionMixWithOthers; AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:tempSettings.redirectMic ? AVAudioSessionCategoryPlayAndRecord : AVAudioSessionCategoryPlayback mode:AVAudioSessionModeDefault - options:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker|bluetoothAudioOption + options:audioMixOption|AVAudioSessionCategoryOptionDefaultToSpeaker|bluetoothAudioOption error:nil]; if(tempSettings.redirectMic) if(@available(iOS 13.0, *)) [session setAllowHapticsAndSystemSoundsDuringRecording:YES error:nil]; [session setActive:YES error:nil]; @@ -371,8 +372,14 @@ void AudioEngineInit(int sampleRate, int channelCount) { if(!audioFormat) return; + AVAudioFormat *mixerFormat = [audioEngine.mainMixerNode outputFormatForBus:0]; + AVAudioFormat *outputFormat = [audioEngine.outputNode inputFormatForBus:0]; + NSLog(@"Mixer: %dch, Output: %dch", + (int)mixerFormat.channelCount, + (int)outputFormat.channelCount); + [audioEngine connect:audioPlayerNode to:audioEngine.mainMixerNode format:audioFormat]; - + NSError *err = nil; if (![audioEngine startAndReturnError:&err]) { NSLog(@"AudioEngine start error: %@", err);