| Index: webrtc/modules/audio_processing/aec/aec_core_internal.h
|
| 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 d4fad9e5e63312703f6a39b9aa8c501be98ddc1e..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/audio_processing/aec/aec_core_internal.h
|
| +++ /dev/null
|
| @@ -1,257 +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 <memory>
|
| -
|
| -extern "C" {
|
| -#include "webrtc/common_audio/ring_buffer.h"
|
| -}
|
| -#include "webrtc/base/constructormagic.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/modules/audio_processing/logging/apm_data_dumper.h"
|
| -#include "webrtc/modules/audio_processing/utility/block_mean_calculator.h"
|
| -#include "webrtc/typedefs.h"
|
| -
|
| -namespace webrtc {
|
| -
|
| -// 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
|
| -};
|
| -
|
| -typedef struct PowerLevel {
|
| - PowerLevel();
|
| -
|
| - BlockMeanCalculator framelevel;
|
| - BlockMeanCalculator averagelevel;
|
| - float minlevel;
|
| -} PowerLevel;
|
| -
|
| -class DivergentFilterFraction {
|
| - public:
|
| - DivergentFilterFraction();
|
| -
|
| - // Reset.
|
| - void Reset();
|
| -
|
| - void AddObservation(const PowerLevel& nearlevel,
|
| - const PowerLevel& linoutlevel,
|
| - const PowerLevel& nlpoutlevel);
|
| -
|
| - // Return the latest fraction.
|
| - float GetLatestFraction() const;
|
| -
|
| - private:
|
| - // Clear all values added.
|
| - void Clear();
|
| -
|
| - size_t count_;
|
| - size_t occurrence_;
|
| - float fraction_;
|
| -
|
| - RTC_DISALLOW_COPY_AND_ASSIGN(DivergentFilterFraction);
|
| -};
|
| -
|
| -typedef struct CoherenceState {
|
| - complex_t sde[PART_LEN1]; // cross-psd of nearend and error
|
| - complex_t sxd[PART_LEN1]; // cross-psd of farend and nearend
|
| - float sx[PART_LEN1], sd[PART_LEN1], se[PART_LEN1]; // far, near, error psd
|
| -} CoherenceState;
|
| -
|
| -struct AecCore {
|
| - explicit AecCore(int instance_index);
|
| - ~AecCore();
|
| -
|
| - std::unique_ptr<ApmDataDumper> data_dumper;
|
| -
|
| - CoherenceState coherence_state;
|
| -
|
| - 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
|
| - // Farend windowed fft buffer.
|
| - complex_t xfwBuf[kExtendedNumPartitions * PART_LEN1];
|
| -
|
| - float hNs[PART_LEN1];
|
| - float hNlFbMin, hNlFbLocalMin;
|
| - float hNlXdAvgMin;
|
| - int hNlNewMin, hNlMinCtr;
|
| - float overDrive;
|
| - float overdrive_scaling;
|
| - int nlp_mode;
|
| - float outBuf[PART_LEN];
|
| - int delayIdx;
|
| -
|
| - short stNearState, echoState;
|
| - short divergeState;
|
| -
|
| - int xfBufBlockPos;
|
| -
|
| - RingBuffer* far_time_buf;
|
| -
|
| - int system_delay; // Current system delay buffered in AEC.
|
| -
|
| - int mult; // sampling frequency multiple
|
| - int sampFreq = 16000;
|
| - size_t num_bands;
|
| - uint32_t seed;
|
| -
|
| - float filter_step_size; // stepsize
|
| - float 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;
|
| - DivergentFilterFraction divergent_filter_fraction;
|
| -
|
| - // 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;
|
| - // 1 = next generation aec mode enabled, 0 = disabled.
|
| - int aec3_enabled;
|
| - bool refined_adaptive_filter_enabled;
|
| -
|
| - // Runtime selection of number of filter partitions.
|
| - int num_partitions;
|
| -
|
| - // Flag that extreme filter divergence has been detected by the Echo
|
| - // Suppressor.
|
| - int extreme_filter_divergence;
|
| -};
|
| -
|
| -typedef void (*WebRtcAecFilterFar)(
|
| - int num_partitions,
|
| - int x_fft_buf_block_pos,
|
| - float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
|
| - float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
|
| - float y_fft[2][PART_LEN1]);
|
| -extern WebRtcAecFilterFar WebRtcAec_FilterFar;
|
| -typedef void (*WebRtcAecScaleErrorSignal)(float mu,
|
| - float error_threshold,
|
| - float x_pow[PART_LEN1],
|
| - float ef[2][PART_LEN1]);
|
| -extern WebRtcAecScaleErrorSignal WebRtcAec_ScaleErrorSignal;
|
| -typedef void (*WebRtcAecFilterAdaptation)(
|
| - int num_partitions,
|
| - int x_fft_buf_block_pos,
|
| - float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
|
| - float e_fft[2][PART_LEN1],
|
| - float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1]);
|
| -extern WebRtcAecFilterAdaptation WebRtcAec_FilterAdaptation;
|
| -
|
| -typedef void (*WebRtcAecOverdrive)(float overdrive_scaling,
|
| - const float hNlFb,
|
| - float hNl[PART_LEN1]);
|
| -extern WebRtcAecOverdrive WebRtcAec_Overdrive;
|
| -
|
| -typedef void (*WebRtcAecSuppress)(const float hNl[PART_LEN1],
|
| - float efw[2][PART_LEN1]);
|
| -extern WebRtcAecSuppress WebRtcAec_Suppress;
|
| -
|
| -typedef void (*WebRtcAecComputeCoherence)(const CoherenceState* coherence_state,
|
| - float* cohde,
|
| - float* cohxd);
|
| -extern WebRtcAecComputeCoherence WebRtcAec_ComputeCoherence;
|
| -
|
| -typedef void (*WebRtcAecUpdateCoherenceSpectra)(int mult,
|
| - bool extended_filter_enabled,
|
| - float efw[2][PART_LEN1],
|
| - float dfw[2][PART_LEN1],
|
| - float xfw[2][PART_LEN1],
|
| - CoherenceState* coherence_state,
|
| - short* filter_divergence_state,
|
| - int* extreme_filter_divergence);
|
| -extern WebRtcAecUpdateCoherenceSpectra WebRtcAec_UpdateCoherenceSpectra;
|
| -
|
| -typedef int (*WebRtcAecPartitionDelay)(
|
| - int num_partitions,
|
| - float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1]);
|
| -extern WebRtcAecPartitionDelay WebRtcAec_PartitionDelay;
|
| -
|
| -typedef void (*WebRtcAecStoreAsComplex)(const float* data,
|
| - float data_complex[2][PART_LEN1]);
|
| -extern WebRtcAecStoreAsComplex WebRtcAec_StoreAsComplex;
|
| -
|
| -typedef void (*WebRtcAecWindowData)(float* x_windowed, const float* x);
|
| -extern WebRtcAecWindowData WebRtcAec_WindowData;
|
| -
|
| -} // namespace webrtc
|
| -
|
| -#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_
|
|
|