Index: media/audio/cras/audio_manager_cras.cc |
diff --git a/media/audio/cras/audio_manager_cras.cc b/media/audio/cras/audio_manager_cras.cc |
index abc78dd4b78257c2602e31d2027472b94f5549c7..0d06fbe94be689362e2a4e033226be74b52a8861 100644 |
--- a/media/audio/cras/audio_manager_cras.cc |
+++ b/media/audio/cras/audio_manager_cras.cc |
@@ -37,9 +37,11 @@ static const int kMaxOutputStreams = 50; |
// Default sample rate for input and output streams. |
static const int kDefaultSampleRate = 48000; |
-// 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; |
@@ -75,17 +77,33 @@ void AudioManagerCras::GetAudioOutputDeviceNames( |
AddDefaultDevice(device_names); |
} |
-AudioParameters AudioManagerCras::GetInputStreamParameters( |
- const std::string& device_id) { |
+AudioParameters AudioManagerCras::GetPreferredInputStreamParameters( |
+ const std::string& input_device_id, |
+ const AudioParameters& input_params) { |
+ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
+ int sample_rate = kDefaultSampleRate; |
+ int buffer_size = kDefaultInputBufferSize; |
+ int bits_per_sample = 16; |
+ int input_channels = 0; |
+ if (input_params.IsValid()) { |
+ sample_rate = input_params.sample_rate(); |
+ 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()); |
+ } |
+ |
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(hshi): Fine-tune audio parameters based on |device_id|. The optimal |
// parameters for the loopback stream may differ from the default. |
return AudioParameters( |
- AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, |
- kDefaultSampleRate, 16, buffer_size); |
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, |
+ sample_rate, bits_per_sample, buffer_size); |
} |
AudioOutputStream* AudioManagerCras::MakeLinearOutputStream( |