summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorhenrika <henrika@chromium.org>2016-01-21 05:33:51 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-21 13:34:44 +0000
commit435741872d39afd2ed06142d4bbdeef2bac6a41e (patch)
treefd724481915ee3c658074e56ae0b68c96fea6f3f /media
parentd5b7b50eabc9068a01d55530edeaa9fe483a3ce6 (diff)
downloadchromium_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.cc18
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;
}