Remove support for setting mobile aec

This commit is contained in:
Jim Gustafson 2024-05-07 15:54:57 -07:00
parent 166228f04e
commit 16dbd7a436
8 changed files with 16 additions and 60 deletions

View file

@ -151,9 +151,6 @@ class AudioDeviceModule : public webrtc::RefCountInterface {
virtual bool BuiltInAECIsAvailable() const = 0; virtual bool BuiltInAECIsAvailable() const = 0;
virtual bool BuiltInAGCIsAvailable() const = 0; virtual bool BuiltInAGCIsAvailable() const = 0;
virtual bool BuiltInNSIsAvailable() const = 0; virtual bool BuiltInNSIsAvailable() const = 0;
// RingRTC change to allow control of AEC3 vs AECM
// When using software AEC, use AECM instead of AEC3.
virtual bool UseAecm() const { return false; }
// Enables the built-in audio effects. Only supported on Android. // Enables the built-in audio effects. Only supported on Android.
virtual int32_t EnableBuiltInAEC(bool enable) = 0; virtual int32_t EnableBuiltInAEC(bool enable) = 0;

View file

@ -612,8 +612,8 @@ void WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
if (options.echo_cancellation) { if (options.echo_cancellation) {
apm_config.echo_canceller.enabled = *options.echo_cancellation; apm_config.echo_canceller.enabled = *options.echo_cancellation;
// RingRTC change to allow control of AEC3 vs AECM // RingRTC change to disable AECM
apm_config.echo_canceller.mobile_mode = adm()->UseAecm(); apm_config.echo_canceller.mobile_mode = false;
} }
if (options.auto_gain_control) { if (options.auto_gain_control) {

View file

@ -150,8 +150,6 @@ class RingRTCAudioDeviceModule : public AudioDeviceModule {
bool BuiltInAECIsAvailable() const override { return false; } bool BuiltInAECIsAvailable() const override { return false; }
bool BuiltInAGCIsAvailable() const override { return false; } bool BuiltInAGCIsAvailable() const override { return false; }
bool BuiltInNSIsAvailable() const override { return false; } bool BuiltInNSIsAvailable() const override { return false; }
// When using software AEC, use AECM instead of AEC3.
bool UseAecm() const override { return false; }
// Enables the built-in audio effects. Only supported on Android. // Enables the built-in audio effects. Only supported on Android.
int32_t EnableBuiltInAEC(bool enable) override { return -1; } int32_t EnableBuiltInAEC(bool enable) override { return -1; }

View file

@ -50,8 +50,6 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
private boolean useStereoOutput; private boolean useStereoOutput;
private AudioAttributes audioAttributes; private AudioAttributes audioAttributes;
private boolean useLowLatency; private boolean useLowLatency;
// RingRTC change to allow control of AEC3 vs AECM
private boolean useAecm;
private boolean enableVolumeLogger; private boolean enableVolumeLogger;
private Builder(Context context) { private Builder(Context context) {
@ -60,7 +58,6 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
this.inputSampleRate = WebRtcAudioManager.getSampleRate(audioManager); this.inputSampleRate = WebRtcAudioManager.getSampleRate(audioManager);
this.outputSampleRate = WebRtcAudioManager.getSampleRate(audioManager); this.outputSampleRate = WebRtcAudioManager.getSampleRate(audioManager);
this.useLowLatency = false; this.useLowLatency = false;
this.useAecm = false;
this.enableVolumeLogger = true; this.enableVolumeLogger = true;
} }
@ -218,15 +215,6 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
return this; return this;
} }
// RingRTC change to allow control of AEC3 vs AECM
/**
* Control if AECM is used or AEC3. The default is AEC3.
*/
public Builder setUseAecm(boolean useAecm) {
this.useAecm = useAecm;
return this;
}
/** Disables the volume logger on the audio output track. */ /** Disables the volume logger on the audio output track. */
public Builder setEnableVolumeLogger(boolean enableVolumeLogger) { public Builder setEnableVolumeLogger(boolean enableVolumeLogger) {
this.enableVolumeLogger = enableVolumeLogger; this.enableVolumeLogger = enableVolumeLogger;
@ -272,7 +260,7 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
new WebRtcAudioTrack(context, audioManager, audioAttributes, audioTrackErrorCallback, new WebRtcAudioTrack(context, audioManager, audioAttributes, audioTrackErrorCallback,
audioTrackStateCallback, useLowLatency, enableVolumeLogger); audioTrackStateCallback, useLowLatency, enableVolumeLogger);
return new JavaAudioDeviceModule(context, audioManager, audioInput, audioOutput, return new JavaAudioDeviceModule(context, audioManager, audioInput, audioOutput,
inputSampleRate, outputSampleRate, useStereoInput, useStereoOutput, useAecm); inputSampleRate, outputSampleRate, useStereoInput, useStereoOutput);
} }
} }
@ -380,15 +368,13 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
private final int outputSampleRate; private final int outputSampleRate;
private final boolean useStereoInput; private final boolean useStereoInput;
private final boolean useStereoOutput; private final boolean useStereoOutput;
private final boolean useAecm;
private final Object nativeLock = new Object(); private final Object nativeLock = new Object();
private long nativeAudioDeviceModule; private long nativeAudioDeviceModule;
private JavaAudioDeviceModule(Context context, AudioManager audioManager, private JavaAudioDeviceModule(Context context, AudioManager audioManager,
WebRtcAudioRecord audioInput, WebRtcAudioTrack audioOutput, int inputSampleRate, WebRtcAudioRecord audioInput, WebRtcAudioTrack audioOutput, int inputSampleRate,
int outputSampleRate, boolean useStereoInput, boolean useStereoOutput, int outputSampleRate, boolean useStereoInput, boolean useStereoOutput) {
boolean useAecm) {
this.context = context; this.context = context;
this.audioManager = audioManager; this.audioManager = audioManager;
this.audioInput = audioInput; this.audioInput = audioInput;
@ -397,7 +383,6 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
this.outputSampleRate = outputSampleRate; this.outputSampleRate = outputSampleRate;
this.useStereoInput = useStereoInput; this.useStereoInput = useStereoInput;
this.useStereoOutput = useStereoOutput; this.useStereoOutput = useStereoOutput;
this.useAecm = useAecm;
} }
@Override @Override
@ -405,8 +390,7 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
synchronized (nativeLock) { synchronized (nativeLock) {
if (nativeAudioDeviceModule == 0) { if (nativeAudioDeviceModule == 0) {
nativeAudioDeviceModule = nativeCreateAudioDeviceModule(context, audioManager, audioInput, nativeAudioDeviceModule = nativeCreateAudioDeviceModule(context, audioManager, audioInput,
audioOutput, inputSampleRate, outputSampleRate, useStereoInput, useStereoOutput, audioOutput, inputSampleRate, outputSampleRate, useStereoInput, useStereoOutput);
useAecm);
} }
return nativeAudioDeviceModule; return nativeAudioDeviceModule;
} }
@ -454,6 +438,5 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
private static native long nativeCreateAudioDeviceModule(Context context, private static native long nativeCreateAudioDeviceModule(Context context,
AudioManager audioManager, WebRtcAudioRecord audioInput, WebRtcAudioTrack audioOutput, AudioManager audioManager, WebRtcAudioRecord audioInput, WebRtcAudioTrack audioOutput,
int inputSampleRate, int outputSampleRate, boolean useStereoInput, boolean useStereoOutput, int inputSampleRate, int outputSampleRate, boolean useStereoInput, boolean useStereoOutput);
boolean useAecm);
} }

View file

@ -70,8 +70,7 @@ rtc::scoped_refptr<AudioDeviceModule> CreateAAudioAudioDeviceModule(
false /* use_stereo_output */, false /* use_stereo_output */,
jni::kLowLatencyModeDelayEstimateInMilliseconds, jni::kLowLatencyModeDelayEstimateInMilliseconds,
std::make_unique<jni::AAudioRecorder>(input_parameters), std::make_unique<jni::AAudioRecorder>(input_parameters),
std::make_unique<jni::AAudioPlayer>(output_parameters), std::make_unique<jni::AAudioPlayer>(output_parameters));
false /* use_aecm */);
} }
rtc::scoped_refptr<AudioDeviceModule> rtc::scoped_refptr<AudioDeviceModule>
@ -125,8 +124,7 @@ rtc::scoped_refptr<AudioDeviceModule> CreateJavaAudioDeviceModule(
AudioDeviceModule::kAndroidJavaAudio, false /* use_stereo_input */, AudioDeviceModule::kAndroidJavaAudio, false /* use_stereo_input */,
false /* use_stereo_output */, false /* use_stereo_output */,
jni::kHighLatencyModeDelayEstimateInMilliseconds, std::move(audio_input), jni::kHighLatencyModeDelayEstimateInMilliseconds, std::move(audio_input),
std::move(audio_output), std::move(audio_output));
false /* use_aecm */);
} }
rtc::scoped_refptr<AudioDeviceModule> CreateOpenSLESAudioDeviceModule( rtc::scoped_refptr<AudioDeviceModule> CreateOpenSLESAudioDeviceModule(
@ -149,8 +147,7 @@ rtc::scoped_refptr<AudioDeviceModule> CreateOpenSLESAudioDeviceModule(
AudioDeviceModule::kAndroidOpenSLESAudio, false /* use_stereo_input */, AudioDeviceModule::kAndroidOpenSLESAudio, false /* use_stereo_input */,
false /* use_stereo_output */, false /* use_stereo_output */,
jni::kLowLatencyModeDelayEstimateInMilliseconds, std::move(audio_input), jni::kLowLatencyModeDelayEstimateInMilliseconds, std::move(audio_input),
std::move(audio_output), std::move(audio_output));
false /* use_aecm */);
} }
rtc::scoped_refptr<AudioDeviceModule> rtc::scoped_refptr<AudioDeviceModule>
@ -179,8 +176,7 @@ CreateJavaInputAndOpenSLESOutputAudioDeviceModule(JNIEnv* env,
AudioDeviceModule::kAndroidJavaInputAndOpenSLESOutputAudio, AudioDeviceModule::kAndroidJavaInputAndOpenSLESOutputAudio,
false /* use_stereo_input */, false /* use_stereo_output */, false /* use_stereo_input */, false /* use_stereo_output */,
jni::kLowLatencyModeDelayEstimateInMilliseconds, std::move(audio_input), jni::kLowLatencyModeDelayEstimateInMilliseconds, std::move(audio_input),
std::move(audio_output), std::move(audio_output));
false /* use_aecm */);
} }
rtc::scoped_refptr<AudioDeviceModule> CreateAndroidAudioDeviceModule( rtc::scoped_refptr<AudioDeviceModule> CreateAndroidAudioDeviceModule(

View file

@ -59,9 +59,7 @@ class AndroidAudioDeviceModule : public AudioDeviceModule {
bool is_stereo_record_supported, bool is_stereo_record_supported,
uint16_t playout_delay_ms, uint16_t playout_delay_ms,
std::unique_ptr<AudioInput> audio_input, std::unique_ptr<AudioInput> audio_input,
std::unique_ptr<AudioOutput> audio_output, std::unique_ptr<AudioOutput> audio_output)
// RingRTC change to allow control of AEC3 vs AEC3
bool use_aecm)
: audio_layer_(audio_layer), : audio_layer_(audio_layer),
is_stereo_playout_supported_(is_stereo_playout_supported), is_stereo_playout_supported_(is_stereo_playout_supported),
is_stereo_record_supported_(is_stereo_record_supported), is_stereo_record_supported_(is_stereo_record_supported),
@ -69,7 +67,6 @@ class AndroidAudioDeviceModule : public AudioDeviceModule {
task_queue_factory_(CreateDefaultTaskQueueFactory()), task_queue_factory_(CreateDefaultTaskQueueFactory()),
input_(std::move(audio_input)), input_(std::move(audio_input)),
output_(std::move(audio_output)), output_(std::move(audio_output)),
use_aecm_(use_aecm),
initialized_(false) { initialized_(false) {
RTC_CHECK(input_); RTC_CHECK(input_);
RTC_CHECK(output_); RTC_CHECK(output_);
@ -545,13 +542,6 @@ class AndroidAudioDeviceModule : public AudioDeviceModule {
return isAvailable; return isAvailable;
} }
// RingRTC change to allow control of AEC3 vs AECM
bool UseAecm() const override {
RTC_DLOG(LS_INFO) << __FUNCTION__;
RTC_DLOG(LS_INFO) << "output: " << use_aecm_;
return use_aecm_;
}
// TODO(henrika): add implementation for OpenSL ES based audio as well. // TODO(henrika): add implementation for OpenSL ES based audio as well.
int32_t EnableBuiltInAEC(bool enable) override { int32_t EnableBuiltInAEC(bool enable) override {
RTC_DLOG(LS_INFO) << __FUNCTION__ << "(" << enable << ")"; RTC_DLOG(LS_INFO) << __FUNCTION__ << "(" << enable << ")";
@ -609,7 +599,6 @@ class AndroidAudioDeviceModule : public AudioDeviceModule {
const std::unique_ptr<AudioInput> input_; const std::unique_ptr<AudioInput> input_;
const std::unique_ptr<AudioOutput> output_; const std::unique_ptr<AudioOutput> output_;
std::unique_ptr<AudioDeviceBuffer> audio_device_buffer_; std::unique_ptr<AudioDeviceBuffer> audio_device_buffer_;
const bool use_aecm_ = false;
bool initialized_; bool initialized_;
}; };
@ -664,13 +653,11 @@ rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModuleFromInputAndOutput(
bool is_stereo_record_supported, bool is_stereo_record_supported,
uint16_t playout_delay_ms, uint16_t playout_delay_ms,
std::unique_ptr<AudioInput> audio_input, std::unique_ptr<AudioInput> audio_input,
std::unique_ptr<AudioOutput> audio_output, std::unique_ptr<AudioOutput> audio_output) {
// RingRTC change to allow control of AEC3 vs AECM
bool use_aecm) {
RTC_DLOG(LS_INFO) << __FUNCTION__; RTC_DLOG(LS_INFO) << __FUNCTION__;
return rtc::make_ref_counted<AndroidAudioDeviceModule>( return rtc::make_ref_counted<AndroidAudioDeviceModule>(
audio_layer, is_stereo_playout_supported, is_stereo_record_supported, audio_layer, is_stereo_playout_supported, is_stereo_record_supported,
playout_delay_ms, std::move(audio_input), std::move(audio_output), use_aecm); playout_delay_ms, std::move(audio_input), std::move(audio_output));
} }
} // namespace jni } // namespace jni

View file

@ -100,9 +100,7 @@ rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModuleFromInputAndOutput(
bool is_stereo_record_supported, bool is_stereo_record_supported,
uint16_t playout_delay_ms, uint16_t playout_delay_ms,
std::unique_ptr<AudioInput> audio_input, std::unique_ptr<AudioInput> audio_input,
std::unique_ptr<AudioOutput> audio_output, std::unique_ptr<AudioOutput> audio_output);
// RingRTC change to allow control of AEC3 vs AECM
bool use_aecm);
} // namespace jni } // namespace jni

View file

@ -27,9 +27,7 @@ static jlong JNI_JavaAudioDeviceModule_CreateAudioDeviceModule(
int input_sample_rate, int input_sample_rate,
int output_sample_rate, int output_sample_rate,
jboolean j_use_stereo_input, jboolean j_use_stereo_input,
jboolean j_use_stereo_output, jboolean j_use_stereo_output) {
// RingRTC change to allow control of AEC3 vs AECM
jboolean j_use_aecm) {
AudioParameters input_parameters; AudioParameters input_parameters;
AudioParameters output_parameters; AudioParameters output_parameters;
GetAudioParameters(env, j_context, j_audio_manager, input_sample_rate, GetAudioParameters(env, j_context, j_audio_manager, input_sample_rate,
@ -45,8 +43,7 @@ static jlong JNI_JavaAudioDeviceModule_CreateAudioDeviceModule(
AudioDeviceModule::kAndroidJavaAudio, AudioDeviceModule::kAndroidJavaAudio,
j_use_stereo_input, j_use_stereo_output, j_use_stereo_input, j_use_stereo_output,
kHighLatencyModeDelayEstimateInMilliseconds, kHighLatencyModeDelayEstimateInMilliseconds,
std::move(audio_input), std::move(audio_output), std::move(audio_input), std::move(audio_output))
j_use_aecm)
.release()); .release());
} }