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() { |