| Index: media/audio/win/waveout_output_win.cc
|
| diff --git a/media/audio/win/waveout_output_win.cc b/media/audio/win/waveout_output_win.cc
|
| index 3ac72ed99be54eefbd274c4d91fd5c67f8ec60cf..85bc1624e5ecd6af6145f37764599cff8056e9b0 100644
|
| --- a/media/audio/win/waveout_output_win.cc
|
| +++ b/media/audio/win/waveout_output_win.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/atomicops.h"
|
| #include "base/logging.h"
|
| +#include "base/time/time.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "media/audio/audio_io.h"
|
| #include "media/audio/win/audio_manager_win.h"
|
| @@ -322,10 +323,12 @@ void PCMWaveOutAudioOutputStream::QueueNextPacket(WAVEHDR *buffer) {
|
| // return to us how many bytes were used.
|
| // TODO(fbarchard): Handle used 0 by queueing more.
|
|
|
| - // TODO(sergeyu): Specify correct hardware delay for |total_delay_bytes|.
|
| - uint32_t total_delay_bytes = pending_bytes_;
|
| + // TODO(sergeyu): Specify correct hardware delay for |delay|.
|
| + const base::TimeDelta delay = base::TimeDelta::FromSecondsD(
|
| + static_cast<double>(pending_bytes_) / format_.Format.nAvgBytesPerSec);
|
| + const base::TimeTicks target_playout_time = base::TimeTicks::Now() + delay;
|
| int frames_filled =
|
| - callback_->OnMoreData(audio_bus_.get(), total_delay_bytes, 0);
|
| + callback_->OnMoreData(target_playout_time, 0, audio_bus_.get());
|
| uint32_t used = frames_filled * audio_bus_->channels() *
|
| format_.Format.wBitsPerSample / 8;
|
|
|
|
|