Refactor common_audio/signal_processing: Removed usage of WEBRTC_SPL_MUL_16_16_RSFT
The macro is defined as
#define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \
(WEBRTC_SPL_MUL_16_16(a, b) >> (c))
where the latter macro is in C defined as
#define WEBRTC_SPL_MUL_16_16(a, b) \
((int32_t) (((int16_t)(a)) * ((int16_t)(b))))
(For definitions on ARMv7 and MIPS, see common_audio/signal_processing/include/spl_inl_{armv7,mips}.h)
The replacement consists of
- avoiding casts to int16_t if inputs already are int16_t
- adding explicit cast to <type> if result is assigned to <type> (other than int or int32_t)
- minor cleanups like remove of unnecessary parentheses and style changes
BUG=3348, 3353
TESTED=locally on Linux for both fixed and floating point and trybots
R=kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/49499004
Cr-Original-Commit-Position: refs/heads/master@{#8853}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 1ccd8b4281f8d3ebbc51e70a96ac186e787a7114
diff --git a/common_audio/signal_processing/energy.c b/common_audio/signal_processing/energy.c
index a8698e0..0611ad3 100644
--- a/common_audio/signal_processing/energy.c
+++ b/common_audio/signal_processing/energy.c
@@ -27,8 +27,8 @@
for (i = 0; i < looptimes; i++)
{
- en += WEBRTC_SPL_MUL_16_16_RSFT(*vectorptr, *vectorptr, scaling);
- vectorptr++;
+ en += (*vectorptr * *vectorptr) >> scaling;
+ vectorptr++;
}
*scale_factor = scaling;
diff --git a/common_audio/signal_processing/ilbc_specific_functions.c b/common_audio/signal_processing/ilbc_specific_functions.c
index 4a1a7d6..de870b2 100644
--- a/common_audio/signal_processing/ilbc_specific_functions.c
+++ b/common_audio/signal_processing/ilbc_specific_functions.c
@@ -32,8 +32,7 @@
const int16_t *winptr = win;
for (i = 0; i < vector_length; i++)
{
- (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(*inptr++,
- *winptr--, right_shifts);
+ *outptr++ = (int16_t)((*inptr++ * *winptr--) >> right_shifts);
}
}
@@ -47,8 +46,7 @@
const int16_t *winptr = win;
for (i = 0; i < vector_length; i++)
{
- (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(*inptr++,
- *winptr++, right_shifts);
+ *outptr++ = (int16_t)((*inptr++ * *winptr++) >> right_shifts);
}
}
diff --git a/common_audio/signal_processing/include/signal_processing_library.h b/common_audio/signal_processing/include/signal_processing_library.h
index a1dc6aa..7014fa1 100644
--- a/common_audio/signal_processing/include/signal_processing_library.h
+++ b/common_audio/signal_processing/include/signal_processing_library.h
@@ -92,7 +92,7 @@
#define WEBRTC_SPL_RSHIFT_U32(x, c) ((uint32_t)(x) >> (c))
#define WEBRTC_SPL_RAND(a) \
- ((int16_t)(WEBRTC_SPL_MUL_16_16_RSFT((a), 18816, 7) & 0x00007fff))
+ ((int16_t)((((int16_t)a * 18816) >> 7) & 0x00007fff))
#ifdef __cplusplus
extern "C" {
diff --git a/common_audio/signal_processing/refl_coef_to_lpc.c b/common_audio/signal_processing/refl_coef_to_lpc.c
index 17055c9..06a29b6 100644
--- a/common_audio/signal_processing/refl_coef_to_lpc.c
+++ b/common_audio/signal_processing/refl_coef_to_lpc.c
@@ -41,8 +41,7 @@
any[m + 1] = *kptr >> 3;
for (i = 0; i < m; i++)
{
- *anyptr = (*aptr)
- + (int16_t)WEBRTC_SPL_MUL_16_16_RSFT((*aptr2), (*kptr), 15);
+ *anyptr = *aptr + (int16_t)((*aptr2 * *kptr) >> 15);
anyptr++;
aptr++;
aptr2--;
diff --git a/common_audio/signal_processing/vector_scaling_operations.c b/common_audio/signal_processing/vector_scaling_operations.c
index c3eaa28..736f62c 100644
--- a/common_audio/signal_processing/vector_scaling_operations.c
+++ b/common_audio/signal_processing/vector_scaling_operations.c
@@ -97,7 +97,7 @@
for (i = 0; i < in_vector_length; i++)
{
- (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(*inptr++, gain, right_shifts);
+ *outptr++ = (int16_t)((*inptr++ * gain) >> right_shifts);
}
}
@@ -107,17 +107,14 @@
{
// Performs vector operation: out_vector = (gain*in_vector)>>right_shifts
int i;
- int32_t tmpW32;
const int16_t *inptr;
int16_t *outptr;
inptr = in_vector;
outptr = out_vector;
- for (i = 0; i < in_vector_length; i++)
- {
- tmpW32 = WEBRTC_SPL_MUL_16_16_RSFT(*inptr++, gain, right_shifts);
- (*outptr++) = WebRtcSpl_SatW32ToW16(tmpW32);
+ for (i = 0; i < in_vector_length; i++) {
+ *outptr++ = WebRtcSpl_SatW32ToW16((*inptr++ * gain) >> right_shifts);
}
}
@@ -137,8 +134,8 @@
for (i = 0; i < vector_length; i++)
{
- (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(gain1, *in1ptr++, shift1)
- + (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(gain2, *in2ptr++, shift2);
+ *outptr++ = (int16_t)((gain1 * *in1ptr++) >> shift1) +
+ (int16_t)((gain2 * *in2ptr++) >> shift2);
}
}