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

Unified Diff: media/blink/webmediaplayer_impl.cc

Issue 1409123005: Add methods for telling V8 how much memory audio/video is using. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix html viewer. Created 5 years, 2 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
« no previous file with comments | « media/blink/webmediaplayer_impl.h ('k') | media/blink/webmediaplayer_params.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/blink/webmediaplayer_impl.cc
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index bee9dae7d4bf96ad51364d16362d77d3c4f0dd28..5be9452d38f572d1cd0acb5b9da0f1a7499771ce 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -147,6 +147,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
delegate_(delegate),
defer_load_cb_(params.defer_load_cb()),
context_3d_cb_(params.context_3d_cb()),
+ adjust_allocated_memory_cb_(params.adjust_allocated_memory_cb()),
+ last_reported_memory_usage_(0),
supports_save_(true),
chunk_demuxer_(NULL),
// Threaded compositing isn't enabled universally yet.
@@ -165,6 +167,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
AsWeakPtr(),
base::Bind(&IgnoreCdmAttached))),
renderer_factory_(renderer_factory.Pass()) {
+ DCHECK(!adjust_allocated_memory_cb_.is_null());
+
media_log_->AddEvent(
media_log_->CreateEvent(MediaLogEvent::WEBMEDIAPLAYER_CREATED));
@@ -209,6 +213,9 @@ WebMediaPlayerImpl::~WebMediaPlayerImpl() {
base::Bind(&base::WaitableEvent::Signal, base::Unretained(&waiter)));
waiter.Wait();
+ if (last_reported_memory_usage_)
+ adjust_allocated_memory_cb_.Run(-last_reported_memory_usage_);
+
compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_);
media_log_->AddEvent(
@@ -244,6 +251,9 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type,
SetNetworkState(WebMediaPlayer::NetworkStateLoading);
SetReadyState(WebMediaPlayer::ReadyStateHaveNothing);
media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec()));
+ memory_usage_reporting_timer_.Start(
+ FROM_HERE, base::TimeDelta::FromMilliseconds(500), this,
+ &WebMediaPlayerImpl::ReportMemoryUsage);
// Media source pipelines can start immediately.
if (load_type == LoadTypeMediaSource) {
@@ -1083,4 +1093,23 @@ void WebMediaPlayerImpl::UpdatePausedTime() {
ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime();
}
+void WebMediaPlayerImpl::ReportMemoryUsage() {
+ DCHECK(main_task_runner_->BelongsToCurrentThread());
+
+ const PipelineStatistics stats = pipeline_.GetStatistics();
+ const int64_t current_memory_usage =
+ stats.audio_memory_usage + stats.video_memory_usage +
+ (data_source_ ? data_source_->GetMemoryUsage() : 0) +
+ (demuxer_ ? demuxer_->GetMemoryUsage() : 0);
+
+ DVLOG(2) << "Memory Usage -- Audio: " << stats.audio_memory_usage
+ << ", Video: " << stats.video_memory_usage << ", DataSource: "
+ << (data_source_ ? data_source_->GetMemoryUsage() : 0)
+ << ", Demuxer: " << (demuxer_ ? demuxer_->GetMemoryUsage() : 0);
+
+ const int64_t delta = current_memory_usage - last_reported_memory_usage_;
+ last_reported_memory_usage_ = current_memory_usage;
+ adjust_allocated_memory_cb_.Run(delta);
+}
+
} // namespace media
« no previous file with comments | « media/blink/webmediaplayer_impl.h ('k') | media/blink/webmediaplayer_params.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698