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 5e4c1c0569d0c01044246d82c01ab07a12b74392..e0ddd634820afcf020e07a81be78f30fdfee8b28 100644 |
--- a/content/renderer/media/media_stream_audio_processor.cc |
+++ b/content/renderer/media/media_stream_audio_processor.cc |
@@ -432,7 +432,8 @@ void MediaStreamAudioProcessor::OnIpcClosing() { |
void MediaStreamAudioProcessor::OnPlayoutData(media::AudioBus* audio_bus, |
int sample_rate, |
- int audio_delay_milliseconds) { |
+ int audio_delay_milliseconds, |
+ uint32_t skipped_frames) { |
DCHECK(render_thread_checker_.CalledOnValidThread()); |
DCHECK(audio_processing_->echo_control_mobile()->is_enabled() ^ |
audio_processing_->echo_cancellation()->is_enabled()); |
@@ -447,6 +448,18 @@ void MediaStreamAudioProcessor::OnPlayoutData(media::AudioBus* audio_bus, |
render_fifo_->Push( |
*audio_bus, base::TimeDelta::FromMilliseconds(audio_delay_milliseconds)); |
+ |
+ // Feed the APM with empty frames corresponding to |skipped_frames|. |
+ if (skipped_frames > 0) { |
+ MediaStreamAudioBus empty_bus(audio_bus->channels(), skipped_frames); |
peah
2015/12/16 10:26:57
Does this call also set all samples in the empty_b
Henrik Grunell
2015/12/18 10:17:33
I doesn't. Fixed.
|
+ audio_processing_->AnalyzeReverseStream( |
+ empty_bus.channel_ptrs(), |
+ empty_bus.bus()->frames(), |
peah
2015/12/16 10:26:57
Is there any restriction on the values of skipped_
Henrik Grunell
2015/12/18 10:17:33
No, it can be any value. OK, I added storing the n
peah
2015/12/18 13:34:12
What does this mean? Does it mean that typically a
|
+ sample_rate, |
+ ChannelsToLayout(empty_bus.bus()->channels())); |
+ } |
+ |
+ // Pull data from the fifo and feed the APM. |
MediaStreamAudioBus* analysis_bus; |
base::TimeDelta audio_delay; |
while (render_fifo_->Consume(&analysis_bus, &audio_delay)) { |
@@ -455,7 +468,7 @@ void MediaStreamAudioProcessor::OnPlayoutData(media::AudioBus* audio_bus, |
analysis_bus->channel_ptrs(), |
analysis_bus->bus()->frames(), |
sample_rate, |
- ChannelsToLayout(audio_bus->channels())); |
+ ChannelsToLayout(analysis_bus->bus()->channels())); |
} |
} |