| 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 412f2a421b0f46dd6375bf7ab3d7d17d051484fe..2cf1d9815a3d1d601dfcc2f7628daafd939022dd 100644
|
| --- a/media/audio/pulse/audio_manager_pulse.cc
|
| +++ b/media/audio/pulse/audio_manager_pulse.cc
|
| @@ -35,9 +35,11 @@ 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.
|
| +// Minimum bound for the output buffer size.
|
| static const int kMinimumOutputBufferSize = 512;
|
| -static const int kMaximumOutputBufferSize = 8192;
|
| +
|
| +// Maximum bound for the input and output buffer size
|
| +static const int kMaximumBufferSize = 8192;
|
|
|
| // Default input buffer size.
|
| static const int kDefaultInputBufferSize = 1024;
|
| @@ -126,16 +128,31 @@ void AudioManagerPulse::GetAudioOutputDeviceNames(
|
| GetAudioDeviceNames(false, device_names);
|
| }
|
|
|
| -AudioParameters AudioManagerPulse::GetInputStreamParameters(
|
| - const std::string& device_id) {
|
| +AudioParameters AudioManagerPulse::GetPreferredInputStreamParameters(
|
| + const std::string& input_device_id,
|
| + const AudioParameters& input_params) {
|
| + // TODO(xians): add support for querying native channel layout for pulse.
|
| + ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
|
| + int buffer_size = kDefaultInputBufferSize;
|
| + int bits_per_sample = 16;
|
| + int input_channels = 0;
|
| + int sample_rate = GetNativeSampleRate();
|
| + if (input_params.IsValid()) {
|
| + bits_per_sample = input_params.bits_per_sample();
|
| + channel_layout = input_params.channel_layout();
|
| + input_channels = input_params.input_channels();
|
| + buffer_size = std::min(kMaximumBufferSize,
|
| + input_params.frames_per_buffer());
|
| + sample_rate = input_params.sample_rate();
|
| + }
|
| +
|
| int user_buffer_size = GetUserBufferSize();
|
| - int buffer_size = user_buffer_size ?
|
| - user_buffer_size : kDefaultInputBufferSize;
|
| + if (user_buffer_size)
|
| + buffer_size = user_buffer_size;
|
|
|
| - // TODO(xians): add support for querying native channel layout for pulse.
|
| return AudioParameters(
|
| - AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
|
| - GetNativeSampleRate(), 16, buffer_size);
|
| + AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels,
|
| + sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS);
|
| }
|
|
|
| AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream(
|
| @@ -175,13 +192,13 @@ AudioParameters AudioManagerPulse::GetPreferredOutputStreamParameters(
|
| int buffer_size = kMinimumOutputBufferSize;
|
| int bits_per_sample = 16;
|
| int input_channels = 0;
|
| - int sample_rate;
|
| + int sample_rate = 0;
|
| if (input_params.IsValid()) {
|
| bits_per_sample = input_params.bits_per_sample();
|
| channel_layout = input_params.channel_layout();
|
| input_channels = input_params.input_channels();
|
| buffer_size =
|
| - std::min(kMaximumOutputBufferSize,
|
| + std::min(kMaximumBufferSize,
|
| std::max(buffer_size, input_params.frames_per_buffer()));
|
| sample_rate = input_params.sample_rate();
|
| } else {
|
|
|