diff options
Diffstat (limited to 'webrtc/modules/audio_processing/aec/aec_core.h')
-rw-r--r-- | webrtc/modules/audio_processing/aec/aec_core.h | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/webrtc/modules/audio_processing/aec/aec_core.h b/webrtc/modules/audio_processing/aec/aec_core.h deleted file mode 100644 index 241f077..0000000 --- a/webrtc/modules/audio_processing/aec/aec_core.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -/* - * Specifies the interface for the AEC core. - */ - -#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_H_ -#define WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_H_ - -#include <stddef.h> - -#include "webrtc/typedefs.h" - -#define FRAME_LEN 80 -#define PART_LEN 64 // Length of partition -#define PART_LEN1 (PART_LEN + 1) // Unique fft coefficients -#define PART_LEN2 (PART_LEN * 2) // Length of partition * 2 -#define NUM_HIGH_BANDS_MAX 2 // Max number of high bands - -typedef float complex_t[2]; -// For performance reasons, some arrays of complex numbers are replaced by twice -// as long arrays of float, all the real parts followed by all the imaginary -// ones (complex_t[SIZE] -> float[2][SIZE]). This allows SIMD optimizations and -// is better than two arrays (one for the real parts and one for the imaginary -// parts) as this other way would require two pointers instead of one and cause -// extra register spilling. This also allows the offsets to be calculated at -// compile time. - -// Metrics -enum { - kOffsetLevel = -100 -}; - -typedef struct Stats { - float instant; - float average; - float min; - float max; - float sum; - float hisum; - float himean; - int counter; - int hicounter; -} Stats; - -typedef struct AecCore AecCore; - -AecCore* WebRtcAec_CreateAec(); // Returns NULL on error. -void WebRtcAec_FreeAec(AecCore* aec); -int WebRtcAec_InitAec(AecCore* aec, int sampFreq); -void WebRtcAec_InitAec_SSE2(void); -#if defined(MIPS_FPU_LE) -void WebRtcAec_InitAec_mips(void); -#endif -#if defined(WEBRTC_DETECT_NEON) || defined(WEBRTC_HAS_NEON) -void WebRtcAec_InitAec_neon(void); -#endif - -void WebRtcAec_BufferFarendPartition(AecCore* aec, const float* farend); -void WebRtcAec_ProcessFrames(AecCore* aec, - const float* const* nearend, - size_t num_bands, - size_t num_samples, - int knownDelay, - float* const* out); - -// A helper function to call WebRtc_MoveReadPtr() for all far-end buffers. -// Returns the number of elements moved, and adjusts |system_delay| by the -// corresponding amount in ms. -int WebRtcAec_MoveFarReadPtr(AecCore* aec, int elements); - -// Calculates the median, standard deviation and amount of poor values among the -// delay estimates aggregated up to the first call to the function. After that -// first call the metrics are aggregated and updated every second. With poor -// values we mean values that most likely will cause the AEC to perform poorly. -// TODO(bjornv): Consider changing tests and tools to handle constant -// constant aggregation window throughout the session instead. -int WebRtcAec_GetDelayMetricsCore(AecCore* self, int* median, int* std, - float* fraction_poor_delays); - -// Returns the echo state (1: echo, 0: no echo). -int WebRtcAec_echo_state(AecCore* self); - -// Gets statistics of the echo metrics ERL, ERLE, A_NLP. -void WebRtcAec_GetEchoStats(AecCore* self, - Stats* erl, - Stats* erle, - Stats* a_nlp); -#ifdef WEBRTC_AEC_DEBUG_DUMP -void* WebRtcAec_far_time_buf(AecCore* self); -#endif - -// Sets local configuration modes. -void WebRtcAec_SetConfigCore(AecCore* self, - int nlp_mode, - int metrics_mode, - int delay_logging); - -// Non-zero enables, zero disables. -void WebRtcAec_enable_delay_agnostic(AecCore* self, int enable); - -// Returns non-zero if delay agnostic (i.e., signal based delay estimation) is -// enabled and zero if disabled. -int WebRtcAec_delay_agnostic_enabled(AecCore* self); - -// Enables or disables extended filter mode. Non-zero enables, zero disables. -void WebRtcAec_enable_extended_filter(AecCore* self, int enable); - -// Returns non-zero if extended filter mode is enabled and zero if disabled. -int WebRtcAec_extended_filter_enabled(AecCore* self); - -// Returns the current |system_delay|, i.e., the buffered difference between -// far-end and near-end. -int WebRtcAec_system_delay(AecCore* self); - -// Sets the |system_delay| to |value|. Note that if the value is changed -// improperly, there can be a performance regression. So it should be used with -// care. -void WebRtcAec_SetSystemDelay(AecCore* self, int delay); - -#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_H_ |