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( ...@@ -123,13 +123,18 @@ AudioParameters AudioManagerAndroid::GetInputStreamParameters(
int buffer_size = Java_AudioManagerAndroid_getMinInputFrameSize( int buffer_size = Java_AudioManagerAndroid_getMinInputFrameSize(
env, GetNativeOutputSampleRate(), env, GetNativeOutputSampleRate(),
ChannelLayoutToChannelCount(channel_layout)); ChannelLayoutToChannelCount(channel_layout));
buffer_size = buffer_size <= 0 ? kDefaultInputBufferSize : buffer_size;
int effects = AudioParameters::NO_EFFECTS; int effects = AudioParameters::NO_EFFECTS;
effects |= Java_AudioManagerAndroid_shouldUseAcousticEchoCanceler(env) ? effects |= Java_AudioManagerAndroid_shouldUseAcousticEchoCanceler(env) ?
AudioParameters::ECHO_CANCELLER : AudioParameters::NO_EFFECTS; AudioParameters::ECHO_CANCELLER : AudioParameters::NO_EFFECTS;
int user_buffer_size = GetUserBufferSize();
if (user_buffer_size)
buffer_size = user_buffer_size;
AudioParameters params( AudioParameters params(
AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, 0, AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, 0,
GetNativeOutputSampleRate(), 16, GetNativeOutputSampleRate(), 16, buffer_size, effects);
buffer_size <= 0 ? kDefaultInputBufferSize : buffer_size, effects);
return params; return params;
} }
......
...@@ -41,6 +41,9 @@ static const int kDefaultSampleRate = 48000; ...@@ -41,6 +41,9 @@ static const int kDefaultSampleRate = 48000;
static const int kMinimumOutputBufferSize = 512; static const int kMinimumOutputBufferSize = 512;
static const int kMaximumOutputBufferSize = 8192; static const int kMaximumOutputBufferSize = 8192;
// Default input buffer size.
static const int kDefaultInputBufferSize = 1024;
bool AudioManagerCras::HasAudioOutputDevices() { bool AudioManagerCras::HasAudioOutputDevices() {
return true; return true;
} }
...@@ -74,12 +77,15 @@ void AudioManagerCras::GetAudioOutputDeviceNames( ...@@ -74,12 +77,15 @@ void AudioManagerCras::GetAudioOutputDeviceNames(
AudioParameters AudioManagerCras::GetInputStreamParameters( AudioParameters AudioManagerCras::GetInputStreamParameters(
const std::string& device_id) { 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 // TODO(hshi): Fine-tune audio parameters based on |device_id|. The optimal
// parameters for the loopback stream may differ from the default. // parameters for the loopback stream may differ from the default.
return AudioParameters( return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
kDefaultSampleRate, 16, kDefaultInputBufferSize); kDefaultSampleRate, 16, buffer_size);
} }
AudioOutputStream* AudioManagerCras::MakeLinearOutputStream( AudioOutputStream* AudioManagerCras::MakeLinearOutputStream(
......
...@@ -59,9 +59,13 @@ AudioParameters AudioManagerOpenBSD::GetInputStreamParameters( ...@@ -59,9 +59,13 @@ AudioParameters AudioManagerOpenBSD::GetInputStreamParameters(
const std::string& device_id) { const std::string& device_id) {
static const int kDefaultInputBufferSize = 1024; static const int kDefaultInputBufferSize = 1024;
int user_buffer_size = GetUserBufferSize();
int buffer_size = user_buffer_size ?
user_buffer_size : kDefaultInputBufferSize;
return AudioParameters( return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
kDefaultSampleRate, 16, kDefaultInputBufferSize); kDefaultSampleRate, 16, buffer_size);
} }
AudioManagerOpenBSD::AudioManagerOpenBSD(AudioLogFactory* audio_log_factory) AudioManagerOpenBSD::AudioManagerOpenBSD(AudioLogFactory* audio_log_factory)
......
...@@ -39,6 +39,9 @@ static const int kMaxOutputStreams = 50; ...@@ -39,6 +39,9 @@ static const int kMaxOutputStreams = 50;
static const int kMinimumOutputBufferSize = 512; static const int kMinimumOutputBufferSize = 512;
static const int kMaximumOutputBufferSize = 8192; static const int kMaximumOutputBufferSize = 8192;
// Default input buffer size.
static const int kDefaultInputBufferSize = 1024;
static const base::FilePath::CharType kPulseLib[] = static const base::FilePath::CharType kPulseLib[] =
FILE_PATH_LITERAL("libpulse.so.0"); FILE_PATH_LITERAL("libpulse.so.0");
...@@ -125,12 +128,14 @@ void AudioManagerPulse::GetAudioOutputDeviceNames( ...@@ -125,12 +128,14 @@ void AudioManagerPulse::GetAudioOutputDeviceNames(
AudioParameters AudioManagerPulse::GetInputStreamParameters( AudioParameters AudioManagerPulse::GetInputStreamParameters(
const std::string& device_id) { 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. // TODO(xians): add support for querying native channel layout for pulse.
return AudioParameters( return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
GetNativeSampleRate(), 16, kDefaultInputBufferSize); GetNativeSampleRate(), 16, buffer_size);
} }
AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream( AudioOutputStream* AudioManagerPulse::MakeLinearOutputStream(
......
...@@ -301,13 +301,25 @@ void AudioManagerWin::GetAudioOutputDeviceNames( ...@@ -301,13 +301,25 @@ void AudioManagerWin::GetAudioOutputDeviceNames(
AudioParameters AudioManagerWin::GetInputStreamParameters( AudioParameters AudioManagerWin::GetInputStreamParameters(
const std::string& device_id) { const std::string& device_id) {
AudioParameters parameters;
if (!core_audio_supported()) { if (!core_audio_supported()) {
return AudioParameters( // Windows Wave implementation is being used.
parameters = AudioParameters(
AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO, 0, 48000, AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO, 0, 48000,
16, kFallbackBufferSize, AudioParameters::NO_EFFECTS); 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( 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