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

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

Issue 1936173002: Changed the AEC SubbandCoherence function to not use the full aec state (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@RefactorAec1_CL
Patch Set: Fixed bad merge Created 4 years, 7 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // Clear all values added. 65 // Clear all values added.
66 void Clear(); 66 void Clear();
67 67
68 size_t count_; 68 size_t count_;
69 size_t occurrence_; 69 size_t occurrence_;
70 float fraction_; 70 float fraction_;
71 71
72 RTC_DISALLOW_COPY_AND_ASSIGN(DivergentFilterFraction); 72 RTC_DISALLOW_COPY_AND_ASSIGN(DivergentFilterFraction);
73 }; 73 };
74 74
75 typedef struct CoherenceState {
76 complex_t sde[PART_LEN1]; // cross-psd of nearend and error
77 complex_t sxd[PART_LEN1]; // cross-psd of farend and nearend
78 float sx[PART_LEN1], sd[PART_LEN1], se[PART_LEN1]; // far, near, error psd
79 } CoherenceState;
80
75 struct AecCore { 81 struct AecCore {
76 explicit AecCore(int instance_index); 82 explicit AecCore(int instance_index);
77 ~AecCore(); 83 ~AecCore();
78 84
79 std::unique_ptr<ApmDataDumper> data_dumper; 85 std::unique_ptr<ApmDataDumper> data_dumper;
80 86
87 CoherenceState coherence_state;
88
81 int farBufWritePos, farBufReadPos; 89 int farBufWritePos, farBufReadPos;
82 90
83 int knownDelay; 91 int knownDelay;
84 int inSamples, outSamples; 92 int inSamples, outSamples;
85 int delayEstCtr; 93 int delayEstCtr;
86 94
87 RingBuffer* nearFrBuf; 95 RingBuffer* nearFrBuf;
88 RingBuffer* outFrBuf; 96 RingBuffer* outFrBuf;
89 97
90 RingBuffer* nearFrBufH[NUM_HIGH_BANDS_MAX]; 98 RingBuffer* nearFrBufH[NUM_HIGH_BANDS_MAX];
91 RingBuffer* outFrBufH[NUM_HIGH_BANDS_MAX]; 99 RingBuffer* outFrBufH[NUM_HIGH_BANDS_MAX];
92 100
93 float dBuf[PART_LEN2]; // nearend 101 float dBuf[PART_LEN2]; // nearend
94 float eBuf[PART_LEN2]; // error 102 float eBuf[PART_LEN2]; // error
95 103
96 float dBufH[NUM_HIGH_BANDS_MAX][PART_LEN2]; // nearend 104 float dBufH[NUM_HIGH_BANDS_MAX][PART_LEN2]; // nearend
97 105
98 float xPow[PART_LEN1]; 106 float xPow[PART_LEN1];
99 float dPow[PART_LEN1]; 107 float dPow[PART_LEN1];
100 float dMinPow[PART_LEN1]; 108 float dMinPow[PART_LEN1];
101 float dInitMinPow[PART_LEN1]; 109 float dInitMinPow[PART_LEN1];
102 float* noisePow; 110 float* noisePow;
103 111
104 float xfBuf[2][kExtendedNumPartitions * PART_LEN1]; // farend fft buffer 112 float xfBuf[2][kExtendedNumPartitions * PART_LEN1]; // farend fft buffer
105 float wfBuf[2][kExtendedNumPartitions * PART_LEN1]; // filter fft 113 float wfBuf[2][kExtendedNumPartitions * PART_LEN1]; // filter fft
106 complex_t sde[PART_LEN1]; // cross-psd of nearend and error
107 complex_t sxd[PART_LEN1]; // cross-psd of farend and nearend
108 // Farend windowed fft buffer. 114 // Farend windowed fft buffer.
109 complex_t xfwBuf[kExtendedNumPartitions * PART_LEN1]; 115 complex_t xfwBuf[kExtendedNumPartitions * PART_LEN1];
110 116
111 float sx[PART_LEN1], sd[PART_LEN1], se[PART_LEN1]; // far, near, error psd
112 float hNs[PART_LEN1]; 117 float hNs[PART_LEN1];
113 float hNlFbMin, hNlFbLocalMin; 118 float hNlFbMin, hNlFbLocalMin;
114 float hNlXdAvgMin; 119 float hNlXdAvgMin;
115 int hNlNewMin, hNlMinCtr; 120 int hNlNewMin, hNlMinCtr;
116 float overDrive; 121 float overDrive;
117 float overdrive_scaling; 122 float overdrive_scaling;
118 int nlp_mode; 123 int nlp_mode;
119 float outBuf[PART_LEN]; 124 float outBuf[PART_LEN];
120 int delayIdx; 125 int delayIdx;
121 126
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 float efw[2][PART_LEN1]); 221 float efw[2][PART_LEN1]);
217 extern WebRtcAecOverdriveAndSuppress WebRtcAec_OverdriveAndSuppress; 222 extern WebRtcAecOverdriveAndSuppress WebRtcAec_OverdriveAndSuppress;
218 223
219 typedef void (*WebRtcAecComfortNoise)(AecCore* aec, 224 typedef void (*WebRtcAecComfortNoise)(AecCore* aec,
220 float efw[2][PART_LEN1], 225 float efw[2][PART_LEN1],
221 float comfortNoiseHband[2][PART_LEN1], 226 float comfortNoiseHband[2][PART_LEN1],
222 const float* noisePow, 227 const float* noisePow,
223 const float* lambda); 228 const float* lambda);
224 extern WebRtcAecComfortNoise WebRtcAec_ComfortNoise; 229 extern WebRtcAecComfortNoise WebRtcAec_ComfortNoise;
225 230
226 typedef void (*WebRtcAecSubBandCoherence)(AecCore* aec, 231 typedef void (*WebRtcAecSubBandCoherence)(int mult,
232 bool extended_filter_enabled,
227 float efw[2][PART_LEN1], 233 float efw[2][PART_LEN1],
228 float dfw[2][PART_LEN1], 234 float dfw[2][PART_LEN1],
229 float xfw[2][PART_LEN1], 235 float xfw[2][PART_LEN1],
230 float* fft, 236 float* fft,
231 float* cohde, 237 float* cohde,
232 float* cohxd, 238 float* cohxd,
239 CoherenceState* coherence_state,
240 short* filter_divergence_state,
233 int* extreme_filter_divergence); 241 int* extreme_filter_divergence);
234 extern WebRtcAecSubBandCoherence WebRtcAec_SubbandCoherence; 242 extern WebRtcAecSubBandCoherence WebRtcAec_SubbandCoherence;
235 243
236 typedef int (*WebRtcAecPartitionDelay)(const AecCore* aec); 244 typedef int (*WebRtcAecPartitionDelay)(const AecCore* aec);
237 extern WebRtcAecPartitionDelay WebRtcAec_PartitionDelay; 245 extern WebRtcAecPartitionDelay WebRtcAec_PartitionDelay;
238 246
239 typedef void (*WebRtcAecStoreAsComplex)(const float* data, 247 typedef void (*WebRtcAecStoreAsComplex)(const float* data,
240 float data_complex[2][PART_LEN1]); 248 float data_complex[2][PART_LEN1]);
241 extern WebRtcAecStoreAsComplex WebRtcAec_StoreAsComplex; 249 extern WebRtcAecStoreAsComplex WebRtcAec_StoreAsComplex;
242 250
243 typedef void (*WebRtcAecWindowData)(float* x_windowed, const float* x); 251 typedef void (*WebRtcAecWindowData)(float* x_windowed, const float* x);
244 extern WebRtcAecWindowData WebRtcAec_WindowData; 252 extern WebRtcAecWindowData WebRtcAec_WindowData;
245 253
246 } // namespace webrtc 254 } // namespace webrtc
247 255
248 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_ 256 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_CORE_INTERNAL_H_
OLDNEW
« no previous file with comments | « webrtc/modules/audio_processing/aec/aec_core.cc ('k') | webrtc/modules/audio_processing/aec/aec_core_neon.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698