MSE: Report UseCounter and RAPPOR for two problematic MSE usages

Desktop / Chromium - Matt Wolenetz [chromium.org] - 13 July 2017 19:00 EDT

This change adds UseCounter (for publicly visible % of Page Visits statistics) and RAPPOR reporting to help us gauge the frequency of these types of MSE API usages encountered in Chrome usage. Such data may assist subsequent work to clarify the spec, improve our implementation, and potentially deprecate support.

"KeyframeTimeGreaterThanDependant" reporting: (Bug 739931) If nonkeyframe's PTS precedes the PTS of the keyframe necessary to decode it, this (in ISO-BMFF terminology) is not SAP Type 1 (though other bytestreams might also encounter this GOP structure, too.) Our buffering mechanism should gracefully handle this type of GOP, but the MSE spec is unclear for how to precisely report resulting buffered ranges and handle buffering/playback of overlaps of these types of streams.

"MuxedSequenceMode" reporting: (Bug 737757) If a multitrack SourceBuffer is used in 'sequence' AppendMode, the spec leads to frequently surprising and undesirable results, usually due to automatic timestampOffset updates based on one track after a discontinuity are applied to all tracks.

At least bug 739931 may impact current PTS/DTS compliance work tracked by bug 718641.

BUG=739931,737757,718641

Change-Id: I4fabb4ae0b389c5ce2eecb361d4b67c6d4874b04 Reviewed-on: https://chromium-review.googlesource.com/567558

f68e45d MSE: Report UseCounter and RAPPOR for two problematic MSE usages
media/base/test_helpers.h | 2 +-
media/blink/websourcebuffer_impl.cc | 27 ++++++++++
media/blink/websourcebuffer_impl.h | 4 ++
media/filters/BUILD.gn | 1 +
media/filters/chunk_demuxer.cc | 8 +++
media/filters/chunk_demuxer.h | 6 +++
media/filters/chunk_demuxer_unittest.cc | 12 ++++-
media/filters/frame_processor.cc | 61 ++++++++++++++++++----
media/filters/frame_processor.h | 10 ++++
media/filters/frame_processor_unittest.cc | 28 ++++++++--
media/filters/source_buffer_parse_warnings.h | 26 +++++++++
media/filters/source_buffer_state.cc | 7 +++
media/filters/source_buffer_state.h | 4 ++
media/filters/source_buffer_state_unittest.cc | 8 +++
media/test/mock_media_source.cc | 4 ++
media/test/mock_media_source.h | 2 +
.../Source/modules/mediasource/SourceBuffer.cpp | 24 +++++++++
.../Source/modules/mediasource/SourceBuffer.h | 1 +
.../WebKit/public/platform/WebSourceBufferClient.h | 6 +++
.../WebKit/public/platform/web_feature.mojom | 2 +
tools/metrics/histograms/enums.xml | 2 +
tools/metrics/rappor/rappor.xml | 30 +++++++++++
22 files changed, 260 insertions(+), 15 deletions(-)

Upstream: git.chromium.org


  • Share