Index: webrtc/modules/audio_device/ios/audio_device_ios.mm |
diff --git a/webrtc/modules/audio_device/ios/audio_device_ios.mm b/webrtc/modules/audio_device/ios/audio_device_ios.mm |
index 6a1cd04fe0a61b8a1d26fcef7549a369c6a7d754..c6b36f6d3e45056d9a573502197398b325deaa3c 100644 |
--- a/webrtc/modules/audio_device/ios/audio_device_ios.mm |
+++ b/webrtc/modules/audio_device/ios/audio_device_ios.mm |
@@ -717,10 +717,14 @@ void AudioDeviceIOS::UpdateAudioUnit(bool can_play_or_record) { |
if (should_initialize_audio_unit) { |
RTCLog(@"Initializing audio unit for UpdateAudioUnit"); |
- ConfigureAudioSession(); |
- SetupAudioBuffersForActiveAudioSession(); |
- if (!audio_unit_->Initialize(playout_parameters_.sample_rate())) { |
- RTCLogError(@"Failed to initialize audio unit."); |
+ if (ConfigureAudioSession()) { |
+ SetupAudioBuffersForActiveAudioSession(); |
+ if (!audio_unit_->Initialize(playout_parameters_.sample_rate())) { |
+ RTCLogError(@"Failed to initialize audio unit."); |
+ return; |
+ } |
+ } else { |
+ RTCLogError(@"Failed to configure audio session."); |
return; |
} |
} |
@@ -751,19 +755,19 @@ void AudioDeviceIOS::UpdateAudioUnit(bool can_play_or_record) { |
} |
} |
-void AudioDeviceIOS::ConfigureAudioSession() { |
+bool AudioDeviceIOS::ConfigureAudioSession() { |
RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
RTCLog(@"Configuring audio session."); |
if (has_configured_session_) { |
RTCLogWarning(@"Audio session already configured."); |
- return; |
+ return false; |
} |
RTCAudioSession* session = [RTCAudioSession sharedInstance]; |
[session lockForConfiguration]; |
- [session configureWebRTCSession:nil]; |
+ has_configured_session_ = [session configureWebRTCSession:nil]; |
[session unlockForConfiguration]; |
- has_configured_session_ = true; |
RTCLog(@"Configured audio session."); |
+ return has_configured_session_; |
} |
void AudioDeviceIOS::UnconfigureAudioSession() { |
@@ -805,15 +809,16 @@ bool AudioDeviceIOS::InitPlayOrRecord() { |
// If we are ready to play or record, initialize the audio unit. |
if (session.canPlayOrRecord) { |
- ConfigureAudioSession(); |
- SetupAudioBuffersForActiveAudioSession(); |
- audio_unit_->Initialize(playout_parameters_.sample_rate()); |
+ if (ConfigureAudioSession()) { |
+ SetupAudioBuffersForActiveAudioSession(); |
+ audio_unit_->Initialize(playout_parameters_.sample_rate()); |
+ } |
} |
// Release the lock. |
[session unlockForConfiguration]; |
- return true; |
+ return has_configured_session_; |
} |
void AudioDeviceIOS::ShutdownPlayOrRecord() { |