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