From e7cda48ba3f1fe4719fbfaf5a9577454482a43b5 Mon Sep 17 00:00:00 2001 From: Sandeep Date: Mon, 18 Sep 2023 16:34:26 +0530 Subject: [PATCH] Try fix audioDeviceModule if created using audioDevice --- .../RTCPeerConnectionFactory.mm | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm index 5cb4f38c05..1d7e1f5632 100644 --- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm +++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm @@ -265,18 +265,19 @@ - (instancetype)initWithNativeAudioEncoderFactory: dependencies.task_queue_factory = webrtc::CreateDefaultTaskQueueFactory(dependencies.trials.get()); cricket::MediaEngineDependencies media_deps; - - // always create ADM on worker thread - _nativeAudioDeviceModule = _workerThread->BlockingCall([&dependencies, &bypassVoiceProcessing]() { - return webrtc::AudioDeviceModule::Create(webrtc::AudioDeviceModule::AudioLayer::kPlatformDefaultAudio, - dependencies.task_queue_factory.get(), - bypassVoiceProcessing == YES); - }); - - _audioDeviceModule = [[RTCAudioDeviceModule alloc] initWithNativeModule: _nativeAudioDeviceModule + if (bypassVoiceProcessing) { + // always create ADM on worker thread + _nativeAudioDeviceModule = _workerThread->BlockingCall([&dependencies, &bypassVoiceProcessing]() { + return webrtc::AudioDeviceModule::Create(webrtc::AudioDeviceModule::AudioLayer::kPlatformDefaultAudio, + dependencies.task_queue_factory.get(), + bypassVoiceProcessing == YES); + }); + _audioDeviceModule = [[RTCAudioDeviceModule alloc] initWithNativeModule: _nativeAudioDeviceModule workerThread: _workerThread.get()]; - - media_deps.adm = _nativeAudioDeviceModule; + media_deps.adm = _nativeAudioDeviceModule; + } else { + media_deps.adm = std::move(audioDeviceModule); + } media_deps.task_queue_factory = dependencies.task_queue_factory.get(); media_deps.audio_encoder_factory = std::move(audioEncoderFactory); media_deps.audio_decoder_factory = std::move(audioDecoderFactory);