Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Unified Diff: media/audio/audio_output_stream_sink.cc

Issue 2101303004: Pass delay and timestamp to AudioSourceCallback::OnMoreData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Changes based on comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..0a107e94bd3314325e266044619441ef9cd0ea29 100644
--- a/media/audio/audio_output_stream_sink.cc
+++ b/media/audio/audio_output_stream_sink.cc
@@ -4,6 +4,7 @@
#include "media/audio/audio_output_stream_sink.h"
+#include <algorithm>
#include <cmath>
#include "base/bind.h"
@@ -82,18 +83,20 @@ 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 =
+ std::max(target_playout_time - base::TimeTicks::Now(), base::TimeDelta());
+ uint32_t frames_delayed = delay.InSeconds() * active_params_.sample_rate();
miu 2016/08/31 23:26:54 s/InSeconds/InSecondsF/ to prevent serious loss of
James West 2016/09/13 07:40:50 Done.
- 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 +157,4 @@ void AudioOutputStreamSink::ClearCallback() {
active_render_callback_ = NULL;
}
-} // namepace media
+} // namespace media

Powered by Google App Engine
This is Rietveld 408576698