OLD | NEW |
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 |
11 #include <assert.h> | 11 #include "webrtc/base/checks.h" |
12 | |
13 #include "webrtc/modules/audio_processing/ns/noise_suppression_x.h" | 12 #include "webrtc/modules/audio_processing/ns/noise_suppression_x.h" |
14 #include "webrtc/modules/audio_processing/ns/nsx_core.h" | 13 #include "webrtc/modules/audio_processing/ns/nsx_core.h" |
15 #include "webrtc/modules/audio_processing/ns/nsx_defines.h" | 14 #include "webrtc/modules/audio_processing/ns/nsx_defines.h" |
16 | 15 |
17 static const int16_t kIndicatorTable[17] = { | 16 static const int16_t kIndicatorTable[17] = { |
18 0, 2017, 3809, 5227, 6258, 6963, 7424, 7718, | 17 0, 2017, 3809, 5227, 6258, 6963, 7424, 7718, |
19 7901, 8014, 8084, 8126, 8152, 8168, 8177, 8183, 8187 | 18 7901, 8014, 8084, 8126, 8152, 8168, 8177, 8183, 8187 |
20 }; | 19 }; |
21 | 20 |
22 // Compute speech/noise probability | 21 // Compute speech/noise probability |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 } | 141 } |
143 indPriorFX += inst->weightSpecFlat * tmpIndFX; // 6*Q14 | 142 indPriorFX += inst->weightSpecFlat * tmpIndFX; // 6*Q14 |
144 } | 143 } |
145 | 144 |
146 //for template spectral-difference | 145 //for template spectral-difference |
147 if (inst->weightSpecDiff) { | 146 if (inst->weightSpecDiff) { |
148 tmpU32no1 = 0; | 147 tmpU32no1 = 0; |
149 if (inst->featureSpecDiff) { | 148 if (inst->featureSpecDiff) { |
150 normTmp = WEBRTC_SPL_MIN(20 - inst->stages, | 149 normTmp = WEBRTC_SPL_MIN(20 - inst->stages, |
151 WebRtcSpl_NormU32(inst->featureSpecDiff)); | 150 WebRtcSpl_NormU32(inst->featureSpecDiff)); |
152 assert(normTmp >= 0); | 151 RTC_DCHECK_GE(normTmp, 0); |
153 tmpU32no1 = inst->featureSpecDiff << normTmp; // Q(normTmp-2*stages) | 152 tmpU32no1 = inst->featureSpecDiff << normTmp; // Q(normTmp-2*stages) |
154 tmpU32no2 = inst->timeAvgMagnEnergy >> (20 - inst->stages - normTmp); | 153 tmpU32no2 = inst->timeAvgMagnEnergy >> (20 - inst->stages - normTmp); |
155 if (tmpU32no2 > 0) { | 154 if (tmpU32no2 > 0) { |
156 // Q(20 - inst->stages) | 155 // Q(20 - inst->stages) |
157 tmpU32no1 /= tmpU32no2; | 156 tmpU32no1 /= tmpU32no2; |
158 } else { | 157 } else { |
159 tmpU32no1 = (uint32_t)(0x7fffffff); | 158 tmpU32no1 = (uint32_t)(0x7fffffff); |
160 } | 159 } |
161 } | 160 } |
162 tmpU32no3 = (inst->thresholdSpecDiff << 17) / 25; | 161 tmpU32no3 = (inst->thresholdSpecDiff << 17) / 25; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 tmp32no1 = (int32_t)inst->priorNonSpeechProb << 8; // Q22 | 251 tmp32no1 = (int32_t)inst->priorNonSpeechProb << 8; // Q22 |
253 | 252 |
254 nonSpeechProbFinal[i] = tmp32no1 / | 253 nonSpeechProbFinal[i] = tmp32no1 / |
255 (inst->priorNonSpeechProb + invLrtFX); // Q8 | 254 (inst->priorNonSpeechProb + invLrtFX); // Q8 |
256 } | 255 } |
257 } | 256 } |
258 } | 257 } |
259 } | 258 } |
260 } | 259 } |
261 | 260 |
OLD | NEW |