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

Unified Diff: media/renderers/renderer_impl.cc

Issue 1068593003: Introduce TimeSource notifications to the VideoRenderer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
« no previous file with comments | « media/renderers/renderer_impl.h ('k') | media/renderers/renderer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/renderers/renderer_impl.cc
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc
index 8088b07c7157d298c34283d4cd1ea3e7611ad645..ceb1e015255f1718af91368bd9eb6ce12cbbc0e7 100644
--- a/media/renderers/renderer_impl.cc
+++ b/media/renderers/renderer_impl.cc
@@ -35,6 +35,7 @@ RendererImpl::RendererImpl(
video_renderer_(video_renderer.Pass()),
time_source_(NULL),
time_ticking_(false),
+ playback_rate_(0),
audio_buffering_state_(BUFFERING_HAVE_NOTHING),
video_buffering_state_(BUFFERING_HAVE_NOTHING),
audio_ended_(false),
@@ -177,6 +178,16 @@ void RendererImpl::SetPlaybackRate(float playback_rate) {
return;
time_source_->SetPlaybackRate(playback_rate);
+
+ const float old_rate = playback_rate_;
+ playback_rate_ = playback_rate;
+ if (!time_ticking_ || !video_renderer_)
+ return;
+
+ if (old_rate == 0 && playback_rate > 0)
+ video_renderer_->OnTimeProgressing();
+ else if (old_rate > 0 && playback_rate == 0)
+ video_renderer_->OnTimeStopped();
xhwang 2015/04/07 06:13:08 This will definitely work. I just wonder whether w
DaleCurtis 2015/04/07 16:51:40 Yeah, I considered all of these except the last on
}
void RendererImpl::SetVolume(float volume) {
@@ -532,6 +543,8 @@ void RendererImpl::PausePlayback() {
time_ticking_ = false;
time_source_->StopTicking();
+ if (playback_rate_ > 0 && video_renderer_)
+ video_renderer_->OnTimeStopped();
}
void RendererImpl::StartPlayback() {
@@ -543,6 +556,8 @@ void RendererImpl::StartPlayback() {
time_ticking_ = true;
time_source_->StartTicking();
+ if (playback_rate_ > 0 && video_renderer_)
+ video_renderer_->OnTimeProgressing();
}
void RendererImpl::OnAudioRendererEnded() {
« no previous file with comments | « media/renderers/renderer_impl.h ('k') | media/renderers/renderer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698