Improving support for Android Audio Effects in WebRTC.
Now also supports AGC and NS effects and adds the possibility to override default settings. R=magjed@webrtc.org, pbos@webrtc.org, sophiechang@chromium.org TBR=perkj BUG=NONE Review URL: https://codereview.webrtc.org/1344563002 . Cr-Commit-Position: refs/heads/master@{#10030}
This commit is contained in:
@ -68,13 +68,15 @@ AudioManager::AudioManager()
|
||||
audio_layer_(AudioDeviceModule::kPlatformDefaultAudio),
|
||||
initialized_(false),
|
||||
hardware_aec_(false),
|
||||
hardware_agc_(false),
|
||||
hardware_ns_(false),
|
||||
low_latency_playout_(false),
|
||||
delay_estimate_in_milliseconds_(0) {
|
||||
ALOGD("ctor%s", GetThreadInfo().c_str());
|
||||
RTC_CHECK(j_environment_);
|
||||
JNINativeMethod native_methods[] = {
|
||||
{"nativeCacheAudioParameters",
|
||||
"(IIZZIIJ)V",
|
||||
"(IIZZZZIIJ)V",
|
||||
reinterpret_cast<void*>(&webrtc::AudioManager::CacheAudioParameters)}};
|
||||
j_native_registration_ = j_environment_->RegisterNatives(
|
||||
"org/webrtc/voiceengine/WebRtcAudioManager",
|
||||
@ -144,6 +146,16 @@ bool AudioManager::IsAcousticEchoCancelerSupported() const {
|
||||
return hardware_aec_;
|
||||
}
|
||||
|
||||
bool AudioManager::IsAutomaticGainControlSupported() const {
|
||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||
return hardware_agc_;
|
||||
}
|
||||
|
||||
bool AudioManager::IsNoiseSuppressorSupported() const {
|
||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||
return hardware_ns_;
|
||||
}
|
||||
|
||||
bool AudioManager::IsLowLatencyPlayoutSupported() const {
|
||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||
ALOGD("IsLowLatencyPlayoutSupported()");
|
||||
@ -162,6 +174,8 @@ void JNICALL AudioManager::CacheAudioParameters(JNIEnv* env,
|
||||
jint sample_rate,
|
||||
jint channels,
|
||||
jboolean hardware_aec,
|
||||
jboolean hardware_agc,
|
||||
jboolean hardware_ns,
|
||||
jboolean low_latency_output,
|
||||
jint output_buffer_size,
|
||||
jint input_buffer_size,
|
||||
@ -169,19 +183,23 @@ void JNICALL AudioManager::CacheAudioParameters(JNIEnv* env,
|
||||
webrtc::AudioManager* this_object =
|
||||
reinterpret_cast<webrtc::AudioManager*>(native_audio_manager);
|
||||
this_object->OnCacheAudioParameters(
|
||||
env, sample_rate, channels, hardware_aec, low_latency_output,
|
||||
output_buffer_size, input_buffer_size);
|
||||
env, sample_rate, channels, hardware_aec, hardware_agc, hardware_ns,
|
||||
low_latency_output, output_buffer_size, input_buffer_size);
|
||||
}
|
||||
|
||||
void AudioManager::OnCacheAudioParameters(JNIEnv* env,
|
||||
jint sample_rate,
|
||||
jint channels,
|
||||
jboolean hardware_aec,
|
||||
jboolean hardware_agc,
|
||||
jboolean hardware_ns,
|
||||
jboolean low_latency_output,
|
||||
jint output_buffer_size,
|
||||
jint input_buffer_size) {
|
||||
ALOGD("OnCacheAudioParameters%s", GetThreadInfo().c_str());
|
||||
ALOGD("hardware_aec: %d", hardware_aec);
|
||||
ALOGD("hardware_agc: %d", hardware_agc);
|
||||
ALOGD("hardware_ns: %d", hardware_ns);
|
||||
ALOGD("low_latency_output: %d", low_latency_output);
|
||||
ALOGD("sample_rate: %d", sample_rate);
|
||||
ALOGD("channels: %d", channels);
|
||||
@ -189,6 +207,8 @@ void AudioManager::OnCacheAudioParameters(JNIEnv* env,
|
||||
ALOGD("input_buffer_size: %d", input_buffer_size);
|
||||
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
||||
hardware_aec_ = hardware_aec;
|
||||
hardware_agc_ = hardware_agc;
|
||||
hardware_ns_ = hardware_ns;
|
||||
low_latency_playout_ = low_latency_output;
|
||||
// TODO(henrika): add support for stereo output.
|
||||
playout_parameters_.reset(sample_rate, channels,
|
||||
|
||||
Reference in New Issue
Block a user