| 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 b126ed1fdb4b3d699a05fa9bf403389f68864378..e7da9319a850627c67f96cb138c8e97ff6ae95a7 100644
|
| --- a/media/audio/linux/audio_manager_linux.cc
|
| +++ b/media/audio/linux/audio_manager_linux.cc
|
| @@ -10,7 +10,9 @@
|
| #include "base/nix/xdg_util.h"
|
| #include "base/process_util.h"
|
| #include "base/stl_util.h"
|
| +#include "media/audio/audio_parameters.h"
|
| #include "media/audio/audio_output_dispatcher.h"
|
| +#include "media/audio/audio_util.h"
|
| #include "media/audio/linux/alsa_input.h"
|
| #include "media/audio/linux/alsa_output.h"
|
| #include "media/audio/linux/alsa_wrapper.h"
|
| @@ -342,4 +344,22 @@ AudioManager* CreateAudioManager() {
|
| return new AudioManagerLinux();
|
| }
|
|
|
| +AudioParameters AudioManagerLinux::GetPreferredLowLatencyOutputStreamParameters(
|
| + const AudioParameters& input_params) {
|
| + // Since Linux doesn't actually have a low latency path the hardware buffer
|
| + // size is quite large in order to prevent glitches with general usage. Some
|
| + // 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 = std::min(
|
| + static_cast<size_t>(input_params.frames_per_buffer()),
|
| + GetAudioHardwareBufferSize());
|
| +
|
| + // TODO(dalecurtis): This should include bits per channel and channel layout
|
| + // eventually.
|
| + return AudioParameters(
|
| + AudioParameters::AUDIO_PCM_LOW_LATENCY, input_params.channel_layout(),
|
| + GetAudioHardwareSampleRate(), 16, buffer_size);
|
| +}
|
| +
|
| } // namespace media
|
|
|