| Index: media/audio/mac/audio_low_latency_input_mac.cc
|
| diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc
|
| index dc9bd8ab48ee7d87aa52a690b407fa3da2cc2ec1..276f3e7196bb4b459fc0f0e5a383cce04ee16ae7 100644
|
| --- a/media/audio/mac/audio_low_latency_input_mac.cc
|
| +++ b/media/audio/mac/audio_low_latency_input_mac.cc
|
| @@ -195,6 +195,11 @@ bool AUAudioInputStream::Open() {
|
| }
|
|
|
| // Set the desired number of frames in the IO buffer (output scope).
|
| + // WARNING: Setting this value changes the frame size for all audio units in
|
| + // the current process. It's imperative that the input and output frame sizes
|
| + // be the same as audio_util::GetAudioHardwareBufferSize().
|
| + // TODO(henrika): Due to http://crrev.com/159666 this is currently not true
|
| + // and should be fixed, a CHECK() should be added at that time.
|
| result = AudioUnitSetProperty(audio_unit_,
|
| kAudioDevicePropertyBufferFrameSize,
|
| kAudioUnitScope_Output,
|
| @@ -460,6 +465,18 @@ OSStatus AUAudioInputStream::Provide(UInt32 number_of_frames,
|
| if (!audio_data)
|
| return kAudioUnitErr_InvalidElement;
|
|
|
| + // Unfortunately AUAudioInputStream and AUAudioOutputStream share the frame
|
| + // size set by kAudioDevicePropertyBufferFrameSize above on a per process
|
| + // basis. What this means is that the |number_of_frames| value may be larger
|
| + // or smaller than the value set during Configure(). In this case either
|
| + // audio input or audio output will be broken, so just do nothing.
|
| + // TODO(henrika): This should never happen so long as we're always using the
|
| + // hardware sample rate and the input/output streams configure the same frame
|
| + // size. This is currently not true. See http://crbug.com/154352. Once
|
| + // fixed, a CHECK() should be added and this wall of text removed.
|
| + if (number_of_frames != static_cast<UInt32>(number_of_frames_))
|
| + return noErr;
|
| +
|
| // Deliver data packet, delay estimation and volume level to the user.
|
| sink_->OnData(this,
|
| audio_data,
|
|
|