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

Side by Side Diff: webrtc/common_audio/signal_processing/signal_processing_unittest.cc

Issue 1230503003: Update a ton of audio code to use size_t more correctly and in general reduce (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync Created 5 years, 4 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 "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h" 12 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h"
13 13
14 static const int kVector16Size = 9; 14 static const size_t kVector16Size = 9;
15 static const int16_t vector16[kVector16Size] = {1, -15511, 4323, 1963, 15 static const int16_t vector16[kVector16Size] = {1, -15511, 4323, 1963,
16 WEBRTC_SPL_WORD16_MAX, 0, WEBRTC_SPL_WORD16_MIN + 5, -3333, 345}; 16 WEBRTC_SPL_WORD16_MAX, 0, WEBRTC_SPL_WORD16_MIN + 5, -3333, 345};
17 17
18 class SplTest : public testing::Test { 18 class SplTest : public testing::Test {
19 protected: 19 protected:
20 SplTest() { 20 SplTest() {
21 WebRtcSpl_Init(); 21 WebRtcSpl_Init();
22 } 22 }
23 virtual ~SplTest() { 23 virtual ~SplTest() {
24 } 24 }
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 150
151 151
152 EXPECT_EQ(-91772805, WebRtcSpl_DivResultInQ31(den, num)); 152 EXPECT_EQ(-91772805, WebRtcSpl_DivResultInQ31(den, num));
153 EXPECT_EQ(-23, WebRtcSpl_DivW32W16ResW16(num, (int16_t)den)); 153 EXPECT_EQ(-23, WebRtcSpl_DivW32W16ResW16(num, (int16_t)den));
154 EXPECT_EQ(-23, WebRtcSpl_DivW32W16(num, (int16_t)den)); 154 EXPECT_EQ(-23, WebRtcSpl_DivW32W16(num, (int16_t)den));
155 EXPECT_EQ(23u, WebRtcSpl_DivU32U16(num, denU)); 155 EXPECT_EQ(23u, WebRtcSpl_DivU32U16(num, denU));
156 EXPECT_EQ(0, WebRtcSpl_DivW32HiLow(128, 0, 256)); 156 EXPECT_EQ(0, WebRtcSpl_DivW32HiLow(128, 0, 256));
157 } 157 }
158 158
159 TEST_F(SplTest, BasicArrayOperationsTest) { 159 TEST_F(SplTest, BasicArrayOperationsTest) {
160 const int kVectorSize = 4; 160 const size_t kVectorSize = 4;
161 int B[] = {4, 12, 133, 1100}; 161 int B[] = {4, 12, 133, 1100};
162 int16_t b16[kVectorSize]; 162 int16_t b16[kVectorSize];
163 int32_t b32[kVectorSize]; 163 int32_t b32[kVectorSize];
164 164
165 int16_t bTmp16[kVectorSize]; 165 int16_t bTmp16[kVectorSize];
166 int32_t bTmp32[kVectorSize]; 166 int32_t bTmp32[kVectorSize];
167 167
168 WebRtcSpl_MemSetW16(b16, 3, kVectorSize); 168 WebRtcSpl_MemSetW16(b16, 3, kVectorSize);
169 for (int kk = 0; kk < kVectorSize; ++kk) { 169 for (size_t kk = 0; kk < kVectorSize; ++kk) {
170 EXPECT_EQ(3, b16[kk]); 170 EXPECT_EQ(3, b16[kk]);
171 } 171 }
172 WebRtcSpl_ZerosArrayW16(b16, kVectorSize); 172 WebRtcSpl_ZerosArrayW16(b16, kVectorSize);
173 for (int kk = 0; kk < kVectorSize; ++kk) { 173 for (size_t kk = 0; kk < kVectorSize; ++kk) {
174 EXPECT_EQ(0, b16[kk]); 174 EXPECT_EQ(0, b16[kk]);
175 } 175 }
176 WebRtcSpl_MemSetW32(b32, 3, kVectorSize); 176 WebRtcSpl_MemSetW32(b32, 3, kVectorSize);
177 for (int kk = 0; kk < kVectorSize; ++kk) { 177 for (size_t kk = 0; kk < kVectorSize; ++kk) {
178 EXPECT_EQ(3, b32[kk]); 178 EXPECT_EQ(3, b32[kk]);
179 } 179 }
180 WebRtcSpl_ZerosArrayW32(b32, kVectorSize); 180 WebRtcSpl_ZerosArrayW32(b32, kVectorSize);
181 for (int kk = 0; kk < kVectorSize; ++kk) { 181 for (size_t kk = 0; kk < kVectorSize; ++kk) {
182 EXPECT_EQ(0, b32[kk]); 182 EXPECT_EQ(0, b32[kk]);
183 } 183 }
184 for (int kk = 0; kk < kVectorSize; ++kk) { 184 for (size_t kk = 0; kk < kVectorSize; ++kk) {
185 bTmp16[kk] = (int16_t)kk; 185 bTmp16[kk] = (int16_t)kk;
186 bTmp32[kk] = (int32_t)kk; 186 bTmp32[kk] = (int32_t)kk;
187 } 187 }
188 WEBRTC_SPL_MEMCPY_W16(b16, bTmp16, kVectorSize); 188 WEBRTC_SPL_MEMCPY_W16(b16, bTmp16, kVectorSize);
189 for (int kk = 0; kk < kVectorSize; ++kk) { 189 for (size_t kk = 0; kk < kVectorSize; ++kk) {
190 EXPECT_EQ(b16[kk], bTmp16[kk]); 190 EXPECT_EQ(b16[kk], bTmp16[kk]);
191 } 191 }
192 // WEBRTC_SPL_MEMCPY_W32(b32, bTmp32, kVectorSize); 192 // WEBRTC_SPL_MEMCPY_W32(b32, bTmp32, kVectorSize);
193 // for (int kk = 0; kk < kVectorSize; ++kk) { 193 // for (int kk = 0; kk < kVectorSize; ++kk) {
194 // EXPECT_EQ(b32[kk], bTmp32[kk]); 194 // EXPECT_EQ(b32[kk], bTmp32[kk]);
195 // } 195 // }
196 WebRtcSpl_CopyFromEndW16(b16, kVectorSize, 2, bTmp16); 196 WebRtcSpl_CopyFromEndW16(b16, kVectorSize, 2, bTmp16);
197 for (int kk = 0; kk < 2; ++kk) { 197 for (size_t kk = 0; kk < 2; ++kk) {
198 EXPECT_EQ(kk+2, bTmp16[kk]); 198 EXPECT_EQ(static_cast<int16_t>(kk+2), bTmp16[kk]);
199 } 199 }
200 200
201 for (int kk = 0; kk < kVectorSize; ++kk) { 201 for (size_t kk = 0; kk < kVectorSize; ++kk) {
202 b32[kk] = B[kk]; 202 b32[kk] = B[kk];
203 b16[kk] = (int16_t)B[kk]; 203 b16[kk] = (int16_t)B[kk];
204 } 204 }
205 WebRtcSpl_VectorBitShiftW32ToW16(bTmp16, kVectorSize, b32, 1); 205 WebRtcSpl_VectorBitShiftW32ToW16(bTmp16, kVectorSize, b32, 1);
206 for (int kk = 0; kk < kVectorSize; ++kk) { 206 for (size_t kk = 0; kk < kVectorSize; ++kk) {
207 EXPECT_EQ((B[kk]>>1), bTmp16[kk]); 207 EXPECT_EQ((B[kk]>>1), bTmp16[kk]);
208 } 208 }
209 WebRtcSpl_VectorBitShiftW16(bTmp16, kVectorSize, b16, 1); 209 WebRtcSpl_VectorBitShiftW16(bTmp16, kVectorSize, b16, 1);
210 for (int kk = 0; kk < kVectorSize; ++kk) { 210 for (size_t kk = 0; kk < kVectorSize; ++kk) {
211 EXPECT_EQ((B[kk]>>1), bTmp16[kk]); 211 EXPECT_EQ((B[kk]>>1), bTmp16[kk]);
212 } 212 }
213 WebRtcSpl_VectorBitShiftW32(bTmp32, kVectorSize, b32, 1); 213 WebRtcSpl_VectorBitShiftW32(bTmp32, kVectorSize, b32, 1);
214 for (int kk = 0; kk < kVectorSize; ++kk) { 214 for (size_t kk = 0; kk < kVectorSize; ++kk) {
215 EXPECT_EQ((B[kk]>>1), bTmp32[kk]); 215 EXPECT_EQ((B[kk]>>1), bTmp32[kk]);
216 } 216 }
217 217
218 WebRtcSpl_MemCpyReversedOrder(&bTmp16[3], b16, kVectorSize); 218 WebRtcSpl_MemCpyReversedOrder(&bTmp16[3], b16, kVectorSize);
219 for (int kk = 0; kk < kVectorSize; ++kk) { 219 for (size_t kk = 0; kk < kVectorSize; ++kk) {
220 EXPECT_EQ(b16[3-kk], bTmp16[kk]); 220 EXPECT_EQ(b16[3-kk], bTmp16[kk]);
221 } 221 }
222 } 222 }
223 223
224 TEST_F(SplTest, ExeptionsHandlingMinMaxOperationsTest) { 224 TEST_F(SplTest, ExeptionsHandlingMinMaxOperationsTest) {
225 // Test how the functions handle exceptional cases. 225 // Test how the functions handle exceptional cases.
226 const int kVectorSize = 2; 226 const size_t kVectorSize = 2;
227 int16_t vector16[kVectorSize] = {0}; 227 int16_t vector16[kVectorSize] = {0};
228 int32_t vector32[kVectorSize] = {0}; 228 int32_t vector32[kVectorSize] = {0};
229 229
230 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW16(vector16, 0)); 230 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW16(vector16, 0));
231 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW16(NULL, kVectorSize)); 231 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW16(NULL, kVectorSize));
232 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN, WebRtcSpl_MaxValueW16(vector16, 0)); 232 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN, WebRtcSpl_MaxValueW16(vector16, 0));
233 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN, WebRtcSpl_MaxValueW16(NULL, kVectorSize)); 233 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN, WebRtcSpl_MaxValueW16(NULL, kVectorSize));
234 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, WebRtcSpl_MinValueW16(vector16, 0)); 234 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, WebRtcSpl_MinValueW16(vector16, 0));
235 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, WebRtcSpl_MinValueW16(NULL, kVectorSize)); 235 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, WebRtcSpl_MinValueW16(NULL, kVectorSize));
236 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW32(vector32, 0)); 236 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW32(vector32, 0));
237 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW32(NULL, kVectorSize)); 237 EXPECT_EQ(-1, WebRtcSpl_MaxAbsValueW32(NULL, kVectorSize));
238 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN, WebRtcSpl_MaxValueW32(vector32, 0)); 238 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN, WebRtcSpl_MaxValueW32(vector32, 0));
239 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN, WebRtcSpl_MaxValueW32(NULL, kVectorSize)); 239 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN, WebRtcSpl_MaxValueW32(NULL, kVectorSize));
240 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, WebRtcSpl_MinValueW32(vector32, 0)); 240 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, WebRtcSpl_MinValueW32(vector32, 0));
241 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, WebRtcSpl_MinValueW32(NULL, kVectorSize)); 241 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, WebRtcSpl_MinValueW32(NULL, kVectorSize));
242 EXPECT_EQ(-1, WebRtcSpl_MaxAbsIndexW16(vector16, 0)); 242 EXPECT_EQ(-1, WebRtcSpl_MaxAbsIndexW16(vector16, 0));
243 EXPECT_EQ(-1, WebRtcSpl_MaxAbsIndexW16(NULL, kVectorSize)); 243 EXPECT_EQ(-1, WebRtcSpl_MaxAbsIndexW16(NULL, kVectorSize));
244 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW16(vector16, 0)); 244 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW16(vector16, 0));
245 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW16(NULL, kVectorSize)); 245 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW16(NULL, kVectorSize));
246 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW32(vector32, 0)); 246 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW32(vector32, 0));
247 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW32(NULL, kVectorSize)); 247 EXPECT_EQ(-1, WebRtcSpl_MaxIndexW32(NULL, kVectorSize));
248 EXPECT_EQ(-1, WebRtcSpl_MinIndexW16(vector16, 0)); 248 EXPECT_EQ(-1, WebRtcSpl_MinIndexW16(vector16, 0));
249 EXPECT_EQ(-1, WebRtcSpl_MinIndexW16(NULL, kVectorSize)); 249 EXPECT_EQ(-1, WebRtcSpl_MinIndexW16(NULL, kVectorSize));
250 EXPECT_EQ(-1, WebRtcSpl_MinIndexW32(vector32, 0)); 250 EXPECT_EQ(-1, WebRtcSpl_MinIndexW32(vector32, 0));
251 EXPECT_EQ(-1, WebRtcSpl_MinIndexW32(NULL, kVectorSize)); 251 EXPECT_EQ(-1, WebRtcSpl_MinIndexW32(NULL, kVectorSize));
252 } 252 }
253 253
254 TEST_F(SplTest, MinMaxOperationsTest) { 254 TEST_F(SplTest, MinMaxOperationsTest) {
255 const int kVectorSize = 17; 255 const size_t kVectorSize = 17;
256 256
257 // Vectors to test the cases where minimum values have to be caught 257 // Vectors to test the cases where minimum values have to be caught
258 // outside of the unrolled loops in ARM-Neon. 258 // outside of the unrolled loops in ARM-Neon.
259 int16_t vector16[kVectorSize] = {-1, 7485, 0, 3333, 259 int16_t vector16[kVectorSize] = {-1, 7485, 0, 3333,
260 -18283, 0, 12334, -29871, 988, -3333, 260 -18283, 0, 12334, -29871, 988, -3333,
261 345, -456, 222, 999, 888, 8774, WEBRTC_SPL_WORD16_MIN}; 261 345, -456, 222, 999, 888, 8774, WEBRTC_SPL_WORD16_MIN};
262 int32_t vector32[kVectorSize] = {-1, 0, 283211, 3333, 262 int32_t vector32[kVectorSize] = {-1, 0, 283211, 3333,
263 8712345, 0, -3333, 89345, -374585456, 222, 999, 122345334, 263 8712345, 0, -3333, 89345, -374585456, 222, 999, 122345334,
264 -12389756, -987329871, 888, -2, WEBRTC_SPL_WORD32_MIN}; 264 -12389756, -987329871, 888, -2, WEBRTC_SPL_WORD32_MIN};
265 265
266 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN, 266 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN,
267 WebRtcSpl_MinValueW16(vector16, kVectorSize)); 267 WebRtcSpl_MinValueW16(vector16, kVectorSize));
268 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN, 268 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN,
269 WebRtcSpl_MinValueW32(vector32, kVectorSize)); 269 WebRtcSpl_MinValueW32(vector32, kVectorSize));
270 EXPECT_EQ(kVectorSize - 1, WebRtcSpl_MinIndexW16(vector16, kVectorSize)); 270 EXPECT_EQ(static_cast<int>(kVectorSize - 1),
271 EXPECT_EQ(kVectorSize - 1, WebRtcSpl_MinIndexW32(vector32, kVectorSize)); 271 WebRtcSpl_MinIndexW16(vector16, kVectorSize));
272 EXPECT_EQ(static_cast<int>(kVectorSize - 1),
273 WebRtcSpl_MinIndexW32(vector32, kVectorSize));
272 274
273 // Test the cases where maximum values have to be caught 275 // Test the cases where maximum values have to be caught
274 // outside of the unrolled loops in ARM-Neon. 276 // outside of the unrolled loops in ARM-Neon.
275 vector16[kVectorSize - 1] = WEBRTC_SPL_WORD16_MAX; 277 vector16[kVectorSize - 1] = WEBRTC_SPL_WORD16_MAX;
276 vector32[kVectorSize - 1] = WEBRTC_SPL_WORD32_MAX; 278 vector32[kVectorSize - 1] = WEBRTC_SPL_WORD32_MAX;
277 279
278 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, 280 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX,
279 WebRtcSpl_MaxAbsValueW16(vector16, kVectorSize)); 281 WebRtcSpl_MaxAbsValueW16(vector16, kVectorSize));
280 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, 282 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX,
281 WebRtcSpl_MaxValueW16(vector16, kVectorSize)); 283 WebRtcSpl_MaxValueW16(vector16, kVectorSize));
282 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, 284 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX,
283 WebRtcSpl_MaxAbsValueW32(vector32, kVectorSize)); 285 WebRtcSpl_MaxAbsValueW32(vector32, kVectorSize));
284 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, 286 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX,
285 WebRtcSpl_MaxValueW32(vector32, kVectorSize)); 287 WebRtcSpl_MaxValueW32(vector32, kVectorSize));
286 EXPECT_EQ(kVectorSize - 1, WebRtcSpl_MaxAbsIndexW16(vector16, kVectorSize)); 288 EXPECT_EQ(static_cast<int>(kVectorSize - 1),
287 EXPECT_EQ(kVectorSize - 1, WebRtcSpl_MaxIndexW16(vector16, kVectorSize)); 289 WebRtcSpl_MaxAbsIndexW16(vector16, kVectorSize));
288 EXPECT_EQ(kVectorSize - 1, WebRtcSpl_MaxIndexW32(vector32, kVectorSize)); 290 EXPECT_EQ(static_cast<int>(kVectorSize - 1),
291 WebRtcSpl_MaxIndexW16(vector16, kVectorSize));
292 EXPECT_EQ(static_cast<int>(kVectorSize - 1),
293 WebRtcSpl_MaxIndexW32(vector32, kVectorSize));
289 294
290 // Test the cases where multiple maximum and minimum values are present. 295 // Test the cases where multiple maximum and minimum values are present.
291 vector16[1] = WEBRTC_SPL_WORD16_MAX; 296 vector16[1] = WEBRTC_SPL_WORD16_MAX;
292 vector16[6] = WEBRTC_SPL_WORD16_MIN; 297 vector16[6] = WEBRTC_SPL_WORD16_MIN;
293 vector16[11] = WEBRTC_SPL_WORD16_MIN; 298 vector16[11] = WEBRTC_SPL_WORD16_MIN;
294 vector32[1] = WEBRTC_SPL_WORD32_MAX; 299 vector32[1] = WEBRTC_SPL_WORD32_MAX;
295 vector32[6] = WEBRTC_SPL_WORD32_MIN; 300 vector32[6] = WEBRTC_SPL_WORD32_MIN;
296 vector32[11] = WEBRTC_SPL_WORD32_MIN; 301 vector32[11] = WEBRTC_SPL_WORD32_MIN;
297 302
298 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, 303 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX,
299 WebRtcSpl_MaxAbsValueW16(vector16, kVectorSize)); 304 WebRtcSpl_MaxAbsValueW16(vector16, kVectorSize));
300 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX, 305 EXPECT_EQ(WEBRTC_SPL_WORD16_MAX,
301 WebRtcSpl_MaxValueW16(vector16, kVectorSize)); 306 WebRtcSpl_MaxValueW16(vector16, kVectorSize));
302 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN, 307 EXPECT_EQ(WEBRTC_SPL_WORD16_MIN,
303 WebRtcSpl_MinValueW16(vector16, kVectorSize)); 308 WebRtcSpl_MinValueW16(vector16, kVectorSize));
304 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, 309 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX,
305 WebRtcSpl_MaxAbsValueW32(vector32, kVectorSize)); 310 WebRtcSpl_MaxAbsValueW32(vector32, kVectorSize));
306 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX, 311 EXPECT_EQ(WEBRTC_SPL_WORD32_MAX,
307 WebRtcSpl_MaxValueW32(vector32, kVectorSize)); 312 WebRtcSpl_MaxValueW32(vector32, kVectorSize));
308 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN, 313 EXPECT_EQ(WEBRTC_SPL_WORD32_MIN,
309 WebRtcSpl_MinValueW32(vector32, kVectorSize)); 314 WebRtcSpl_MinValueW32(vector32, kVectorSize));
310 EXPECT_EQ(6, WebRtcSpl_MaxAbsIndexW16(vector16, kVectorSize)); 315 EXPECT_EQ(6, WebRtcSpl_MaxAbsIndexW16(vector16, kVectorSize));
311 EXPECT_EQ(1, WebRtcSpl_MaxIndexW16(vector16, kVectorSize)); 316 EXPECT_EQ(1, WebRtcSpl_MaxIndexW16(vector16, kVectorSize));
312 EXPECT_EQ(1, WebRtcSpl_MaxIndexW32(vector32, kVectorSize)); 317 EXPECT_EQ(1, WebRtcSpl_MaxIndexW32(vector32, kVectorSize));
313 EXPECT_EQ(6, WebRtcSpl_MinIndexW16(vector16, kVectorSize)); 318 EXPECT_EQ(6, WebRtcSpl_MinIndexW16(vector16, kVectorSize));
314 EXPECT_EQ(6, WebRtcSpl_MinIndexW32(vector32, kVectorSize)); 319 EXPECT_EQ(6, WebRtcSpl_MinIndexW32(vector32, kVectorSize));
315 } 320 }
316 321
317 TEST_F(SplTest, VectorOperationsTest) { 322 TEST_F(SplTest, VectorOperationsTest) {
318 const int kVectorSize = 4; 323 const size_t kVectorSize = 4;
319 int B[] = {4, 12, 133, 1100}; 324 int B[] = {4, 12, 133, 1100};
320 int16_t a16[kVectorSize]; 325 int16_t a16[kVectorSize];
321 int16_t b16[kVectorSize]; 326 int16_t b16[kVectorSize];
322 int16_t bTmp16[kVectorSize]; 327 int16_t bTmp16[kVectorSize];
323 328
324 for (int kk = 0; kk < kVectorSize; ++kk) { 329 for (size_t kk = 0; kk < kVectorSize; ++kk) {
325 a16[kk] = B[kk]; 330 a16[kk] = B[kk];
326 b16[kk] = B[kk]; 331 b16[kk] = B[kk];
327 } 332 }
328 333
329 WebRtcSpl_AffineTransformVector(bTmp16, b16, 3, 7, 2, kVectorSize); 334 WebRtcSpl_AffineTransformVector(bTmp16, b16, 3, 7, 2, kVectorSize);
330 for (int kk = 0; kk < kVectorSize; ++kk) { 335 for (size_t kk = 0; kk < kVectorSize; ++kk) {
331 EXPECT_EQ((B[kk]*3+7)>>2, bTmp16[kk]); 336 EXPECT_EQ((B[kk]*3+7)>>2, bTmp16[kk]);
332 } 337 }
333 WebRtcSpl_ScaleAndAddVectorsWithRound(b16, 3, b16, 2, 2, bTmp16, kVectorSize ); 338 WebRtcSpl_ScaleAndAddVectorsWithRound(b16, 3, b16, 2, 2, bTmp16, kVectorSize );
334 for (int kk = 0; kk < kVectorSize; ++kk) { 339 for (size_t kk = 0; kk < kVectorSize; ++kk) {
335 EXPECT_EQ((B[kk]*3+B[kk]*2+2)>>2, bTmp16[kk]); 340 EXPECT_EQ((B[kk]*3+B[kk]*2+2)>>2, bTmp16[kk]);
336 } 341 }
337 342
338 WebRtcSpl_AddAffineVectorToVector(bTmp16, b16, 3, 7, 2, kVectorSize); 343 WebRtcSpl_AddAffineVectorToVector(bTmp16, b16, 3, 7, 2, kVectorSize);
339 for (int kk = 0; kk < kVectorSize; ++kk) { 344 for (size_t kk = 0; kk < kVectorSize; ++kk) {
340 EXPECT_EQ(((B[kk]*3+B[kk]*2+2)>>2)+((b16[kk]*3+7)>>2), bTmp16[kk]); 345 EXPECT_EQ(((B[kk]*3+B[kk]*2+2)>>2)+((b16[kk]*3+7)>>2), bTmp16[kk]);
341 } 346 }
342 347
343 WebRtcSpl_ScaleVector(b16, bTmp16, 13, kVectorSize, 2); 348 WebRtcSpl_ScaleVector(b16, bTmp16, 13, kVectorSize, 2);
344 for (int kk = 0; kk < kVectorSize; ++kk) { 349 for (size_t kk = 0; kk < kVectorSize; ++kk) {
345 EXPECT_EQ((b16[kk]*13)>>2, bTmp16[kk]); 350 EXPECT_EQ((b16[kk]*13)>>2, bTmp16[kk]);
346 } 351 }
347 WebRtcSpl_ScaleVectorWithSat(b16, bTmp16, 13, kVectorSize, 2); 352 WebRtcSpl_ScaleVectorWithSat(b16, bTmp16, 13, kVectorSize, 2);
348 for (int kk = 0; kk < kVectorSize; ++kk) { 353 for (size_t kk = 0; kk < kVectorSize; ++kk) {
349 EXPECT_EQ((b16[kk]*13)>>2, bTmp16[kk]); 354 EXPECT_EQ((b16[kk]*13)>>2, bTmp16[kk]);
350 } 355 }
351 WebRtcSpl_ScaleAndAddVectors(a16, 13, 2, b16, 7, 2, bTmp16, kVectorSize); 356 WebRtcSpl_ScaleAndAddVectors(a16, 13, 2, b16, 7, 2, bTmp16, kVectorSize);
352 for (int kk = 0; kk < kVectorSize; ++kk) { 357 for (size_t kk = 0; kk < kVectorSize; ++kk) {
353 EXPECT_EQ(((a16[kk]*13)>>2)+((b16[kk]*7)>>2), bTmp16[kk]); 358 EXPECT_EQ(((a16[kk]*13)>>2)+((b16[kk]*7)>>2), bTmp16[kk]);
354 } 359 }
355 360
356 WebRtcSpl_AddVectorsAndShift(bTmp16, a16, b16, kVectorSize, 2); 361 WebRtcSpl_AddVectorsAndShift(bTmp16, a16, b16, kVectorSize, 2);
357 for (int kk = 0; kk < kVectorSize; ++kk) { 362 for (size_t kk = 0; kk < kVectorSize; ++kk) {
358 EXPECT_EQ(B[kk] >> 1, bTmp16[kk]); 363 EXPECT_EQ(B[kk] >> 1, bTmp16[kk]);
359 } 364 }
360 WebRtcSpl_ReverseOrderMultArrayElements(bTmp16, a16, &b16[3], kVectorSize, 2 ); 365 WebRtcSpl_ReverseOrderMultArrayElements(bTmp16, a16, &b16[3], kVectorSize, 2 );
361 for (int kk = 0; kk < kVectorSize; ++kk) { 366 for (size_t kk = 0; kk < kVectorSize; ++kk) {
362 EXPECT_EQ((a16[kk]*b16[3-kk])>>2, bTmp16[kk]); 367 EXPECT_EQ((a16[kk]*b16[3-kk])>>2, bTmp16[kk]);
363 } 368 }
364 WebRtcSpl_ElementwiseVectorMult(bTmp16, a16, b16, kVectorSize, 6); 369 WebRtcSpl_ElementwiseVectorMult(bTmp16, a16, b16, kVectorSize, 6);
365 for (int kk = 0; kk < kVectorSize; ++kk) { 370 for (size_t kk = 0; kk < kVectorSize; ++kk) {
366 EXPECT_EQ((a16[kk]*b16[kk])>>6, bTmp16[kk]); 371 EXPECT_EQ((a16[kk]*b16[kk])>>6, bTmp16[kk]);
367 } 372 }
368 373
369 WebRtcSpl_SqrtOfOneMinusXSquared(b16, kVectorSize, bTmp16); 374 WebRtcSpl_SqrtOfOneMinusXSquared(b16, kVectorSize, bTmp16);
370 for (int kk = 0; kk < kVectorSize - 1; ++kk) { 375 for (size_t kk = 0; kk < kVectorSize - 1; ++kk) {
371 EXPECT_EQ(32767, bTmp16[kk]); 376 EXPECT_EQ(32767, bTmp16[kk]);
372 } 377 }
373 EXPECT_EQ(32749, bTmp16[kVectorSize - 1]); 378 EXPECT_EQ(32749, bTmp16[kVectorSize - 1]);
374 379
375 EXPECT_EQ(0, WebRtcSpl_GetScalingSquare(b16, kVectorSize, 1)); 380 EXPECT_EQ(0, WebRtcSpl_GetScalingSquare(b16, kVectorSize, 1));
376 } 381 }
377 382
378 TEST_F(SplTest, EstimatorsTest) { 383 TEST_F(SplTest, EstimatorsTest) {
379 const int16_t kOrder = 2; 384 const size_t kOrder = 2;
380 const int32_t unstable_filter[] = { 4, 12, 133, 1100 }; 385 const int32_t unstable_filter[] = { 4, 12, 133, 1100 };
381 const int32_t stable_filter[] = { 1100, 133, 12, 4 }; 386 const int32_t stable_filter[] = { 1100, 133, 12, 4 };
382 int16_t lpc[kOrder + 2] = { 0 }; 387 int16_t lpc[kOrder + 2] = { 0 };
383 int16_t refl[kOrder + 2] = { 0 }; 388 int16_t refl[kOrder + 2] = { 0 };
384 int16_t lpc_result[] = { 4096, -497, 15, 0 }; 389 int16_t lpc_result[] = { 4096, -497, 15, 0 };
385 int16_t refl_result[] = { -3962, 123, 0, 0 }; 390 int16_t refl_result[] = { -3962, 123, 0, 0 };
386 391
387 EXPECT_EQ(0, WebRtcSpl_LevinsonDurbin(unstable_filter, lpc, refl, kOrder)); 392 EXPECT_EQ(0, WebRtcSpl_LevinsonDurbin(unstable_filter, lpc, refl, kOrder));
388 EXPECT_EQ(1, WebRtcSpl_LevinsonDurbin(stable_filter, lpc, refl, kOrder)); 393 EXPECT_EQ(1, WebRtcSpl_LevinsonDurbin(stable_filter, lpc, refl, kOrder));
389 for (int i = 0; i < kOrder + 2; ++i) { 394 for (size_t i = 0; i < kOrder + 2; ++i) {
390 EXPECT_EQ(lpc_result[i], lpc[i]); 395 EXPECT_EQ(lpc_result[i], lpc[i]);
391 EXPECT_EQ(refl_result[i], refl[i]); 396 EXPECT_EQ(refl_result[i], refl[i]);
392 } 397 }
393 } 398 }
394 399
395 TEST_F(SplTest, FilterTest) { 400 TEST_F(SplTest, FilterTest) {
396 const int kVectorSize = 4; 401 const size_t kVectorSize = 4;
397 const int kFilterOrder = 3; 402 const size_t kFilterOrder = 3;
398 int16_t A[] = {1, 2, 33, 100}; 403 int16_t A[] = {1, 2, 33, 100};
399 int16_t A5[] = {1, 2, 33, 100, -5}; 404 int16_t A5[] = {1, 2, 33, 100, -5};
400 int16_t B[] = {4, 12, 133, 110}; 405 int16_t B[] = {4, 12, 133, 110};
401 int16_t data_in[kVectorSize]; 406 int16_t data_in[kVectorSize];
402 int16_t data_out[kVectorSize]; 407 int16_t data_out[kVectorSize];
403 int16_t bTmp16Low[kVectorSize]; 408 int16_t bTmp16Low[kVectorSize];
404 int16_t bState[kVectorSize]; 409 int16_t bState[kVectorSize];
405 int16_t bStateLow[kVectorSize]; 410 int16_t bStateLow[kVectorSize];
406 411
407 WebRtcSpl_ZerosArrayW16(bState, kVectorSize); 412 WebRtcSpl_ZerosArrayW16(bState, kVectorSize);
408 WebRtcSpl_ZerosArrayW16(bStateLow, kVectorSize); 413 WebRtcSpl_ZerosArrayW16(bStateLow, kVectorSize);
409 414
410 for (int kk = 0; kk < kVectorSize; ++kk) { 415 for (size_t kk = 0; kk < kVectorSize; ++kk) {
411 data_in[kk] = A[kk]; 416 data_in[kk] = A[kk];
412 data_out[kk] = 0; 417 data_out[kk] = 0;
413 } 418 }
414 419
415 // MA filters. 420 // MA filters.
416 // Note that the input data has |kFilterOrder| states before the actual 421 // Note that the input data has |kFilterOrder| states before the actual
417 // data (one sample). 422 // data (one sample).
418 WebRtcSpl_FilterMAFastQ12(&data_in[kFilterOrder], data_out, B, 423 WebRtcSpl_FilterMAFastQ12(&data_in[kFilterOrder], data_out, B,
419 kFilterOrder + 1, 1); 424 kFilterOrder + 1, 1);
420 EXPECT_EQ(0, data_out[0]); 425 EXPECT_EQ(0, data_out[0]);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 } 458 }
454 } 459 }
455 460
456 TEST_F(SplTest, DotProductWithScaleTest) { 461 TEST_F(SplTest, DotProductWithScaleTest) {
457 EXPECT_EQ(605362796, WebRtcSpl_DotProductWithScale(vector16, 462 EXPECT_EQ(605362796, WebRtcSpl_DotProductWithScale(vector16,
458 vector16, kVector16Size, 2)); 463 vector16, kVector16Size, 2));
459 } 464 }
460 465
461 TEST_F(SplTest, CrossCorrelationTest) { 466 TEST_F(SplTest, CrossCorrelationTest) {
462 // Note the function arguments relation specificed by API. 467 // Note the function arguments relation specificed by API.
463 const int kCrossCorrelationDimension = 3; 468 const size_t kCrossCorrelationDimension = 3;
464 const int kShift = 2; 469 const int kShift = 2;
465 const int kStep = 1; 470 const int kStep = 1;
466 const int kSeqDimension = 6; 471 const size_t kSeqDimension = 6;
467 472
468 const int16_t kVector16[kVector16Size] = {1, 4323, 1963, 473 const int16_t kVector16[kVector16Size] = {1, 4323, 1963,
469 WEBRTC_SPL_WORD16_MAX, WEBRTC_SPL_WORD16_MIN + 5, -3333, -876, 8483, 142}; 474 WEBRTC_SPL_WORD16_MAX, WEBRTC_SPL_WORD16_MIN + 5, -3333, -876, 8483, 142};
470 int32_t vector32[kCrossCorrelationDimension] = {0}; 475 int32_t vector32[kCrossCorrelationDimension] = {0};
471 476
472 WebRtcSpl_CrossCorrelation(vector32, vector16, kVector16, kSeqDimension, 477 WebRtcSpl_CrossCorrelation(vector32, vector16, kVector16, kSeqDimension,
473 kCrossCorrelationDimension, kShift, kStep); 478 kCrossCorrelationDimension, kShift, kStep);
474 479
475 // WebRtcSpl_CrossCorrelationC() and WebRtcSpl_CrossCorrelationNeon() 480 // WebRtcSpl_CrossCorrelationC() and WebRtcSpl_CrossCorrelationNeon()
476 // are not bit-exact. 481 // are not bit-exact.
477 const int32_t kExpected[kCrossCorrelationDimension] = 482 const int32_t kExpected[kCrossCorrelationDimension] =
478 {-266947903, -15579555, -171282001}; 483 {-266947903, -15579555, -171282001};
479 const int32_t* expected = kExpected; 484 const int32_t* expected = kExpected;
480 #if !defined(MIPS32_LE) 485 #if !defined(MIPS32_LE)
481 const int32_t kExpectedNeon[kCrossCorrelationDimension] = 486 const int32_t kExpectedNeon[kCrossCorrelationDimension] =
482 {-266947901, -15579553, -171281999}; 487 {-266947901, -15579553, -171281999};
483 if (WebRtcSpl_CrossCorrelation != WebRtcSpl_CrossCorrelationC) { 488 if (WebRtcSpl_CrossCorrelation != WebRtcSpl_CrossCorrelationC) {
484 expected = kExpectedNeon; 489 expected = kExpectedNeon;
485 } 490 }
486 #endif 491 #endif
487 for (int i = 0; i < kCrossCorrelationDimension; ++i) { 492 for (size_t i = 0; i < kCrossCorrelationDimension; ++i) {
488 EXPECT_EQ(expected[i], vector32[i]); 493 EXPECT_EQ(expected[i], vector32[i]);
489 } 494 }
490 } 495 }
491 496
492 TEST_F(SplTest, AutoCorrelationTest) { 497 TEST_F(SplTest, AutoCorrelationTest) {
493 int scale = 0; 498 int scale = 0;
494 int32_t vector32[kVector16Size]; 499 int32_t vector32[kVector16Size];
495 const int32_t expected[kVector16Size] = {302681398, 14223410, -121705063, 500 const int32_t expected[kVector16Size] = {302681398, 14223410, -121705063,
496 -85221647, -17104971, 61806945, 6644603, -669329, 43}; 501 -85221647, -17104971, 61806945, 6644603, -669329, 43};
497 502
498 EXPECT_EQ(-1, WebRtcSpl_AutoCorrelation(vector16, kVector16Size, 503 EXPECT_EQ(-1, WebRtcSpl_AutoCorrelation(vector16, kVector16Size,
499 kVector16Size + 1, vector32, &scale)); 504 kVector16Size + 1, vector32, &scale));
500 EXPECT_EQ(kVector16Size, 505 EXPECT_EQ(static_cast<int>(kVector16Size),
501 WebRtcSpl_AutoCorrelation(vector16, kVector16Size, 506 WebRtcSpl_AutoCorrelation(vector16, kVector16Size,
502 kVector16Size - 1, vector32, &scale)); 507 kVector16Size - 1, vector32, &scale));
503 EXPECT_EQ(3, scale); 508 EXPECT_EQ(3, scale);
504 for (int i = 0; i < kVector16Size; ++i) { 509 for (size_t i = 0; i < kVector16Size; ++i) {
505 EXPECT_EQ(expected[i], vector32[i]); 510 EXPECT_EQ(expected[i], vector32[i]);
506 } 511 }
507 } 512 }
508 513
509 TEST_F(SplTest, SignalProcessingTest) { 514 TEST_F(SplTest, SignalProcessingTest) {
510 const int kVectorSize = 4; 515 const size_t kVectorSize = 4;
511 int A[] = {1, 2, 33, 100}; 516 int A[] = {1, 2, 33, 100};
512 const int16_t kHanning[4] = { 2399, 8192, 13985, 16384 }; 517 const int16_t kHanning[4] = { 2399, 8192, 13985, 16384 };
513 int16_t b16[kVectorSize]; 518 int16_t b16[kVectorSize];
514 519
515 int16_t bTmp16[kVectorSize]; 520 int16_t bTmp16[kVectorSize];
516 521
517 int bScale = 0; 522 int bScale = 0;
518 523
519 for (int kk = 0; kk < kVectorSize; ++kk) { 524 for (size_t kk = 0; kk < kVectorSize; ++kk) {
520 b16[kk] = A[kk]; 525 b16[kk] = A[kk];
521 } 526 }
522 527
523 // TODO(bjornv): Activate the Reflection Coefficient tests when refactoring. 528 // TODO(bjornv): Activate the Reflection Coefficient tests when refactoring.
524 // WebRtcSpl_ReflCoefToLpc(b16, kVectorSize, bTmp16); 529 // WebRtcSpl_ReflCoefToLpc(b16, kVectorSize, bTmp16);
525 //// for (int kk = 0; kk < kVectorSize; ++kk) { 530 //// for (int kk = 0; kk < kVectorSize; ++kk) {
526 //// EXPECT_EQ(aTmp16[kk], bTmp16[kk]); 531 //// EXPECT_EQ(aTmp16[kk], bTmp16[kk]);
527 //// } 532 //// }
528 // WebRtcSpl_LpcToReflCoef(bTmp16, kVectorSize, b16); 533 // WebRtcSpl_LpcToReflCoef(bTmp16, kVectorSize, b16);
529 //// for (int kk = 0; kk < kVectorSize; ++kk) { 534 //// for (int kk = 0; kk < kVectorSize; ++kk) {
530 //// EXPECT_EQ(a16[kk], b16[kk]); 535 //// EXPECT_EQ(a16[kk], b16[kk]);
531 //// } 536 //// }
532 // WebRtcSpl_AutoCorrToReflCoef(b32, kVectorSize, bTmp16); 537 // WebRtcSpl_AutoCorrToReflCoef(b32, kVectorSize, bTmp16);
533 //// for (int kk = 0; kk < kVectorSize; ++kk) { 538 //// for (int kk = 0; kk < kVectorSize; ++kk) {
534 //// EXPECT_EQ(aTmp16[kk], bTmp16[kk]); 539 //// EXPECT_EQ(aTmp16[kk], bTmp16[kk]);
535 //// } 540 //// }
536 541
537 WebRtcSpl_GetHanningWindow(bTmp16, kVectorSize); 542 WebRtcSpl_GetHanningWindow(bTmp16, kVectorSize);
538 for (int kk = 0; kk < kVectorSize; ++kk) { 543 for (size_t kk = 0; kk < kVectorSize; ++kk) {
539 EXPECT_EQ(kHanning[kk], bTmp16[kk]); 544 EXPECT_EQ(kHanning[kk], bTmp16[kk]);
540 } 545 }
541 546
542 for (int kk = 0; kk < kVectorSize; ++kk) { 547 for (size_t kk = 0; kk < kVectorSize; ++kk) {
543 b16[kk] = A[kk]; 548 b16[kk] = A[kk];
544 } 549 }
545 EXPECT_EQ(11094 , WebRtcSpl_Energy(b16, kVectorSize, &bScale)); 550 EXPECT_EQ(11094 , WebRtcSpl_Energy(b16, kVectorSize, &bScale));
546 EXPECT_EQ(0, bScale); 551 EXPECT_EQ(0, bScale);
547 } 552 }
548 553
549 TEST_F(SplTest, FFTTest) { 554 TEST_F(SplTest, FFTTest) {
550 int16_t B[] = {1, 2, 33, 100, 555 int16_t B[] = {1, 2, 33, 100,
551 2, 3, 34, 101, 556 2, 3, 34, 101,
552 3, 4, 35, 102, 557 3, 4, 35, 102,
553 4, 5, 36, 103}; 558 4, 5, 36, 103};
554 559
555 EXPECT_EQ(0, WebRtcSpl_ComplexFFT(B, 3, 1)); 560 EXPECT_EQ(0, WebRtcSpl_ComplexFFT(B, 3, 1));
556 // for (int kk = 0; kk < 16; ++kk) { 561 // for (int kk = 0; kk < 16; ++kk) {
557 // EXPECT_EQ(A[kk], B[kk]); 562 // EXPECT_EQ(A[kk], B[kk]);
558 // } 563 // }
559 EXPECT_EQ(0, WebRtcSpl_ComplexIFFT(B, 3, 1)); 564 EXPECT_EQ(0, WebRtcSpl_ComplexIFFT(B, 3, 1));
560 // for (int kk = 0; kk < 16; ++kk) { 565 // for (int kk = 0; kk < 16; ++kk) {
561 // EXPECT_EQ(A[kk], B[kk]); 566 // EXPECT_EQ(A[kk], B[kk]);
562 // } 567 // }
563 WebRtcSpl_ComplexBitReverse(B, 3); 568 WebRtcSpl_ComplexBitReverse(B, 3);
564 for (int kk = 0; kk < 16; ++kk) { 569 for (int kk = 0; kk < 16; ++kk) {
565 //EXPECT_EQ(A[kk], B[kk]); 570 //EXPECT_EQ(A[kk], B[kk]);
566 } 571 }
567 } 572 }
568 573
569 TEST_F(SplTest, Resample48WithSaturationTest) { 574 TEST_F(SplTest, Resample48WithSaturationTest) {
570 // The test resamples 3*kBlockSize number of samples to 2*kBlockSize number 575 // The test resamples 3*kBlockSize number of samples to 2*kBlockSize number
571 // of samples. 576 // of samples.
572 const int kBlockSize = 16; 577 const size_t kBlockSize = 16;
573 578
574 // Saturated input vector of 48 samples. 579 // Saturated input vector of 48 samples.
575 const int32_t kVectorSaturated[3 * kBlockSize + 7] = { 580 const int32_t kVectorSaturated[3 * kBlockSize + 7] = {
576 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 581 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768,
577 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 582 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768,
578 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 583 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768,
579 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 584 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
580 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 585 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
581 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 586 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
582 32767, 32767, 32767, 32767, 32767, 32767, 32767 587 32767, 32767, 32767, 32767, 32767, 32767, 32767
(...skipping 10 matching lines...) Expand all
593 // Vector for storing output. 598 // Vector for storing output.
594 int32_t out_vector[2 * kBlockSize]; 599 int32_t out_vector[2 * kBlockSize];
595 int16_t out_vector_w16[2 * kBlockSize]; 600 int16_t out_vector_w16[2 * kBlockSize];
596 601
597 WebRtcSpl_Resample48khzTo32khz(kVectorSaturated, out_vector, kBlockSize); 602 WebRtcSpl_Resample48khzTo32khz(kVectorSaturated, out_vector, kBlockSize);
598 WebRtcSpl_VectorBitShiftW32ToW16(out_vector_w16, 2 * kBlockSize, out_vector, 603 WebRtcSpl_VectorBitShiftW32ToW16(out_vector_w16, 2 * kBlockSize, out_vector,
599 15); 604 15);
600 605
601 // Comparing output values against references. The values at position 606 // Comparing output values against references. The values at position
602 // 12-15 are skipped to account for the filter lag. 607 // 12-15 are skipped to account for the filter lag.
603 for (int i = 0; i < 12; ++i) { 608 for (size_t i = 0; i < 12; ++i) {
604 EXPECT_EQ(kRefValue32kHz1, out_vector[i]); 609 EXPECT_EQ(kRefValue32kHz1, out_vector[i]);
605 EXPECT_EQ(kRefValue16kHz1, out_vector_w16[i]); 610 EXPECT_EQ(kRefValue16kHz1, out_vector_w16[i]);
606 } 611 }
607 for (int i = 16; i < 2 * kBlockSize; ++i) { 612 for (size_t i = 16; i < 2 * kBlockSize; ++i) {
608 EXPECT_EQ(kRefValue32kHz2, out_vector[i]); 613 EXPECT_EQ(kRefValue32kHz2, out_vector[i]);
609 EXPECT_EQ(kRefValue16kHz2, out_vector_w16[i]); 614 EXPECT_EQ(kRefValue16kHz2, out_vector_w16[i]);
610 } 615 }
611 } 616 }
OLDNEW
« no previous file with comments | « webrtc/common_audio/signal_processing/resample_fractional.c ('k') | webrtc/common_audio/signal_processing/splitting_filter.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698