| Index: media/audio/mac/audio_manager_mac.cc
|
| diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc
|
| index 4030a23a60bcdbc0d5585f405e44efed055428d0..a329278564abe42c7bd05ffcff5d3cbe1957c428 100644
|
| --- a/media/audio/mac/audio_manager_mac.cc
|
| +++ b/media/audio/mac/audio_manager_mac.cc
|
| @@ -12,7 +12,7 @@
|
| #include "base/mac/mac_logging.h"
|
| #include "base/mac/scoped_cftyperef.h"
|
| #include "base/sys_string_conversions.h"
|
| -#include "media/audio/audio_util.h"
|
| +#include "media/audio/audio_parameters.h"
|
| #include "media/audio/mac/audio_input_mac.h"
|
| #include "media/audio/mac/audio_low_latency_input_mac.h"
|
| #include "media/audio/mac/audio_low_latency_output_mac.h"
|
| @@ -20,6 +20,7 @@
|
| #include "media/audio/mac/audio_synchronized_mac.h"
|
| #include "media/audio/mac/audio_unified_mac.h"
|
| #include "media/base/bind_to_loop.h"
|
| +#include "media/base/channel_layout.h"
|
| #include "media/base/limits.h"
|
| #include "media/base/media_switches.h"
|
|
|
| @@ -28,6 +29,9 @@ namespace media {
|
| // Maximum number of output streams that can be open simultaneously.
|
| static const int kMaxOutputStreams = 50;
|
|
|
| +// Default buffer size in samples for low-latency input and output streams.
|
| +static const int kDefaultLowLatencyBufferSize = 128;
|
| +
|
| static bool HasAudioHardware(AudioObjectPropertySelector selector) {
|
| AudioDeviceID output_device_id = kAudioObjectUnknown;
|
| const AudioObjectPropertyAddress property_address = {
|
| @@ -273,6 +277,22 @@ void AudioManagerMac::GetAudioInputDeviceNames(
|
| }
|
| }
|
|
|
| +AudioParameters AudioManagerMac::GetDefaultOutputStreamParameters() {
|
| + return AudioParameters(
|
| + AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
|
| + AUAudioOutputStream::HardwareSampleRate(), 16,
|
| + kDefaultLowLatencyBufferSize);
|
| +}
|
| +
|
| +AudioParameters AudioManagerMac::GetDefaultInputStreamParameters(
|
| + const std::string& device_id) {
|
| + // TODO(xians): query the native channel layout for the specific device.
|
| + return AudioParameters(
|
| + AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
|
| + AUAudioInputStream::HardwareSampleRate(), 16,
|
| + kDefaultLowLatencyBufferSize);
|
| +}
|
| +
|
| AudioOutputStream* AudioManagerMac::MakeLinearOutputStream(
|
| const AudioParameters& params) {
|
| DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
|
| @@ -329,10 +349,11 @@ AudioParameters AudioManagerMac::GetPreferredLowLatencyOutputStreamParameters(
|
| // back-ends used with kEnableWebAudioInput, we hard-code to stereo.
|
| // Specifically, this is a limitation of AudioSynchronizedStream which
|
| // can be removed as part of the work to consolidate these back-ends.
|
| + AudioParameters default_params = GetDefaultOutputStreamParameters();
|
| return AudioParameters(
|
| AudioParameters::AUDIO_PCM_LOW_LATENCY,
|
| CHANNEL_LAYOUT_STEREO, input_params.input_channels(),
|
| - GetAudioHardwareSampleRate(), 16, GetAudioHardwareBufferSize());
|
| + default_params.sample_rate(), 16, default_params.frames_per_buffer());
|
| }
|
|
|
| return AudioManagerBase::GetPreferredLowLatencyOutputStreamParameters(
|
|
|