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