| Index: media/audio/pulse/audio_manager_pulse.cc
|
| diff --git a/media/audio/pulse/audio_manager_pulse.cc b/media/audio/pulse/audio_manager_pulse.cc
|
| index 3369fd5a05be40228affaee5d744172b35ada708..238530a2038a6d8b904c62af0dd0ef2097bdccf6 100644
|
| --- a/media/audio/pulse/audio_manager_pulse.cc
|
| +++ b/media/audio/pulse/audio_manager_pulse.cc
|
| @@ -35,6 +35,10 @@ using pulse::WaitForOperationCompletion;
|
| // Maximum number of output streams that can be open simultaneously.
|
| static const int kMaxOutputStreams = 50;
|
|
|
| +// Define bounds for the output buffer size.
|
| +static const int kMinimumOutputBufferSize = 512;
|
| +static const int kMaximumOutputBufferSize = 8192;
|
| +
|
| static const base::FilePath::CharType kPulseLib[] =
|
| FILE_PATH_LITERAL("libpulse.so.0");
|
|
|
| @@ -161,10 +165,9 @@ AudioParameters AudioManagerPulse::GetPreferredOutputStreamParameters(
|
| const AudioParameters& input_params) {
|
| // TODO(tommi): Support |output_device_id|.
|
| VLOG_IF(0, !output_device_id.empty()) << "Not implemented!";
|
| - static const int kDefaultOutputBufferSize = 512;
|
|
|
| ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
|
| - int buffer_size = kDefaultOutputBufferSize;
|
| + int buffer_size = kMinimumOutputBufferSize;
|
| int bits_per_sample = 16;
|
| int input_channels = 0;
|
| int sample_rate;
|
| @@ -172,7 +175,9 @@ AudioParameters AudioManagerPulse::GetPreferredOutputStreamParameters(
|
| bits_per_sample = input_params.bits_per_sample();
|
| channel_layout = input_params.channel_layout();
|
| input_channels = input_params.input_channels();
|
| - buffer_size = std::min(buffer_size, input_params.frames_per_buffer());
|
| + buffer_size =
|
| + std::min(kMaximumOutputBufferSize,
|
| + std::max(buffer_size, input_params.frames_per_buffer()));
|
| sample_rate = input_params.sample_rate();
|
| } else {
|
| sample_rate = GetNativeSampleRate();
|
|
|