From 270d402d1f5da50b5be7b9ebebabf80b2ebf19db Mon Sep 17 00:00:00 2001 From: Fedor Date: Thu, 26 Nov 2020 05:42:22 +0200 Subject: [PATCH] [webrtc] Only init WebRtcAec callbacks once. --- .../modules/audio_processing/aec/aec_core.c | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c b/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c index 470c422db..1722ba82e 100644 --- a/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c +++ b/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c @@ -23,6 +23,7 @@ #include // size_t #include #include +#include #include "webrtc/common_audio/ring_buffer.h" #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" @@ -1573,33 +1574,36 @@ AecCore* WebRtcAec_CreateAec() { #endif aec->extended_filter_enabled = 0; - // Assembly optimization - WebRtcAec_FilterFar = FilterFar; - WebRtcAec_ScaleErrorSignal = ScaleErrorSignal; - WebRtcAec_FilterAdaptation = FilterAdaptation; - WebRtcAec_OverdriveAndSuppress = OverdriveAndSuppress; - WebRtcAec_ComfortNoise = ComfortNoise; - WebRtcAec_SubbandCoherence = SubbandCoherence; + static bool initted = false; + if (!initted) { + initted = true; + // Assembly optimization + WebRtcAec_FilterFar = FilterFar; + WebRtcAec_ScaleErrorSignal = ScaleErrorSignal; + WebRtcAec_FilterAdaptation = FilterAdaptation; + WebRtcAec_OverdriveAndSuppress = OverdriveAndSuppress; + WebRtcAec_ComfortNoise = ComfortNoise; + WebRtcAec_SubbandCoherence = SubbandCoherence; #if defined(WEBRTC_ARCH_X86_FAMILY) - if (WebRtc_GetCPUInfo(kSSE2)) { - WebRtcAec_InitAec_SSE2(); - } + if (WebRtc_GetCPUInfo(kSSE2)) { + WebRtcAec_InitAec_SSE2(); + } #endif #if defined(MIPS_FPU_LE) - WebRtcAec_InitAec_mips(); + WebRtcAec_InitAec_mips(); #endif #if defined(WEBRTC_ARCH_ARM_NEON) - WebRtcAec_InitAec_neon(); -#elif defined(WEBRTC_DETECT_ARM_NEON) - if ((WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON) != 0) { WebRtcAec_InitAec_neon(); - } +#elif defined(WEBRTC_DETECT_ARM_NEON) + if ((WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON) != 0) { + WebRtcAec_InitAec_neon(); + } #endif - - aec_rdft_init(); + aec_rdft_init(); + } return aec; }