Commit 3520beb6 authored by xians@chromium.org's avatar xians@chromium.org

add audio-buffer-size command line flag support to the input audio for all the platforms.

This is required to do some experiments with low buffer size for input audio.

BUG=363958
TEST=manual test with audio-buffer-size flag

Review URL: https://codereview.chromium.org/285233005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271673 0039d316-1c4b-4281-b951-d872f2087c98
parent 803f6bf6
......@@ -123,13 +123,18 @@ AudioParameters AudioManagerAndroid::GetInputStreamParameters(
int buffer_size = Java_AudioManagerAndroid_getMinInputFrameSize(
env, GetNativeOutputSampleRate(),
ChannelLayoutToChannelCount(channel_layout));
buffer_size = buffer_size <= 0 ? kDefaultInputBufferSize : buffer_size;
int effects = AudioParameters::NO_EFFECTS;
effects |= Java_AudioManagerAndroid_shouldUseAcousticEchoCanceler(env) ?
AudioParameters::ECHO_CANCELLER : AudioParameters::NO_EFFECTS;
int user_buffer_size = GetUserBufferSize();
if (user_buffer_size)
buffer_size = user_buffer_size;
AudioParameters params(
AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, 0,
GetNativeOutputSampleRate(), 16,
buffer_size <= 0 ? kDefaultInputBufferSize : buffer_size, effects);
GetNativeOutputSampleRate(), 16, buffer_size, effects);
return params;
}
......
......@@ -41,6 +41,9 @@ static const int kDefaultSampleRate = 48000;
static const int kMinimumOutputBufferSize = 512;
static const int kMaximumOutputBufferSize = 8192;
// Default input buffer size.
static const int kDefaultInputBufferSize = 1024;
bool AudioManagerCras::HasAudioOutputDevices() {
return true;
}
......@@ -74,12 +77,15 @@ void AudioManagerCras::GetAudioOutputDeviceNames(
AudioParameters AudioManagerCras::GetInputStreamParameters(
const std::string& device_id) {
static const int kDefaultInputBufferSize = 1024;
int user_buffer_size = GetUserBufferSize();
int buffer_size = user_buffer_size ?
user_buffer_size : kDefaultInputBufferSize;
// 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, kDefaultInputBufferSize);
kDefaultSampleRate, 16, buffer_size);
}
AudioOutputStream* AudioManagerCras::MakeLinearOutputStream(
......
......@@ -59,9 +59,13 @@ AudioParameters AudioManagerOpenBSD::GetInputStreamParameters(
const std::string& device_id) {
static const int kDefaultInputBufferSize = 1024;
int user_buffer_size = GetUserBufferSize();
int buffer_size = user_buffer_size ?
user_buffer_size : kDefaultInputBufferSize;
return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
kDefaultSampleRate, 16, kDefaultInputBufferSize);
kDefaultSampleRate, 16, buffer_size);
}
AudioManagerOpenBSD::AudioManagerOpenBSD(AudioLogFactory* audio_log_factory)
......
......@@ -39,6 +39,9 @@ static const int kMaxOutputStreams = 50;
static const int kMinimumOutputBufferSize = 512;
static const int kMaximumOutputBufferSize = 8192;
// Default input buffer size.
static const int kDefaultInputBufferSize = 1024;
static const base::FilePath::CharType kPulseLib[] =
FILE_PATH_LITERAL("libpulse.so.0");
......@@ -125,12 +128,14 @@ void AudioManagerPulse::GetAudioOutputDeviceNames(
AudioParameters AudioManagerPulse::GetInputStreamParameters(
const std::string& device_id) {
static const int kDefaultInputBufferSize = 1024;
int user_buffer_size = GetUserBufferSize();
int buffer_size = user_buffer_size ?
user_buffer_size : kDefaultInputBufferSize;
// TODO(xians): add support for querying native channel layout for pulse.
return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
GetNativeSampleRate(), 16, kDefaultInputBufferSize);
GetNativeSampleRate(), 16, buffer_size);
}
AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream(
......
......@@ -301,13 +301,25 @@ void AudioManagerWin::GetAudioOutputDeviceNames(
AudioParameters AudioManagerWin::GetInputStreamParameters(
const std::string& device_id) {
AudioParameters parameters;
if (!core_audio_supported()) {
return AudioParameters(
// Windows Wave implementation is being used.
parameters = AudioParameters(
AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO, 0, 48000,
16, kFallbackBufferSize, AudioParameters::NO_EFFECTS);
} else {
parameters = WASAPIAudioInputStream::GetInputStreamParameters(device_id);
}
return WASAPIAudioInputStream::GetInputStreamParameters(device_id);
int user_buffer_size = GetUserBufferSize();
if (user_buffer_size) {
parameters.Reset(parameters.format(), parameters.channel_layout(),
parameters.channels(), parameters.input_channels(),
parameters.sample_rate(), parameters.bits_per_sample(),
user_buffer_size);
}
return parameters;
}
std::string AudioManagerWin::GetAssociatedOutputDeviceID(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment