Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(964)

Unified Diff: media/blink/webmediaplayer_impl.cc

Issue 2611333003: [Video] Disable bg optimization if avg keyframe distance is >10s (Closed)
Patch Set: Unittest Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/blink/webmediaplayer_impl.cc
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index e5bebc298a51173daa32235ecf51ad933eaa84d1..a0c94818c0451a79cb37d9203d39dc899b38ee69 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -876,28 +876,28 @@ double WebMediaPlayerImpl::mediaTimeForTimeValue(double timeValue) const {
unsigned WebMediaPlayerImpl::decodedFrameCount() const {
DCHECK(main_task_runner_->BelongsToCurrentThread());
- PipelineStatistics stats = pipeline_.GetStatistics();
+ PipelineStatistics stats = GetPipelineStatistics();
return stats.video_frames_decoded;
}
unsigned WebMediaPlayerImpl::droppedFrameCount() const {
DCHECK(main_task_runner_->BelongsToCurrentThread());
- PipelineStatistics stats = pipeline_.GetStatistics();
+ PipelineStatistics stats = GetPipelineStatistics();
return stats.video_frames_dropped;
}
size_t WebMediaPlayerImpl::audioDecodedByteCount() const {
DCHECK(main_task_runner_->BelongsToCurrentThread());
- PipelineStatistics stats = pipeline_.GetStatistics();
+ PipelineStatistics stats = GetPipelineStatistics();
return stats.audio_bytes_decoded;
}
size_t WebMediaPlayerImpl::videoDecodedByteCount() const {
DCHECK(main_task_runner_->BelongsToCurrentThread());
- PipelineStatistics stats = pipeline_.GetStatistics();
+ PipelineStatistics stats = GetPipelineStatistics();
return stats.video_bytes_decoded;
}
@@ -2016,7 +2016,7 @@ void WebMediaPlayerImpl::ReportMemoryUsage() {
void WebMediaPlayerImpl::FinishMemoryUsageReport(int64_t demuxer_memory_usage) {
DCHECK(main_task_runner_->BelongsToCurrentThread());
- const PipelineStatistics stats = pipeline_.GetStatistics();
+ const PipelineStatistics stats = GetPipelineStatistics();
const int64_t data_source_memory_usage =
data_source_ ? data_source_->GetMemoryUsage() : 0;
const int64_t current_memory_usage =
@@ -2118,9 +2118,17 @@ bool WebMediaPlayerImpl::ShouldPauseWhenHidden() const {
}
bool WebMediaPlayerImpl::ShouldDisableVideoWhenHidden() const {
+ DCHECK(main_task_runner_->BelongsToCurrentThread());
DCHECK(IsHidden());
- return IsBackgroundVideoTrackOptimizationEnabled() && hasVideo() &&
- hasAudio() && !IsStreaming();
+
+ if (!IsBackgroundVideoTrackOptimizationEnabled() || !hasVideo() ||
+ !hasAudio() || IsStreaming()) {
+ return false;
+ }
+
+ PipelineStatistics stats = GetPipelineStatistics();
+ return stats.video_keyframe_distance_average <
+ max_keyframe_distance_to_disable_background_video_;
}
void WebMediaPlayerImpl::EnableVideoTrackIfNeeded() {
@@ -2152,4 +2160,15 @@ void WebMediaPlayerImpl::DisableVideoTrackIfNeeded() {
}
}
+void WebMediaPlayerImpl::SetPipelineStatisticsForTest(
+ const PipelineStatistics& stats) {
+ pipeline_statistics_for_test_ = base::make_optional(stats);
+}
+
+PipelineStatistics WebMediaPlayerImpl::GetPipelineStatistics() const {
+ DCHECK(main_task_runner_->BelongsToCurrentThread());
+
+ return pipeline_statistics_for_test_.value_or(pipeline_.GetStatistics());
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698