Index: webrtc/modules/audio_processing/aec/aec_core_mips.cc |
diff --git a/webrtc/modules/audio_processing/aec/aec_core_mips.c b/webrtc/modules/audio_processing/aec/aec_core_mips.cc |
similarity index 96% |
rename from webrtc/modules/audio_processing/aec/aec_core_mips.c |
rename to webrtc/modules/audio_processing/aec/aec_core_mips.cc |
index 4fbc6137e2d19d318c5517c457e484cd617ce25f..5ece92077596c49a3ad083b0cf20bc6b67ce07e2 100644 |
--- a/webrtc/modules/audio_processing/aec/aec_core_mips.c |
+++ b/webrtc/modules/audio_processing/aec/aec_core_mips.cc |
@@ -16,9 +16,13 @@ |
#include <math.h> |
+extern "C" { |
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" |
+} |
#include "webrtc/modules/audio_processing/aec/aec_core_internal.h" |
+extern "C" { |
#include "webrtc/modules/audio_processing/aec/aec_rdft.h" |
+} |
extern const float WebRtcAec_weightCurve[65]; |
extern const float WebRtcAec_overDriveCurve[65]; |
@@ -193,12 +197,12 @@ void WebRtcAec_ComfortNoise_mips(AecCore* aec, |
"add.s %[tmp7f], %[tmp7f], %[tmp3f] \n\t" |
"mul.s %[tmp3f], %[tmp6f], %[tmp10f] \n\t" |
"add.s %[tmp9f], %[tmp9f], %[tmp3f] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"madd.s %[tmp2f], %[tmp2f], %[tmp1f], %[tmp3f] \n\t" |
"madd.s %[tmp4f], %[tmp4f], %[tmp1f], %[tmp5f] \n\t" |
"madd.s %[tmp7f], %[tmp7f], %[tmp6f], %[tmp8f] \n\t" |
"madd.s %[tmp9f], %[tmp9f], %[tmp6f], %[tmp10f] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"swc1 %[tmp2f], 0(%[efw_ptr_0]) \n\t" |
"swc1 %[tmp4f], 0(%[efw_ptr_1]) \n\t" |
"swc1 %[tmp7f], 4(%[efw_ptr_0]) \n\t" |
@@ -217,10 +221,10 @@ void WebRtcAec_ComfortNoise_mips(AecCore* aec, |
"add.s %[tmp2f], %[tmp2f], %[tmp3f] \n\t" |
"mul.s %[tmp3f], %[tmp1f], %[tmp5f] \n\t" |
"add.s %[tmp4f], %[tmp4f], %[tmp3f] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"madd.s %[tmp2f], %[tmp2f], %[tmp1f], %[tmp3f] \n\t" |
"madd.s %[tmp4f], %[tmp4f], %[tmp1f], %[tmp5f] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"swc1 %[tmp2f], 0(%[efw_ptr_0]) \n\t" |
"b 5f \n\t" |
" swc1 %[tmp4f], 0(%[efw_ptr_1]) \n\t" |
@@ -240,10 +244,10 @@ void WebRtcAec_ComfortNoise_mips(AecCore* aec, |
"add.s %[tmp7f], %[tmp7f], %[tmp3f] \n\t" |
"mul.s %[tmp3f], %[tmp6f], %[tmp10f] \n\t" |
"add.s %[tmp9f], %[tmp9f], %[tmp3f] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"madd.s %[tmp7f], %[tmp7f], %[tmp6f], %[tmp8f] \n\t" |
"madd.s %[tmp9f], %[tmp9f], %[tmp6f], %[tmp10f] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"swc1 %[tmp7f], 4(%[efw_ptr_0]) \n\t" |
"swc1 %[tmp9f], 4(%[efw_ptr_1]) \n\t" |
"5: \n\t" |
@@ -269,36 +273,38 @@ void WebRtcAec_ComfortNoise_mips(AecCore* aec, |
efw[1][PART_LEN] += tmp * u[PART_LEN][1]; |
// For H band comfort noise |
- // TODO: don't compute noise and "tmp" twice. Use the previous results. |
+ // TODO(peah): don't compute noise and "tmp" twice. Use the previous results. |
noiseAvg = 0.0; |
tmpAvg = 0.0; |
num = 0; |
if (aec->num_bands > 1) { |
for (i = 0; i < PART_LEN; i++) { |
- rand[i] = ((float)randW16[i]) / 32768; |
+ rand[i] = (static_cast<float>(randW16[i])) / 32768; |
} |
// average noise scale |
// average over second half of freq spectrum (i.e., 4->8khz) |
- // TODO: we shouldn't need num. We know how many elements we're summing. |
+ // TODO(peah): we shouldn't need num. We know how many elements we're |
+ // summing. |
for (i = PART_LEN1 >> 1; i < PART_LEN1; i++) { |
num++; |
noiseAvg += sqrtf(noisePow[i]); |
} |
- noiseAvg /= (float)num; |
+ noiseAvg /= static_cast<float>(num); |
// average nlp scale |
// average over second half of freq spectrum (i.e., 4->8khz) |
- // TODO: we shouldn't need num. We know how many elements we're summing. |
+ // TODO(peah): we shouldn't need num. We know how many elements we're |
+ // summing. |
num = 0; |
for (i = PART_LEN1 >> 1; i < PART_LEN1; i++) { |
num++; |
tmpAvg += sqrtf(WEBRTC_SPL_MAX(1 - lambda[i] * lambda[i], 0)); |
} |
- tmpAvg /= (float)num; |
+ tmpAvg /= static_cast<float>(num); |
// Use average noise for H band |
- // TODO: we should probably have a new random vector here. |
+ // TODO(peah): we should probably have a new random vector here. |
// Reject LF noise |
u[0][0] = 0; |
u[0][1] = 0; |
@@ -306,8 +312,8 @@ void WebRtcAec_ComfortNoise_mips(AecCore* aec, |
tmp = pi2 * rand[i - 1]; |
// Use average noise for H band |
- u[i][0] = noiseAvg * (float)cos(tmp); |
- u[i][1] = -noiseAvg * (float)sin(tmp); |
+ u[i][0] = noiseAvg * static_cast<float>(cos(tmp)); |
+ u[i][1] = -noiseAvg * static_cast<float>(sin(tmp)); |
} |
u[PART_LEN][1] = 0; |
@@ -376,7 +382,7 @@ void WebRtcAec_FilterFar_mips( |
"sub.s %[f9], %[f9], %[f11] \n\t" |
"lwc1 %[f6], 4(%[yf0]) \n\t" |
"add.s %[f4], %[f4], %[f12] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"addiu %[aRe], %[aRe], 8 \n\t" |
"addiu %[aIm], %[aIm], 8 \n\t" |
"addiu %[len], %[len], -1 \n\t" |
@@ -387,7 +393,7 @@ void WebRtcAec_FilterFar_mips( |
"nmsub.s %[f9], %[f9], %[f6], %[f7] \n\t" |
"lwc1 %[f6], 4(%[yf0]) \n\t" |
"madd.s %[f4], %[f4], %[f7], %[f5] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"lwc1 %[f5], 4(%[yf1]) \n\t" |
"add.s %[f2], %[f2], %[f8] \n\t" |
"addiu %[bRe], %[bRe], 8 \n\t" |
@@ -415,12 +421,12 @@ void WebRtcAec_FilterFar_mips( |
"lwc1 %[f2], 0(%[yf0]) \n\t" |
"add.s %[f1], %[f0], %[f1] \n\t" |
"lwc1 %[f3], 0(%[yf1]) \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"nmsub.s %[f8], %[f8], %[f2], %[f3] \n\t" |
"lwc1 %[f2], 0(%[yf0]) \n\t" |
"madd.s %[f1], %[f0], %[f3], %[f1] \n\t" |
"lwc1 %[f3], 0(%[yf1]) \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"add.s %[f2], %[f2], %[f8] \n\t" |
"add.s %[f3], %[f3], %[f1] \n\t" |
"swc1 %[f2], 0(%[yf0]) \n\t" |
@@ -496,7 +502,7 @@ void WebRtcAec_FilterAdaptation_mips( |
"sub.s %[f1], %[f0], %[f1] \n\t" |
"add.s %[f9], %[f9], %[f11] \n\t" |
"sub.s %[f5], %[f4], %[f5] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"addiu %[aIm], %[aIm], 8 \n\t" |
"addiu %[bIm], %[bIm], 8 \n\t" |
"addiu %[len], %[len], -1 \n\t" |
@@ -504,7 +510,7 @@ void WebRtcAec_FilterAdaptation_mips( |
"nmsub.s %[f1], %[f0], %[f3], %[f1] \n\t" |
"madd.s %[f9], %[f9], %[f7], %[f6] \n\t" |
"nmsub.s %[f5], %[f4], %[f7], %[f5] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"swc1 %[f8], 0(%[fft_tmp]) \n\t" |
"swc1 %[f1], 4(%[fft_tmp]) \n\t" |
"swc1 %[f9], 8(%[fft_tmp]) \n\t" |
@@ -519,9 +525,9 @@ void WebRtcAec_FilterAdaptation_mips( |
#if !defined(MIPS32_R2_LE) |
"mul.s %[f10], %[f3], %[f2] \n\t" |
"add.s %[f8], %[f8], %[f10] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"madd.s %[f8], %[f8], %[f3], %[f2] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"swc1 %[f8], 4(%[fft]) \n\t" |
".set pop \n\t" |
: [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), |
@@ -658,7 +664,7 @@ void WebRtcAec_OverdriveAndSuppress_mips(AecCore* aec, |
p_hNl = &hNl[0]; |
p_efw0 = &efw[0][0]; |
p_efw1 = &efw[1][0]; |
- p_WebRtcAec_wC = (float*)&WebRtcAec_weightCurve[0]; |
+ p_WebRtcAec_wC = reinterpret_cast<float*>(&WebRtcAec_weightCurve[0]); |
for (i = 0; i < PART_LEN1; i++) { |
// Weight subbands |
@@ -674,9 +680,9 @@ void WebRtcAec_OverdriveAndSuppress_mips(AecCore* aec, |
#if !defined(MIPS32_R2_LE) |
"mul.s %[temp1], %[temp1], %[temp4] \n\t" |
"add.s %[temp1], %[temp3], %[temp1] \n\t" |
-#else // #if !defined(MIPS32_R2_LE) |
+#else // #if !defined(MIPS32_R2_LE) |
"madd.s %[temp1], %[temp3], %[temp1], %[temp4] \n\t" |
-#endif // #if !defined(MIPS32_R2_LE) |
+#endif // #if !defined(MIPS32_R2_LE) |
"swc1 %[temp1], 0(%[p_hNl]) \n\t" |
"1: \n\t" |
"addiu %[p_wC], %[p_wC], 4 \n\t" |