Index: media/audio/linux/audio_manager_linux.cc |
diff --git a/media/audio/linux/audio_manager_linux.cc b/media/audio/linux/audio_manager_linux.cc |
index fa8612573fe95397f905062cfd531aa20af5684b..aab5247b37a19aa97e95b337b2a96ad74734624a 100644 |
--- a/media/audio/linux/audio_manager_linux.cc |
+++ b/media/audio/linux/audio_manager_linux.cc |
@@ -11,7 +11,7 @@ |
#include "base/process_util.h" |
#include "base/stl_util.h" |
#include "media/audio/audio_output_dispatcher.h" |
-#include "media/audio/audio_util.h" |
+#include "media/audio/audio_parameters.h" |
#if defined(USE_CRAS) |
#include "media/audio/cras/audio_manager_cras.h" |
#endif |
@@ -21,6 +21,7 @@ |
#if defined(USE_PULSEAUDIO) |
#include "media/audio/pulse/audio_manager_pulse.h" |
#endif |
+#include "media/base/channel_layout.h" |
#include "media/base/limits.h" |
#include "media/base/media_switches.h" |
@@ -29,6 +30,9 @@ namespace media { |
// Maximum number of output streams that can be open simultaneously. |
static const int kMaxOutputStreams = 50; |
+// Default sample rate for input and output streams. |
+static const int kDefaultSampleRate = 48000; |
+ |
// Since "default", "pulse" and "dmix" devices are virtual devices mapped to |
// real devices, we remove them from the list to avoiding duplicate counting. |
// In addition, note that we support no more than 2 channels for recording, |
@@ -94,6 +98,23 @@ void AudioManagerLinux::GetAudioInputDeviceNames( |
GetAlsaAudioInputDevices(device_names); |
} |
+AudioParameters AudioManagerLinux::GetDefaultOutputStreamParameters() { |
+ static const int kDefaultOutputBufferSize = 512; |
+ |
+ return AudioParameters( |
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, |
+ kDefaultSampleRate, 16, kDefaultOutputBufferSize); |
+} |
+ |
+AudioParameters AudioManagerLinux::GetDefaultInputStreamParameters( |
+ const std::string& device_id) { |
+ static const int kDefaultInputBufferSize = 1024; |
+ |
+ return AudioParameters( |
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, |
+ kDefaultSampleRate, 16, kDefaultInputBufferSize); |
+} |
+ |
void AudioManagerLinux::GetAlsaAudioInputDevices( |
media::AudioDeviceNames* device_names) { |
// Constants specified by the ALSA API for device hints. |
@@ -299,9 +320,9 @@ AudioParameters AudioManagerLinux::GetPreferredLowLatencyOutputStreamParameters( |
// clients, such as WebRTC, have a more limited use case and work acceptably |
// with a smaller buffer size. The check below allows clients which want to |
// try a smaller buffer size on Linux to do so. |
- int buffer_size = GetAudioHardwareBufferSize(); |
- if (input_params.frames_per_buffer() < buffer_size) |
- buffer_size = input_params.frames_per_buffer(); |
+ AudioParameters default_params = GetDefaultOutputStreamParameters(); |
+ int buffer_size = std::min(input_params.frames_per_buffer(), |
+ default_params.frames_per_buffer()); |
// TODO(dalecurtis): This should include bits per channel and channel layout |
// eventually. |