#include "modules/audio_mixer/audio_mixer_impl.h"
#include <stdint.h>
#include <algorithm>
#include <iterator>
#include <type_traits>
#include <utility>
#include "modules/audio_mixer/audio_frame_manipulator.h"
#include "modules/audio_mixer/default_output_rate_calculator.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/trace_event.h"
#include "system_wrappers/include/metrics.h"
namespace webrtc {
struct AudioMixerImpl::SourceStatus { … };
namespace {
std::vector<std::unique_ptr<AudioMixerImpl::SourceStatus>>::const_iterator
FindSourceInList(
AudioMixerImpl::Source const* audio_source,
std::vector<std::unique_ptr<AudioMixerImpl::SourceStatus>> const*
audio_source_list) { … }
}
struct AudioMixerImpl::HelperContainers { … };
AudioMixerImpl::AudioMixerImpl(
std::unique_ptr<OutputRateCalculator> output_rate_calculator,
bool use_limiter)
: … { … }
AudioMixerImpl::~AudioMixerImpl() { … }
rtc::scoped_refptr<AudioMixerImpl> AudioMixerImpl::Create() { … }
rtc::scoped_refptr<AudioMixerImpl> AudioMixerImpl::Create(
std::unique_ptr<OutputRateCalculator> output_rate_calculator,
bool use_limiter) { … }
void AudioMixerImpl::Mix(size_t number_of_channels,
AudioFrame* audio_frame_for_mixing) { … }
bool AudioMixerImpl::AddSource(Source* audio_source) { … }
void AudioMixerImpl::RemoveSource(Source* audio_source) { … }
rtc::ArrayView<AudioFrame* const> AudioMixerImpl::GetAudioFromSources(
int output_frequency) { … }
void AudioMixerImpl::UpdateSourceCountStats() { … }
}