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

Side by Side Diff: webrtc/modules/audio_processing/audio_buffer_unittest.cc

Issue 1226093007: Allow more than 2 input channels in AudioProcessing. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix comments and rearrange code Created 5 years, 5 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
(Empty)
1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "webrtc/modules/audio_processing/audio_buffer.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "testing/gmock/include/gmock/gmock.h"
14
15 namespace webrtc {
16 namespace {
17
18 using ::testing::ElementsAreArray;
19
20 TEST(AudioBufferHelpersTest, DownmixInterleavedToMonoImpl) {
21 {
22 const int kNumMultichannelFrames = 4;
23 const int kNumChannels = 1;
24 const float interleaved[kNumChannels * kNumMultichannelFrames] = {
25 1.f, 2.f, -1.f, -3.f};
26 float deinterleaved[kNumMultichannelFrames];
27
28 DownmixInterleavedToMonoImpl<float, float>(
29 interleaved, deinterleaved, kNumMultichannelFrames, kNumChannels);
30
31 EXPECT_THAT(deinterleaved, ElementsAreArray(interleaved));
32 }
33 {
34 const int kNumMultichannelFrames = 2;
35 const int kNumChannels = 2;
36 const float interleaved[kNumChannels * kNumMultichannelFrames] = {
37 1.f, 2.f, -1.f, -3.f};
38 float deinterleaved[kNumMultichannelFrames];
39
40 DownmixInterleavedToMonoImpl<float, float>(
41 interleaved, deinterleaved, kNumMultichannelFrames, kNumChannels);
42 const float expected[kNumMultichannelFrames] = {1.5f, -2.f};
43
44 EXPECT_THAT(deinterleaved, ElementsAreArray(expected));
45 }
46 {
47 const int kNumMultichannelFrames = 2;
48 const int kNumChannels = 3;
49 const float interleaved[kNumChannels * kNumMultichannelFrames] = {
50 1.f, 2.f, 3.f, -1.f, -3.f, 7.f};
51 float deinterleaved[kNumMultichannelFrames];
52
53 DownmixInterleavedToMonoImpl<float, float>(
54 interleaved, deinterleaved, kNumMultichannelFrames, kNumChannels);
55 const float expected[kNumMultichannelFrames] = {2.f, 1.f};
56
57 EXPECT_THAT(deinterleaved, ElementsAreArray(expected));
58 }
59 {
60 const int kNumMultichannelFrames = 2;
61 const int kNumChannels = 2;
62 const int16_t interleaved[kNumChannels * kNumMultichannelFrames] = {
63 10, 20, -10, -30};
64 int16_t deinterleaved[kNumMultichannelFrames];
65
66 DownmixInterleavedToMonoImpl<int16_t, int32_t>(
67 interleaved, deinterleaved, kNumMultichannelFrames, kNumChannels);
68 const int16_t expected[kNumMultichannelFrames] = {15, -20};
69
70 EXPECT_THAT(deinterleaved, ElementsAreArray(expected));
71 }
72 {
73 const int kNumMultichannelFrames = 3;
74 const int kNumChannels = 3;
75 const int16_t interleaved[kNumChannels * kNumMultichannelFrames] = {
76 30000, 30000, 24001, -5, -10, -20, -30000, -30999, -30000};
77 int16_t deinterleaved[kNumMultichannelFrames];
78
79 DownmixInterleavedToMonoImpl<int16_t, int32_t>(
80 interleaved, deinterleaved, kNumMultichannelFrames, kNumChannels);
81 const int16_t expected[kNumMultichannelFrames] = {28000, -11, -30333};
82
83 EXPECT_THAT(deinterleaved, ElementsAreArray(expected));
84 }
85 }
86
87 TEST(AudioBufferHelpersTest, DownmixToMonoTest) {
88 {
89 const int kNumMultichannelFrames = 4;
90 const int kNumChannels = 1;
91 const float input_data[kNumChannels][kNumMultichannelFrames] = {
92 {1.f, 2.f, -1.f, -3.f}};
93 const float* input[kNumChannels];
94 for (int i = 0; i < kNumChannels; ++i) {
95 input[i] = input_data[i];
96 }
97
98 float downmixed[kNumMultichannelFrames];
99
100 DownmixToMono<float, float>(kNumMultichannelFrames, downmixed, input,
101 kNumChannels);
102
103 EXPECT_THAT(downmixed, ElementsAreArray(input_data[0]));
104 }
105 {
106 const int kNumMultichannelFrames = 3;
107 const int kNumChannels = 2;
108 const float input_data[kNumChannels][kNumMultichannelFrames] = {
109 {1.f, 2.f, -1.f}, {3.f, 0.f, 1.f}};
110 const float* input[kNumChannels];
111 for (int i = 0; i < kNumChannels; ++i) {
112 input[i] = input_data[i];
113 }
114
115 float downmixed[kNumMultichannelFrames];
116 const float expected[kNumMultichannelFrames] = {2.f, 1.f, 0.f};
117
118 DownmixToMono<float, float>(kNumMultichannelFrames, downmixed, input,
119 kNumChannels);
120
121 EXPECT_THAT(downmixed, ElementsAreArray(expected));
122 }
123 {
124 const int kNumMultichannelFrames = 3;
125 const int kNumChannels = 3;
126 const int16_t input_data[kNumChannels][kNumMultichannelFrames] = {
127 {30000, -5, -30000}, {30000, -10, -30999}, {24001, -20, -30000}};
128 const int16_t* input[kNumChannels];
129 for (int i = 0; i < kNumChannels; ++i) {
130 input[i] = input_data[i];
131 }
132
133 int16_t downmixed[kNumMultichannelFrames];
134 const int16_t expected[kNumMultichannelFrames] = {28000, -11, -30333};
135
136 DownmixToMono<int16_t, int32_t>(kNumMultichannelFrames, downmixed, input,
137 kNumChannels);
138
139 EXPECT_THAT(downmixed, ElementsAreArray(expected));
140 }
141 }
142
143 } // namespace
144 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698