diff options
author | henrika <henrika@chromium.org> | 2016-01-21 05:33:51 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-21 13:34:44 +0000 |
commit | 435741872d39afd2ed06142d4bbdeef2bac6a41e (patch) | |
tree | fd724481915ee3c658074e56ae0b68c96fea6f3f /media | |
parent | d5b7b50eabc9068a01d55530edeaa9fe483a3ce6 (diff) | |
download | chromium_src-435741872d39afd2ed06142d4bbdeef2bac6a41e.zip chromium_src-435741872d39afd2ed06142d4bbdeef2bac6a41e.tar.gz chromium_src-435741872d39afd2ed06142d4bbdeef2bac6a41e.tar.bz2 |
Changes error handling for AudioUnitRender on Mac OSX
BUG=549021
Review URL: https://codereview.chromium.org/1613073004
Cr-Commit-Position: refs/heads/master@{#370681}
Diffstat (limited to 'media')
-rw-r--r-- | media/audio/mac/audio_low_latency_input_mac.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc index eb328af..c034b61 100644 --- a/media/audio/mac/audio_low_latency_input_mac.cc +++ b/media/audio/mac/audio_low_latency_input_mac.cc @@ -585,10 +585,8 @@ OSStatus AUAudioInputStream::InputProc(void* user_data, audio_input->audio_buffer_list()); if (result) { UMA_HISTOGRAM_SPARSE_SLOWLY("Media.AudioInputCbErrorMac", result); - OSSTATUS_DLOG(ERROR, result) << "AudioUnitRender() failed "; - if (result != kAudioUnitErr_TooManyFramesToProcess) { - audio_input->HandleError(result); - } else { + OSSTATUS_LOG(ERROR, result) << "AudioUnitRender() failed "; + if (result == kAudioUnitErr_TooManyFramesToProcess) { DCHECK(!audio_input->last_success_time_.is_null()); // We delay stopping the stream for kAudioUnitErr_TooManyFramesToProcess // since it has been observed that some USB headsets can cause this error @@ -601,9 +599,19 @@ OSStatus AUAudioInputStream::InputProc(void* user_data, base::TimeTicks::Now() - audio_input->last_success_time_; if ((time_since_last_success > base::TimeDelta::FromSeconds(kMaxErrorTimeoutInSeconds))) { - DLOG(ERROR) << "Too long sequence of TooManyFramesToProcess errors!"; + LOG(ERROR) << "Too long sequence of TooManyFramesToProcess errors!"; audio_input->HandleError(result); } + } else if (result == kAudioUnitErr_CannotDoInCurrentContext) { + // Returned when an audio unit is in a state where it can't perform the + // requested action now - but it could later. + // TODO(henrika): figure out why we see this error message; do nothing + // for now. Hoping that we will get back on track soon. + LOG(ERROR) << "kAudioUnitErr_CannotDoInCurrentContext"; + } else { + // We have also seen kAudioUnitErr_NoConnection in some cases. Bailing + // out for this error for now. + audio_input->HandleError(result); } return result; } |