diff options
author | scottfr@chromium.org <scottfr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-20 06:25:06 +0000 |
---|---|---|
committer | scottfr@chromium.org <scottfr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-20 06:25:06 +0000 |
commit | 48d215486c5facfa878c037cf1e886b02936d607 (patch) | |
tree | 15be8325d1784eb256f35611b9b9fcf8b23a2b81 /media/base/media_log.cc | |
parent | b781ff288ee35415b6fa72499aaf8a70f3863283 (diff) | |
download | chromium_src-48d215486c5facfa878c037cf1e886b02936d607.zip chromium_src-48d215486c5facfa878c037cf1e886b02936d607.tar.gz chromium_src-48d215486c5facfa878c037cf1e886b02936d607.tar.bz2 |
Log media pipeline statistics to MediaLog.
BUG=
TEST=
Review URL: http://codereview.chromium.org/7695008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97568 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/media_log.cc')
-rw-r--r-- | media/base/media_log.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/media/base/media_log.cc b/media/base/media_log.cc index e829d1f..9ead460 100644 --- a/media/base/media_log.cc +++ b/media/base/media_log.cc @@ -57,6 +57,8 @@ const char* MediaLog::EventTypeToString(MediaLogEvent::Type type) { return "AUDIO_RENDERER_DISABLED"; case MediaLogEvent::BUFFERED_EXTENTS_CHANGED: return "BUFFERED_EXTENTS_CHANGED"; + case MediaLogEvent::STATISTICS_UPDATED: + return "STATISTICS_UPDATED"; } NOTREACHED(); return NULL; @@ -144,6 +146,7 @@ const char* MediaLog::PipelineStatusToString(PipelineStatus status) { MediaLog::MediaLog() { id_ = media_log_count.GetNext(); + stats_update_pending_ = false; } MediaLog::~MediaLog() {} @@ -225,4 +228,32 @@ MediaLogEvent* MediaLog::CreateBufferedExtentsChangedEvent( return event.release(); } +void MediaLog::QueueStatisticsUpdatedEvent(PipelineStatistics stats) { + base::AutoLock auto_lock(stats_lock_); + last_statistics_ = stats; + + if (!stats_update_pending_) { + stats_update_pending_ = true; + MessageLoop::current()->PostDelayedTask(FROM_HERE, + NewRunnableMethod(this, &media::MediaLog::AddStatisticsUpdatedEvent), + 500); + } +} + +void MediaLog::AddStatisticsUpdatedEvent() { + base::AutoLock auto_lock(stats_lock_); + scoped_ptr<MediaLogEvent> event( + CreateEvent(MediaLogEvent::STATISTICS_UPDATED)); + event->params.SetInteger("audio_bytes_decoded", + last_statistics_.audio_bytes_decoded); + event->params.SetInteger("video_bytes_decoded", + last_statistics_.video_bytes_decoded); + event->params.SetInteger("video_frames_decoded", + last_statistics_.video_frames_decoded); + event->params.SetInteger("video_frames_dropped", + last_statistics_.video_frames_dropped); + AddEvent(event.release()); + stats_update_pending_ = false; +} + } //namespace media |