From 4a616be12b9a941076892af89625f847513999dc Mon Sep 17 00:00:00 2001 From: "bjornv@webrtc.org" Date: Mon, 25 Aug 2014 10:32:22 +0000 Subject: [PATCH] Revert 6961 "common_audio/signal_processing: Remove macro WEBRTC..." > common_audio/signal_processing: Remove macro WEBRTC_SPL_MEMCPY_W8 > > This macro is nothing but memcpy() and further used at one single place in webrtc, so it makes no sense to keep it. Replaced the operation where it is used. > > BUG=3348,3353 > TESTED=locally on linux and trybots > R=kwiberg@webrtc.org, tina.legrand@webrtc.org > > Review URL: https://webrtc-codereview.appspot.com/16359004 TBR=bjornv@webrtc.org Review URL: https://webrtc-codereview.appspot.com/22499004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6962 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../include/signal_processing_library.h | 2 ++ .../signal_processing_unittest.cc | 7 +++++ .../codecs/pcm16b/include/pcm16b.h | 24 ++++++++--------- .../audio_coding/codecs/pcm16b/pcm16b.c | 27 ++++++++++--------- 4 files changed, 35 insertions(+), 25 deletions(-) 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 2ca7aff2f4..fcc5cea001 100644 --- a/webrtc/common_audio/signal_processing/include/signal_processing_library.h +++ b/webrtc/common_audio/signal_processing/include/signal_processing_library.h @@ -109,6 +109,8 @@ extern "C" { #endif +#define WEBRTC_SPL_MEMCPY_W8(v1, v2, length) \ + memcpy(v1, v2, (length) * sizeof(char)) #define WEBRTC_SPL_MEMCPY_W16(v1, v2, length) \ memcpy(v1, v2, (length) * sizeof(int16_t)) diff --git a/webrtc/common_audio/signal_processing/signal_processing_unittest.cc b/webrtc/common_audio/signal_processing/signal_processing_unittest.cc index ddcf70a0c4..c21263b2bf 100644 --- a/webrtc/common_audio/signal_processing/signal_processing_unittest.cc +++ b/webrtc/common_audio/signal_processing/signal_processing_unittest.cc @@ -165,9 +165,11 @@ TEST_F(SplTest, MathOperationsTest) { TEST_F(SplTest, BasicArrayOperationsTest) { const int kVectorSize = 4; int B[] = {4, 12, 133, 1100}; + uint8_t b8[kVectorSize]; int16_t b16[kVectorSize]; int32_t b32[kVectorSize]; + uint8_t bTmp8[kVectorSize]; int16_t bTmp16[kVectorSize]; int32_t bTmp32[kVectorSize]; @@ -196,9 +198,14 @@ TEST_F(SplTest, BasicArrayOperationsTest) { EXPECT_EQ(1, b32[kk]); } for (int kk = 0; kk < kVectorSize; ++kk) { + bTmp8[kk] = (int8_t)kk; bTmp16[kk] = (int16_t)kk; bTmp32[kk] = (int32_t)kk; } + WEBRTC_SPL_MEMCPY_W8(b8, bTmp8, kVectorSize); + for (int kk = 0; kk < kVectorSize; ++kk) { + EXPECT_EQ(b8[kk], bTmp8[kk]); + } WEBRTC_SPL_MEMCPY_W16(b16, bTmp16, kVectorSize); for (int kk = 0; kk < kVectorSize; ++kk) { EXPECT_EQ(b16[kk], bTmp16[kk]); diff --git a/webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h b/webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h index 14e781325f..505142e756 100644 --- a/webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h +++ b/webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h @@ -26,18 +26,18 @@ extern "C" { * "Encode" a sample vector to 16 bit linear (Encoded standard is big endian) * * Input: - * - speechIn16b : Input speech vector - * - length_samples : Number of samples in speech vector + * - speechIn16b : Input speech vector + * - len : Number of samples in speech vector * * Output: - * - speechOut16b : Encoded data vector (big endian 16 bit) + * - speechOut16b : Encoded data vector (big endian 16 bit) * - * Returned value : Size in bytes of speechOut16b + * Returned value : Size in bytes of speechOut16b */ -int16_t WebRtcPcm16b_EncodeW16(int16_t *speechIn16b, - int16_t length_samples, - int16_t *speechOut16b); +int16_t WebRtcPcm16b_EncodeW16(const int16_t* speechIn16b, + int16_t len, + int16_t* speechOut16b); /**************************************************************************** * WebRtcPcm16b_Encode(...) @@ -64,18 +64,18 @@ int16_t WebRtcPcm16b_Encode(int16_t *speech16b, * "Decode" a vector to 16 bit linear (Encoded standard is big endian) * * Input: - * - speechIn16b : Encoded data vector (big endian 16 bit) - * - length_bytes : Number of bytes in speechIn16b + * - speechIn16b : Encoded data vector (big endian 16 bit) + * - len : Number of bytes in speechIn16b * * Output: - * - speechOut16b : Decoded speech vector + * - speechOut16b : Decoded speech vector * - * Returned value : Samples in speechOut16b + * Returned value : Samples in speechOut16b */ int16_t WebRtcPcm16b_DecodeW16(void *inst, int16_t *speechIn16b, - int16_t length_bytes, + int16_t len, int16_t *speechOut16b, int16_t* speechType); diff --git a/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.c b/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.c index 41f4e10652..7661dc132c 100644 --- a/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.c +++ b/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.c @@ -12,31 +12,32 @@ #include "pcm16b.h" #include -#ifdef WEBRTC_ARCH_BIG_ENDIAN -#include -#endif #include "typedefs.h" +#ifdef WEBRTC_ARCH_BIG_ENDIAN +#include "signal_processing_library.h" +#endif + #define HIGHEND 0xFF00 #define LOWEND 0xFF /* Encoder with int16_t Output */ -int16_t WebRtcPcm16b_EncodeW16(int16_t *speechIn16b, - int16_t length_samples, - int16_t *speechOut16b) +int16_t WebRtcPcm16b_EncodeW16(const int16_t* speechIn16b, + int16_t len, + int16_t* speechOut16b) { #ifdef WEBRTC_ARCH_BIG_ENDIAN - memcpy(speechOut16b, speechIn16b, length_samples * sizeof(int16_t)); + WEBRTC_SPL_MEMCPY_W16(speechOut16b, speechIn16b, len); #else int i; - for (i = 0; i < length_samples; i++) { + for (i=0;i>8)|((((uint16_t)speechIn16b[i])<<8)&0xFF00); } #endif - return length_samples << 1; + return(len<<1); } @@ -63,15 +64,15 @@ int16_t WebRtcPcm16b_Encode(int16_t *speech16b, /* Decoder with int16_t Input instead of char when the int16_t Encoder is used */ int16_t WebRtcPcm16b_DecodeW16(void *inst, int16_t *speechIn16b, - int16_t length_bytes, + int16_t len, int16_t *speechOut16b, int16_t* speechType) { #ifdef WEBRTC_ARCH_BIG_ENDIAN - memcpy(speechOut16b, speechIn16b, length_bytes); + WEBRTC_SPL_MEMCPY_W8(speechOut16b, speechIn16b, ((len*sizeof(int16_t)+1)>>1)); #else int i; - int samples = length_bytes >> 1; + int samples=len>>1; for (i=0;i>8)|(((uint16_t)(speechIn16b[i]&0xFF))<<8); @@ -83,7 +84,7 @@ int16_t WebRtcPcm16b_DecodeW16(void *inst, // Avoid warning. (void)(inst = NULL); - return length_bytes >> 1; + return(len>>1); } /* "old" version of the decoder that uses char as input (not used in NetEq any more) */