| 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 517d9e5219cc2dbfa51e6a884972251115c6a116..e90dac1e70e9839f032da4db4f91b8eb0d002686 100644
|
| --- a/webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc
|
| +++ b/webrtc/modules/audio_mixer/audio_mixer_impl_unittest.cc
|
| @@ -18,6 +18,7 @@
|
| #include "webrtc/base/bind.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"
|
| #include "webrtc/test/gmock.h"
|
|
|
| using testing::_;
|
| @@ -85,6 +86,17 @@ class MockMixerAudioSource : public AudioMixer::Source {
|
| AudioFrameInfo fake_audio_frame_info_;
|
| };
|
|
|
| +class CustomRateCalculator : public OutputRateCalculator {
|
| + public:
|
| + explicit CustomRateCalculator(int rate) : rate_(rate) {}
|
| + int CalculateOutputRate(const std::vector<int>& preferred_rates) {
|
| + return rate_;
|
| + }
|
| +
|
| + private:
|
| + const int rate_;
|
| +};
|
| +
|
| // Creates participants from |frames| and |frame_info| and adds them
|
| // to the mixer. Compares mixed status with |expected_status|
|
| void MixAndCompare(
|
| @@ -441,4 +453,30 @@ TEST(AudioMixer, UnmutedShouldMixBeforeLoud) {
|
|
|
| MixAndCompare(frames, frame_info, expected_status);
|
| }
|
| +
|
| +TEST(AudioMixer, MixingRateShouldBeDecidedByRateCalculator) {
|
| + constexpr int kOutputRate = 22000;
|
| + const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculator(
|
| + std::unique_ptr<OutputRateCalculator>(
|
| + new CustomRateCalculator(kOutputRate)));
|
| + MockMixerAudioSource audio_source;
|
| + mixer->AddSource(&audio_source);
|
| + ResetFrame(audio_source.fake_frame());
|
| +
|
| + EXPECT_CALL(audio_source, GetAudioFrameWithInfo(kOutputRate, _))
|
| + .Times(Exactly(1));
|
| +
|
| + mixer->Mix(1, &frame_for_mixing);
|
| +}
|
| +
|
| +TEST(AudioMixer, ZeroSourceRateShouldBeDecidedByRateCalculator) {
|
| + constexpr int kOutputRate = 8000;
|
| + const auto mixer = AudioMixerImpl::CreateWithOutputRateCalculator(
|
| + std::unique_ptr<OutputRateCalculator>(
|
| + new CustomRateCalculator(kOutputRate)));
|
| +
|
| + mixer->Mix(1, &frame_for_mixing);
|
| +
|
| + EXPECT_EQ(kOutputRate, frame_for_mixing.sample_rate_hz_);
|
| +}
|
| } // namespace webrtc
|
|
|