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

Unified Diff: media/base/media_log.cc

Issue 1236543007: MSE: Log buffered audio splice generation to media-internals (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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/base/media_log.cc
diff --git a/media/base/media_log.cc b/media/base/media_log.cc
index 754a5f924cee03f1dd8476993660f47165aeb199..f25468279a2d3364af72ddcbb1801c0c6a1e42a3 100644
--- a/media/base/media_log.cc
+++ b/media/base/media_log.cc
@@ -4,6 +4,8 @@
#include "media/base/media_log.h"
+#include <algorithm>
+
#include "base/atomic_sequence_num.h"
#include "base/json/json_writer.h"
#include "base/values.h"
@@ -14,6 +16,46 @@ namespace media {
// unique IDs.
static base::StaticAtomicSequenceNumber g_media_log_count;
+MediaLog::AudioSpliceStatistics::AudioSpliceStatistics()
+ : count_(0),
+ degenerate_count_(0),
+ total_duration_(0.0),
+ min_duration_(0.0),
+ max_duration_(0.0) {
+}
+
+MediaLog::AudioSpliceStatistics::AudioSpliceStatistics(int count,
+ int degenerate_count,
+ double total_duration,
+ double min_duration,
+ double max_duration)
+ : count_(count),
+ degenerate_count_(degenerate_count),
+ total_duration_(total_duration),
+ min_duration_(min_duration),
+ max_duration_(max_duration) {
+}
+
+void MediaLog::AudioSpliceStatistics::OnSplice(double duration) {
+ if (count_) {
+ min_duration_ = std::min(min_duration_, duration);
+ max_duration_ = std::max(max_duration_, duration);
+ total_duration_ += duration;
+ } else {
+ min_duration_ = max_duration_ = total_duration_ = duration;
+ }
+
+ count_++;
+}
+
+void MediaLog::AudioSpliceStatistics::OnDegenerateSplice() {
+ degenerate_count_++;
+}
+
+double MediaLog::AudioSpliceStatistics::AverageDuration() const {
+ return (count_ > 0) ? total_duration_ / count_ : 0.0;
+}
+
std::string MediaLog::MediaLogLevelToString(MediaLogLevel level) {
switch (level) {
case MEDIALOG_ERROR:
@@ -72,6 +114,8 @@ std::string MediaLog::EventTypeToString(MediaLogEvent::Type type) {
return "TEXT_ENDED";
case MediaLogEvent::BUFFERED_EXTENTS_CHANGED:
return "BUFFERED_EXTENTS_CHANGED";
+ case MediaLogEvent::BUFFERED_AUDIO_SPLICE_STATISTICS_CHANGED:
+ return "BUFFERED_AUDIO_SPLICE_STATISTICS_CHANGED";
case MediaLogEvent::MEDIA_ERROR_LOG_ENTRY:
return "MEDIA_ERROR_LOG_ENTRY";
case MediaLogEvent::MEDIA_INFO_LOG_ENTRY:
@@ -227,6 +271,22 @@ scoped_ptr<MediaLogEvent> MediaLog::CreateBufferedExtentsChangedEvent(
return event.Pass();
}
+scoped_ptr<MediaLogEvent> MediaLog::CreateBufferedSpliceStatisticsChangedEvent(
+ const AudioSpliceStatistics& statistics) {
+ scoped_ptr<MediaLogEvent> event(
+ CreateEvent(MediaLogEvent::BUFFERED_AUDIO_SPLICE_STATISTICS_CHANGED));
+ event->params.SetInteger("audio_splice_count", statistics.count());
+ event->params.SetInteger("audio_splice_degenerate_count",
+ statistics.degenerate_count());
+ event->params.SetDouble("audio_splice_duration_average",
+ statistics.AverageDuration());
+ event->params.SetDouble("audio_splice_duration_min",
+ statistics.min_duration());
+ event->params.SetDouble("audio_splice_duration_max",
+ statistics.max_duration());
+ return event.Pass();
+}
+
void MediaLog::AddLogEvent(MediaLogLevel level, const std::string& message) {
scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogLevelToEventType(level)));
event->params.SetString(MediaLogLevelToString(level), message);

Powered by Google App Engine
This is Rietveld 408576698