| Index: media/audio/audio_output_stream_sink.cc
|
| diff --git a/media/audio/audio_output_stream_sink.cc b/media/audio/audio_output_stream_sink.cc
|
| index b94e2d265847d33f2a93cab9dc3e8a90a7cbd140..d06c215807a7ce300db77467c5ac1a5ec871641f 100644
|
| --- a/media/audio/audio_output_stream_sink.cc
|
| +++ b/media/audio/audio_output_stream_sink.cc
|
| @@ -82,18 +82,19 @@ bool AudioOutputStreamSink::CurrentThreadIsRenderingThread() {
|
| return false;
|
| }
|
|
|
| -int AudioOutputStreamSink::OnMoreData(AudioBus* dest,
|
| - uint32_t total_bytes_delay,
|
| - uint32_t frames_skipped) {
|
| +int AudioOutputStreamSink::OnMoreData(base::TimeTicks target_playout_time,
|
| + int prior_frames_skipped,
|
| + AudioBus* dest) {
|
| // Note: Runs on the audio thread created by the OS.
|
| base::AutoLock al(callback_lock_);
|
| if (!active_render_callback_)
|
| return 0;
|
|
|
| - uint32_t frames_delayed = std::round(static_cast<double>(total_bytes_delay) /
|
| - active_params_.GetBytesPerFrame());
|
| + base::TimeDelta delay = target_playout_time - base::TimeTicks::Now();
|
| + uint32_t frames_delayed = delay.InSeconds() * active_params_.sample_rate();
|
|
|
| - return active_render_callback_->Render(dest, frames_delayed, frames_skipped);
|
| + return active_render_callback_->Render(dest, frames_delayed,
|
| + prior_frames_skipped);
|
| }
|
|
|
| void AudioOutputStreamSink::OnError(AudioOutputStream* stream) {
|
| @@ -154,4 +155,4 @@ void AudioOutputStreamSink::ClearCallback() {
|
| active_render_callback_ = NULL;
|
| }
|
|
|
| -} // namepace media
|
| +} // namespace media
|
|
|