| 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 <stddef.h> |    5 #include <stddef.h> | 
|    6 #include <stdint.h> |    6 #include <stdint.h> | 
|    7  |    7  | 
|    8 #include <limits> |    8 #include <limits> | 
|    9 #include <memory> |    9 #include <memory> | 
|   10  |   10  | 
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  537   static constexpr int kInterleavedFrameCount = 3; |  537   static constexpr int kInterleavedFrameCount = 3; | 
|  538  |  538  | 
|  539   std::unique_ptr<AudioBus> bus_under_test; |  539   std::unique_ptr<AudioBus> bus_under_test; | 
|  540   std::vector<float> interleaved_dummy_frames; |  540   std::vector<float> interleaved_dummy_frames; | 
|  541  |  541  | 
|  542   ZeroingOutTestData() { |  542   ZeroingOutTestData() { | 
|  543     // Create a bus and fill each channel with a test pattern of form |  543     // Create a bus and fill each channel with a test pattern of form | 
|  544     // [1.0, 2.0, 3.0, ...] |  544     // [1.0, 2.0, 3.0, ...] | 
|  545     bus_under_test = AudioBus::Create(kChannelCount, kFrameCount); |  545     bus_under_test = AudioBus::Create(kChannelCount, kFrameCount); | 
|  546     for (int ch = 0; ch < kChannelCount; ++ch) { |  546     for (int ch = 0; ch < kChannelCount; ++ch) { | 
|  547       auto sample_array_for_current_channel = bus_under_test->channel(ch); |  547       auto* sample_array_for_current_channel = bus_under_test->channel(ch); | 
|  548       for (int frame_index = 0; frame_index < kFrameCount; frame_index++) { |  548       for (int frame_index = 0; frame_index < kFrameCount; frame_index++) { | 
|  549         sample_array_for_current_channel[frame_index] = |  549         sample_array_for_current_channel[frame_index] = | 
|  550             static_cast<float>(frame_index + 1); |  550             static_cast<float>(frame_index + 1); | 
|  551       } |  551       } | 
|  552     } |  552     } | 
|  553  |  553  | 
|  554     // Create a vector containing dummy interleaved samples. |  554     // Create a vector containing dummy interleaved samples. | 
|  555     static const float kDummySampleValue = 0.123f; |  555     static const float kDummySampleValue = 0.123f; | 
|  556     interleaved_dummy_frames.resize(kChannelCount * kInterleavedFrameCount); |  556     interleaved_dummy_frames.resize(kChannelCount * kInterleavedFrameCount); | 
|  557     std::fill(interleaved_dummy_frames.begin(), interleaved_dummy_frames.end(), |  557     std::fill(interleaved_dummy_frames.begin(), interleaved_dummy_frames.end(), | 
|  558               kDummySampleValue); |  558               kDummySampleValue); | 
|  559   } |  559   } | 
|  560 }; |  560 }; | 
|  561  |  561  | 
|  562 TEST_F(AudioBusTest, FromInterleavedZerosOutUntouchedFrames) { |  562 TEST_F(AudioBusTest, FromInterleavedZerosOutUntouchedFrames) { | 
|  563   ZeroingOutTestData test_data; |  563   ZeroingOutTestData test_data; | 
|  564  |  564  | 
|  565   // Exercise |  565   // Exercise | 
|  566   test_data.bus_under_test->FromInterleaved<Float32SampleTypeTraits>( |  566   test_data.bus_under_test->FromInterleaved<Float32SampleTypeTraits>( | 
|  567       &test_data.interleaved_dummy_frames[0], test_data.kInterleavedFrameCount); |  567       &test_data.interleaved_dummy_frames[0], test_data.kInterleavedFrameCount); | 
|  568  |  568  | 
|  569   // Verification |  569   // Verification | 
|  570   for (int ch = 0; ch < test_data.kChannelCount; ++ch) { |  570   for (int ch = 0; ch < test_data.kChannelCount; ++ch) { | 
|  571     auto sample_array_for_current_channel = |  571     auto* sample_array_for_current_channel = | 
|  572         test_data.bus_under_test->channel(ch); |  572         test_data.bus_under_test->channel(ch); | 
|  573     for (int frame_index = test_data.kInterleavedFrameCount; |  573     for (int frame_index = test_data.kInterleavedFrameCount; | 
|  574          frame_index < test_data.kFrameCount; frame_index++) { |  574          frame_index < test_data.kFrameCount; frame_index++) { | 
|  575       ASSERT_EQ(0.0f, sample_array_for_current_channel[frame_index]); |  575       ASSERT_EQ(0.0f, sample_array_for_current_channel[frame_index]); | 
|  576     } |  576     } | 
|  577   } |  577   } | 
|  578 } |  578 } | 
|  579  |  579  | 
|  580 TEST_F(AudioBusTest, FromInterleavedPartialDoesNotZeroOutUntouchedFrames) { |  580 TEST_F(AudioBusTest, FromInterleavedPartialDoesNotZeroOutUntouchedFrames) { | 
|  581   { |  581   { | 
|  582     SCOPED_TRACE("Zero write offset"); |  582     SCOPED_TRACE("Zero write offset"); | 
|  583  |  583  | 
|  584     ZeroingOutTestData test_data; |  584     ZeroingOutTestData test_data; | 
|  585     static const int kWriteOffsetInFrames = 0; |  585     static const int kWriteOffsetInFrames = 0; | 
|  586  |  586  | 
|  587     // Exercise |  587     // Exercise | 
|  588     test_data.bus_under_test->FromInterleavedPartial<Float32SampleTypeTraits>( |  588     test_data.bus_under_test->FromInterleavedPartial<Float32SampleTypeTraits>( | 
|  589         &test_data.interleaved_dummy_frames[0], kWriteOffsetInFrames, |  589         &test_data.interleaved_dummy_frames[0], kWriteOffsetInFrames, | 
|  590         test_data.kInterleavedFrameCount); |  590         test_data.kInterleavedFrameCount); | 
|  591  |  591  | 
|  592     // Verification |  592     // Verification | 
|  593     for (int ch = 0; ch < test_data.kChannelCount; ++ch) { |  593     for (int ch = 0; ch < test_data.kChannelCount; ++ch) { | 
|  594       auto sample_array_for_current_channel = |  594       auto* sample_array_for_current_channel = | 
|  595           test_data.bus_under_test->channel(ch); |  595           test_data.bus_under_test->channel(ch); | 
|  596       for (int frame_index = |  596       for (int frame_index = | 
|  597                test_data.kInterleavedFrameCount + kWriteOffsetInFrames; |  597                test_data.kInterleavedFrameCount + kWriteOffsetInFrames; | 
|  598            frame_index < test_data.kFrameCount; frame_index++) { |  598            frame_index < test_data.kFrameCount; frame_index++) { | 
|  599         ASSERT_EQ(frame_index + 1, |  599         ASSERT_EQ(frame_index + 1, | 
|  600                   sample_array_for_current_channel[frame_index]); |  600                   sample_array_for_current_channel[frame_index]); | 
|  601       } |  601       } | 
|  602     } |  602     } | 
|  603   } |  603   } | 
|  604   { |  604   { | 
|  605     SCOPED_TRACE("Positive write offset"); |  605     SCOPED_TRACE("Positive write offset"); | 
|  606  |  606  | 
|  607     ZeroingOutTestData test_data; |  607     ZeroingOutTestData test_data; | 
|  608     static const int kWriteOffsetInFrames = 2; |  608     static const int kWriteOffsetInFrames = 2; | 
|  609  |  609  | 
|  610     // Exercise |  610     // Exercise | 
|  611     test_data.bus_under_test->FromInterleavedPartial<Float32SampleTypeTraits>( |  611     test_data.bus_under_test->FromInterleavedPartial<Float32SampleTypeTraits>( | 
|  612         &test_data.interleaved_dummy_frames[0], kWriteOffsetInFrames, |  612         &test_data.interleaved_dummy_frames[0], kWriteOffsetInFrames, | 
|  613         test_data.kInterleavedFrameCount); |  613         test_data.kInterleavedFrameCount); | 
|  614  |  614  | 
|  615     // Verification |  615     // Verification | 
|  616     for (int ch = 0; ch < test_data.kChannelCount; ++ch) { |  616     for (int ch = 0; ch < test_data.kChannelCount; ++ch) { | 
|  617       auto sample_array_for_current_channel = |  617       auto* sample_array_for_current_channel = | 
|  618           test_data.bus_under_test->channel(ch); |  618           test_data.bus_under_test->channel(ch); | 
|  619       // Check untouched frames before write offset |  619       // Check untouched frames before write offset | 
|  620       for (int frame_index = 0; frame_index < kWriteOffsetInFrames; |  620       for (int frame_index = 0; frame_index < kWriteOffsetInFrames; | 
|  621            frame_index++) { |  621            frame_index++) { | 
|  622         ASSERT_EQ(frame_index + 1, |  622         ASSERT_EQ(frame_index + 1, | 
|  623                   sample_array_for_current_channel[frame_index]); |  623                   sample_array_for_current_channel[frame_index]); | 
|  624       } |  624       } | 
|  625       // Check untouched frames after write |  625       // Check untouched frames after write | 
|  626       for (int frame_index = |  626       for (int frame_index = | 
|  627                test_data.kInterleavedFrameCount + kWriteOffsetInFrames; |  627                test_data.kInterleavedFrameCount + kWriteOffsetInFrames; | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  659  |  659  | 
|  660   // Verify zero volume case. |  660   // Verify zero volume case. | 
|  661   bus->Scale(0); |  661   bus->Scale(0); | 
|  662   for (int i = 0; i < bus->channels(); ++i) { |  662   for (int i = 0; i < bus->channels(); ++i) { | 
|  663     SCOPED_TRACE("Zero Scale"); |  663     SCOPED_TRACE("Zero Scale"); | 
|  664     VerifyArrayIsFilledWithValue(bus->channel(i), bus->frames(), 0); |  664     VerifyArrayIsFilledWithValue(bus->channel(i), bus->frames(), 0); | 
|  665   } |  665   } | 
|  666 } |  666 } | 
|  667  |  667  | 
|  668 }  // namespace media |  668 }  // namespace media | 
| OLD | NEW |