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..5bb2f8e39d984679930a7e451da21e75a36d286e 100644 |
--- a/media/audio/audio_output_stream_sink.cc |
+++ b/media/audio/audio_output_stream_sink.cc |
@@ -4,12 +4,14 @@ |
#include "media/audio/audio_output_stream_sink.h" |
+#include <algorithm> |
#include <cmath> |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
#include "base/location.h" |
#include "media/audio/audio_manager.h" |
+#include "media/base/audio_timestamp_helper.h" |
namespace media { |
@@ -82,18 +84,20 @@ bool AudioOutputStreamSink::CurrentThreadIsRenderingThread() { |
return false; |
} |
-int AudioOutputStreamSink::OnMoreData(AudioBus* dest, |
- uint32_t total_bytes_delay, |
- uint32_t frames_skipped) { |
+int AudioOutputStreamSink::OnMoreData(base::TimeDelta delay, |
+ base::TimeTicks /* delay_timestamp */, |
+ 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()); |
+ uint32_t frames_delayed = |
+ AudioTimestampHelper::TimeToFrames(delay, 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 +158,4 @@ void AudioOutputStreamSink::ClearCallback() { |
active_render_callback_ = NULL; |
} |
-} // namepace media |
+} // namespace media |