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

Unified Diff: webrtc/modules/audio_mixer/test/audio_mixer_unittest.cc

Issue 2402283003: Cleanup of the mixer interface. (Closed)
Patch Set: Blank line Created 4 years, 2 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
« no previous file with comments | « webrtc/modules/audio_mixer/audio_mixer_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_mixer/test/audio_mixer_unittest.cc
diff --git a/webrtc/modules/audio_mixer/test/audio_mixer_unittest.cc b/webrtc/modules/audio_mixer/test/audio_mixer_unittest.cc
index 4bf706bfe20bdc897768b7810b5e981c91877b07..2226fe9c180379e905d24b3ce764a32bee8a4de4 100644
--- a/webrtc/modules/audio_mixer/test/audio_mixer_unittest.cc
+++ b/webrtc/modules/audio_mixer/test/audio_mixer_unittest.cc
@@ -52,13 +52,12 @@ class MockMixerAudioSource : public AudioMixer::Source {
public:
MockMixerAudioSource()
: fake_audio_frame_info_(AudioMixer::Source::AudioFrameInfo::kNormal) {
- ON_CALL(*this, GetAudioFrameWithInfo(_, _))
+ ON_CALL(*this, GetAudioFrameWithInfo(_))
.WillByDefault(
Invoke(this, &MockMixerAudioSource::FakeAudioFrameWithInfo));
}
- MOCK_METHOD2(GetAudioFrameWithInfo,
- AudioFrameWithInfo(const int32_t id, int sample_rate_hz));
+ MOCK_METHOD1(GetAudioFrameWithInfo, AudioFrameWithInfo(int sample_rate_hz));
AudioFrame* fake_frame() { return &fake_frame_; }
AudioFrameInfo fake_info() { return fake_audio_frame_info_; }
@@ -69,8 +68,7 @@ class MockMixerAudioSource : public AudioMixer::Source {
private:
AudioFrame fake_frame_, fake_output_frame_;
AudioFrameInfo fake_audio_frame_info_;
- AudioFrameWithInfo FakeAudioFrameWithInfo(const int32_t id,
- int sample_rate_hz) {
+ AudioFrameWithInfo FakeAudioFrameWithInfo(int sample_rate_hz) {
fake_output_frame_.CopyFrom(fake_frame_);
return {
&fake_output_frame_, // audio_frame_pointer
@@ -89,7 +87,7 @@ void MixAndCompare(
RTC_DCHECK(frames.size() == frame_info.size());
RTC_DCHECK(frame_info.size() == expected_status.size());
- const std::unique_ptr<AudioMixerImpl> mixer(AudioMixerImpl::Create(kId));
+ const std::unique_ptr<AudioMixerImpl> mixer(AudioMixerImpl::Create());
std::vector<MockMixerAudioSource> participants(num_audio_sources);
for (int i = 0; i < num_audio_sources; i++) {
@@ -99,7 +97,7 @@ void MixAndCompare(
for (int i = 0; i < num_audio_sources; i++) {
EXPECT_EQ(0, mixer->SetMixabilityStatus(&participants[i], true));
- EXPECT_CALL(participants[i], GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
+ EXPECT_CALL(participants[i], GetAudioFrameWithInfo(kDefaultSampleRateHz))
.Times(Exactly(1));
}
@@ -112,62 +110,11 @@ void MixAndCompare(
}
}
-TEST(AudioMixer, AnonymousAndNamed) {
- // Should not matter even if partipants are more than
- // kMaximumAmountOfMixedAudioSources.
- constexpr int kNamed = AudioMixer::kMaximumAmountOfMixedAudioSources + 1;
- constexpr int kAnonymous = AudioMixer::kMaximumAmountOfMixedAudioSources + 1;
-
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
-
- MockMixerAudioSource named[kNamed];
- MockMixerAudioSource anonymous[kAnonymous];
-
- for (int i = 0; i < kNamed; ++i) {
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&named[i], true));
- EXPECT_TRUE(mixer->MixabilityStatus(named[i]));
- }
-
- for (int i = 0; i < kAnonymous; ++i) {
- // AudioSource must be registered before turning it into anonymous.
- EXPECT_EQ(-1, mixer->SetAnonymousMixabilityStatus(&anonymous[i], true));
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&anonymous[i], true));
- EXPECT_TRUE(mixer->MixabilityStatus(anonymous[i]));
- EXPECT_FALSE(mixer->AnonymousMixabilityStatus(anonymous[i]));
-
- EXPECT_EQ(0, mixer->SetAnonymousMixabilityStatus(&anonymous[i], true));
- EXPECT_TRUE(mixer->AnonymousMixabilityStatus(anonymous[i]));
-
- // Anonymous participants do not show status by MixabilityStatus.
- EXPECT_FALSE(mixer->MixabilityStatus(anonymous[i]));
- }
-
- for (int i = 0; i < kNamed; ++i) {
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&named[i], false));
- EXPECT_FALSE(mixer->MixabilityStatus(named[i]));
- }
-
- for (int i = 0; i < kAnonymous - 1; i++) {
- EXPECT_EQ(0, mixer->SetAnonymousMixabilityStatus(&anonymous[i], false));
- EXPECT_FALSE(mixer->AnonymousMixabilityStatus(anonymous[i]));
-
- // SetAnonymousMixabilityStatus(anonymous, false) moves anonymous to the
- // named group.
- EXPECT_TRUE(mixer->MixabilityStatus(anonymous[i]));
- }
-
- // SetMixabilityStatus(anonymous, false) will remove anonymous from both
- // anonymous and named groups.
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&anonymous[kAnonymous - 1], false));
- EXPECT_FALSE(mixer->AnonymousMixabilityStatus(anonymous[kAnonymous - 1]));
- EXPECT_FALSE(mixer->MixabilityStatus(anonymous[kAnonymous - 1]));
-}
-
TEST(AudioMixer, LargestEnergyVadActiveMixed) {
constexpr int kAudioSources =
AudioMixer::kMaximumAmountOfMixedAudioSources + 3;
- const std::unique_ptr<AudioMixerImpl> mixer(AudioMixerImpl::Create(kId));
+ const std::unique_ptr<AudioMixerImpl> mixer(AudioMixerImpl::Create());
MockMixerAudioSource participants[kAudioSources];
@@ -179,7 +126,7 @@ TEST(AudioMixer, LargestEnergyVadActiveMixed) {
participants[i].fake_frame()->data_[80] = i;
EXPECT_EQ(0, mixer->SetMixabilityStatus(&participants[i], true));
- EXPECT_CALL(participants[i], GetAudioFrameWithInfo(_, _)).Times(Exactly(1));
+ EXPECT_CALL(participants[i], GetAudioFrameWithInfo(_)).Times(Exactly(1));
}
// Last participant gives audio frame with passive VAD, although it has the
@@ -207,7 +154,7 @@ TEST(AudioMixer, LargestEnergyVadActiveMixed) {
}
TEST(AudioMixer, FrameNotModifiedForSingleParticipant) {
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
+ const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create());
MockMixerAudioSource participant;
@@ -220,36 +167,7 @@ TEST(AudioMixer, FrameNotModifiedForSingleParticipant) {
}
EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true));
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, _)).Times(Exactly(2));
-
- AudioFrame audio_frame;
- // Two mix iteration to compare after the ramp-up step.
- for (int i = 0; i < 2; i++) {
- mixer->Mix(kDefaultSampleRateHz,
- 1, // number of channels
- &audio_frame);
- }
-
- EXPECT_EQ(
- 0, memcmp(participant.fake_frame()->data_, audio_frame.data_, n_samples));
-}
-
-TEST(AudioMixer, FrameNotModifiedForSingleAnonymousParticipant) {
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
-
- MockMixerAudioSource participant;
-
- ResetFrame(participant.fake_frame());
- const int n_samples = participant.fake_frame()->samples_per_channel_;
-
- // Modify the frame so that it's not zero.
- for (int j = 0; j < n_samples; j++) {
- participant.fake_frame()->data_[j] = j;
- }
-
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true));
- EXPECT_EQ(0, mixer->SetAnonymousMixabilityStatus(&participant, true));
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, _)).Times(Exactly(2));
+ EXPECT_CALL(participant, GetAudioFrameWithInfo(_)).Times(Exactly(2));
AudioFrame audio_frame;
// Two mix iteration to compare after the ramp-up step.
@@ -264,14 +182,14 @@ TEST(AudioMixer, FrameNotModifiedForSingleAnonymousParticipant) {
}
TEST(AudioMixer, ParticipantSampleRate) {
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
+ const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create());
MockMixerAudioSource participant;
ResetFrame(participant.fake_frame());
EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true));
for (auto frequency : {8000, 16000, 32000, 48000}) {
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, frequency))
+ EXPECT_CALL(participant, GetAudioFrameWithInfo(frequency))
.Times(Exactly(1));
participant.fake_frame()->sample_rate_hz_ = frequency;
participant.fake_frame()->samples_per_channel_ = frequency / 100;
@@ -281,77 +199,27 @@ TEST(AudioMixer, ParticipantSampleRate) {
}
TEST(AudioMixer, ParticipantNumberOfChannels) {
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
+ const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create());
MockMixerAudioSource participant;
ResetFrame(participant.fake_frame());
EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true));
for (size_t number_of_channels : {1, 2}) {
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
+ EXPECT_CALL(participant, GetAudioFrameWithInfo(kDefaultSampleRateHz))
.Times(Exactly(1));
mixer->Mix(kDefaultSampleRateHz, number_of_channels, &frame_for_mixing);
EXPECT_EQ(number_of_channels, frame_for_mixing.num_channels_);
}
}
-// Test that the volume is reported as zero when the mixer input
-// comprises only zero values.
-TEST(AudioMixer, LevelIsZeroWhenMixingZeroes) {
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
-
- MockMixerAudioSource participant;
- ResetFrame(participant.fake_frame());
-
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true));
- for (int i = 0; i < 11; i++) {
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
- .Times(Exactly(1));
- mixer->Mix(kDefaultSampleRateHz, 1, &frame_for_mixing);
- }
-
- EXPECT_EQ(0, mixer->GetOutputAudioLevel());
- EXPECT_EQ(0, mixer->GetOutputAudioLevelFullRange());
-}
-
-// Test that the reported volume is maximal when the mixer
-// input comprises frames with maximal values.
-TEST(AudioMixer, LevelIsMaximalWhenMixingMaximalValues) {
- const std::unique_ptr<AudioMixer> mixer(AudioMixer::Create(kId));
-
- MockMixerAudioSource participant;
- ResetFrame(participant.fake_frame());
-
- // Fill participant frame data with maximal sound.
- std::fill(participant.fake_frame()->data_,
- participant.fake_frame()->data_ + kDefaultSampleRateHz / 100,
- std::numeric_limits<int16_t>::max());
-
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&participant, true));
-
- // We do >10 iterations, because the audio level indicator only
- // updates once every 10 calls.
- for (int i = 0; i < 11; i++) {
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
- .Times(Exactly(1));
- mixer->Mix(kDefaultSampleRateHz, 1, &frame_for_mixing);
- }
-
- // 9 is the highest possible audio level
- EXPECT_EQ(9, mixer->GetOutputAudioLevel());
-
- // 0x7fff = 32767 is the highest full range audio level.
- EXPECT_EQ(std::numeric_limits<int16_t>::max(),
- mixer->GetOutputAudioLevelFullRange());
-}
-
// Maximal amount of participants are mixed one iteration, then
// another participant with higher energy is added.
TEST(AudioMixer, RampedOutSourcesShouldNotBeMarkedMixed) {
constexpr int kAudioSources =
AudioMixer::kMaximumAmountOfMixedAudioSources + 1;
- const std::unique_ptr<AudioMixerImpl> mixer(AudioMixerImpl::Create(kId));
+ const std::unique_ptr<AudioMixerImpl> mixer(AudioMixerImpl::Create());
MockMixerAudioSource participants[kAudioSources];
for (int i = 0; i < kAudioSources; i++) {
@@ -364,7 +232,7 @@ TEST(AudioMixer, RampedOutSourcesShouldNotBeMarkedMixed) {
// Add all participants but the loudest for mixing.
for (int i = 0; i < kAudioSources - 1; i++) {
EXPECT_EQ(0, mixer->SetMixabilityStatus(&participants[i], true));
- EXPECT_CALL(participants[i], GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
+ EXPECT_CALL(participants[i], GetAudioFrameWithInfo(kDefaultSampleRateHz))
.Times(Exactly(1));
}
@@ -381,7 +249,7 @@ TEST(AudioMixer, RampedOutSourcesShouldNotBeMarkedMixed) {
EXPECT_EQ(0,
mixer->SetMixabilityStatus(&participants[kAudioSources - 1], true));
for (int i = 0; i < kAudioSources; i++) {
- EXPECT_CALL(participants[i], GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
+ EXPECT_CALL(participants[i], GetAudioFrameWithInfo(kDefaultSampleRateHz))
.Times(Exactly(1));
}
@@ -407,7 +275,7 @@ TEST(AudioMixer, ConstructFromOtherThread) {
init_thread->Start();
std::unique_ptr<AudioMixer> mixer(
init_thread->Invoke<std::unique_ptr<AudioMixer>>(
- RTC_FROM_HERE, std::bind(&AudioMixer::Create, kId)));
+ RTC_FROM_HERE, &AudioMixer::Create));
MockMixerAudioSource participant;
ResetFrame(participant.fake_frame());
@@ -417,12 +285,7 @@ TEST(AudioMixer, ConstructFromOtherThread) {
RTC_FROM_HERE, rtc::Bind(&AudioMixer::SetMixabilityStatus,
mixer.get(), &participant, true)));
- EXPECT_EQ(
- 0, participant_thread->Invoke<int>(
- RTC_FROM_HERE, rtc::Bind(&AudioMixer::SetAnonymousMixabilityStatus,
- mixer.get(), &participant, true)));
-
- EXPECT_CALL(participant, GetAudioFrameWithInfo(_, kDefaultSampleRateHz))
+ EXPECT_CALL(participant, GetAudioFrameWithInfo(kDefaultSampleRateHz))
.Times(Exactly(1));
// Do one mixer iteration
« 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