From 5f7d00eb3d3dae2b3384d87ddd52db1bc33e473e Mon Sep 17 00:00:00 2001 From: Jiawei Ou Date: Mon, 30 Jul 2018 09:44:16 -0700 Subject: [PATCH] Release audio unit when ios audio device failed to initialize playout and recording. TBR=henrika@webrtc.org Bug: webrtc:9552 Change-Id: I7c3e0c1c2126603e7b1cc412cb37cac57eb3cdbf Reviewed-on: https://webrtc-review.googlesource.com/90085 Commit-Queue: Magnus Jedvert Reviewed-by: Magnus Jedvert Cr-Commit-Position: refs/heads/master@{#24209} --- modules/audio_device/ios/audio_device_ios.mm | 2 ++ sdk/objc/Framework/Native/src/audio/audio_device_ios.mm | 2 ++ 2 files changed, 4 insertions(+) diff --git a/modules/audio_device/ios/audio_device_ios.mm b/modules/audio_device/ios/audio_device_ios.mm index f8aae2efe6..7e3d8f2181 100644 --- a/modules/audio_device/ios/audio_device_ios.mm +++ b/modules/audio_device/ios/audio_device_ios.mm @@ -846,6 +846,7 @@ bool AudioDeviceIOS::InitPlayOrRecord() { if (![session beginWebRTCSession:&error]) { [session unlockForConfiguration]; RTCLogError(@"Failed to begin WebRTC session: %@", error.localizedDescription); + audio_unit_.reset(); return false; } @@ -857,6 +858,7 @@ bool AudioDeviceIOS::InitPlayOrRecord() { // audio session during or after a Media Services failure. // See AVAudioSessionErrorCodeMediaServicesFailed for details. [session unlockForConfiguration]; + audio_unit_.reset(); return false; } SetupAudioBuffersForActiveAudioSession(); diff --git a/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm b/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm index 053ffdb3fd..bb0a352f7d 100644 --- a/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm +++ b/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm @@ -861,6 +861,7 @@ bool AudioDeviceIOS::InitPlayOrRecord() { if (![session beginWebRTCSession:&error]) { [session unlockForConfiguration]; RTCLogError(@"Failed to begin WebRTC session: %@", error.localizedDescription); + audio_unit_.reset(); return false; } @@ -872,6 +873,7 @@ bool AudioDeviceIOS::InitPlayOrRecord() { // audio session during or after a Media Services failure. // See AVAudioSessionErrorCodeMediaServicesFailed for details. [session unlockForConfiguration]; + audio_unit_.reset(); return false; } SetupAudioBuffersForActiveAudioSession();