.class public Lorg/webrtc/voiceengine/WebRtcAudioEffects; .super Ljava/lang/Object; .source "WebRtcAudioEffects.java" # static fields .field private static final AOSP_ACOUSTIC_ECHO_CANCELER:Ljava/util/UUID; .field private static final AOSP_NOISE_SUPPRESSOR:Ljava/util/UUID; .field private static final DEBUG:Z = false .field private static final TAG:Ljava/lang/String; = "WebRtcAudioEffects" .field private static cachedEffects:[Landroid/media/audiofx/AudioEffect$Descriptor; # instance fields .field private aec:Landroid/media/audiofx/AcousticEchoCanceler; .field private ns:Landroid/media/audiofx/NoiseSuppressor; .field private shouldEnableAec:Z .field private shouldEnableNs:Z # direct methods .method static constructor ()V .locals 1 const-string v0, "bb392ec0-8d4d-11e0-a896-0002a5d5c51b" .line 35 invoke-static {v0}, Ljava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID; move-result-object v0 sput-object v0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->AOSP_ACOUSTIC_ECHO_CANCELER:Ljava/util/UUID; const-string v0, "c06c8400-8e06-11e0-9cb6-0002a5d5c51b" .line 37 invoke-static {v0}, Ljava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID; move-result-object v0 sput-object v0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->AOSP_NOISE_SUPPRESSOR:Ljava/util/UUID; return-void .end method .method private constructor ()V .locals 1 .line 160 invoke-direct {p0}, Ljava/lang/Object;->()V .line 161 new-instance p0, Ljava/lang/StringBuilder; const-string v0, "ctor" invoke-direct {p0, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioUtils;->getThreadInfo()Ljava/lang/String; move-result-object v0 invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 const-string v0, "WebRtcAudioEffects" invoke-static {v0, p0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V return-void .end method .method private static assertTrue(Z)V .locals 1 if-eqz p0, :cond_0 return-void .line 290 :cond_0 new-instance p0, Ljava/lang/AssertionError; const-string v0, "Expected condition to be true" invoke-direct {p0, v0}, Ljava/lang/AssertionError;->(Ljava/lang/Object;)V throw p0 .end method .method public static canUseAcousticEchoCanceler()Z .locals 3 .line 139 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isAcousticEchoCancelerSupported()Z move-result v0 if-eqz v0, :cond_0 .line 140 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioUtils;->useWebRtcBasedAcousticEchoCanceler()Z move-result v0 if-nez v0, :cond_0 .line 141 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isAcousticEchoCancelerBlacklisted()Z move-result v0 if-nez v0, :cond_0 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isAcousticEchoCancelerExcludedByUUID()Z move-result v0 if-nez v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 .line 142 :goto_0 new-instance v1, Ljava/lang/StringBuilder; const-string v2, "canUseAcousticEchoCanceler: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 const-string v2, "WebRtcAudioEffects" invoke-static {v2, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V return v0 .end method .method public static canUseNoiseSuppressor()Z .locals 3 .line 149 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isNoiseSuppressorSupported()Z move-result v0 if-eqz v0, :cond_0 .line 150 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioUtils;->useWebRtcBasedNoiseSuppressor()Z move-result v0 if-nez v0, :cond_0 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isNoiseSuppressorBlacklisted()Z move-result v0 if-nez v0, :cond_0 .line 151 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isNoiseSuppressorExcludedByUUID()Z move-result v0 if-nez v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 .line 152 :goto_0 new-instance v1, Ljava/lang/StringBuilder; const-string v2, "canUseNoiseSuppressor: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 const-string v2, "WebRtcAudioEffects" invoke-static {v2, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V return v0 .end method .method public static create()Lorg/webrtc/voiceengine/WebRtcAudioEffects; .locals 1 .line 157 new-instance v0, Lorg/webrtc/voiceengine/WebRtcAudioEffects; invoke-direct {v0}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->()V return-object v0 .end method .method private effectTypeIsVoIP(Ljava/util/UUID;)Z .locals 0 .line 283 sget-object p0, Landroid/media/audiofx/AudioEffect;->EFFECT_TYPE_AEC:Ljava/util/UUID; invoke-virtual {p0, p1}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_0 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isAcousticEchoCancelerSupported()Z move-result p0 if-nez p0, :cond_1 :cond_0 sget-object p0, Landroid/media/audiofx/AudioEffect;->EFFECT_TYPE_NS:Ljava/util/UUID; .line 284 invoke-virtual {p0, p1}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_2 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isNoiseSuppressorSupported()Z move-result p0 if-eqz p0, :cond_2 :cond_1 const/4 p0, 0x1 goto :goto_0 :cond_2 const/4 p0, 0x0 :goto_0 return p0 .end method .method private static getAvailableEffects()[Landroid/media/audiofx/AudioEffect$Descriptor; .locals 1 sget-object v0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->cachedEffects:[Landroid/media/audiofx/AudioEffect$Descriptor; if-eqz v0, :cond_0 return-object v0 .line 304 :cond_0 invoke-static {}, Landroid/media/audiofx/AudioEffect;->queryEffects()[Landroid/media/audiofx/AudioEffect$Descriptor; move-result-object v0 sput-object v0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->cachedEffects:[Landroid/media/audiofx/AudioEffect$Descriptor; return-object v0 .end method .method public static isAcousticEchoCancelerBlacklisted()Z .locals 3 .line 77 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioUtils;->getBlackListedModelsForAecUsage()Ljava/util/List; move-result-object v0 .line 78 sget-object v1, Landroid/os/Build;->MODEL:Ljava/lang/String; invoke-interface {v0, v1}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_0 .line 80 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V sget-object v2, Landroid/os/Build;->MODEL:Ljava/lang/String; invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, " is blacklisted for HW AEC usage!" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 const-string v2, "WebRtcAudioEffects" invoke-static {v2, v1}, Lorg/webrtc/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V :cond_0 return v0 .end method .method private static isAcousticEchoCancelerEffectAvailable()Z .locals 1 .line 126 sget-object v0, Landroid/media/audiofx/AudioEffect;->EFFECT_TYPE_AEC:Ljava/util/UUID; invoke-static {v0}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isEffectTypeAvailable(Ljava/util/UUID;)Z move-result v0 return v0 .end method .method private static isAcousticEchoCancelerExcludedByUUID()Z .locals 7 .line 100 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->getAvailableEffects()[Landroid/media/audiofx/AudioEffect$Descriptor; move-result-object v0 array-length v1, v0 const/4 v2, 0x0 move v3, v2 :goto_0 if-ge v3, v1, :cond_1 aget-object v4, v0, v3 .line 101 iget-object v5, v4, Landroid/media/audiofx/AudioEffect$Descriptor;->type:Ljava/util/UUID; sget-object v6, Landroid/media/audiofx/AudioEffect;->EFFECT_TYPE_AEC:Ljava/util/UUID; invoke-virtual {v5, v6}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_0 iget-object v4, v4, Landroid/media/audiofx/AudioEffect$Descriptor;->uuid:Ljava/util/UUID; sget-object v5, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->AOSP_ACOUSTIC_ECHO_CANCELER:Ljava/util/UUID; .line 102 invoke-virtual {v4, v5}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_0 const/4 v0, 0x1 return v0 :cond_0 add-int/lit8 v3, v3, 0x1 goto :goto_0 :cond_1 return v2 .end method .method public static isAcousticEchoCancelerSupported()Z .locals 1 .line 63 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isAcousticEchoCancelerEffectAvailable()Z move-result v0 return v0 .end method .method private static isEffectTypeAvailable(Ljava/util/UUID;)Z .locals 5 .line 312 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->getAvailableEffects()[Landroid/media/audiofx/AudioEffect$Descriptor; move-result-object v0 const/4 v1, 0x0 if-nez v0, :cond_0 return v1 .line 316 :cond_0 array-length v2, v0 move v3, v1 :goto_0 if-ge v3, v2, :cond_2 aget-object v4, v0, v3 .line 317 iget-object v4, v4, Landroid/media/audiofx/AudioEffect$Descriptor;->type:Ljava/util/UUID; invoke-virtual {v4, p0}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_1 const/4 p0, 0x1 return p0 :cond_1 add-int/lit8 v3, v3, 0x1 goto :goto_0 :cond_2 return v1 .end method .method public static isNoiseSuppressorBlacklisted()Z .locals 3 .line 87 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioUtils;->getBlackListedModelsForNsUsage()Ljava/util/List; move-result-object v0 .line 88 sget-object v1, Landroid/os/Build;->MODEL:Ljava/lang/String; invoke-interface {v0, v1}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_0 .line 90 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V sget-object v2, Landroid/os/Build;->MODEL:Ljava/lang/String; invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, " is blacklisted for HW NS usage!" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 const-string v2, "WebRtcAudioEffects" invoke-static {v2, v1}, Lorg/webrtc/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V :cond_0 return v0 .end method .method private static isNoiseSuppressorEffectAvailable()Z .locals 1 .line 133 sget-object v0, Landroid/media/audiofx/AudioEffect;->EFFECT_TYPE_NS:Ljava/util/UUID; invoke-static {v0}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isEffectTypeAvailable(Ljava/util/UUID;)Z move-result v0 return v0 .end method .method private static isNoiseSuppressorExcludedByUUID()Z .locals 7 .line 114 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->getAvailableEffects()[Landroid/media/audiofx/AudioEffect$Descriptor; move-result-object v0 array-length v1, v0 const/4 v2, 0x0 move v3, v2 :goto_0 if-ge v3, v1, :cond_1 aget-object v4, v0, v3 .line 115 iget-object v5, v4, Landroid/media/audiofx/AudioEffect$Descriptor;->type:Ljava/util/UUID; sget-object v6, Landroid/media/audiofx/AudioEffect;->EFFECT_TYPE_NS:Ljava/util/UUID; invoke-virtual {v5, v6}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_0 iget-object v4, v4, Landroid/media/audiofx/AudioEffect$Descriptor;->uuid:Ljava/util/UUID; sget-object v5, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->AOSP_NOISE_SUPPRESSOR:Ljava/util/UUID; invoke-virtual {v4, v5}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_0 const/4 v0, 0x1 return v0 :cond_0 add-int/lit8 v3, v3, 0x1 goto :goto_0 :cond_1 return v2 .end method .method public static isNoiseSuppressorSupported()Z .locals 1 .line 72 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isNoiseSuppressorEffectAvailable()Z move-result v0 return v0 .end method # virtual methods .method public enable(I)V .locals 11 .line 203 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "enable(audioSession=" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ")" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 const-string v1, "WebRtcAudioEffects" invoke-static {v1, v0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; const/4 v2, 0x1 const/4 v3, 0x0 if-nez v0, :cond_0 move v0, v2 goto :goto_0 :cond_0 move v0, v3 .line 204 :goto_0 invoke-static {v0}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->assertTrue(Z)V iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; if-nez v0, :cond_1 move v0, v2 goto :goto_1 :cond_1 move v0, v3 .line 205 :goto_1 invoke-static {v0}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->assertTrue(Z)V .line 221 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isAcousticEchoCancelerSupported()Z move-result v0 const-string v4, ", is now: " const-string v5, ", enable: " const-string v6, "enabled" const-string v7, "disabled" if-eqz v0, :cond_7 .line 224 invoke-static {p1}, Landroid/media/audiofx/AcousticEchoCanceler;->create(I)Landroid/media/audiofx/AcousticEchoCanceler; move-result-object v0 iput-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; if-eqz v0, :cond_6 .line 226 invoke-virtual {v0}, Landroid/media/audiofx/AcousticEchoCanceler;->getEnabled()Z move-result v0 iget-boolean v8, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableAec:Z if-eqz v8, :cond_2 .line 227 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->canUseAcousticEchoCanceler()Z move-result v8 if-eqz v8, :cond_2 move v8, v2 goto :goto_2 :cond_2 move v8, v3 :goto_2 iget-object v9, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; .line 228 invoke-virtual {v9, v8}, Landroid/media/audiofx/AcousticEchoCanceler;->setEnabled(Z)I move-result v9 if-eqz v9, :cond_3 const-string v9, "Failed to set the AcousticEchoCanceler state" .line 229 invoke-static {v1, v9}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V .line 231 :cond_3 new-instance v9, Ljava/lang/StringBuilder; const-string v10, "AcousticEchoCanceler: was " invoke-direct {v9, v10}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V if-eqz v0, :cond_4 move-object v0, v6 goto :goto_3 :cond_4 move-object v0, v7 :goto_3 invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 iget-object v8, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; .line 233 invoke-virtual {v8}, Landroid/media/audiofx/AcousticEchoCanceler;->getEnabled()Z move-result v8 if-eqz v8, :cond_5 move-object v8, v6 goto :goto_4 :cond_5 move-object v8, v7 :goto_4 invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 231 invoke-static {v1, v0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V goto :goto_5 :cond_6 const-string v0, "Failed to create the AcousticEchoCanceler instance" .line 235 invoke-static {v1, v0}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V .line 239 :cond_7 :goto_5 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->isNoiseSuppressorSupported()Z move-result v0 if-eqz v0, :cond_d .line 242 invoke-static {p1}, Landroid/media/audiofx/NoiseSuppressor;->create(I)Landroid/media/audiofx/NoiseSuppressor; move-result-object p1 iput-object p1, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; if-eqz p1, :cond_c .line 244 invoke-virtual {p1}, Landroid/media/audiofx/NoiseSuppressor;->getEnabled()Z move-result p1 iget-boolean v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableNs:Z if-eqz v0, :cond_8 .line 245 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->canUseNoiseSuppressor()Z move-result v0 if-eqz v0, :cond_8 goto :goto_6 :cond_8 move v2, v3 :goto_6 iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; .line 246 invoke-virtual {v0, v2}, Landroid/media/audiofx/NoiseSuppressor;->setEnabled(Z)I move-result v0 if-eqz v0, :cond_9 const-string v0, "Failed to set the NoiseSuppressor state" .line 247 invoke-static {v1, v0}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V .line 249 :cond_9 new-instance v0, Ljava/lang/StringBuilder; const-string v3, "NoiseSuppressor: was " invoke-direct {v0, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V if-eqz p1, :cond_a move-object p1, v6 goto :goto_7 :cond_a move-object p1, v7 :goto_7 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 iget-object p0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; .line 250 invoke-virtual {p0}, Landroid/media/audiofx/NoiseSuppressor;->getEnabled()Z move-result p0 if-eqz p0, :cond_b goto :goto_8 :cond_b move-object v6, v7 :goto_8 invoke-virtual {p1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 .line 249 invoke-static {v1, p0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V goto :goto_9 :cond_c const-string p0, "Failed to create the NoiseSuppressor instance" .line 252 invoke-static {v1, p0}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V :cond_d :goto_9 return-void .end method .method public release()V .locals 2 const-string v0, "WebRtcAudioEffects" const-string v1, "release" .line 261 invoke-static {v0, v1}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; const/4 v1, 0x0 if-eqz v0, :cond_0 .line 263 invoke-virtual {v0}, Landroid/media/audiofx/AcousticEchoCanceler;->release()V iput-object v1, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; :cond_0 iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; if-eqz v0, :cond_1 .line 267 invoke-virtual {v0}, Landroid/media/audiofx/NoiseSuppressor;->release()V iput-object v1, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; :cond_1 return-void .end method .method public setAEC(Z)Z .locals 3 .line 169 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "setAEC(" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ")" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 const-string v1, "WebRtcAudioEffects" invoke-static {v1, v0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V .line 170 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->canUseAcousticEchoCanceler()Z move-result v0 const/4 v2, 0x0 if-nez v0, :cond_0 const-string p1, "Platform AEC is not supported" .line 171 invoke-static {v1, p1}, Lorg/webrtc/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V iput-boolean v2, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableAec:Z return v2 :cond_0 iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->aec:Landroid/media/audiofx/AcousticEchoCanceler; if-eqz v0, :cond_1 iget-boolean v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableAec:Z if-eq p1, v0, :cond_1 const-string p0, "Platform AEC state can\'t be modified while recording" .line 176 invoke-static {v1, p0}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V return v2 :cond_1 iput-boolean p1, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableAec:Z const/4 p0, 0x1 return p0 .end method .method public setNS(Z)Z .locals 3 .line 188 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "setNS(" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ")" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 const-string v1, "WebRtcAudioEffects" invoke-static {v1, v0}, Lorg/webrtc/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V .line 189 invoke-static {}, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->canUseNoiseSuppressor()Z move-result v0 const/4 v2, 0x0 if-nez v0, :cond_0 const-string p1, "Platform NS is not supported" .line 190 invoke-static {v1, p1}, Lorg/webrtc/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V iput-boolean v2, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableNs:Z return v2 :cond_0 iget-object v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->ns:Landroid/media/audiofx/NoiseSuppressor; if-eqz v0, :cond_1 iget-boolean v0, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableNs:Z if-eq p1, v0, :cond_1 const-string p0, "Platform NS state can\'t be modified while recording" .line 195 invoke-static {v1, p0}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V return v2 :cond_1 iput-boolean p1, p0, Lorg/webrtc/voiceengine/WebRtcAudioEffects;->shouldEnableNs:Z const/4 p0, 0x1 return p0 .end method