OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 TEST_F(AudioBusTest, FromInterleaved) { | 273 TEST_F(AudioBusTest, FromInterleaved) { |
274 scoped_ptr<AudioBus> bus = AudioBus::Create( | 274 scoped_ptr<AudioBus> bus = AudioBus::Create( |
275 kTestVectorChannels, kTestVectorFrames); | 275 kTestVectorChannels, kTestVectorFrames); |
276 scoped_ptr<AudioBus> expected = AudioBus::Create( | 276 scoped_ptr<AudioBus> expected = AudioBus::Create( |
277 kTestVectorChannels, kTestVectorFrames); | 277 kTestVectorChannels, kTestVectorFrames); |
278 for (int ch = 0; ch < kTestVectorChannels; ++ch) { | 278 for (int ch = 0; ch < kTestVectorChannels; ++ch) { |
279 memcpy(expected->channel(ch), kTestVectorResult[ch], | 279 memcpy(expected->channel(ch), kTestVectorResult[ch], |
280 kTestVectorFrames * sizeof(*expected->channel(ch))); | 280 kTestVectorFrames * sizeof(*expected->channel(ch))); |
281 } | 281 } |
282 { | 282 { |
283 SCOPED_TRACE("uint8"); | 283 SCOPED_TRACE("uint8_t"); |
284 bus->Zero(); | 284 bus->Zero(); |
285 bus->FromInterleaved( | 285 bus->FromInterleaved( |
286 kTestVectorUint8, kTestVectorFrames, sizeof(*kTestVectorUint8)); | 286 kTestVectorUint8, kTestVectorFrames, sizeof(*kTestVectorUint8)); |
287 // Biased uint8_t calculations have poor precision, so the epsilon here is | 287 // Biased uint8_t calculations have poor precision, so the epsilon here is |
288 // slightly more permissive than int16_t and int32_t calculations. | 288 // slightly more permissive than int16_t and int32_t calculations. |
289 VerifyBusWithEpsilon(bus.get(), expected.get(), | 289 VerifyBusWithEpsilon(bus.get(), expected.get(), |
290 1.0f / (std::numeric_limits<uint8_t>::max() - 1)); | 290 1.0f / (std::numeric_limits<uint8_t>::max() - 1)); |
291 } | 291 } |
292 { | 292 { |
293 SCOPED_TRACE("int16"); | 293 SCOPED_TRACE("int16_t"); |
294 bus->Zero(); | 294 bus->Zero(); |
295 bus->FromInterleaved( | 295 bus->FromInterleaved( |
296 kTestVectorInt16, kTestVectorFrames, sizeof(*kTestVectorInt16)); | 296 kTestVectorInt16, kTestVectorFrames, sizeof(*kTestVectorInt16)); |
297 VerifyBusWithEpsilon(bus.get(), expected.get(), | 297 VerifyBusWithEpsilon(bus.get(), expected.get(), |
298 1.0f / (std::numeric_limits<uint16_t>::max() + 1.0f)); | 298 1.0f / (std::numeric_limits<uint16_t>::max() + 1.0f)); |
299 } | 299 } |
300 { | 300 { |
301 SCOPED_TRACE("int32"); | 301 SCOPED_TRACE("int32_t"); |
302 bus->Zero(); | 302 bus->Zero(); |
303 bus->FromInterleaved( | 303 bus->FromInterleaved( |
304 kTestVectorInt32, kTestVectorFrames, sizeof(*kTestVectorInt32)); | 304 kTestVectorInt32, kTestVectorFrames, sizeof(*kTestVectorInt32)); |
305 VerifyBusWithEpsilon(bus.get(), expected.get(), | 305 VerifyBusWithEpsilon(bus.get(), expected.get(), |
306 1.0f / (std::numeric_limits<uint32_t>::max() + 1.0f)); | 306 1.0f / (std::numeric_limits<uint32_t>::max() + 1.0f)); |
307 } | 307 } |
308 } | 308 } |
309 | 309 |
310 // Verify FromInterleavedPartial() deinterleaves audio correctly. | 310 // Verify FromInterleavedPartial() deinterleaves audio correctly. |
311 TEST_F(AudioBusTest, FromInterleavedPartial) { | 311 TEST_F(AudioBusTest, FromInterleavedPartial) { |
(...skipping 23 matching lines...) Expand all Loading... |
335 // Verify ToInterleaved() interleaves audio in suported formats correctly. | 335 // Verify ToInterleaved() interleaves audio in suported formats correctly. |
336 TEST_F(AudioBusTest, ToInterleaved) { | 336 TEST_F(AudioBusTest, ToInterleaved) { |
337 scoped_ptr<AudioBus> bus = AudioBus::Create( | 337 scoped_ptr<AudioBus> bus = AudioBus::Create( |
338 kTestVectorChannels, kTestVectorFrames); | 338 kTestVectorChannels, kTestVectorFrames); |
339 // Fill the bus with our test vector. | 339 // Fill the bus with our test vector. |
340 for (int ch = 0; ch < bus->channels(); ++ch) { | 340 for (int ch = 0; ch < bus->channels(); ++ch) { |
341 memcpy(bus->channel(ch), kTestVectorResult[ch], | 341 memcpy(bus->channel(ch), kTestVectorResult[ch], |
342 kTestVectorFrames * sizeof(*bus->channel(ch))); | 342 kTestVectorFrames * sizeof(*bus->channel(ch))); |
343 } | 343 } |
344 { | 344 { |
345 SCOPED_TRACE("uint8"); | 345 SCOPED_TRACE("uint8_t"); |
346 uint8_t test_array[arraysize(kTestVectorUint8)]; | 346 uint8_t test_array[arraysize(kTestVectorUint8)]; |
347 bus->ToInterleaved(bus->frames(), sizeof(*kTestVectorUint8), test_array); | 347 bus->ToInterleaved(bus->frames(), sizeof(*kTestVectorUint8), test_array); |
348 ASSERT_EQ(memcmp( | 348 ASSERT_EQ(memcmp( |
349 test_array, kTestVectorUint8, sizeof(kTestVectorUint8)), 0); | 349 test_array, kTestVectorUint8, sizeof(kTestVectorUint8)), 0); |
350 } | 350 } |
351 { | 351 { |
352 SCOPED_TRACE("int16"); | 352 SCOPED_TRACE("int16_t"); |
353 int16_t test_array[arraysize(kTestVectorInt16)]; | 353 int16_t test_array[arraysize(kTestVectorInt16)]; |
354 bus->ToInterleaved(bus->frames(), sizeof(*kTestVectorInt16), test_array); | 354 bus->ToInterleaved(bus->frames(), sizeof(*kTestVectorInt16), test_array); |
355 ASSERT_EQ(memcmp( | 355 ASSERT_EQ(memcmp( |
356 test_array, kTestVectorInt16, sizeof(kTestVectorInt16)), 0); | 356 test_array, kTestVectorInt16, sizeof(kTestVectorInt16)), 0); |
357 } | 357 } |
358 { | 358 { |
359 SCOPED_TRACE("int32"); | 359 SCOPED_TRACE("int32_t"); |
360 int32_t test_array[arraysize(kTestVectorInt32)]; | 360 int32_t test_array[arraysize(kTestVectorInt32)]; |
361 bus->ToInterleaved(bus->frames(), sizeof(*kTestVectorInt32), test_array); | 361 bus->ToInterleaved(bus->frames(), sizeof(*kTestVectorInt32), test_array); |
362 | 362 |
363 // Some compilers get better precision than others on the half-max test, so | 363 // Some compilers get better precision than others on the half-max test, so |
364 // let the test pass with an off by one check on the half-max. | 364 // let the test pass with an off by one check on the half-max. |
365 int32_t fixed_test_array[arraysize(kTestVectorInt32)]; | 365 int32_t fixed_test_array[arraysize(kTestVectorInt32)]; |
366 memcpy(fixed_test_array, kTestVectorInt32, sizeof(kTestVectorInt32)); | 366 memcpy(fixed_test_array, kTestVectorInt32, sizeof(kTestVectorInt32)); |
367 ASSERT_EQ(fixed_test_array[4], std::numeric_limits<int32_t>::max() / 2); | 367 ASSERT_EQ(fixed_test_array[4], std::numeric_limits<int32_t>::max() / 2); |
368 fixed_test_array[4]++; | 368 fixed_test_array[4]++; |
369 | 369 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 | 420 |
421 // Verify zero volume case. | 421 // Verify zero volume case. |
422 bus->Scale(0); | 422 bus->Scale(0); |
423 for (int i = 0; i < bus->channels(); ++i) { | 423 for (int i = 0; i < bus->channels(); ++i) { |
424 SCOPED_TRACE("Zero Scale"); | 424 SCOPED_TRACE("Zero Scale"); |
425 VerifyValue(bus->channel(i), bus->frames(), 0); | 425 VerifyValue(bus->channel(i), bus->frames(), 0); |
426 } | 426 } |
427 } | 427 } |
428 | 428 |
429 } // namespace media | 429 } // namespace media |
OLD | NEW |