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( |