diff options
Diffstat (limited to 'modules/audio_mixer/audio_mixer_impl.cc')
-rw-r--r-- | modules/audio_mixer/audio_mixer_impl.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/modules/audio_mixer/audio_mixer_impl.cc b/modules/audio_mixer/audio_mixer_impl.cc index 04a8bcf723..8cebc38779 100644 --- a/modules/audio_mixer/audio_mixer_impl.cc +++ b/modules/audio_mixer/audio_mixer_impl.cc @@ -126,30 +126,33 @@ struct AudioMixerImpl::HelperContainers { AudioMixerImpl::AudioMixerImpl( std::unique_ptr<OutputRateCalculator> output_rate_calculator, - bool use_limiter) - : output_rate_calculator_(std::move(output_rate_calculator)), + bool use_limiter, + int max_sources_to_mix) + : max_sources_to_mix_(max_sources_to_mix), + output_rate_calculator_(std::move(output_rate_calculator)), audio_source_list_(), helper_containers_(std::make_unique<HelperContainers>()), frame_combiner_(use_limiter) { - const int kTypicalMaxNumberOfMixedStreams = 3; - audio_source_list_.reserve(kTypicalMaxNumberOfMixedStreams); - helper_containers_->resize(kTypicalMaxNumberOfMixedStreams); + RTC_CHECK_GE(max_sources_to_mix, 1) << "At least one source must be mixed"; + audio_source_list_.reserve(max_sources_to_mix); + helper_containers_->resize(max_sources_to_mix); } AudioMixerImpl::~AudioMixerImpl() {} -rtc::scoped_refptr<AudioMixerImpl> AudioMixerImpl::Create() { +rtc::scoped_refptr<AudioMixerImpl> AudioMixerImpl::Create( + int max_sources_to_mix) { return Create(std::unique_ptr<DefaultOutputRateCalculator>( new DefaultOutputRateCalculator()), - true); + /*use_limiter=*/true, max_sources_to_mix); } rtc::scoped_refptr<AudioMixerImpl> AudioMixerImpl::Create( std::unique_ptr<OutputRateCalculator> output_rate_calculator, - bool use_limiter) { - return rtc::scoped_refptr<AudioMixerImpl>( - new rtc::RefCountedObject<AudioMixerImpl>( - std::move(output_rate_calculator), use_limiter)); + bool use_limiter, + int max_sources_to_mix) { + return rtc::make_ref_counted<AudioMixerImpl>( + std::move(output_rate_calculator), use_limiter, max_sources_to_mix); } void AudioMixerImpl::Mix(size_t number_of_channels, @@ -219,7 +222,7 @@ rtc::ArrayView<AudioFrame* const> AudioMixerImpl::GetAudioFromSources( std::sort(audio_source_mixing_data_view.begin(), audio_source_mixing_data_view.end(), ShouldMixBefore); - int max_audio_frame_counter = kMaximumAmountOfMixedAudioSources; + int max_audio_frame_counter = max_sources_to_mix_; int ramp_list_lengh = 0; int audio_to_mix_count = 0; // Go through list in order and put unmuted frames in result list. |