Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 99 CompareWithOldMixerTest() | 99 CompareWithOldMixerTest() |
| 100 : old_mixer_(AudioConferenceMixer::Create(kId)), | 100 : old_mixer_(AudioConferenceMixer::Create(kId)), |
| 101 new_mixer_(NewAudioConferenceMixer::Create(kId)) {} | 101 new_mixer_(NewAudioConferenceMixer::Create(kId)) {} |
| 102 | 102 |
| 103 ~CompareWithOldMixerTest() { Reset(); } | 103 ~CompareWithOldMixerTest() { Reset(); } |
| 104 | 104 |
| 105 // Mixes with both mixers and compares results: resulting frames and | 105 // Mixes with both mixers and compares results: resulting frames and |
| 106 // mix statuses. | 106 // mix statuses. |
| 107 void MixAndCompare() { | 107 void MixAndCompare() { |
| 108 old_mixer_->Process(); | 108 old_mixer_->Process(); |
| 109 new_mixer_->Mix(&new_mixer_frame_); | 109 new_mixer_->Mix(kSampleRateHz, |
|
aleloi
2016/08/05 09:52:22
Adepted tests to match new mixer API.
| |
| 110 1, // number of channels | |
| 111 &new_mixer_frame_); | |
| 110 EXPECT_EQ(0, memcmp(old_mixer_frame_.data_, new_mixer_frame_.data_, | 112 EXPECT_EQ(0, memcmp(old_mixer_frame_.data_, new_mixer_frame_.data_, |
| 111 sizeof(old_mixer_frame_.data_))); | 113 sizeof(old_mixer_frame_.data_))); |
| 112 | 114 |
| 113 for (auto& participant_pair : participants_) { | 115 for (auto& participant_pair : participants_) { |
| 114 EXPECT_EQ(participant_pair.first->IsMixed(), | 116 EXPECT_EQ(participant_pair.first->IsMixed(), |
| 115 participant_pair.second->IsMixed()); | 117 participant_pair.second->IsMixed()); |
| 116 } | 118 } |
| 117 } | 119 } |
| 118 | 120 |
| 119 std::unique_ptr<AudioFrame> last_mixed_audio_old() { | 121 std::unique_ptr<AudioFrame> last_mixed_audio_old() { |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 305 EXPECT_CALL(participants[i], NeededFrequency(_)) | 307 EXPECT_CALL(participants[i], NeededFrequency(_)) |
| 306 .WillRepeatedly(Return(kSampleRateHz)); | 308 .WillRepeatedly(Return(kSampleRateHz)); |
| 307 } | 309 } |
| 308 | 310 |
| 309 // Last participant gives audio frame with passive VAD, although it has the | 311 // Last participant gives audio frame with passive VAD, although it has the |
| 310 // largest energy. | 312 // largest energy. |
| 311 participants[kAudioSources - 1].fake_frame()->vad_activity_ = | 313 participants[kAudioSources - 1].fake_frame()->vad_activity_ = |
| 312 AudioFrame::kVadPassive; | 314 AudioFrame::kVadPassive; |
| 313 | 315 |
| 314 AudioFrame audio_frame; | 316 AudioFrame audio_frame; |
| 315 mixer->Mix(&audio_frame); | 317 mixer->Mix(kSampleRateHz, |
| 318 1, // number of channels | |
| 319 &audio_frame); | |
| 316 | 320 |
| 317 for (int i = 0; i < kAudioSources; ++i) { | 321 for (int i = 0; i < kAudioSources; ++i) { |
| 318 bool is_mixed = participants[i].IsMixed(); | 322 bool is_mixed = participants[i].IsMixed(); |
| 319 if (i == kAudioSources - 1 || | 323 if (i == kAudioSources - 1 || |
| 320 i < kAudioSources - 1 - | 324 i < kAudioSources - 1 - |
| 321 NewAudioConferenceMixer::kMaximumAmountOfMixedAudioSources) { | 325 NewAudioConferenceMixer::kMaximumAmountOfMixedAudioSources) { |
| 322 EXPECT_FALSE(is_mixed) << "Mixing status of AudioSource #" << i | 326 EXPECT_FALSE(is_mixed) << "Mixing status of AudioSource #" << i |
| 323 << " wrong."; | 327 << " wrong."; |
| 324 } else { | 328 } else { |
| 325 EXPECT_TRUE(is_mixed) << "Mixing status of AudioSource #" << i | 329 EXPECT_TRUE(is_mixed) << "Mixing status of AudioSource #" << i |
| 326 << " wrong."; | 330 << " wrong."; |
| 327 } | 331 } |
| 328 } | 332 } |
| 329 } | 333 } |
| 330 | 334 |
| 331 TEST_F(BothMixersTest, CompareInitialFrameAudio) { | 335 TEST_F(BothMixersTest, CompareInitialFrameAudio) { |
| 332 EXPECT_CALL(participant_, GetAudioFrameWithMuted(_, _)).Times(Exactly(1)); | 336 EXPECT_CALL(participant_, GetAudioFrameWithMuted(_, _)).Times(Exactly(1)); |
| 333 | 337 |
| 334 // Make sure the participant is marked as 'non-mixed' so that it is | 338 // Make sure the participant is marked as 'non-mixed' so that it is |
| 335 // ramped in next round. | 339 // ramped in next round. |
| 336 ResetAudioSource(); | 340 ResetAudioSource(); |
| 337 | 341 |
| 338 // Construct the expected sound for the first mixing round. | 342 // Construct the expected sound for the first mixing round. |
| 339 mixing_round_frame.CopyFrom(*participant_.fake_frame()); | 343 mixing_round_frame.CopyFrom(*participant_.fake_frame()); |
| 340 RampIn(mixing_round_frame); | 344 RampIn(mixing_round_frame); |
| 341 | 345 |
| 342 // Mix frames and put the result into a frame. | 346 // Mix frames and put the result into a frame. |
| 343 audio_mixer_->MixActiveChannels(); | |
|
aleloi
2016/08/05 09:52:22
This is the test that touches OutputMixer.
Now Ge
| |
| 344 audio_mixer_->GetMixedAudio(kSampleRateHz, 1, &mixed_results_frame_); | 347 audio_mixer_->GetMixedAudio(kSampleRateHz, 1, &mixed_results_frame_); |
| 345 | 348 |
| 346 // Compare the received frame with the expected. | 349 // Compare the received frame with the expected. |
| 347 EXPECT_EQ(mixing_round_frame.sample_rate_hz_, | 350 EXPECT_EQ(mixing_round_frame.sample_rate_hz_, |
| 348 mixed_results_frame_.sample_rate_hz_); | 351 mixed_results_frame_.sample_rate_hz_); |
| 349 EXPECT_EQ(mixing_round_frame.num_channels_, | 352 EXPECT_EQ(mixing_round_frame.num_channels_, |
| 350 mixed_results_frame_.num_channels_); | 353 mixed_results_frame_.num_channels_); |
| 351 EXPECT_EQ(mixing_round_frame.samples_per_channel_, | 354 EXPECT_EQ(mixing_round_frame.samples_per_channel_, |
| 352 mixed_results_frame_.samples_per_channel_); | 355 mixed_results_frame_.samples_per_channel_); |
| 353 EXPECT_EQ(0, memcmp(mixing_round_frame.data_, mixed_results_frame_.data_, | 356 EXPECT_EQ(0, memcmp(mixing_round_frame.data_, mixed_results_frame_.data_, |
| 354 sizeof(mixing_round_frame.data_))); | 357 sizeof(mixing_round_frame.data_))); |
| 355 } | 358 } |
| 356 | 359 |
| 357 TEST_F(BothMixersTest, CompareSecondFrameAudio) { | 360 TEST_F(BothMixersTest, CompareSecondFrameAudio) { |
| 358 EXPECT_CALL(participant_, GetAudioFrameWithMuted(_, _)).Times(Exactly(2)); | 361 EXPECT_CALL(participant_, GetAudioFrameWithMuted(_, _)).Times(Exactly(2)); |
| 359 | 362 |
| 360 // Make sure the participant is marked as 'non-mixed' so that it is | 363 // Make sure the participant is marked as 'non-mixed' so that it is |
| 361 // ramped in next round. | 364 // ramped in next round. |
| 362 ResetAudioSource(); | 365 ResetAudioSource(); |
| 363 | 366 |
| 364 // Do one mixing iteration. | 367 // Do one mixing iteration. |
| 365 audio_mixer_->MixActiveChannels(); | 368 audio_mixer_->GetMixedAudio(kSampleRateHz, 1, &mixed_results_frame_); |
| 366 | 369 |
| 367 // Mix frames a second time and compare with the expected frame | 370 // Mix frames a second time and compare with the expected frame |
| 368 // (which is the participant's frame). | 371 // (which is the participant's frame). |
| 369 audio_mixer_->MixActiveChannels(); | |
| 370 audio_mixer_->GetMixedAudio(kSampleRateHz, 1, &mixed_results_frame_); | 372 audio_mixer_->GetMixedAudio(kSampleRateHz, 1, &mixed_results_frame_); |
| 371 EXPECT_EQ(0, | 373 EXPECT_EQ(0, |
| 372 memcmp(participant_.fake_frame()->data_, mixed_results_frame_.data_, | 374 memcmp(participant_.fake_frame()->data_, mixed_results_frame_.data_, |
| 373 sizeof(mixing_round_frame.data_))); | 375 sizeof(mixing_round_frame.data_))); |
| 374 } | 376 } |
| 375 | 377 |
| 376 TEST_F(CompareWithOldMixerTest, TwoParticipantsNormalFrames) { | 378 TEST_F(CompareWithOldMixerTest, TwoParticipantsNormalFrames) { |
| 377 Reset(); | 379 Reset(); |
| 378 AudioFrame first_frame, second_frame; | 380 AudioFrame first_frame, second_frame; |
| 379 | 381 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 434 MixerParticipant::AudioFrameInfo::kMuted); | 436 MixerParticipant::AudioFrameInfo::kMuted); |
| 435 } else { | 437 } else { |
| 436 AddParticipant(&audio_frames[i], | 438 AddParticipant(&audio_frames[i], |
| 437 MixerParticipant::AudioFrameInfo::kNormal); | 439 MixerParticipant::AudioFrameInfo::kNormal); |
| 438 } | 440 } |
| 439 MixAndCompare(); | 441 MixAndCompare(); |
| 440 } | 442 } |
| 441 } | 443 } |
| 442 | 444 |
| 443 } // namespace webrtc | 445 } // namespace webrtc |
| OLD | NEW |