Contact emails
Spec
Summary
Add 'mode' attribute to SourceBuffer, and support the ability to use and switch among 'sequence' and 'segments' appendMode.
'segments' is the default (and current) behavior. 'sequence' enables web developers to simplify some types of media streaming apps that use Media Source Extensions (MSE).
Motivation
'sequence' appendMode allows more flexibility to maintain a gap-free buffered media timeline for web apps that know less metadata about the media they play using MSE.
It also allows an simpler migration path for current MSE players who may wish to switch from an MSE bytestream which uses 'generate timestamps flag' (*) (audio/mpeg or audio/aac) to other bytestreams which require more app-directed control of where media appends occur in the timeline to obtain a similar result as 'sequence' enables.
(*) Note that current Chrome parsers mimic the 'sequence' mode behavior inside the media engine for audio/mpeg and audio/aac bytestreams. Enabling 'sequence' appendMode at the Blink layer will allow later refactoring of the media engine to use that mode explicitly for these bytestreams.
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes.
Interoperability Risk
Microsoft is actively engaged with Google in driving the MSE spec towards W3C "PR" status. SourceBuffer.mode is not an at-risk feature in the spec. See mailing list and issue tracker.
Compatibility Risk
Compatibility risk is low because 'segments' is the default append mode. The intent is to add support for a non-default 'sequence' append mode. 'sequence' mode behavior (or equivalent auto-update of timestampOffset behavior) is required for only a subset of MSE bytestreams (see (*), above), and the equivalent behavior (minus the exposure of SourceBuffer.mode attribute) for those specific bytestreams has already shipped in Chrome.
Ongoing technical constraints
None.
OWP launch tracking bug
Note, this was originally part of https://code.google.com/p/chromium/issues/detail?id=239506 (along with several other still-unimplemented portions of MSE in Chrome), but needs to ship in M-50 independently of those other features ideally to unblock at least one major MSE user that has requested it. It's been stable in Layout Tests, but hidden behind an experimental flag in Chrome, for well over a year now.
Link to entry
Small change.
Requesting approval to ship?
Yes (See p.s.'s below)
p.s. This is my first attempt at doing this process. I would appreciate any and all help understanding if a TAG review or a chromestatus entry are warranted.
p.p.s. It's currently available by --enable-experimental-web-platform-features via the 'MediaSourceExperimental' RuntimeEnabled flag. However, so are some other incomplete features covered by the original OWP launch bug 239506. So I expect I would need to create a new RuntimeEnabled flag specifically for SourceBuffer mode support to allow it to (independently of those other MediaSourceExperimental features) be enabled by default.
p.p.p.s. I would further like to understand if this is simply too late for M50, and if not too late, what are the immediate requirements to keep it on track for M50.
--