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

Unified Diff: webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc

Issue 2692333002: Optionally disable APM limiter in AudioMixer. (Closed)
Patch Set: Mini-change: participant -> source and for each loop. 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc
diff --git a/webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc b/webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc
index e90dac1e70e9839f032da4db4f91b8eb0d002686..0234df5cc45cb39a3d37f1f48f62411239d28108 100644
--- a/webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc
+++ b/webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc
@@ -16,6 +16,7 @@
#include "webrtc/api/audio/audio_mixer.h"
#include "webrtc/base/bind.h"
+#include "webrtc/base/checks.h"
#include "webrtc/base/thread.h"
#include "webrtc/modules/audio_mixer/audio_mixer_impl.h"
#include "webrtc/modules/audio_mixer/default_output_rate_calculator.h"
@@ -78,7 +79,8 @@ class MockMixerAudioSource : public AudioMixer::Source {
AudioFrame* audio_frame) {
audio_frame->CopyFrom(fake_frame_);
audio_frame->sample_rate_hz_ = sample_rate_hz;
- audio_frame->samples_per_channel_ = sample_rate_hz / 100;
+ audio_frame->samples_per_channel_ =
+ rtc::CheckedDivExact(sample_rate_hz, 100);
return fake_info();
}
@@ -456,9 +458,10 @@ TEST(AudioMixer, UnmutedShouldMixBeforeLoud) {
TEST(AudioMixer, MixingRateShouldBeDecidedByRateCalculator) {
constexpr int kOutputRate = 22000;
- const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculator(
+ const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter(
std::unique_ptr<OutputRateCalculator>(
- new CustomRateCalculator(kOutputRate)));
+ new CustomRateCalculator(kOutputRate)),
+ true);
MockMixerAudioSource audio_source;
mixer->AddSource(&audio_source);
ResetFrame(audio_source.fake_frame());
@@ -471,12 +474,46 @@ TEST(AudioMixer, MixingRateShouldBeDecidedByRateCalculator) {
TEST(AudioMixer, ZeroSourceRateShouldBeDecidedByRateCalculator) {
constexpr int kOutputRate = 8000;
- const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculator(
+ const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter(
std::unique_ptr<OutputRateCalculator>(
- new CustomRateCalculator(kOutputRate)));
+ new CustomRateCalculator(kOutputRate)),
+ true);
mixer->Mix(1, &frame_for_mixing);
EXPECT_EQ(kOutputRate, frame_for_mixing.sample_rate_hz_);
}
+
+TEST(AudioMixer, NoLimiterBasicApiCalls) {
+ const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter(
+ std::unique_ptr<OutputRateCalculator>(new DefaultOutputRateCalculator()),
+ false);
+ mixer->Mix(1, &frame_for_mixing);
+}
+
+TEST(AudioMixer, AnyRateIsPossibleWithNoLimiter) {
+ // No APM limiter means no AudioProcessing::NativeRate restriction
+ // on mixing rate. The rate has to be divisible by 100 since we use
+ // 10 ms frames, though.
+ for (const auto rate : {8000, 20000, 24000, 32000, 44100}) {
+ for (const size_t number_of_channels : {1, 2}) {
+ for (const auto number_of_sources : {0, 1, 2, 3, 4}) {
+ const auto mixer =
hlundin-webrtc 2017/02/17 11:04:12 Please, use a SCOPED_TRACE to annotate which lap i
aleloi 2017/02/20 10:41:33 Done.
+ AudioMixerImpl::CreateWithOutputRateCalculatorAndLimiter(
+ std::unique_ptr<OutputRateCalculator>(
+ new CustomRateCalculator(rate)),
+ false);
+
+ std::vector<MockMixerAudioSource> sources(number_of_sources);
+ for (auto& source : sources) {
+ mixer->AddSource(&source);
+ }
+
+ mixer->Mix(number_of_channels, &frame_for_mixing);
+ EXPECT_EQ(rate, frame_for_mixing.sample_rate_hz_);
+ EXPECT_EQ(number_of_channels, frame_for_mixing.num_channels_);
+ }
+ }
+ }
+}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698