Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(463)

Side by Side Diff: webrtc/modules/audio_processing/aec/aec_core_internal.h

Issue 1887003002: Added support in the AEC for refined filter adaptation. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Preinitialized the sample rate to avoid the possiblitily of access to uninitialized value Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 17 matching lines...) Expand all
28 static const int kNormalNumPartitions = 12; 28 static const int kNormalNumPartitions = 12;
29 29
30 // Delay estimator constants, used for logging and delay compensation if 30 // Delay estimator constants, used for logging and delay compensation if
31 // if reported delays are disabled. 31 // if reported delays are disabled.
32 enum { kLookaheadBlocks = 15 }; 32 enum { kLookaheadBlocks = 15 };
33 enum { 33 enum {
34 // 500 ms for 16 kHz which is equivalent with the limit of reported delays. 34 // 500 ms for 16 kHz which is equivalent with the limit of reported delays.
35 kHistorySizeBlocks = 125 35 kHistorySizeBlocks = 125
36 }; 36 };
37 37
38 // Extended filter adaptation parameters.
39 // TODO(ajm): No narrowband tuning yet.
40 static const float kExtendedMu = 0.4f;
41 static const float kExtendedErrorThreshold = 1.0e-6f;
42
43 typedef struct PowerLevel { 38 typedef struct PowerLevel {
44 PowerLevel(); 39 PowerLevel();
45 40
46 BlockMeanCalculator framelevel; 41 BlockMeanCalculator framelevel;
47 BlockMeanCalculator averagelevel; 42 BlockMeanCalculator averagelevel;
48 float minlevel; 43 float minlevel;
49 } PowerLevel; 44 } PowerLevel;
50 45
51 class DivergentFilterFraction { 46 class DivergentFilterFraction {
52 public: 47 public:
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 short stNearState, echoState; 114 short stNearState, echoState;
120 short divergeState; 115 short divergeState;
121 116
122 int xfBufBlockPos; 117 int xfBufBlockPos;
123 118
124 RingBuffer* far_time_buf; 119 RingBuffer* far_time_buf;
125 120
126 int system_delay; // Current system delay buffered in AEC. 121 int system_delay; // Current system delay buffered in AEC.
127 122
128 int mult; // sampling frequency multiple 123 int mult; // sampling frequency multiple
129 int sampFreq; 124 int sampFreq = 16000;
130 size_t num_bands; 125 size_t num_bands;
131 uint32_t seed; 126 uint32_t seed;
132 127
133 float normal_mu; // stepsize 128 float filter_step_size; // stepsize
134 float normal_error_threshold; // error threshold 129 float error_threshold; // error threshold
135 130
136 int noiseEstCtr; 131 int noiseEstCtr;
137 132
138 PowerLevel farlevel; 133 PowerLevel farlevel;
139 PowerLevel nearlevel; 134 PowerLevel nearlevel;
140 PowerLevel linoutlevel; 135 PowerLevel linoutlevel;
141 PowerLevel nlpoutlevel; 136 PowerLevel nlpoutlevel;
142 137
143 int metricsMode; 138 int metricsMode;
144 int stateCounter; 139 int stateCounter;
(...skipping 26 matching lines...) Expand all
171 float delay_quality_threshold; 166 float delay_quality_threshold;
172 int frame_count; 167 int frame_count;
173 168
174 // 0 = delay agnostic mode (signal based delay correction) disabled. 169 // 0 = delay agnostic mode (signal based delay correction) disabled.
175 // Otherwise enabled. 170 // Otherwise enabled.
176 int delay_agnostic_enabled; 171 int delay_agnostic_enabled;
177 // 1 = extended filter mode enabled, 0 = disabled. 172 // 1 = extended filter mode enabled, 0 = disabled.
178 int extended_filter_enabled; 173 int extended_filter_enabled;
179 // 1 = next generation aec mode enabled, 0 = disabled. 174 // 1 = next generation aec mode enabled, 0 = disabled.
180 int aec3_enabled; 175 int aec3_enabled;
176 bool refined_adaptive_filter_enabled;
181 177
182 // Runtime selection of number of filter partitions. 178 // Runtime selection of number of filter partitions.
183 int num_partitions; 179 int num_partitions;
184 180
185 // Flag that extreme filter divergence has been detected by the Echo 181 // Flag that extreme filter divergence has been detected by the Echo
186 // Suppressor. 182 // Suppressor.
187 int extreme_filter_divergence; 183 int extreme_filter_divergence;
188 184
189 #ifdef WEBRTC_AEC_DEBUG_DUMP 185 #ifdef WEBRTC_AEC_DEBUG_DUMP
190 // Sequence number of this AEC instance, so that different instances can 186 // Sequence number of this AEC instance, so that different instances can
(...skipping 12 matching lines...) Expand all
203 #endif 199 #endif
204 }; 200 };
205 201
206 typedef void (*WebRtcAecFilterFar)( 202 typedef void (*WebRtcAecFilterFar)(
207 int num_partitions, 203 int num_partitions,
208 int x_fft_buf_block_pos, 204 int x_fft_buf_block_pos,
209 float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1], 205 float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
210 float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1], 206 float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
211 float y_fft[2][PART_LEN1]); 207 float y_fft[2][PART_LEN1]);
212 extern WebRtcAecFilterFar WebRtcAec_FilterFar; 208 extern WebRtcAecFilterFar WebRtcAec_FilterFar;
213 typedef void (*WebRtcAecScaleErrorSignal)(int extended_filter_enabled, 209 typedef void (*WebRtcAecScaleErrorSignal)(float mu,
214 float normal_mu, 210 float error_threshold,
215 float normal_error_threshold,
216 float x_pow[PART_LEN1], 211 float x_pow[PART_LEN1],
217 float ef[2][PART_LEN1]); 212 float ef[2][PART_LEN1]);
218 extern WebRtcAecScaleErrorSignal WebRtcAec_ScaleErrorSignal; 213 extern WebRtcAecScaleErrorSignal WebRtcAec_ScaleErrorSignal;
219 typedef void (*WebRtcAecFilterAdaptation)( 214 typedef void (*WebRtcAecFilterAdaptation)(
220 int num_partitions, 215 int num_partitions,
221 int x_fft_buf_block_pos, 216 int x_fft_buf_block_pos,
222 float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1], 217 float x_fft_buf[2][kExtendedNumPartitions * PART_LEN1],
223 float e_fft[2][PART_LEN1], 218 float e_fft[2][PART_LEN1],
224 float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1]); 219 float h_fft_buf[2][kExtendedNumPartitions * PART_LEN1]);
225 extern WebRtcAecFilterAdaptation WebRtcAec_FilterAdaptation; 220 extern WebRtcAecFilterAdaptation WebRtcAec_FilterAdaptation;
(...skipping 26 matching lines...) Expand all
252 typedef void (*WebRtcAecStoreAsComplex)(const float* data, 247 typedef void (*WebRtcAecStoreAsComplex)(const float* data,
253 float data_complex[2][PART_LEN1]); 248 float data_complex[2][PART_LEN1]);
254 extern WebRtcAecStoreAsComplex WebRtcAec_StoreAsComplex; 249 extern WebRtcAecStoreAsComplex WebRtcAec_StoreAsComplex;
255 250
256 typedef void (*WebRtcAecWindowData)(float* x_windowed, const float* x); 251 typedef void (*WebRtcAecWindowData)(float* x_windowed, const float* x);
257 extern WebRtcAecWindowData WebRtcAec_WindowData; 252 extern WebRtcAecWindowData WebRtcAec_WindowData;
258 253
259 } // namespace webrtc 254 } // namespace webrtc
260 255
261 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_ 256 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698