| Index: media/renderers/renderer_impl.cc
|
| diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc
|
| index 8088b07c7157d298c34283d4cd1ea3e7611ad645..ac80216606d1d3176bc9de1e29bf70ca7ff26559 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_->OnTimeStateChanged(true);
|
| + else if (old_rate > 0 && playback_rate == 0)
|
| + video_renderer_->OnTimeStateChanged(false);
|
| }
|
|
|
| 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_->OnTimeStateChanged(false);
|
| }
|
|
|
| void RendererImpl::StartPlayback() {
|
| @@ -543,6 +556,8 @@ void RendererImpl::StartPlayback() {
|
|
|
| time_ticking_ = true;
|
| time_source_->StartTicking();
|
| + if (playback_rate_ > 0 && video_renderer_)
|
| + video_renderer_->OnTimeStateChanged(true);
|
| }
|
|
|
| void RendererImpl::OnAudioRendererEnded() {
|
|
|