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

Side by Side Diff: webrtc/modules/audio_processing/ns/ns_core.c

Issue 2274083002: Replace calls to assert() with RTC_DCHECK_*() in .c code (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 3 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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>
12 #include <math.h> 11 #include <math.h>
13 #include <string.h> 12 #include <string.h>
14 #include <stdlib.h> 13 #include <stdlib.h>
15 14
15 #include "webrtc/base/checks.h"
16 #include "webrtc/common_audio/fft4g.h" 16 #include "webrtc/common_audio/fft4g.h"
17 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h" 17 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h"
18 #include "webrtc/modules/audio_processing/ns/noise_suppression.h" 18 #include "webrtc/modules/audio_processing/ns/noise_suppression.h"
19 #include "webrtc/modules/audio_processing/ns/ns_core.h" 19 #include "webrtc/modules/audio_processing/ns/ns_core.h"
20 #include "webrtc/modules/audio_processing/ns/windows_private.h" 20 #include "webrtc/modules/audio_processing/ns/windows_private.h"
21 21
22 // Set Feature Extraction Parameters. 22 // Set Feature Extraction Parameters.
23 static void set_feature_extraction_parameters(NoiseSuppressionC* self) { 23 static void set_feature_extraction_parameters(NoiseSuppressionC* self) {
24 // Bin size of histogram. 24 // Bin size of histogram.
25 self->featureExtractionParams.binSizeLrt = 0.1f; 25 self->featureExtractionParams.binSizeLrt = 0.1f;
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 // Inputs: 850 // Inputs:
851 // * |frame| is a new speech frame or NULL for setting to zero. 851 // * |frame| is a new speech frame or NULL for setting to zero.
852 // * |frame_length| is the length of the new frame. 852 // * |frame_length| is the length of the new frame.
853 // * |buffer_length| is the length of the buffer. 853 // * |buffer_length| is the length of the buffer.
854 // Output: 854 // Output:
855 // * |buffer| is the updated buffer. 855 // * |buffer| is the updated buffer.
856 static void UpdateBuffer(const float* frame, 856 static void UpdateBuffer(const float* frame,
857 size_t frame_length, 857 size_t frame_length,
858 size_t buffer_length, 858 size_t buffer_length,
859 float* buffer) { 859 float* buffer) {
860 assert(buffer_length < 2 * frame_length); 860 RTC_DCHECK_LT(buffer_length, 2 * frame_length);
861 861
862 memcpy(buffer, 862 memcpy(buffer,
863 buffer + frame_length, 863 buffer + frame_length,
864 sizeof(*buffer) * (buffer_length - frame_length)); 864 sizeof(*buffer) * (buffer_length - frame_length));
865 if (frame) { 865 if (frame) {
866 memcpy(buffer + buffer_length - frame_length, 866 memcpy(buffer + buffer_length - frame_length,
867 frame, 867 frame,
868 sizeof(*buffer) * frame_length); 868 sizeof(*buffer) * frame_length);
869 } else { 869 } else {
870 memset(buffer + buffer_length - frame_length, 870 memset(buffer + buffer_length - frame_length,
(...skipping 15 matching lines...) Expand all
886 // * |magn| is the calculated signal magnitude in the frequency domain. 886 // * |magn| is the calculated signal magnitude in the frequency domain.
887 static void FFT(NoiseSuppressionC* self, 887 static void FFT(NoiseSuppressionC* self,
888 float* time_data, 888 float* time_data,
889 size_t time_data_length, 889 size_t time_data_length,
890 size_t magnitude_length, 890 size_t magnitude_length,
891 float* real, 891 float* real,
892 float* imag, 892 float* imag,
893 float* magn) { 893 float* magn) {
894 size_t i; 894 size_t i;
895 895
896 assert(magnitude_length == time_data_length / 2 + 1); 896 RTC_DCHECK_EQ(magnitude_length, time_data_length / 2 + 1);
897 897
898 WebRtc_rdft(time_data_length, 1, time_data, self->ip, self->wfft); 898 WebRtc_rdft(time_data_length, 1, time_data, self->ip, self->wfft);
899 899
900 imag[0] = 0; 900 imag[0] = 0;
901 real[0] = time_data[0]; 901 real[0] = time_data[0];
902 magn[0] = fabsf(real[0]) + 1.f; 902 magn[0] = fabsf(real[0]) + 1.f;
903 imag[magnitude_length - 1] = 0; 903 imag[magnitude_length - 1] = 0;
904 real[magnitude_length - 1] = time_data[1]; 904 real[magnitude_length - 1] = time_data[1];
905 magn[magnitude_length - 1] = fabsf(real[magnitude_length - 1]) + 1.f; 905 magn[magnitude_length - 1] = fabsf(real[magnitude_length - 1]) + 1.f;
906 for (i = 1; i < magnitude_length - 1; ++i) { 906 for (i = 1; i < magnitude_length - 1; ++i) {
(...skipping 15 matching lines...) Expand all
922 // Output: 922 // Output:
923 // * |time_data| is the signal in the time domain. 923 // * |time_data| is the signal in the time domain.
924 static void IFFT(NoiseSuppressionC* self, 924 static void IFFT(NoiseSuppressionC* self,
925 const float* real, 925 const float* real,
926 const float* imag, 926 const float* imag,
927 size_t magnitude_length, 927 size_t magnitude_length,
928 size_t time_data_length, 928 size_t time_data_length,
929 float* time_data) { 929 float* time_data) {
930 size_t i; 930 size_t i;
931 931
932 assert(time_data_length == 2 * (magnitude_length - 1)); 932 RTC_DCHECK_EQ(time_data_length, 2 * (magnitude_length - 1));
933 933
934 time_data[0] = real[0]; 934 time_data[0] = real[0];
935 time_data[1] = real[magnitude_length - 1]; 935 time_data[1] = real[magnitude_length - 1];
936 for (i = 1; i < magnitude_length - 1; ++i) { 936 for (i = 1; i < magnitude_length - 1; ++i) {
937 time_data[2 * i] = real[i]; 937 time_data[2 * i] = real[i];
938 time_data[2 * i + 1] = imag[i]; 938 time_data[2 * i + 1] = imag[i];
939 } 939 }
940 WebRtc_rdft(time_data_length, -1, time_data, self->ip, self->wfft); 940 WebRtc_rdft(time_data_length, -1, time_data, self->ip, self->wfft);
941 941
942 for (i = 0; i < time_data_length; ++i) { 942 for (i = 0; i < time_data_length; ++i) {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 float real[ANAL_BLOCKL_MAX], imag[HALF_ANAL_BLOCKL]; 1055 float real[ANAL_BLOCKL_MAX], imag[HALF_ANAL_BLOCKL];
1056 // Variables during startup. 1056 // Variables during startup.
1057 float sum_log_i = 0.0; 1057 float sum_log_i = 0.0;
1058 float sum_log_i_square = 0.0; 1058 float sum_log_i_square = 0.0;
1059 float sum_log_magn = 0.0; 1059 float sum_log_magn = 0.0;
1060 float sum_log_i_log_magn = 0.0; 1060 float sum_log_i_log_magn = 0.0;
1061 float parametric_exp = 0.0; 1061 float parametric_exp = 0.0;
1062 float parametric_num = 0.0; 1062 float parametric_num = 0.0;
1063 1063
1064 // Check that initiation has been done. 1064 // Check that initiation has been done.
1065 assert(self->initFlag == 1); 1065 RTC_DCHECK_EQ(1, self->initFlag);
1066 updateParsFlag = self->modelUpdatePars[0]; 1066 updateParsFlag = self->modelUpdatePars[0];
1067 1067
1068 // Update analysis buffer for L band. 1068 // Update analysis buffer for L band.
1069 UpdateBuffer(speechFrame, self->blockLen, self->anaLen, self->analyzeBuf); 1069 UpdateBuffer(speechFrame, self->blockLen, self->anaLen, self->analyzeBuf);
1070 1070
1071 Windowing(self->window, self->analyzeBuf, self->anaLen, winData); 1071 Windowing(self->window, self->analyzeBuf, self->anaLen, winData);
1072 energy = Energy(winData, self->anaLen); 1072 energy = Energy(winData, self->anaLen);
1073 if (energy == 0.0) { 1073 if (energy == 0.0) {
1074 // We want to avoid updating statistics in this case: 1074 // We want to avoid updating statistics in this case:
1075 // Updating feature statistics when we have zeros only will cause 1075 // Updating feature statistics when we have zeros only will cause
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1199 // SWB variables. 1199 // SWB variables.
1200 int deltaBweHB = 1; 1200 int deltaBweHB = 1;
1201 int deltaGainHB = 1; 1201 int deltaGainHB = 1;
1202 float decayBweHB = 1.0; 1202 float decayBweHB = 1.0;
1203 float gainMapParHB = 1.0; 1203 float gainMapParHB = 1.0;
1204 float gainTimeDomainHB = 1.0; 1204 float gainTimeDomainHB = 1.0;
1205 float avgProbSpeechHB, avgProbSpeechHBTmp, avgFilterGainHB, gainModHB; 1205 float avgProbSpeechHB, avgProbSpeechHBTmp, avgFilterGainHB, gainModHB;
1206 float sumMagnAnalyze, sumMagnProcess; 1206 float sumMagnAnalyze, sumMagnProcess;
1207 1207
1208 // Check that initiation has been done. 1208 // Check that initiation has been done.
1209 assert(self->initFlag == 1); 1209 RTC_DCHECK_EQ(1, self->initFlag);
1210 assert((num_bands - 1) <= NUM_HIGH_BANDS_MAX); 1210 RTC_DCHECK_LE(num_bands - 1, NUM_HIGH_BANDS_MAX);
1211 1211
1212 const float* const* speechFrameHB = NULL; 1212 const float* const* speechFrameHB = NULL;
1213 float* const* outFrameHB = NULL; 1213 float* const* outFrameHB = NULL;
1214 size_t num_high_bands = 0; 1214 size_t num_high_bands = 0;
1215 if (num_bands > 1) { 1215 if (num_bands > 1) {
1216 speechFrameHB = &speechFrame[1]; 1216 speechFrameHB = &speechFrame[1];
1217 outFrameHB = &outFrame[1]; 1217 outFrameHB = &outFrame[1];
1218 num_high_bands = num_bands - 1; 1218 num_high_bands = num_bands - 1;
1219 flagHB = 1; 1219 flagHB = 1;
1220 // Range for averaging low band quantities for H band gain. 1220 // Range for averaging low band quantities for H band gain.
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1407 for (i = 0; i < num_high_bands; ++i) { 1407 for (i = 0; i < num_high_bands; ++i) {
1408 for (j = 0; j < self->blockLen; j++) { 1408 for (j = 0; j < self->blockLen; j++) {
1409 outFrameHB[i][j] = 1409 outFrameHB[i][j] =
1410 WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX, 1410 WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX,
1411 gainTimeDomainHB * self->dataBufHB[i][j], 1411 gainTimeDomainHB * self->dataBufHB[i][j],
1412 WEBRTC_SPL_WORD16_MIN); 1412 WEBRTC_SPL_WORD16_MIN);
1413 } 1413 }
1414 } 1414 }
1415 } // End of H band gain computation. 1415 } // End of H band gain computation.
1416 } 1416 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698