| Index: webrtc/modules/audio_mixer/audio_mixer_impl.h
|
| diff --git a/webrtc/modules/audio_mixer/audio_mixer_impl.h b/webrtc/modules/audio_mixer/audio_mixer_impl.h
|
| index 500bb7862e5defe2b9fd906c057c6cf60fec3087..df14b3b469e31b4049806cd540b72cc87662bb9f 100644
|
| --- a/webrtc/modules/audio_mixer/audio_mixer_impl.h
|
| +++ b/webrtc/modules/audio_mixer/audio_mixer_impl.h
|
| @@ -29,15 +29,22 @@ typedef std::vector<AudioFrame*> AudioFrameList;
|
|
|
| class AudioMixerImpl : public AudioMixer {
|
| public:
|
| - struct SourceStatus {
|
| - SourceStatus(Source* audio_source, bool is_mixed, float gain)
|
| - : audio_source(audio_source), is_mixed(is_mixed), gain(gain) {}
|
| + struct SourceStatusWithFrame {
|
| + SourceStatusWithFrame(Source* audio_source, bool is_mixed, float gain)
|
| + : audio_source(audio_source),
|
| + is_mixed(is_mixed),
|
| + gain(gain),
|
| + audio_frame() {}
|
| Source* audio_source = nullptr;
|
| bool is_mixed = false;
|
| float gain = 0.0f;
|
| +
|
| + // A frame that will be passed to audio_source->GetAudioFrameWithInfo.
|
| + AudioFrame audio_frame{};
|
| };
|
|
|
| - typedef std::vector<SourceStatus> SourceStatusList;
|
| + typedef std::vector<std::unique_ptr<SourceStatusWithFrame>>
|
| + SourceStatusWithFrameList;
|
|
|
| // AudioProcessing only accepts 10 ms frames.
|
| static const int kFrameDurationInMs = 10;
|
| @@ -77,9 +84,10 @@ class AudioMixerImpl : public AudioMixer {
|
| // Add/remove the MixerAudioSource to the specified
|
| // MixerAudioSource list.
|
| bool AddAudioSourceToList(Source* audio_source,
|
| - SourceStatusList* audio_source_list) const;
|
| - bool RemoveAudioSourceFromList(Source* remove_audio_source,
|
| - SourceStatusList* audio_source_list) const;
|
| + SourceStatusWithFrameList* audio_source_list) const;
|
| + bool RemoveAudioSourceFromList(
|
| + Source* remove_audio_source,
|
| + SourceStatusWithFrameList* audio_source_list) const;
|
|
|
| bool LimitMixedAudio(AudioFrame* mixed_audio) const;
|
|
|
| @@ -91,7 +99,8 @@ class AudioMixerImpl : public AudioMixer {
|
| size_t sample_size_ ACCESS_ON(&thread_checker_);
|
|
|
| // List of all audio sources. Note all lists are disjunct
|
| - SourceStatusList audio_source_list_ GUARDED_BY(crit_); // May be mixed.
|
| + SourceStatusWithFrameList audio_source_list_
|
| + GUARDED_BY(crit_); // May be mixed.
|
|
|
| // Determines if we will use a limiter for clipping protection during
|
| // mixing.
|
|
|