Chromium Code Reviews| Index: webrtc/common_audio/audio_util_unittest.cc |
| diff --git a/webrtc/common_audio/audio_util_unittest.cc b/webrtc/common_audio/audio_util_unittest.cc |
| index 2cdf53813c1bf603c859bd80e6108a6bfee803e5..36eb709dca246a2167e823bd3bd2f703ec9a5dc4 100644 |
| --- a/webrtc/common_audio/audio_util_unittest.cc |
| +++ b/webrtc/common_audio/audio_util_unittest.cc |
| @@ -8,11 +8,15 @@ |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| +#include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "webrtc/common_audio/include/audio_util.h" |
| #include "webrtc/typedefs.h" |
| namespace webrtc { |
| +namespace { |
| + |
| +using ::testing::ElementsAreArray; |
| void ExpectArraysEq(const int16_t* ref, const int16_t* test, int length) { |
| for (int i = 0; i < length; ++i) { |
| @@ -114,4 +118,102 @@ TEST(AudioUtilTest, InterleavingMonoIsIdentical) { |
| ExpectArraysEq(mono, interleaved, kSamplesPerChannel); |
| } |
| +TEST(AudioUtilTest, DownmixInterleavedToMono) { |
| + { |
| + const int kNumMultichannelFrames = 4; |
|
Andrew MacDonald
2015/07/22 22:47:21
Same here (and possibly elsewhere?) kNumFrames or
mgraczyk
2015/07/23 00:16:54
Done.
|
| + const int kNumChannels = 1; |
| + const int16_t interleaved[kNumChannels * kNumMultichannelFrames] = {1, 2, |
| + -1, -3}; |
| + int16_t deinterleaved[kNumMultichannelFrames]; |
| + |
| + DownmixInterleavedToMono(interleaved, kNumMultichannelFrames, kNumChannels, |
| + deinterleaved); |
| + |
| + EXPECT_THAT(deinterleaved, ElementsAreArray(interleaved)); |
| + } |
| + { |
| + const int kNumMultichannelFrames = 2; |
| + const int kNumChannels = 2; |
| + const int16_t interleaved[kNumChannels * kNumMultichannelFrames] = { |
| + 10, 20, -10, -30}; |
| + int16_t deinterleaved[kNumMultichannelFrames]; |
| + |
| + DownmixInterleavedToMono(interleaved, kNumMultichannelFrames, kNumChannels, |
| + deinterleaved); |
| + const int16_t expected[kNumMultichannelFrames] = {15, -20}; |
| + |
| + EXPECT_THAT(deinterleaved, ElementsAreArray(expected)); |
| + } |
| + { |
| + const int kNumMultichannelFrames = 3; |
| + const int kNumChannels = 3; |
| + const int16_t interleaved[kNumChannels * kNumMultichannelFrames] = { |
| + 30000, 30000, 24001, -5, -10, -20, -30000, -30999, -30000}; |
| + int16_t deinterleaved[kNumMultichannelFrames]; |
| + |
| + DownmixInterleavedToMono(interleaved, kNumMultichannelFrames, kNumChannels, |
| + deinterleaved); |
| + const int16_t expected[kNumMultichannelFrames] = {28000, -11, -30333}; |
| + |
| + EXPECT_THAT(deinterleaved, ElementsAreArray(expected)); |
| + } |
| +} |
| + |
| +TEST(AudioUtilTest, DownmixToMonoTest) { |
| + { |
| + const int kNumMultichannelFrames = 4; |
| + const int kNumChannels = 1; |
| + const float input_data[kNumChannels][kNumMultichannelFrames] = { |
| + {1.f, 2.f, -1.f, -3.f}}; |
| + const float* input[kNumChannels]; |
| + for (int i = 0; i < kNumChannels; ++i) { |
| + input[i] = input_data[i]; |
| + } |
| + |
| + float downmixed[kNumMultichannelFrames]; |
| + |
| + DownmixToMono<float, float>(input, kNumMultichannelFrames, kNumChannels, |
| + downmixed); |
| + |
| + EXPECT_THAT(downmixed, ElementsAreArray(input_data[0])); |
| + } |
| + { |
| + const int kNumMultichannelFrames = 3; |
| + const int kNumChannels = 2; |
| + const float input_data[kNumChannels][kNumMultichannelFrames] = { |
| + {1.f, 2.f, -1.f}, {3.f, 0.f, 1.f}}; |
| + const float* input[kNumChannels]; |
| + for (int i = 0; i < kNumChannels; ++i) { |
| + input[i] = input_data[i]; |
| + } |
| + |
| + float downmixed[kNumMultichannelFrames]; |
| + const float expected[kNumMultichannelFrames] = {2.f, 1.f, 0.f}; |
| + |
| + DownmixToMono<float, float>(input, kNumMultichannelFrames, kNumChannels, |
| + downmixed); |
| + |
| + EXPECT_THAT(downmixed, ElementsAreArray(expected)); |
| + } |
| + { |
| + const int kNumMultichannelFrames = 3; |
| + const int kNumChannels = 3; |
| + const int16_t input_data[kNumChannels][kNumMultichannelFrames] = { |
| + {30000, -5, -30000}, {30000, -10, -30999}, {24001, -20, -30000}}; |
| + const int16_t* input[kNumChannels]; |
| + for (int i = 0; i < kNumChannels; ++i) { |
| + input[i] = input_data[i]; |
| + } |
| + |
| + int16_t downmixed[kNumMultichannelFrames]; |
| + const int16_t expected[kNumMultichannelFrames] = {28000, -11, -30333}; |
| + |
| + DownmixToMono<int16_t, int32_t>(input, kNumMultichannelFrames, kNumChannels, |
| + downmixed); |
|
Andrew MacDonald
2015/07/22 22:47:21
Indentation doesn't look right. Run clang-format.
mgraczyk
2015/07/23 00:16:54
Done.
|
| + |
| + EXPECT_THAT(downmixed, ElementsAreArray(expected)); |
| + } |
| +} |
| + |
| +} // namespace |
| } // namespace webrtc |