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

Side by Side Diff: webrtc/audio/utility/audio_frame_operations_unittest.cc

Issue 2750783004: Add mute state field to AudioFrame. (Closed)
Patch Set: Update new usages of AudioFrame::data_ Created 3 years, 6 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 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 14 matching lines...) Expand all
25 } 25 }
26 26
27 AudioFrame frame_; 27 AudioFrame frame_;
28 }; 28 };
29 29
30 void SetFrameData(int16_t ch1, 30 void SetFrameData(int16_t ch1,
31 int16_t ch2, 31 int16_t ch2,
32 int16_t ch3, 32 int16_t ch3,
33 int16_t ch4, 33 int16_t ch4,
34 AudioFrame* frame) { 34 AudioFrame* frame) {
35 int16_t* frame_data = frame->mutable_data();
35 for (size_t i = 0; i < frame->samples_per_channel_ * 4; i += 4) { 36 for (size_t i = 0; i < frame->samples_per_channel_ * 4; i += 4) {
36 frame->data_[i] = ch1; 37 frame_data[i] = ch1;
37 frame->data_[i + 1] = ch2; 38 frame_data[i + 1] = ch2;
38 frame->data_[i + 2] = ch3; 39 frame_data[i + 2] = ch3;
39 frame->data_[i + 3] = ch4; 40 frame_data[i + 3] = ch4;
40 } 41 }
41 } 42 }
42 43
43 void SetFrameData(int16_t left, int16_t right, AudioFrame* frame) { 44 void SetFrameData(int16_t left, int16_t right, AudioFrame* frame) {
45 int16_t* frame_data = frame->mutable_data();
44 for (size_t i = 0; i < frame->samples_per_channel_ * 2; i += 2) { 46 for (size_t i = 0; i < frame->samples_per_channel_ * 2; i += 2) {
45 frame->data_[i] = left; 47 frame_data[i] = left;
46 frame->data_[i + 1] = right; 48 frame_data[i + 1] = right;
47 } 49 }
48 } 50 }
49 51
50 void SetFrameData(int16_t data, AudioFrame* frame) { 52 void SetFrameData(int16_t data, AudioFrame* frame) {
51 for (size_t i = 0; i < frame->samples_per_channel_; i++) { 53 int16_t* frame_data = frame->mutable_data();
52 frame->data_[i] = data; 54 for (size_t i = 0;
55 i < frame->samples_per_channel_ * frame->num_channels_; i++) {
56 frame_data[i] = data;
53 } 57 }
54 } 58 }
55 59
56 void VerifyFramesAreEqual(const AudioFrame& frame1, const AudioFrame& frame2) { 60 void VerifyFramesAreEqual(const AudioFrame& frame1, const AudioFrame& frame2) {
57 EXPECT_EQ(frame1.num_channels_, frame2.num_channels_); 61 EXPECT_EQ(frame1.num_channels_, frame2.num_channels_);
58 EXPECT_EQ(frame1.samples_per_channel_, 62 EXPECT_EQ(frame1.samples_per_channel_,
59 frame2.samples_per_channel_); 63 frame2.samples_per_channel_);
64 const int16_t* frame1_data = frame1.data();
65 const int16_t* frame2_data = frame2.data();
60 for (size_t i = 0; i < frame1.samples_per_channel_ * frame1.num_channels_; 66 for (size_t i = 0; i < frame1.samples_per_channel_ * frame1.num_channels_;
61 i++) { 67 i++) {
62 EXPECT_EQ(frame1.data_[i], frame2.data_[i]); 68 EXPECT_EQ(frame1_data[i], frame2_data[i]);
63 } 69 }
70 EXPECT_EQ(frame1.muted(), frame2.muted());
64 } 71 }
65 72
66 void InitFrame(AudioFrame* frame, size_t channels, size_t samples_per_channel, 73 void InitFrame(AudioFrame* frame, size_t channels, size_t samples_per_channel,
67 int16_t left_data, int16_t right_data) { 74 int16_t left_data, int16_t right_data) {
68 RTC_DCHECK(frame); 75 RTC_DCHECK(frame);
69 RTC_DCHECK_GE(2, channels); 76 RTC_DCHECK_GE(2, channels);
70 RTC_DCHECK_GE(AudioFrame::kMaxDataSizeSamples, 77 RTC_DCHECK_GE(AudioFrame::kMaxDataSizeSamples,
71 samples_per_channel * channels); 78 samples_per_channel * channels);
72 frame->samples_per_channel_ = samples_per_channel; 79 frame->samples_per_channel_ = samples_per_channel;
73 frame->num_channels_ = channels; 80 frame->num_channels_ = channels;
74 if (channels == 2) { 81 if (channels == 2) {
75 SetFrameData(left_data, right_data, frame); 82 SetFrameData(left_data, right_data, frame);
76 } else if (channels == 1) { 83 } else if (channels == 1) {
77 SetFrameData(left_data, frame); 84 SetFrameData(left_data, frame);
78 } 85 }
79 } 86 }
80 87
81 int16_t GetChannelData(const AudioFrame& frame, size_t channel, size_t index) { 88 int16_t GetChannelData(const AudioFrame& frame, size_t channel, size_t index) {
82 RTC_DCHECK_LT(channel, frame.num_channels_); 89 RTC_DCHECK_LT(channel, frame.num_channels_);
83 RTC_DCHECK_LT(index, frame.samples_per_channel_); 90 RTC_DCHECK_LT(index, frame.samples_per_channel_);
84 return frame.data_[index * frame.num_channels_ + channel]; 91 return frame.data()[index * frame.num_channels_ + channel];
85 } 92 }
86 93
87 void VerifyFrameDataBounds(const AudioFrame& frame, size_t channel, int16_t max, 94 void VerifyFrameDataBounds(const AudioFrame& frame, size_t channel, int16_t max,
88 int16_t min) { 95 int16_t min) {
89 for (size_t i = 0; i < frame.samples_per_channel_; ++i) { 96 for (size_t i = 0; i < frame.samples_per_channel_; ++i) {
90 int16_t s = GetChannelData(frame, channel, i); 97 int16_t s = GetChannelData(frame, channel, i);
91 EXPECT_LE(min, s); 98 EXPECT_LE(min, s);
92 EXPECT_GE(max, s); 99 EXPECT_GE(max, s);
93 } 100 }
94 } 101 }
(...skipping 12 matching lines...) Expand all
107 114
108 EXPECT_EQ(0, AudioFrameOperations::MonoToStereo(&frame_)); 115 EXPECT_EQ(0, AudioFrameOperations::MonoToStereo(&frame_));
109 116
110 AudioFrame stereo_frame; 117 AudioFrame stereo_frame;
111 stereo_frame.samples_per_channel_ = 320; 118 stereo_frame.samples_per_channel_ = 320;
112 stereo_frame.num_channels_ = 2; 119 stereo_frame.num_channels_ = 2;
113 SetFrameData(1, 1, &stereo_frame); 120 SetFrameData(1, 1, &stereo_frame);
114 VerifyFramesAreEqual(stereo_frame, frame_); 121 VerifyFramesAreEqual(stereo_frame, frame_);
115 } 122 }
116 123
124 TEST_F(AudioFrameOperationsTest, MonoToStereoMuted) {
125 frame_.num_channels_ = 1;
126 ASSERT_TRUE(frame_.muted());
127 EXPECT_EQ(0, AudioFrameOperations::MonoToStereo(&frame_));
128 EXPECT_TRUE(frame_.muted());
129 }
130
117 TEST_F(AudioFrameOperationsTest, MonoToStereoBufferSucceeds) { 131 TEST_F(AudioFrameOperationsTest, MonoToStereoBufferSucceeds) {
118 AudioFrame target_frame; 132 AudioFrame target_frame;
119 frame_.num_channels_ = 1; 133 frame_.num_channels_ = 1;
120 SetFrameData(4, &frame_); 134 SetFrameData(4, &frame_);
121 135
122 target_frame.num_channels_ = 2; 136 target_frame.num_channels_ = 2;
123 target_frame.samples_per_channel_ = frame_.samples_per_channel_; 137 target_frame.samples_per_channel_ = frame_.samples_per_channel_;
124 138
125 AudioFrameOperations::MonoToStereo(frame_.data_, frame_.samples_per_channel_, 139 AudioFrameOperations::MonoToStereo(frame_.data(), frame_.samples_per_channel_,
126 target_frame.data_); 140 target_frame.mutable_data());
127 141
128 AudioFrame stereo_frame; 142 AudioFrame stereo_frame;
129 stereo_frame.samples_per_channel_ = 320; 143 stereo_frame.samples_per_channel_ = 320;
130 stereo_frame.num_channels_ = 2; 144 stereo_frame.num_channels_ = 2;
131 SetFrameData(4, 4, &stereo_frame); 145 SetFrameData(4, 4, &stereo_frame);
132 VerifyFramesAreEqual(stereo_frame, target_frame); 146 VerifyFramesAreEqual(stereo_frame, target_frame);
133 } 147 }
134 148
135 TEST_F(AudioFrameOperationsTest, StereoToMonoFailsWithBadParameters) { 149 TEST_F(AudioFrameOperationsTest, StereoToMonoFailsWithBadParameters) {
136 frame_.num_channels_ = 1; 150 frame_.num_channels_ = 1;
137 EXPECT_EQ(-1, AudioFrameOperations::StereoToMono(&frame_)); 151 EXPECT_EQ(-1, AudioFrameOperations::StereoToMono(&frame_));
138 } 152 }
139 153
140 TEST_F(AudioFrameOperationsTest, StereoToMonoSucceeds) { 154 TEST_F(AudioFrameOperationsTest, StereoToMonoSucceeds) {
141 SetFrameData(4, 2, &frame_); 155 SetFrameData(4, 2, &frame_);
142 EXPECT_EQ(0, AudioFrameOperations::StereoToMono(&frame_)); 156 EXPECT_EQ(0, AudioFrameOperations::StereoToMono(&frame_));
143 157
144 AudioFrame mono_frame; 158 AudioFrame mono_frame;
145 mono_frame.samples_per_channel_ = 320; 159 mono_frame.samples_per_channel_ = 320;
146 mono_frame.num_channels_ = 1; 160 mono_frame.num_channels_ = 1;
147 SetFrameData(3, &mono_frame); 161 SetFrameData(3, &mono_frame);
148 VerifyFramesAreEqual(mono_frame, frame_); 162 VerifyFramesAreEqual(mono_frame, frame_);
149 } 163 }
150 164
165 TEST_F(AudioFrameOperationsTest, StereoToMonoMuted) {
166 ASSERT_TRUE(frame_.muted());
167 EXPECT_EQ(0, AudioFrameOperations::StereoToMono(&frame_));
168 EXPECT_TRUE(frame_.muted());
169 }
170
151 TEST_F(AudioFrameOperationsTest, StereoToMonoBufferSucceeds) { 171 TEST_F(AudioFrameOperationsTest, StereoToMonoBufferSucceeds) {
152 AudioFrame target_frame; 172 AudioFrame target_frame;
153 SetFrameData(4, 2, &frame_); 173 SetFrameData(4, 2, &frame_);
154 174
155 target_frame.num_channels_ = 1; 175 target_frame.num_channels_ = 1;
156 target_frame.samples_per_channel_ = frame_.samples_per_channel_; 176 target_frame.samples_per_channel_ = frame_.samples_per_channel_;
157 177
158 AudioFrameOperations::StereoToMono(frame_.data_, frame_.samples_per_channel_, 178 AudioFrameOperations::StereoToMono(frame_.data(), frame_.samples_per_channel_,
159 target_frame.data_); 179 target_frame.mutable_data());
160 180
161 AudioFrame mono_frame; 181 AudioFrame mono_frame;
162 mono_frame.samples_per_channel_ = 320; 182 mono_frame.samples_per_channel_ = 320;
163 mono_frame.num_channels_ = 1; 183 mono_frame.num_channels_ = 1;
164 SetFrameData(3, &mono_frame); 184 SetFrameData(3, &mono_frame);
165 VerifyFramesAreEqual(mono_frame, target_frame); 185 VerifyFramesAreEqual(mono_frame, target_frame);
166 } 186 }
167 187
168 TEST_F(AudioFrameOperationsTest, StereoToMonoDoesNotWrapAround) { 188 TEST_F(AudioFrameOperationsTest, StereoToMonoDoesNotWrapAround) {
169 SetFrameData(-32768, -32768, &frame_); 189 SetFrameData(-32768, -32768, &frame_);
(...skipping 19 matching lines...) Expand all
189 209
190 EXPECT_EQ(0, AudioFrameOperations::QuadToMono(&frame_)); 210 EXPECT_EQ(0, AudioFrameOperations::QuadToMono(&frame_));
191 211
192 AudioFrame mono_frame; 212 AudioFrame mono_frame;
193 mono_frame.samples_per_channel_ = 320; 213 mono_frame.samples_per_channel_ = 320;
194 mono_frame.num_channels_ = 1; 214 mono_frame.num_channels_ = 1;
195 SetFrameData(5, &mono_frame); 215 SetFrameData(5, &mono_frame);
196 VerifyFramesAreEqual(mono_frame, frame_); 216 VerifyFramesAreEqual(mono_frame, frame_);
197 } 217 }
198 218
219 TEST_F(AudioFrameOperationsTest, QuadToMonoMuted) {
220 frame_.num_channels_ = 4;
221 ASSERT_TRUE(frame_.muted());
222 EXPECT_EQ(0, AudioFrameOperations::QuadToMono(&frame_));
223 EXPECT_TRUE(frame_.muted());
224 }
225
199 TEST_F(AudioFrameOperationsTest, QuadToMonoBufferSucceeds) { 226 TEST_F(AudioFrameOperationsTest, QuadToMonoBufferSucceeds) {
200 AudioFrame target_frame; 227 AudioFrame target_frame;
201 frame_.num_channels_ = 4; 228 frame_.num_channels_ = 4;
202 SetFrameData(4, 2, 6, 8, &frame_); 229 SetFrameData(4, 2, 6, 8, &frame_);
203 230
204 target_frame.num_channels_ = 1; 231 target_frame.num_channels_ = 1;
205 target_frame.samples_per_channel_ = frame_.samples_per_channel_; 232 target_frame.samples_per_channel_ = frame_.samples_per_channel_;
206 233
207 AudioFrameOperations::QuadToMono(frame_.data_, frame_.samples_per_channel_, 234 AudioFrameOperations::QuadToMono(frame_.data(), frame_.samples_per_channel_,
208 target_frame.data_); 235 target_frame.mutable_data());
209 AudioFrame mono_frame; 236 AudioFrame mono_frame;
210 mono_frame.samples_per_channel_ = 320; 237 mono_frame.samples_per_channel_ = 320;
211 mono_frame.num_channels_ = 1; 238 mono_frame.num_channels_ = 1;
212 SetFrameData(5, &mono_frame); 239 SetFrameData(5, &mono_frame);
213 VerifyFramesAreEqual(mono_frame, target_frame); 240 VerifyFramesAreEqual(mono_frame, target_frame);
214 } 241 }
215 242
216 TEST_F(AudioFrameOperationsTest, QuadToMonoDoesNotWrapAround) { 243 TEST_F(AudioFrameOperationsTest, QuadToMonoDoesNotWrapAround) {
217 frame_.num_channels_ = 4; 244 frame_.num_channels_ = 4;
218 SetFrameData(-32768, -32768, -32768, -32768, &frame_); 245 SetFrameData(-32768, -32768, -32768, -32768, &frame_);
(...skipping 18 matching lines...) Expand all
237 SetFrameData(4, 2, 6, 8, &frame_); 264 SetFrameData(4, 2, 6, 8, &frame_);
238 EXPECT_EQ(0, AudioFrameOperations::QuadToStereo(&frame_)); 265 EXPECT_EQ(0, AudioFrameOperations::QuadToStereo(&frame_));
239 266
240 AudioFrame stereo_frame; 267 AudioFrame stereo_frame;
241 stereo_frame.samples_per_channel_ = 320; 268 stereo_frame.samples_per_channel_ = 320;
242 stereo_frame.num_channels_ = 2; 269 stereo_frame.num_channels_ = 2;
243 SetFrameData(3, 7, &stereo_frame); 270 SetFrameData(3, 7, &stereo_frame);
244 VerifyFramesAreEqual(stereo_frame, frame_); 271 VerifyFramesAreEqual(stereo_frame, frame_);
245 } 272 }
246 273
274 TEST_F(AudioFrameOperationsTest, QuadToStereoMuted) {
275 frame_.num_channels_ = 4;
276 ASSERT_TRUE(frame_.muted());
277 EXPECT_EQ(0, AudioFrameOperations::QuadToStereo(&frame_));
278 EXPECT_TRUE(frame_.muted());
279 }
280
247 TEST_F(AudioFrameOperationsTest, QuadToStereoBufferSucceeds) { 281 TEST_F(AudioFrameOperationsTest, QuadToStereoBufferSucceeds) {
248 AudioFrame target_frame; 282 AudioFrame target_frame;
249 frame_.num_channels_ = 4; 283 frame_.num_channels_ = 4;
250 SetFrameData(4, 2, 6, 8, &frame_); 284 SetFrameData(4, 2, 6, 8, &frame_);
251 285
252 target_frame.num_channels_ = 2; 286 target_frame.num_channels_ = 2;
253 target_frame.samples_per_channel_ = frame_.samples_per_channel_; 287 target_frame.samples_per_channel_ = frame_.samples_per_channel_;
254 288
255 AudioFrameOperations::QuadToStereo(frame_.data_, frame_.samples_per_channel_, 289 AudioFrameOperations::QuadToStereo(frame_.data(), frame_.samples_per_channel_,
256 target_frame.data_); 290 target_frame.mutable_data());
257 AudioFrame stereo_frame; 291 AudioFrame stereo_frame;
258 stereo_frame.samples_per_channel_ = 320; 292 stereo_frame.samples_per_channel_ = 320;
259 stereo_frame.num_channels_ = 2; 293 stereo_frame.num_channels_ = 2;
260 SetFrameData(3, 7, &stereo_frame); 294 SetFrameData(3, 7, &stereo_frame);
261 VerifyFramesAreEqual(stereo_frame, target_frame); 295 VerifyFramesAreEqual(stereo_frame, target_frame);
262 } 296 }
263 297
264 TEST_F(AudioFrameOperationsTest, QuadToStereoDoesNotWrapAround) { 298 TEST_F(AudioFrameOperationsTest, QuadToStereoDoesNotWrapAround) {
265 frame_.num_channels_ = 4; 299 frame_.num_channels_ = 4;
266 SetFrameData(-32768, -32768, -32768, -32768, &frame_); 300 SetFrameData(-32768, -32768, -32768, -32768, &frame_);
(...skipping 11 matching lines...) Expand all
278 312
279 AudioFrame swapped_frame; 313 AudioFrame swapped_frame;
280 swapped_frame.samples_per_channel_ = 320; 314 swapped_frame.samples_per_channel_ = 320;
281 swapped_frame.num_channels_ = 2; 315 swapped_frame.num_channels_ = 2;
282 SetFrameData(1, 0, &swapped_frame); 316 SetFrameData(1, 0, &swapped_frame);
283 317
284 AudioFrameOperations::SwapStereoChannels(&frame_); 318 AudioFrameOperations::SwapStereoChannels(&frame_);
285 VerifyFramesAreEqual(swapped_frame, frame_); 319 VerifyFramesAreEqual(swapped_frame, frame_);
286 } 320 }
287 321
322 TEST_F(AudioFrameOperationsTest, SwapStereoChannelsMuted) {
323 ASSERT_TRUE(frame_.muted());
324 AudioFrameOperations::SwapStereoChannels(&frame_);
325 EXPECT_TRUE(frame_.muted());
326 }
327
288 TEST_F(AudioFrameOperationsTest, SwapStereoChannelsFailsOnMono) { 328 TEST_F(AudioFrameOperationsTest, SwapStereoChannelsFailsOnMono) {
289 frame_.num_channels_ = 1; 329 frame_.num_channels_ = 1;
290 // Set data to "stereo", despite it being a mono frame. 330 // Set data to "stereo", despite it being a mono frame.
291 SetFrameData(0, 1, &frame_); 331 SetFrameData(0, 1, &frame_);
292 332
293 AudioFrame orig_frame; 333 AudioFrame orig_frame;
294 orig_frame.CopyFrom(frame_); 334 orig_frame.CopyFrom(frame_);
295 AudioFrameOperations::SwapStereoChannels(&frame_); 335 AudioFrameOperations::SwapStereoChannels(&frame_);
296 // Verify that no swap occurred. 336 // Verify that no swap occurred.
297 VerifyFramesAreEqual(orig_frame, frame_); 337 VerifyFramesAreEqual(orig_frame, frame_);
298 } 338 }
299 339
300 TEST_F(AudioFrameOperationsTest, MuteDisabled) { 340 TEST_F(AudioFrameOperationsTest, MuteDisabled) {
301 SetFrameData(1000, -1000, &frame_); 341 SetFrameData(1000, -1000, &frame_);
302 AudioFrameOperations::Mute(&frame_, false, false); 342 AudioFrameOperations::Mute(&frame_, false, false);
303 343
304 AudioFrame muted_frame; 344 AudioFrame muted_frame;
305 muted_frame.samples_per_channel_ = 320; 345 muted_frame.samples_per_channel_ = 320;
306 muted_frame.num_channels_ = 2; 346 muted_frame.num_channels_ = 2;
307 SetFrameData(1000, -1000, &muted_frame); 347 SetFrameData(1000, -1000, &muted_frame);
308 VerifyFramesAreEqual(muted_frame, frame_); 348 VerifyFramesAreEqual(muted_frame, frame_);
309 } 349 }
310 350
311 TEST_F(AudioFrameOperationsTest, MuteEnabled) { 351 TEST_F(AudioFrameOperationsTest, MuteEnabled) {
312 SetFrameData(1000, -1000, &frame_); 352 SetFrameData(1000, -1000, &frame_);
313 AudioFrameOperations::Mute(&frame_, true, true); 353 AudioFrameOperations::Mute(&frame_, true, true);
314 354
315 AudioFrame muted_frame; 355 AudioFrame muted_frame;
316 muted_frame.samples_per_channel_ = 320; 356 muted_frame.samples_per_channel_ = frame_.samples_per_channel_;
317 muted_frame.num_channels_ = 2; 357 muted_frame.num_channels_ = frame_.num_channels_;
318 SetFrameData(0, 0, &muted_frame); 358 ASSERT_TRUE(muted_frame.muted());
319 VerifyFramesAreEqual(muted_frame, frame_); 359 VerifyFramesAreEqual(muted_frame, frame_);
320 } 360 }
321 361
322 // Verify that *beginning* to mute works for short and long (>128) frames, mono 362 // Verify that *beginning* to mute works for short and long (>128) frames, mono
323 // and stereo. Beginning mute should yield a ramp down to zero. 363 // and stereo. Beginning mute should yield a ramp down to zero.
324 TEST_F(AudioFrameOperationsTest, MuteBeginMonoLong) { 364 TEST_F(AudioFrameOperationsTest, MuteBeginMonoLong) {
325 InitFrame(&frame_, 1, 228, 1000, -1000); 365 InitFrame(&frame_, 1, 228, 1000, -1000);
326 AudioFrameOperations::Mute(&frame_, false, true); 366 AudioFrameOperations::Mute(&frame_, false, true);
327 VerifyFrameDataBounds(frame_, 0, 1000, 0); 367 VerifyFrameDataBounds(frame_, 0, 1000, 0);
328 EXPECT_EQ(1000, GetChannelData(frame_, 0, 99)); 368 EXPECT_EQ(1000, GetChannelData(frame_, 0, 99));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 EXPECT_EQ(10, GetChannelData(frame_, 0, 0)); 456 EXPECT_EQ(10, GetChannelData(frame_, 0, 0));
417 EXPECT_EQ(-10, GetChannelData(frame_, 1, 0)); 457 EXPECT_EQ(-10, GetChannelData(frame_, 1, 0));
418 EXPECT_EQ(21, GetChannelData(frame_, 0, 1)); 458 EXPECT_EQ(21, GetChannelData(frame_, 0, 1));
419 EXPECT_EQ(-21, GetChannelData(frame_, 1, 1)); 459 EXPECT_EQ(-21, GetChannelData(frame_, 1, 1));
420 EXPECT_EQ(989, GetChannelData(frame_, 0, 91)); 460 EXPECT_EQ(989, GetChannelData(frame_, 0, 91));
421 EXPECT_EQ(-989, GetChannelData(frame_, 1, 91)); 461 EXPECT_EQ(-989, GetChannelData(frame_, 1, 91));
422 EXPECT_EQ(999, GetChannelData(frame_, 0, 92)); 462 EXPECT_EQ(999, GetChannelData(frame_, 0, 92));
423 EXPECT_EQ(-999, GetChannelData(frame_, 1, 92)); 463 EXPECT_EQ(-999, GetChannelData(frame_, 1, 92));
424 } 464 }
425 465
466 TEST_F(AudioFrameOperationsTest, MuteBeginAlreadyMuted) {
467 ASSERT_TRUE(frame_.muted());
468 AudioFrameOperations::Mute(&frame_, false, true);
469 EXPECT_TRUE(frame_.muted());
470 }
471
472 TEST_F(AudioFrameOperationsTest, MuteEndAlreadyMuted) {
473 ASSERT_TRUE(frame_.muted());
474 AudioFrameOperations::Mute(&frame_, true, false);
475 EXPECT_TRUE(frame_.muted());
476 }
477
478 TEST_F(AudioFrameOperationsTest, ApplyHalfGainSucceeds) {
479 SetFrameData(2, &frame_);
480
481 AudioFrame half_gain_frame;
482 half_gain_frame.num_channels_ = frame_.num_channels_;
483 half_gain_frame.samples_per_channel_ = frame_.samples_per_channel_;
484 SetFrameData(1, &half_gain_frame);
485
486 AudioFrameOperations::ApplyHalfGain(&frame_);
487 VerifyFramesAreEqual(half_gain_frame, frame_);
488 }
489
490 TEST_F(AudioFrameOperationsTest, ApplyHalfGainMuted) {
491 ASSERT_TRUE(frame_.muted());
492 AudioFrameOperations::ApplyHalfGain(&frame_);
493 EXPECT_TRUE(frame_.muted());
494 }
495
426 // TODO(andrew): should not allow negative scales. 496 // TODO(andrew): should not allow negative scales.
427 TEST_F(AudioFrameOperationsTest, DISABLED_ScaleFailsWithBadParameters) { 497 TEST_F(AudioFrameOperationsTest, DISABLED_ScaleFailsWithBadParameters) {
428 frame_.num_channels_ = 1; 498 frame_.num_channels_ = 1;
429 EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, &frame_)); 499 EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, &frame_));
430 500
431 frame_.num_channels_ = 3; 501 frame_.num_channels_ = 3;
432 EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, &frame_)); 502 EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, &frame_));
433 503
434 frame_.num_channels_ = 2; 504 frame_.num_channels_ = 2;
435 EXPECT_EQ(-1, AudioFrameOperations::Scale(-1.0, 1.0, &frame_)); 505 EXPECT_EQ(-1, AudioFrameOperations::Scale(-1.0, 1.0, &frame_));
(...skipping 16 matching lines...) Expand all
452 SetFrameData(1, -1, &frame_); 522 SetFrameData(1, -1, &frame_);
453 EXPECT_EQ(0, AudioFrameOperations::Scale(2.0, 3.0, &frame_)); 523 EXPECT_EQ(0, AudioFrameOperations::Scale(2.0, 3.0, &frame_));
454 524
455 AudioFrame scaled_frame; 525 AudioFrame scaled_frame;
456 scaled_frame.samples_per_channel_ = 320; 526 scaled_frame.samples_per_channel_ = 320;
457 scaled_frame.num_channels_ = 2; 527 scaled_frame.num_channels_ = 2;
458 SetFrameData(2, -3, &scaled_frame); 528 SetFrameData(2, -3, &scaled_frame);
459 VerifyFramesAreEqual(scaled_frame, frame_); 529 VerifyFramesAreEqual(scaled_frame, frame_);
460 } 530 }
461 531
532 TEST_F(AudioFrameOperationsTest, ScaleMuted) {
533 ASSERT_TRUE(frame_.muted());
534 EXPECT_EQ(0, AudioFrameOperations::Scale(2.0, 3.0, &frame_));
535 EXPECT_TRUE(frame_.muted());
536 }
537
462 // TODO(andrew): should fail with a negative scale. 538 // TODO(andrew): should fail with a negative scale.
463 TEST_F(AudioFrameOperationsTest, DISABLED_ScaleWithSatFailsWithBadParameters) { 539 TEST_F(AudioFrameOperationsTest, DISABLED_ScaleWithSatFailsWithBadParameters) {
464 EXPECT_EQ(-1, AudioFrameOperations::ScaleWithSat(-1.0, &frame_)); 540 EXPECT_EQ(-1, AudioFrameOperations::ScaleWithSat(-1.0, &frame_));
465 } 541 }
466 542
467 TEST_F(AudioFrameOperationsTest, ScaleWithSatDoesNotWrapAround) { 543 TEST_F(AudioFrameOperationsTest, ScaleWithSatDoesNotWrapAround) {
468 frame_.num_channels_ = 1; 544 frame_.num_channels_ = 1;
469 SetFrameData(4000, &frame_); 545 SetFrameData(4000, &frame_);
470 EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(10.0, &frame_)); 546 EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(10.0, &frame_));
471 547
(...skipping 14 matching lines...) Expand all
486 SetFrameData(1, &frame_); 562 SetFrameData(1, &frame_);
487 EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(2.0, &frame_)); 563 EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(2.0, &frame_));
488 564
489 AudioFrame scaled_frame; 565 AudioFrame scaled_frame;
490 scaled_frame.samples_per_channel_ = 320; 566 scaled_frame.samples_per_channel_ = 320;
491 scaled_frame.num_channels_ = 1; 567 scaled_frame.num_channels_ = 1;
492 SetFrameData(2, &scaled_frame); 568 SetFrameData(2, &scaled_frame);
493 VerifyFramesAreEqual(scaled_frame, frame_); 569 VerifyFramesAreEqual(scaled_frame, frame_);
494 } 570 }
495 571
572 TEST_F(AudioFrameOperationsTest, ScaleWithSatMuted) {
573 ASSERT_TRUE(frame_.muted());
574 EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(2.0, &frame_));
575 EXPECT_TRUE(frame_.muted());
576 }
577
496 TEST_F(AudioFrameOperationsTest, AddingXToEmptyGivesX) { 578 TEST_F(AudioFrameOperationsTest, AddingXToEmptyGivesX) {
497 // When samples_per_channel_ is 0, the frame counts as empty and zero. 579 // When samples_per_channel_ is 0, the frame counts as empty and zero.
498 AudioFrame frame_to_add_to; 580 AudioFrame frame_to_add_to;
581 frame_to_add_to.mutable_data(); // Unmute the frame.
582 ASSERT_FALSE(frame_to_add_to.muted());
499 frame_to_add_to.samples_per_channel_ = 0; 583 frame_to_add_to.samples_per_channel_ = 0;
500 frame_to_add_to.num_channels_ = frame_.num_channels_; 584 frame_to_add_to.num_channels_ = frame_.num_channels_;
501 585
586 SetFrameData(1000, &frame_);
502 AudioFrameOperations::Add(frame_, &frame_to_add_to); 587 AudioFrameOperations::Add(frame_, &frame_to_add_to);
503 VerifyFramesAreEqual(frame_, frame_to_add_to); 588 VerifyFramesAreEqual(frame_, frame_to_add_to);
504 } 589 }
505 590
591 TEST_F(AudioFrameOperationsTest, AddingXToMutedGivesX) {
592 AudioFrame frame_to_add_to;
593 ASSERT_TRUE(frame_to_add_to.muted());
594 frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_;
595 frame_to_add_to.num_channels_ = frame_.num_channels_;
596
597 SetFrameData(1000, &frame_);
598 AudioFrameOperations::Add(frame_, &frame_to_add_to);
599 VerifyFramesAreEqual(frame_, frame_to_add_to);
600 }
601
602 TEST_F(AudioFrameOperationsTest, AddingMutedToXGivesX) {
603 AudioFrame frame_to_add_to;
604 frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_;
605 frame_to_add_to.num_channels_ = frame_.num_channels_;
606 SetFrameData(1000, &frame_to_add_to);
607
608 AudioFrame frame_copy;
609 frame_copy.CopyFrom(frame_to_add_to);
610
611 ASSERT_TRUE(frame_.muted());
612 AudioFrameOperations::Add(frame_, &frame_to_add_to);
613 VerifyFramesAreEqual(frame_copy, frame_to_add_to);
614 }
615
506 TEST_F(AudioFrameOperationsTest, AddingTwoFramesProducesTheirSum) { 616 TEST_F(AudioFrameOperationsTest, AddingTwoFramesProducesTheirSum) {
507 AudioFrame frame_to_add_to; 617 AudioFrame frame_to_add_to;
508 frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_; 618 frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_;
509 frame_to_add_to.num_channels_ = frame_.num_channels_; 619 frame_to_add_to.num_channels_ = frame_.num_channels_;
510 SetFrameData(1000, &frame_to_add_to); 620 SetFrameData(1000, &frame_to_add_to);
621 SetFrameData(2000, &frame_);
511 622
512 AudioFrameOperations::Add(frame_, &frame_to_add_to); 623 AudioFrameOperations::Add(frame_, &frame_to_add_to);
513 SetFrameData(frame_.data_[0] + 1000, &frame_); 624 SetFrameData(frame_.data()[0] + 1000, &frame_);
514 VerifyFramesAreEqual(frame_, frame_to_add_to); 625 VerifyFramesAreEqual(frame_, frame_to_add_to);
515 } 626 }
627
516 } // namespace 628 } // namespace
517 } // namespace webrtc 629 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/audio/utility/audio_frame_operations.cc ('k') | webrtc/modules/audio_coding/acm2/acm_receiver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698