| Index: media/audio/android/audio_manager_android.cc
|
| diff --git a/media/audio/android/audio_manager_android.cc b/media/audio/android/audio_manager_android.cc
|
| index 48f203ab74e8bb1d3bc4ab395fc301757db3a7a6..8c600691fc5dc382b72ff5394e9d49505c669f91 100644
|
| --- a/media/audio/android/audio_manager_android.cc
|
| +++ b/media/audio/android/audio_manager_android.cc
|
| @@ -116,8 +116,9 @@ void AudioManagerAndroid::GetAudioOutputDeviceNames(
|
| AddDefaultDevice(device_names);
|
| }
|
|
|
| -AudioParameters AudioManagerAndroid::GetInputStreamParameters(
|
| - const std::string& device_id) {
|
| +AudioParameters AudioManagerAndroid::GetPreferredInputStreamParameters(
|
| + const std::string& input_device_id,
|
| + const AudioParameters& input_params) {
|
| DCHECK(GetTaskRunner()->BelongsToCurrentThread());
|
|
|
| // Use mono as preferred number of input channels on Android to save
|
| @@ -125,6 +126,8 @@ AudioParameters AudioManagerAndroid::GetInputStreamParameters(
|
| // Galaxy S3 and S4 devices. See http://crbug.com/256851 for details.
|
| JNIEnv* env = AttachCurrentThread();
|
| ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO;
|
| + int sample_rate = GetNativeOutputSampleRate();
|
| + int bits_per_sample = 16;
|
| int buffer_size = Java_AudioManagerAndroid_getMinInputFrameSize(
|
| env, GetNativeOutputSampleRate(),
|
| ChannelLayoutToChannelCount(channel_layout));
|
| @@ -133,14 +136,23 @@ AudioParameters AudioManagerAndroid::GetInputStreamParameters(
|
| effects |= Java_AudioManagerAndroid_shouldUseAcousticEchoCanceler(env) ?
|
| AudioParameters::ECHO_CANCELLER : AudioParameters::NO_EFFECTS;
|
|
|
| + if (input_params.IsValid()) {
|
| + // Use the client's input parameters if they are valid.
|
| + sample_rate = input_params.sample_rate();
|
| + bits_per_sample = input_params.bits_per_sample();
|
| + channel_layout = input_params.channel_layout();
|
| + buffer_size = GetOptimalOutputFrameSize(
|
| + sample_rate, ChannelLayoutToChannelCount(channel_layout));
|
| + effects |= input_params.effects();
|
| + }
|
| +
|
| int user_buffer_size = GetUserBufferSize();
|
| if (user_buffer_size)
|
| buffer_size = user_buffer_size;
|
|
|
| - AudioParameters params(
|
| + return AudioParameters(
|
| AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, 0,
|
| - GetNativeOutputSampleRate(), 16, buffer_size, effects);
|
| - return params;
|
| + sample_rate, bits_per_sample, buffer_size, effects);
|
| }
|
|
|
| AudioOutputStream* AudioManagerAndroid::MakeAudioOutputStream(
|
|
|