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

Unified Diff: content/renderer/media/render_media_log.cc

Issue 2645953004: Update duration when demuxed packets exceed known duration. (Closed)
Patch Set: Remove broken CGI server. Rate limit duration changed events. 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: content/renderer/media/render_media_log.cc
diff --git a/content/renderer/media/render_media_log.cc b/content/renderer/media/render_media_log.cc
index 1b3eeb53c61cf476456ab0bace584891145ec45d..1169f685b5a81ec6885ef39e92a8cb96195c0301 100644
--- a/content/renderer/media/render_media_log.cc
+++ b/content/renderer/media/render_media_log.cc
@@ -72,6 +72,12 @@ void RenderMediaLog::AddEvent(std::unique_ptr<media::MediaLogEvent> event) {
// kind, if any, prior to sending the event batch.
break;
+ case media::MediaLogEvent::DURATION_SET:
+ // Similar to the extents changed message, this may fire many times for
+ // badly muxed media. Suppress within our rate limits here.
+ last_duration_changed_event_.swap(event);
+ break;
+
// Hold onto the most recent PIPELINE_ERROR and MEDIA_LOG_ERROR_ENTRY for
// use in GetLastErrorMessage().
case media::MediaLogEvent::PIPELINE_ERROR:
@@ -153,6 +159,11 @@ void RenderMediaLog::SendQueuedMediaEvents() {
last_buffered_extents_changed_event_.reset();
}
+ if (last_duration_changed_event_) {
+ queued_media_events_.push_back(*last_duration_changed_event_);
+ last_duration_changed_event_.reset();
+ }
+
queued_media_events_.swap(events_to_send);
last_ipc_send_time_ = tick_clock_->NowTicks();
}

Powered by Google App Engine
This is Rietveld 408576698