Chromium Code Reviews| 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() { |