| Index: media/audio/pulse/pulse_output.cc
|
| diff --git a/media/audio/pulse/pulse_output.cc b/media/audio/pulse/pulse_output.cc
|
| index 3aef9476720106208a92be3cab41ee5e4df0a81b..3c9f7f981dc9c5ddf8264cb9cbe1c9998c491604 100644
|
| --- a/media/audio/pulse/pulse_output.cc
|
| +++ b/media/audio/pulse/pulse_output.cc
|
| @@ -8,6 +8,7 @@
|
| #include <stdint.h>
|
|
|
| #include "base/single_thread_task_runner.h"
|
| +#include "base/time/time.h"
|
| #include "media/audio/audio_device_description.h"
|
| #include "media/audio/audio_manager_base.h"
|
| #include "media/audio/pulse/pulse_util.h"
|
| @@ -132,10 +133,12 @@ void PulseAudioOutputStream::FulfillWriteRequest(size_t requested_bytes) {
|
|
|
| int frames_filled = 0;
|
| if (source_callback_) {
|
| - const uint32_t hardware_delay = pulse::GetHardwareLatencyInBytes(
|
| - pa_stream_, params_.sample_rate(), params_.GetBytesPerFrame());
|
| - frames_filled =
|
| - source_callback_->OnMoreData(audio_bus_.get(), hardware_delay, 0);
|
| + const base::TimeDelta hardware_delay =
|
| + pulse::GetHardwareLatency(pa_stream_);
|
| + const base::TimeTicks target_playout_time =
|
| + base::TimeTicks::Now() + hardware_delay;
|
| + frames_filled = source_callback_->OnMoreData(target_playout_time, 0,
|
| + audio_bus_.get());
|
|
|
| // Zero any unfilled data so it plays back as silence.
|
| if (frames_filled < audio_bus_->frames()) {
|
|
|