| Index: content/renderer/media/renderer_webaudiodevice_impl.cc
|
| diff --git a/content/renderer/media/renderer_webaudiodevice_impl.cc b/content/renderer/media/renderer_webaudiodevice_impl.cc
|
| index 4924cc68fc2afddce8aa90a0347f34edf74d9e89..867da2eea2b99f7a2e49ed875b405d6c7d1b787d 100644
|
| --- a/content/renderer/media/renderer_webaudiodevice_impl.cc
|
| +++ b/content/renderer/media/renderer_webaudiodevice_impl.cc
|
| @@ -110,11 +110,21 @@ int RendererWebAudioDeviceImpl::Render(base::TimeDelta delay,
|
| for (int i = 0; i < dest->channels(); ++i)
|
| web_audio_dest_data[i] = dest->channel(i);
|
|
|
| + if (!delay.is_zero()) { // Zero values are send at the first call.
|
| + // Substruct the bus duration to get hardware delay.
|
| + delay -= media::AudioTimestampHelper::FramesToTime(dest->frames(),
|
| + params_.sample_rate());
|
| + }
|
| + DCHECK_GE(delay, base::TimeDelta());
|
| +
|
| // TODO(xians): Remove the following |web_audio_source_data| after
|
| // changing the blink interface.
|
| WebVector<float*> web_audio_source_data(static_cast<size_t>(0));
|
| client_callback_->render(web_audio_source_data, web_audio_dest_data,
|
| - dest->frames());
|
| + dest->frames(), delay.InSecondsF(),
|
| + (delay_timestamp - base::TimeTicks()).InSecondsF(),
|
| + prior_frames_skipped);
|
| +
|
| return dest->frames();
|
| }
|
|
|
|
|