diff options
Diffstat (limited to 'webrtc/modules/audio_processing/aec/aec_core_internal.h')
-rw-r--r-- | webrtc/modules/audio_processing/aec/aec_core_internal.h | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/webrtc/modules/audio_processing/aec/aec_core_internal.h b/webrtc/modules/audio_processing/aec/aec_core_internal.h deleted file mode 100644 index 2de0283..0000000 --- a/webrtc/modules/audio_processing/aec/aec_core_internal.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2013 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. - */ - -#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_ -#define WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_ - -#include "webrtc/common_audio/ring_buffer.h" -#include "webrtc/common_audio/wav_file.h" -#include "webrtc/modules/audio_processing/aec/aec_common.h" -#include "webrtc/modules/audio_processing/aec/aec_core.h" -#include "webrtc/typedefs.h" - -// Number of partitions for the extended filter mode. The first one is an enum -// to be used in array declarations, as it represents the maximum filter length. -enum { - kExtendedNumPartitions = 32 -}; -static const int kNormalNumPartitions = 12; - -// Delay estimator constants, used for logging and delay compensation if -// if reported delays are disabled. -enum { - kLookaheadBlocks = 15 -}; -enum { - // 500 ms for 16 kHz which is equivalent with the limit of reported delays. - kHistorySizeBlocks = 125 -}; - -// Extended filter adaptation parameters. -// TODO(ajm): No narrowband tuning yet. -static const float kExtendedMu = 0.4f; -static const float kExtendedErrorThreshold = 1.0e-6f; - -typedef struct PowerLevel { - float sfrsum; - int sfrcounter; - float framelevel; - float frsum; - int frcounter; - float minlevel; - float averagelevel; -} PowerLevel; - -struct AecCore { - int farBufWritePos, farBufReadPos; - - int knownDelay; - int inSamples, outSamples; - int delayEstCtr; - - RingBuffer* nearFrBuf; - RingBuffer* outFrBuf; - - RingBuffer* nearFrBufH[NUM_HIGH_BANDS_MAX]; - RingBuffer* outFrBufH[NUM_HIGH_BANDS_MAX]; - - float dBuf[PART_LEN2]; // nearend - float eBuf[PART_LEN2]; // error - - float dBufH[NUM_HIGH_BANDS_MAX][PART_LEN2]; // nearend - - float xPow[PART_LEN1]; - float dPow[PART_LEN1]; - float dMinPow[PART_LEN1]; - float dInitMinPow[PART_LEN1]; - float* noisePow; - - float xfBuf[2][kExtendedNumPartitions * PART_LEN1]; // farend fft buffer - float wfBuf[2][kExtendedNumPartitions * PART_LEN1]; // filter fft - complex_t sde[PART_LEN1]; // cross-psd of nearend and error - complex_t sxd[PART_LEN1]; // cross-psd of farend and nearend - // Farend windowed fft buffer. - complex_t xfwBuf[kExtendedNumPartitions * PART_LEN1]; - - float sx[PART_LEN1], sd[PART_LEN1], se[PART_LEN1]; // far, near, error psd - float hNs[PART_LEN1]; - float hNlFbMin, hNlFbLocalMin; - float hNlXdAvgMin; - int hNlNewMin, hNlMinCtr; - float overDrive, overDriveSm; - int nlp_mode; - float outBuf[PART_LEN]; - int delayIdx; - - short stNearState, echoState; - short divergeState; - - int xfBufBlockPos; - - RingBuffer* far_buf; - RingBuffer* far_buf_windowed; - int system_delay; // Current system delay buffered in AEC. - - int mult; // sampling frequency multiple - int sampFreq; - size_t num_bands; - uint32_t seed; - - float normal_mu; // stepsize - float normal_error_threshold; // error threshold - - int noiseEstCtr; - - PowerLevel farlevel; - PowerLevel nearlevel; - PowerLevel linoutlevel; - PowerLevel nlpoutlevel; - - int metricsMode; - int stateCounter; - Stats erl; - Stats erle; - Stats aNlp; - Stats rerl; - - // Quantities to control H band scaling for SWB input - int freq_avg_ic; // initial bin for averaging nlp gain - int flag_Hband_cn; // for comfort noise - float cn_scale_Hband; // scale for comfort noise in H band - - int delay_metrics_delivered; - int delay_histogram[kHistorySizeBlocks]; - int num_delay_values; - int delay_median; - int delay_std; - float fraction_poor_delays; - int delay_logging_enabled; - void* delay_estimator_farend; - void* delay_estimator; - // Variables associated with delay correction through signal based delay - // estimation feedback. - int signal_delay_correction; - int previous_delay; - int delay_correction_count; - int shift_offset; - float delay_quality_threshold; - int frame_count; - - // 0 = delay agnostic mode (signal based delay correction) disabled. - // Otherwise enabled. - int delay_agnostic_enabled; - // 1 = extended filter mode enabled, 0 = disabled. - int extended_filter_enabled; - // Runtime selection of number of filter partitions. - int num_partitions; - -#ifdef WEBRTC_AEC_DEBUG_DUMP - // Sequence number of this AEC instance, so that different instances can - // choose different dump file names. - int instance_index; - - // Number of times we've restarted dumping; used to pick new dump file names - // each time. - int debug_dump_count; - - RingBuffer* far_time_buf; - rtc_WavWriter* farFile; - rtc_WavWriter* nearFile; - rtc_WavWriter* outFile; - rtc_WavWriter* outLinearFile; - FILE* e_fft_file; -#endif -}; - -typedef void (*WebRtcAecFilterFar)(AecCore* aec, float yf[2][PART_LEN1]); -extern WebRtcAecFilterFar WebRtcAec_FilterFar; -typedef void (*WebRtcAecScaleErrorSignal)(AecCore* aec, float ef[2][PART_LEN1]); -extern WebRtcAecScaleErrorSignal WebRtcAec_ScaleErrorSignal; -typedef void (*WebRtcAecFilterAdaptation)(AecCore* aec, - float* fft, - float ef[2][PART_LEN1]); -extern WebRtcAecFilterAdaptation WebRtcAec_FilterAdaptation; -typedef void (*WebRtcAecOverdriveAndSuppress)(AecCore* aec, - float hNl[PART_LEN1], - const float hNlFb, - float efw[2][PART_LEN1]); -extern WebRtcAecOverdriveAndSuppress WebRtcAec_OverdriveAndSuppress; - -typedef void (*WebRtcAecComfortNoise)(AecCore* aec, - float efw[2][PART_LEN1], - complex_t* comfortNoiseHband, - const float* noisePow, - const float* lambda); -extern WebRtcAecComfortNoise WebRtcAec_ComfortNoise; - -typedef void (*WebRtcAecSubBandCoherence)(AecCore* aec, - float efw[2][PART_LEN1], - float xfw[2][PART_LEN1], - float* fft, - float* cohde, - float* cohxd); -extern WebRtcAecSubBandCoherence WebRtcAec_SubbandCoherence; - -#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_ |