Index: modules/audio_conference_mixer/test/audio_conference_mixer_unittest.cc |
diff --git a/modules/audio_conference_mixer/test/audio_conference_mixer_unittest.cc b/modules/audio_conference_mixer/test/audio_conference_mixer_unittest.cc |
deleted file mode 100644 |
index 6685899d3eddcf017e0d88bc579106a63daae9f4..0000000000000000000000000000000000000000 |
--- a/modules/audio_conference_mixer/test/audio_conference_mixer_unittest.cc |
+++ /dev/null |
@@ -1,166 +0,0 @@ |
-/* |
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
- * |
- * Use of this source code is governed by a BSD-style license |
- * that can be found in the LICENSE file in the root of the source |
- * tree. An additional intellectual property rights grant can be found |
- * in the file PATENTS. All contributing project authors may |
- * be found in the AUTHORS file in the root of the source tree. |
- */ |
- |
-#include <memory> |
- |
-#include "modules/audio_conference_mixer/include/audio_conference_mixer.h" |
-#include "modules/audio_conference_mixer/include/audio_conference_mixer_defines.h" |
-#include "test/gmock.h" |
- |
-namespace webrtc { |
- |
-using testing::_; |
-using testing::AtLeast; |
-using testing::Invoke; |
-using testing::Return; |
- |
-class MockAudioMixerOutputReceiver : public AudioMixerOutputReceiver { |
- public: |
- MOCK_METHOD4(NewMixedAudio, void(const int32_t id, |
- const AudioFrame& general_audio_frame, |
- const AudioFrame** unique_audio_frames, |
- const uint32_t size)); |
-}; |
- |
-class MockMixerParticipant : public MixerParticipant { |
- public: |
- MockMixerParticipant() { |
- ON_CALL(*this, GetAudioFrame(_, _)) |
- .WillByDefault(Invoke(this, &MockMixerParticipant::FakeAudioFrame)); |
- } |
- MOCK_METHOD2(GetAudioFrame, |
- int32_t(const int32_t id, AudioFrame* audio_frame)); |
- MOCK_CONST_METHOD1(NeededFrequency, int32_t(const int32_t id)); |
- AudioFrame* fake_frame() { return &fake_frame_; } |
- |
- private: |
- AudioFrame fake_frame_; |
- int32_t FakeAudioFrame(const int32_t id, AudioFrame* audio_frame) { |
- audio_frame->CopyFrom(fake_frame_); |
- return 0; |
- } |
-}; |
- |
-TEST(AudioConferenceMixer, AnonymousAndNamed) { |
- const int kId = 1; |
- // Should not matter even if partipants are more than |
- // kMaximumAmountOfMixedParticipants. |
- const int kNamed = |
- AudioConferenceMixer::kMaximumAmountOfMixedParticipants + 1; |
- const int kAnonymous = |
- AudioConferenceMixer::kMaximumAmountOfMixedParticipants + 1; |
- |
- std::unique_ptr<AudioConferenceMixer> mixer( |
- AudioConferenceMixer::Create(kId)); |
- |
- MockMixerParticipant named[kNamed]; |
- MockMixerParticipant 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) { |
- // Participant 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(AudioConferenceMixer, LargestEnergyVadActiveMixed) { |
- const int kId = 1; |
- const int kParticipants = |
- AudioConferenceMixer::kMaximumAmountOfMixedParticipants + 3; |
- const int kSampleRateHz = 32000; |
- |
- std::unique_ptr<AudioConferenceMixer> mixer( |
- AudioConferenceMixer::Create(kId)); |
- |
- MockAudioMixerOutputReceiver output_receiver; |
- EXPECT_EQ(0, mixer->RegisterMixedStreamCallback(&output_receiver)); |
- |
- MockMixerParticipant participants[kParticipants]; |
- |
- for (int i = 0; i < kParticipants; ++i) { |
- participants[i].fake_frame()->id_ = i; |
- participants[i].fake_frame()->sample_rate_hz_ = kSampleRateHz; |
- participants[i].fake_frame()->speech_type_ = AudioFrame::kNormalSpeech; |
- participants[i].fake_frame()->vad_activity_ = AudioFrame::kVadActive; |
- participants[i].fake_frame()->num_channels_ = 1; |
- |
- // Frame duration 10ms. |
- participants[i].fake_frame()->samples_per_channel_ = kSampleRateHz / 100; |
- |
- // We set the 80-th sample value since the first 80 samples may be |
- // modified by a ramped-in window. |
- participants[i].fake_frame()->mutable_data()[80] = i; |
- |
- EXPECT_EQ(0, mixer->SetMixabilityStatus(&participants[i], true)); |
- EXPECT_CALL(participants[i], GetAudioFrame(_, _)) |
- .Times(AtLeast(1)); |
- EXPECT_CALL(participants[i], NeededFrequency(_)) |
- .WillRepeatedly(Return(kSampleRateHz)); |
- } |
- |
- // Last participant gives audio frame with passive VAD, although it has the |
- // largest energy. |
- participants[kParticipants - 1].fake_frame()->vad_activity_ = |
- AudioFrame::kVadPassive; |
- |
- EXPECT_CALL(output_receiver, NewMixedAudio(_, _, _, _)) |
- .Times(AtLeast(1)); |
- |
- mixer->Process(); |
- |
- for (int i = 0; i < kParticipants; ++i) { |
- bool is_mixed = participants[i].IsMixed(); |
- if (i == kParticipants - 1 || i < kParticipants - 1 - |
- AudioConferenceMixer::kMaximumAmountOfMixedParticipants) { |
- EXPECT_FALSE(is_mixed) << "Mixing status of Participant #" |
- << i << " wrong."; |
- } else { |
- EXPECT_TRUE(is_mixed) << "Mixing status of Participant #" |
- << i << " wrong."; |
- } |
- } |
- |
- EXPECT_EQ(0, mixer->UnRegisterMixedStreamCallback()); |
-} |
- |
-} // namespace webrtc |