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 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
363 participant.fake_frame()->samples_per_channel_ = 8000 / 100; | 363 participant.fake_frame()->samples_per_channel_ = 8000 / 100; |
364 | 364 |
365 EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true)); | 365 EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true)); |
366 for (size_t number_of_channels : {1, 2}) { | 366 for (size_t number_of_channels : {1, 2}) { |
367 EXPECT_CALL(participant, GetAudioFrameWithMuted(_, 8000)).Times(Exactly(1)); | 367 EXPECT_CALL(participant, GetAudioFrameWithMuted(_, 8000)).Times(Exactly(1)); |
368 mixer->Mix(8000, number_of_channels, &frame_for_mixing); | 368 mixer->Mix(8000, number_of_channels, &frame_for_mixing); |
369 EXPECT_EQ(number_of_channels, frame_for_mixing.num_channels_); | 369 EXPECT_EQ(number_of_channels, frame_for_mixing.num_channels_); |
370 } | 370 } |
371 } | 371 } |
372 | 372 |
373 // Test that the volume is reported as zero when the mixer input is | |
minyue-webrtc
2016/08/11 10:27:33
is -> comprises only
aleloi
2016/08/11 12:15:20
Done.
| |
374 // frames with no sound. | |
minyue-webrtc
2016/08/11 10:27:33
no sound -> zero values
aleloi
2016/08/11 12:15:20
Done.
| |
375 TEST(AudioMixer, ZeroVolume) { | |
minyue-webrtc
2016/08/11 10:27:33
ZeroVolume -> LevelIsZeroWhenMixingZeros
aleloi
2016/08/11 12:15:20
Done.
| |
376 const int kId = 1; | |
377 std::unique_ptr<NewAudioConferenceMixer> mixer( | |
378 NewAudioConferenceMixer::Create(kId)); | |
379 AudioFrame frame_for_mixing; | |
380 | |
381 MockMixerAudioSource participant; | |
382 participant.fake_frame()->sample_rate_hz_ = 8000; | |
minyue-webrtc
2016/08/11 10:27:33
define kSampleRate and use it to replace 8000
aleloi
2016/08/11 12:15:19
Done.
aleloi
2016/08/11 12:15:19
Done.
| |
383 participant.fake_frame()->num_channels_ = 1; | |
384 | |
385 // Frame duration 10ms. | |
386 participant.fake_frame()->samples_per_channel_ = 8000 / 100; | |
387 | |
388 EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true)); | |
389 for (size_t i = 0; i < 10; i++) { | |
390 EXPECT_CALL(participant, GetAudioFrameWithMuted(_, 8000)).Times(Exactly(1)); | |
391 mixer->Mix(8000, 1, &frame_for_mixing); | |
392 | |
393 EXPECT_EQ(static_cast<uint32_t>(0), mixer->GetSpeechOutputLevel()); | |
394 EXPECT_EQ(static_cast<uint32_t>(0), mixer->GetSpeechOutputLevelFullRange()); | |
395 } | |
396 } | |
397 | |
398 // Test that the volume is reported as full when the mixer input is | |
minyue-webrtc
2016/08/11 10:27:33
comprises frames with max values of int16_t.
minyue-webrtc
2016/08/11 10:27:33
maximum
aleloi
2016/08/11 12:15:20
Done.
aleloi
2016/08/11 12:15:20
Done.
| |
399 // full frames. | |
400 TEST(AudioMixer, FullVolume) { | |
minyue-webrtc
2016/08/11 10:27:33
curious, what if one participant is zero and anoth
minyue-webrtc
2016/08/11 10:27:33
FullVolume -> LevelIsMaxWhenMixingMaxValues
aleloi
2016/08/11 12:15:20
Thanks! I thought about how to name the tests, but
aleloi
2016/08/11 12:15:20
It should be max, or one off from max due to round
aleloi
2016/08/11 12:25:22
Thinking on it again, I see that I was probably wr
| |
401 const int kId = 1; | |
402 std::unique_ptr<NewAudioConferenceMixer> mixer( | |
403 NewAudioConferenceMixer::Create(kId)); | |
404 AudioFrame frame_for_mixing; | |
405 | |
406 MockMixerAudioSource participant; | |
407 participant.fake_frame()->sample_rate_hz_ = 8000; | |
408 participant.fake_frame()->num_channels_ = 1; | |
409 | |
410 // Frame duration 10ms. | |
411 participant.fake_frame()->samples_per_channel_ = 8000 / 100; | |
412 | |
413 // Fill participant frame data with maximal sound. | |
414 std::fill(participant.fake_frame()->data_, | |
415 participant.fake_frame()->data_ + 8000 / 100, | |
416 std::numeric_limits<int16_t>::max()); | |
417 | |
418 EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true)); | |
419 for (size_t i = 0; i < 10; i++) { | |
420 EXPECT_CALL(participant, GetAudioFrameWithMuted(_, 8000)).Times(Exactly(1)); | |
421 mixer->Mix(8000, 1, &frame_for_mixing); | |
422 | |
423 // 9 is the highest possible audio level | |
424 EXPECT_EQ(static_cast<uint32_t>(9), mixer->GetSpeechOutputLevel()); | |
425 | |
426 // 0x7fff = 32767 is the highest full range audio level. | |
427 EXPECT_EQ(static_cast<uint32_t>(std::numeric_limits<int16_t>::max()), | |
428 mixer->GetSpeechOutputLevelFullRange()); | |
429 } | |
430 } | |
431 | |
373 TEST_F(BothMixersTest, CompareInitialFrameAudio) { | 432 TEST_F(BothMixersTest, CompareInitialFrameAudio) { |
374 EXPECT_CALL(participant_, GetAudioFrameWithMuted(_, _)).Times(Exactly(1)); | 433 EXPECT_CALL(participant_, GetAudioFrameWithMuted(_, _)).Times(Exactly(1)); |
375 | 434 |
376 // Make sure the participant is marked as 'non-mixed' so that it is | 435 // Make sure the participant is marked as 'non-mixed' so that it is |
377 // ramped in next round. | 436 // ramped in next round. |
378 ResetAudioSource(); | 437 ResetAudioSource(); |
379 | 438 |
380 // Construct the expected sound for the first mixing round. | 439 // Construct the expected sound for the first mixing round. |
381 mixing_round_frame.CopyFrom(*participant_.fake_frame()); | 440 mixing_round_frame.CopyFrom(*participant_.fake_frame()); |
382 RampIn(mixing_round_frame); | 441 RampIn(mixing_round_frame); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
474 MixerParticipant::AudioFrameInfo::kMuted); | 533 MixerParticipant::AudioFrameInfo::kMuted); |
475 } else { | 534 } else { |
476 AddParticipant(&audio_frames[i], | 535 AddParticipant(&audio_frames[i], |
477 MixerParticipant::AudioFrameInfo::kNormal); | 536 MixerParticipant::AudioFrameInfo::kNormal); |
478 } | 537 } |
479 MixAndCompare(); | 538 MixAndCompare(); |
480 } | 539 } |
481 } | 540 } |
482 | 541 |
483 } // namespace webrtc | 542 } // namespace webrtc |
OLD | NEW |