| 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. | 
|  |