aboutsummaryrefslogtreecommitdiff
path: root/modules/audio_mixer/audio_mixer_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/audio_mixer/audio_mixer_impl.cc')
-rw-r--r--modules/audio_mixer/audio_mixer_impl.cc27
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.