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

Side by Side Diff: webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc

Issue 2709523006: Rename AudioMixer factory method. (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « webrtc/modules/audio_mixer/audio_mixer_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 } 368 }
369 } 369 }
370 370
371 // This test checks that the initialization and participant addition 371 // This test checks that the initialization and participant addition
372 // can be done on a different thread. 372 // can be done on a different thread.
373 TEST(AudioMixer, ConstructFromOtherThread) { 373 TEST(AudioMixer, ConstructFromOtherThread) {
374 std::unique_ptr<rtc::Thread> init_thread = rtc::Thread::Create(); 374 std::unique_ptr<rtc::Thread> init_thread = rtc::Thread::Create();
375 std::unique_ptr<rtc::Thread> participant_thread = rtc::Thread::Create(); 375 std::unique_ptr<rtc::Thread> participant_thread = rtc::Thread::Create();
376 init_thread->Start(); 376 init_thread->Start();
377 const auto mixer = init_thread->Invoke<rtc::scoped_refptr<AudioMixer>>( 377 const auto mixer = init_thread->Invoke<rtc::scoped_refptr<AudioMixer>>(
378 RTC_FROM_HERE, &AudioMixerImpl::Create); 378 RTC_FROM_HERE,
379 // Since AudioMixerImpl::Create is overloaded, we have to
380 // specify the type of which version we want.
381 static_cast<rtc::scoped_refptr<AudioMixerImpl>(*)()>(
382 &AudioMixerImpl::Create));
379 MockMixerAudioSource participant; 383 MockMixerAudioSource participant;
380 384
381 ResetFrame(participant.fake_frame()); 385 ResetFrame(participant.fake_frame());
382 386
383 participant_thread->Start(); 387 participant_thread->Start();
384 EXPECT_TRUE(participant_thread->Invoke<int>( 388 EXPECT_TRUE(participant_thread->Invoke<int>(
385 RTC_FROM_HERE, 389 RTC_FROM_HERE,
386 rtc::Bind(&AudioMixer::AddSource, mixer.get(), &participant))); 390 rtc::Bind(&AudioMixer::AddSource, mixer.get(), &participant)));
387 391
388 EXPECT_CALL(participant, GetAudioFrameWithInfo(kDefaultSampleRateHz, _)) 392 EXPECT_CALL(participant, GetAudioFrameWithInfo(kDefaultSampleRateHz, _))
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 std::fill(frames[0].data_, frames[0].data_ + kDefaultSampleRateHz / 100, 467 std::fill(frames[0].data_, frames[0].data_ + kDefaultSampleRateHz / 100,
464 std::numeric_limits<int16_t>::max()); 468 std::numeric_limits<int16_t>::max());
465 std::vector<bool> expected_status(kAudioSources, true); 469 std::vector<bool> expected_status(kAudioSources, true);
466 expected_status[0] = false; 470 expected_status[0] = false;
467 471
468 MixAndCompare(frames, frame_info, expected_status); 472 MixAndCompare(frames, frame_info, expected_status);
469 } 473 }
470 474
471 TEST(AudioMixer, MixingRateShouldBeDecidedByRateCalculator) { 475 TEST(AudioMixer, MixingRateShouldBeDecidedByRateCalculator) {
472 constexpr int kOutputRate = 22000; 476 constexpr int kOutputRate = 22000;
473 const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter( 477 const auto mixer =
474 std::unique_ptr<OutputRateCalculator>( 478 AudioMixerImpl::Create(std::unique_ptr<OutputRateCalculator>(
475 new CustomRateCalculator(kOutputRate)), 479 new CustomRateCalculator(kOutputRate)),
476 true); 480 true);
477 MockMixerAudioSource audio_source; 481 MockMixerAudioSource audio_source;
478 mixer->AddSource(&audio_source); 482 mixer->AddSource(&audio_source);
479 ResetFrame(audio_source.fake_frame()); 483 ResetFrame(audio_source.fake_frame());
480 484
481 EXPECT_CALL(audio_source, GetAudioFrameWithInfo(kOutputRate, _)) 485 EXPECT_CALL(audio_source, GetAudioFrameWithInfo(kOutputRate, _))
482 .Times(Exactly(1)); 486 .Times(Exactly(1));
483 487
484 mixer->Mix(1, &frame_for_mixing); 488 mixer->Mix(1, &frame_for_mixing);
485 } 489 }
486 490
487 TEST(AudioMixer, ZeroSourceRateShouldBeDecidedByRateCalculator) { 491 TEST(AudioMixer, ZeroSourceRateShouldBeDecidedByRateCalculator) {
488 constexpr int kOutputRate = 8000; 492 constexpr int kOutputRate = 8000;
489 const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter( 493 const auto mixer =
490 std::unique_ptr<OutputRateCalculator>( 494 AudioMixerImpl::Create(std::unique_ptr<OutputRateCalculator>(
491 new CustomRateCalculator(kOutputRate)), 495 new CustomRateCalculator(kOutputRate)),
492 true); 496 true);
493 497
494 mixer->Mix(1, &frame_for_mixing); 498 mixer->Mix(1, &frame_for_mixing);
495 499
496 EXPECT_EQ(kOutputRate, frame_for_mixing.sample_rate_hz_); 500 EXPECT_EQ(kOutputRate, frame_for_mixing.sample_rate_hz_);
497 } 501 }
498 502
499 TEST(AudioMixer, NoLimiterBasicApiCalls) { 503 TEST(AudioMixer, NoLimiterBasicApiCalls) {
500 const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter( 504 const auto mixer = AudioMixerImpl::Create(
501 std::unique_ptr<OutputRateCalculator>(new DefaultOutputRateCalculator()), 505 std::unique_ptr<OutputRateCalculator>(new DefaultOutputRateCalculator()),
502 false); 506 false);
503 mixer->Mix(1, &frame_for_mixing); 507 mixer->Mix(1, &frame_for_mixing);
504 } 508 }
505 509
506 TEST(AudioMixer, AnyRateIsPossibleWithNoLimiter) { 510 TEST(AudioMixer, AnyRateIsPossibleWithNoLimiter) {
507 // No APM limiter means no AudioProcessing::NativeRate restriction 511 // No APM limiter means no AudioProcessing::NativeRate restriction
508 // on mixing rate. The rate has to be divisible by 100 since we use 512 // on mixing rate. The rate has to be divisible by 100 since we use
509 // 10 ms frames, though. 513 // 10 ms frames, though.
510 for (const auto rate : {8000, 20000, 24000, 32000, 44100}) { 514 for (const auto rate : {8000, 20000, 24000, 32000, 44100}) {
511 for (const size_t number_of_channels : {1, 2}) { 515 for (const size_t number_of_channels : {1, 2}) {
512 for (const auto number_of_sources : {0, 1, 2, 3, 4}) { 516 for (const auto number_of_sources : {0, 1, 2, 3, 4}) {
513 SCOPED_TRACE( 517 SCOPED_TRACE(
514 ProduceDebugText(rate, number_of_sources, number_of_sources)); 518 ProduceDebugText(rate, number_of_sources, number_of_sources));
515 const auto mixer = 519 const auto mixer =
516 AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter( 520 AudioMixerImpl::Create(std::unique_ptr<OutputRateCalculator>(
517 std::unique_ptr<OutputRateCalculator>( 521 new CustomRateCalculator(rate)),
518 new CustomRateCalculator(rate)), 522 false);
519 false);
520 523
521 std::vector<MockMixerAudioSource> sources(number_of_sources); 524 std::vector<MockMixerAudioSource> sources(number_of_sources);
522 for (auto& source : sources) { 525 for (auto& source : sources) {
523 mixer->AddSource(&source); 526 mixer->AddSource(&source);
524 } 527 }
525 528
526 mixer->Mix(number_of_channels, &frame_for_mixing); 529 mixer->Mix(number_of_channels, &frame_for_mixing);
527 EXPECT_EQ(rate, frame_for_mixing.sample_rate_hz_); 530 EXPECT_EQ(rate, frame_for_mixing.sample_rate_hz_);
528 EXPECT_EQ(number_of_channels, frame_for_mixing.num_channels_); 531 EXPECT_EQ(number_of_channels, frame_for_mixing.num_channels_);
529 } 532 }
530 } 533 }
531 } 534 }
532 } 535 }
533 } // namespace webrtc 536 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_mixer/audio_mixer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698