| Index: content/renderer/media/media_stream_audio_processor.cc
|
| diff --git a/content/renderer/media/media_stream_audio_processor.cc b/content/renderer/media/media_stream_audio_processor.cc
|
| index 460ab8baf4e653d6418f99735d229ab97cddd6b6..2c0fcc30cbbed212dc7be58c79066c02c235ba04 100644
|
| --- a/content/renderer/media/media_stream_audio_processor.cc
|
| +++ b/content/renderer/media/media_stream_audio_processor.cc
|
| @@ -64,13 +64,19 @@ class MediaStreamAudioProcessor::MediaStreamAudioConverter
|
| // |MediaStreamAudioProcessor::capture_converter_|.
|
| thread_checker_.DetachFromThread();
|
| audio_converter_.AddInput(this);
|
| +
|
| // Create and initialize audio fifo and audio bus wrapper.
|
| // The size of the FIFO should be at least twice of the source buffer size
|
| - // or twice of the sink buffer size.
|
| + // or twice of the sink buffer size. Also, FIFO needs to have enough space
|
| + // to store pre-processed data before passing the data to
|
| + // webrtc::AudioProcessing, which requires 10ms as packet size.
|
| + int max_frame_size = std::max(source_params_.frames_per_buffer(),
|
| + sink_params_.frames_per_buffer());
|
| int buffer_size = std::max(
|
| - kMaxNumberOfBuffersInFifo * source_params_.frames_per_buffer(),
|
| - kMaxNumberOfBuffersInFifo * sink_params_.frames_per_buffer());
|
| + kMaxNumberOfBuffersInFifo * max_frame_size,
|
| + kMaxNumberOfBuffersInFifo * source_params_.sample_rate() / 100);
|
| fifo_.reset(new media::AudioFifo(source_params_.channels(), buffer_size));
|
| +
|
| // TODO(xians): Use CreateWrapper to save one memcpy.
|
| audio_wrapper_ = media::AudioBus::Create(sink_params_.channels(),
|
| sink_params_.frames_per_buffer());
|
|
|