diff --git a/webrtc/common_audio/signal_processing/include/signal_processing_library.h b/webrtc/common_audio/signal_processing/include/signal_processing_library.h index ce84ec85f..3966c2f51 100644 --- a/webrtc/common_audio/signal_processing/include/signal_processing_library.h +++ b/webrtc/common_audio/signal_processing/include/signal_processing_library.h @@ -55,8 +55,6 @@ ((uint32_t) ((uint32_t)(a) * (uint32_t)(b))) #define WEBRTC_SPL_UMUL_16_16(a, b) \ ((uint32_t) (uint16_t)(a) * (uint16_t)(b)) -#define WEBRTC_SPL_UMUL_16_16_RSFT16(a, b) \ - (((uint32_t) (uint16_t)(a) * (uint16_t)(b)) >> 16) #define WEBRTC_SPL_UMUL_32_16(a, b) \ ((uint32_t) ((uint32_t)(a) * (uint16_t)(b))) #define WEBRTC_SPL_UMUL_32_16_RSFT16(a, b) \ diff --git a/webrtc/common_audio/signal_processing/signal_processing_unittest.cc b/webrtc/common_audio/signal_processing/signal_processing_unittest.cc index 90e116f36..26225b5ff 100644 --- a/webrtc/common_audio/signal_processing/signal_processing_unittest.cc +++ b/webrtc/common_audio/signal_processing/signal_processing_unittest.cc @@ -47,7 +47,6 @@ TEST_F(SplTest, MacroTest) { EXPECT_EQ(2147483651u, WEBRTC_SPL_UMUL(a, b)); b = WEBRTC_SPL_WORD16_MAX >> 1; EXPECT_EQ(1073627139u, WEBRTC_SPL_UMUL_16_16(a, b)); - EXPECT_EQ(16382u, WEBRTC_SPL_UMUL_16_16_RSFT16(a, b)); EXPECT_EQ(4294918147u, WEBRTC_SPL_UMUL_32_16(a, b)); EXPECT_EQ(65535u, WEBRTC_SPL_UMUL_32_16_RSFT16(a, b)); EXPECT_EQ(-49149, WEBRTC_SPL_MUL_16_U16(a, b)); diff --git a/webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c b/webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c index 62a20a2ef..8de74752e 100644 --- a/webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c +++ b/webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c @@ -17,7 +17,6 @@ #include "arith_routins.h" - /* Tables for piecewise linear cdf functions: y = k*x */ /* x Points for function piecewise() in Q15 */ @@ -304,7 +303,7 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7, cdfTmp = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8)); W_tmp = WEBRTC_SPL_UMUL_16_16(cdfTmp, W_upper_MSB); - W_tmp += WEBRTC_SPL_UMUL_16_16_RSFT16(cdfTmp, W_upper_LSB); + W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16; if (streamVal > W_tmp) { @@ -313,7 +312,7 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7, cdfTmp = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8)); W_tmp = WEBRTC_SPL_UMUL_16_16(cdfTmp, W_upper_MSB); - W_tmp += WEBRTC_SPL_UMUL_16_16_RSFT16(cdfTmp, W_upper_LSB); + W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16; while (streamVal > W_tmp) { @@ -323,7 +322,7 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7, WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8)); W_tmp = WEBRTC_SPL_UMUL_16_16(cdfTmp, W_upper_MSB); - W_tmp += WEBRTC_SPL_UMUL_16_16_RSFT16(cdfTmp, W_upper_LSB); + W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16; /* error check */ if (W_lower == W_tmp) { @@ -342,7 +341,7 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7, cdfTmp = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8)); W_tmp = WEBRTC_SPL_UMUL_16_16(cdfTmp, W_upper_MSB); - W_tmp += WEBRTC_SPL_UMUL_16_16_RSFT16(cdfTmp, W_upper_LSB); + W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16; while ( !(streamVal > W_tmp) ) { @@ -352,7 +351,7 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7, WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8)); W_tmp = WEBRTC_SPL_UMUL_16_16(cdfTmp, W_upper_MSB); - W_tmp += WEBRTC_SPL_UMUL_16_16_RSFT16(cdfTmp, W_upper_LSB); + W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16; /* error check */ if (W_upper == W_tmp){