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 d4fad9e5e6..0000000000 --- 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 - -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 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_ diff --git a/webrtc/modules/audio_processing/test/aec_dump_processor.h b/webrtc/modules/audio_processing/test/aec_dump_processor.h deleted file mode 100644 index 12b5878aad..0000000000 --- a/webrtc/modules/audio_processing/test/aec_dump_processor.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2016 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_TEST_AEC_DUMP_PROCESSOR_H_ -#define WEBRTC_MODULES_AUDIO_PROCESSING_TEST_AEC_DUMP_PROCESSOR_H_ - -#include -#include -#include -#include -#include - -#include "webrtc/base/timeutils.h" -#include "webrtc/base/optional.h" -#include "webrtc/common_audio/channel_buffer.h" -#include "webrtc/common_audio/wav_file.h" -#include "webrtc/modules/audio_processing/include/audio_processing.h" -#include "webrtc/modules/audio_processing/test/audio_file_processor.h" -#include "webrtc/modules/audio_processing/test/test_utils.h" - -#ifdef WEBRTC_ANDROID_PLATFORM_BUILD -#include "external/webrtc/webrtc/modules/audio_processing/debug.pb.h" -#else -#include "webrtc/modules/audio_processing/debug.pb.h" -#endif - -namespace webrtc { -namespace test { - -// Used to read from an aecdump file and write to a WavWriter. -class AecDumpFileProcessor final : public AudioFileProcessor { - public: - AecDumpFileProcessor(std::unique_ptr ap, - FILE* dump_file, - std::string out_filename, - std::string reverse_out_filename, - rtc::Optional out_sample_rate_hz, - rtc::Optional out_num_channels, - rtc::Optional reverse_out_sample_rate_hz, - rtc::Optional reverse_out_num_channels, - bool override_config_message); - - virtual ~AecDumpFileProcessor(); - - // Processes the messages in the aecdump file and returns - // the number of forward stream chunks processed. - size_t Process(bool verbose_logging) override; - - private: - void HandleMessage(const webrtc::audioproc::Init& msg); - void HandleMessage(const webrtc::audioproc::Stream& msg); - void HandleMessage(const webrtc::audioproc::ReverseStream& msg); - void HandleMessage(const webrtc::audioproc::Config& msg); - - enum InterfaceType { - kIntInterface, - kFloatInterface, - kNotSpecified, - }; - - std::unique_ptr ap_; - FILE* dump_file_; - std::string out_filename_; - std::string reverse_out_filename_; - rtc::Optional out_sample_rate_hz_; - rtc::Optional out_num_channels_; - rtc::Optional reverse_out_sample_rate_hz_; - rtc::Optional reverse_out_num_channels_; - bool override_config_message_; - - std::unique_ptr> in_buf_; - std::unique_ptr> reverse_buf_; - std::unique_ptr> out_buf_; - std::unique_ptr> reverse_out_buf_; - std::unique_ptr out_file_; - std::unique_ptr reverse_out_file_; - StreamConfig input_config_; - StreamConfig reverse_config_; - StreamConfig output_config_; - StreamConfig reverse_output_config_; - std::unique_ptr buffer_writer_; - std::unique_ptr reverse_buffer_writer_; - AudioFrame far_frame_; - AudioFrame near_frame_; - InterfaceType interface_used_ = InterfaceType::kNotSpecified; -}; - -} // namespace test -} // namespace webrtc - -#endif // WEBRTC_MODULES_AUDIO_PROCESSING_TEST_AEC_DUMP_PROCESSOR_H_