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 |