| Index: webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java
|
| diff --git a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java
|
| index 0b0cbe4711dfd04ebe45f52b2d39f76960763334..42d941f47fe7e67d442053df569dcc0614f40fa6 100644
|
| --- a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java
|
| +++ b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java
|
| @@ -211,10 +211,10 @@ class WebRtcAudioEffects {
|
| for (Descriptor d : AudioEffect.queryEffects()) {
|
| if (effectTypeIsVoIP(d.type)) {
|
| // Only log information for VoIP effects (AEC, AEC and NS).
|
| - Logging.d(TAG, "name: " + d.name + ", " +
|
| - "mode: " + d.connectMode + ", " +
|
| - "implementor: " + d.implementor + ", " +
|
| - "UUID: " + d.uuid);
|
| + Logging.d(TAG, "name: " + d.name + ", "
|
| + + "mode: " + d.connectMode + ", "
|
| + + "implementor: " + d.implementor + ", "
|
| + + "UUID: " + d.uuid);
|
| }
|
| }
|
| }
|
| @@ -292,10 +292,11 @@ class WebRtcAudioEffects {
|
| if (aec.setEnabled(enable) != AudioEffect.SUCCESS) {
|
| Logging.e(TAG, "Failed to set the AcousticEchoCanceler state");
|
| }
|
| - Logging.d(TAG, "AcousticEchoCanceler: was " +
|
| - (enabled ? "enabled" : "disabled") +
|
| - ", enable: " + enable + ", is now: " +
|
| - (aec.getEnabled() ? "enabled" : "disabled"));
|
| + Logging.d(TAG, "AcousticEchoCanceler: was "
|
| + + (enabled ? "enabled" : "disabled")
|
| + + ", enable: " + enable + ", is now: "
|
| + + (aec.getEnabled() ? "enabled" : "disabled")
|
| + + ", has control: " + aec.hasControl());
|
| } else {
|
| Logging.e(TAG, "Failed to create the AcousticEchoCanceler instance");
|
| }
|
| @@ -311,10 +312,11 @@ class WebRtcAudioEffects {
|
| if (agc.setEnabled(enable) != AudioEffect.SUCCESS) {
|
| Logging.e(TAG, "Failed to set the AutomaticGainControl state");
|
| }
|
| - Logging.d(TAG, "AutomaticGainControl: was " +
|
| - (enabled ? "enabled" : "disabled") +
|
| - ", enable: " + enable + ", is now: " +
|
| - (agc.getEnabled() ? "enabled" : "disabled"));
|
| + Logging.d(TAG, "AutomaticGainControl: was "
|
| + + (enabled ? "enabled" : "disabled")
|
| + + ", enable: " + enable + ", is now: "
|
| + + (agc.getEnabled() ? "enabled" : "disabled")
|
| + + ", has control: " + agc.hasControl());
|
| } else {
|
| Logging.e(TAG, "Failed to create the AutomaticGainControl instance");
|
| }
|
| @@ -330,10 +332,11 @@ class WebRtcAudioEffects {
|
| if (ns.setEnabled(enable) != AudioEffect.SUCCESS) {
|
| Logging.e(TAG, "Failed to set the NoiseSuppressor state");
|
| }
|
| - Logging.d(TAG, "NoiseSuppressor: was " +
|
| - (enabled ? "enabled" : "disabled") +
|
| - ", enable: " + enable + ", is now: " +
|
| - (ns.getEnabled() ? "enabled" : "disabled"));
|
| + Logging.d(TAG, "NoiseSuppressor: was "
|
| + + (enabled ? "enabled" : "disabled")
|
| + + ", enable: " + enable + ", is now: "
|
| + + (ns.getEnabled() ? "enabled" : "disabled")
|
| + + ", has control: " + ns.hasControl());
|
| } else {
|
| Logging.e(TAG, "Failed to create the NoiseSuppressor instance");
|
| }
|
| @@ -361,11 +364,18 @@ class WebRtcAudioEffects {
|
|
|
| // Returns true for effect types in |type| that are of "VoIP" types:
|
| // Acoustic Echo Canceler (AEC) or Automatic Gain Control (AGC) or
|
| - // Noise Suppressor (NS).
|
| + // Noise Suppressor (NS). Note that, an extra check for support is needed
|
| + // in each comparison since some devices includes effects in the
|
| + // AudioEffect.Descriptor array that are actually not available on the device.
|
| + // As an example: Samsung Galaxy S6 includes an AGC in the descriptor but
|
| + // AutomaticGainControl.isAvailable() returns false.
|
| private boolean effectTypeIsVoIP(UUID type) {
|
| - return AudioEffect.EFFECT_TYPE_AEC.equals(type)
|
| - || AudioEffect.EFFECT_TYPE_AGC.equals(type)
|
| - || AudioEffect.EFFECT_TYPE_NS.equals(type);
|
| + return (AudioEffect.EFFECT_TYPE_AEC.equals(type)
|
| + && isAcousticEchoCancelerSupported())
|
| + || (AudioEffect.EFFECT_TYPE_AGC.equals(type)
|
| + && isAutomaticGainControlSupported())
|
| + || (AudioEffect.EFFECT_TYPE_NS.equals(type)
|
| + && isNoiseSuppressorSupported());
|
| }
|
|
|
| // Helper method which throws an exception when an assertion has failed.
|
|
|