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

Side by Side Diff: media/base/audio_bus_unittest.cc

Issue 1769373003: AudioBus: Add a ToInterleavedFloat() method to AudioBus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 // 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 0, INT8_MAX / 2 + 128, INT8_MIN / 2 + 128, 258 0, INT8_MAX / 2 + 128, INT8_MIN / 2 + 128,
259 -INT8_MIN, UINT8_MAX, -INT8_MIN, 259 -INT8_MIN, UINT8_MAX, -INT8_MIN,
260 -INT8_MIN}; 260 -INT8_MIN};
261 static const int16_t kTestVectorInt16[kTestVectorSize] = { 261 static const int16_t kTestVectorInt16[kTestVectorSize] = {
262 INT16_MIN, 0, INT16_MAX, INT16_MIN, INT16_MAX / 2, 262 INT16_MIN, 0, INT16_MAX, INT16_MIN, INT16_MAX / 2,
263 INT16_MIN / 2, 0, INT16_MAX, 0, 0}; 263 INT16_MIN / 2, 0, INT16_MAX, 0, 0};
264 static const int32_t kTestVectorInt32[kTestVectorSize] = { 264 static const int32_t kTestVectorInt32[kTestVectorSize] = {
265 INT32_MIN, 0, INT32_MAX, INT32_MIN, INT32_MAX / 2, 265 INT32_MIN, 0, INT32_MAX, INT32_MIN, INT32_MAX / 2,
266 INT32_MIN / 2, 0, INT32_MAX, 0, 0}; 266 INT32_MIN / 2, 0, INT32_MAX, 0, 0};
267 267
268 static const float kTestVectorFloat[kTestVectorSize] = {
269 -1.0, 0.0, 1.0, -1.0, 0.5, -0.5, 0.0, 1.0, 0.0, 0.0};
270
268 // Expected results. 271 // Expected results.
269 static const int kTestVectorFrames = kTestVectorSize / 2; 272 static const int kTestVectorFrames = kTestVectorSize / 2;
270 static const float kTestVectorResult[][kTestVectorFrames] = { 273 static const float kTestVectorResult[][kTestVectorFrames] = {
271 { -1, 1, 0.5, 0, 0 }, { 0, -1, -0.5, 1, 0 }}; 274 { -1, 1, 0.5, 0, 0 }, { 0, -1, -0.5, 1, 0 }};
272 static const int kTestVectorChannels = arraysize(kTestVectorResult); 275 static const int kTestVectorChannels = arraysize(kTestVectorResult);
273 276
274 // Verify FromInterleaved() deinterleaves audio in supported formats correctly. 277 // Verify FromInterleaved() deinterleaves audio in supported formats correctly.
275 TEST_F(AudioBusTest, FromInterleaved) { 278 TEST_F(AudioBusTest, FromInterleaved) {
276 scoped_ptr<AudioBus> bus = AudioBus::Create( 279 scoped_ptr<AudioBus> bus = AudioBus::Create(
277 kTestVectorChannels, kTestVectorFrames); 280 kTestVectorChannels, kTestVectorFrames);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 memcpy(fixed_test_array, kTestVectorInt32, sizeof(kTestVectorInt32)); 371 memcpy(fixed_test_array, kTestVectorInt32, sizeof(kTestVectorInt32));
369 ASSERT_EQ(fixed_test_array[4], std::numeric_limits<int32_t>::max() / 2); 372 ASSERT_EQ(fixed_test_array[4], std::numeric_limits<int32_t>::max() / 2);
370 fixed_test_array[4]++; 373 fixed_test_array[4]++;
371 374
372 ASSERT_TRUE( 375 ASSERT_TRUE(
373 memcmp(test_array, kTestVectorInt32, sizeof(kTestVectorInt32)) == 0 || 376 memcmp(test_array, kTestVectorInt32, sizeof(kTestVectorInt32)) == 0 ||
374 memcmp(test_array, fixed_test_array, sizeof(fixed_test_array)) == 0); 377 memcmp(test_array, fixed_test_array, sizeof(fixed_test_array)) == 0);
375 } 378 }
376 } 379 }
377 380
381 // Verify ToInterleavedFloat interleaves |AudioBus| channels of float
382 // into a single linear output buffer correctly
mcasas 2016/04/11 23:47:08 s/ToInterleavedFloat/ToInterleavedFloat()/ Classe
383 TEST_F(AudioBusTest, ToInterleavedFloat) {
384 SCOPED_TRACE("float");
385 scoped_ptr<AudioBus> bus =
386 AudioBus::Create(kTestVectorChannels, kTestVectorFrames);
387 for (int ch = 0; ch < bus->channels(); ++ch) {
388 memcpy(bus->channel(ch), kTestVectorResult[ch],
389 kTestVectorFrames * sizeof(*bus->channel(ch)));
390 }
391
392 float test_array[arraysize(kTestVectorFloat)];
393 bus->ToInterleavedFloat(0, 0, bus->frames(), test_array);
394 ASSERT_EQ(memcmp(test_array, kTestVectorFloat,
eklavyamirani 2016/04/04 08:11:58 Fixed the formatting on this in my local commit. A
mcasas 2016/04/11 23:47:08 Sorry, yes, when you have addressed the reviewers'
395 kTestVectorFrames * sizeof(*kTestVectorFloat)),
396 0);
397 }
398
378 // Verify ToInterleavedPartial() interleaves audio correctly. 399 // Verify ToInterleavedPartial() interleaves audio correctly.
379 TEST_F(AudioBusTest, ToInterleavedPartial) { 400 TEST_F(AudioBusTest, ToInterleavedPartial) {
380 // Only interleave the middle two frames in each channel. 401 // Only interleave the middle two frames in each channel.
381 static const int kPartialStart = 1; 402 static const int kPartialStart = 1;
382 static const int kPartialFrames = 2; 403 static const int kPartialFrames = 2;
383 ASSERT_LE(kPartialStart + kPartialFrames, kTestVectorFrames); 404 ASSERT_LE(kPartialStart + kPartialFrames, kTestVectorFrames);
384 405
385 scoped_ptr<AudioBus> expected = AudioBus::Create( 406 scoped_ptr<AudioBus> expected = AudioBus::Create(
386 kTestVectorChannels, kTestVectorFrames); 407 kTestVectorChannels, kTestVectorFrames);
387 for (int ch = 0; ch < kTestVectorChannels; ++ch) { 408 for (int ch = 0; ch < kTestVectorChannels; ++ch) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 443
423 // Verify zero volume case. 444 // Verify zero volume case.
424 bus->Scale(0); 445 bus->Scale(0);
425 for (int i = 0; i < bus->channels(); ++i) { 446 for (int i = 0; i < bus->channels(); ++i) {
426 SCOPED_TRACE("Zero Scale"); 447 SCOPED_TRACE("Zero Scale");
427 VerifyValue(bus->channel(i), bus->frames(), 0); 448 VerifyValue(bus->channel(i), bus->frames(), 0);
428 } 449 }
429 } 450 }
430 451
431 } // namespace media 452 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698