Chromium Code Reviews| Index: media/blink/webmediaplayer_impl.cc |
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
| index 4b8151a4076ce48a68c5b93fd2d18e267bb3d20f..eccf0ffe50a0bf8f25c419b583c9031e02c5a70b 100644 |
| --- a/media/blink/webmediaplayer_impl.cc |
| +++ b/media/blink/webmediaplayer_impl.cc |
| @@ -1349,7 +1349,8 @@ void WebMediaPlayerImpl::OnHidden() { |
| if (watch_time_reporter_) |
| watch_time_reporter_->OnHidden(); |
| - if (IsBackgroundVideoTrackOptimizationEnabled()) { |
| + if (IsBackgroundVideoTrackOptimizationEnabled() && |
| + ShouldDecodeFastWhenShown()) { |
| if (ShouldPauseWhenHidden()) { |
| // OnPause() will set |paused_when_hidden_| to false and call |
| // UpdatePlayState(), so set the flag to true after and then return. |
| @@ -1378,7 +1379,8 @@ void WebMediaPlayerImpl::OnShown() { |
| base::Bind(&VideoFrameCompositor::SetForegroundTime, |
| base::Unretained(compositor_), base::TimeTicks::Now())); |
| - if (IsBackgroundVideoTrackOptimizationEnabled()) { |
| + if (IsBackgroundVideoTrackOptimizationEnabled() && |
| + ShouldDecodeFastWhenShown()) { |
| if (paused_when_hidden_) { |
| paused_when_hidden_ = false; |
| OnPlay(); // Calls UpdatePlayState() so return afterwards. |
| @@ -2080,4 +2082,12 @@ bool WebMediaPlayerImpl::ShouldPauseWhenHidden() const { |
| return hasVideo() && !hasAudio(); |
| } |
| +bool WebMediaPlayerImpl::ShouldDecodeFastWhenShown() const { |
|
DaleCurtis
2017/01/09 20:29:54
This name is very strange. Something like IsVideoS
|
| + DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| + |
| + PipelineStatistics stats = pipeline_.GetStatistics(); |
| + return stats.video_keyframe_distance_average_ms < |
| + max_keyframe_distance_for_fast_decode_.InMilliseconds(); |
| +} |
| + |
| } // namespace media |