New issue
Advanced search Search tips

Issue 623729 link

Starred by 6 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Task



Sign in to add a comment

Conform to spec disallowance of both abort()'ing range removals and truncating buffered media when reducing duration

Project Member Reported by wolenetz@chromium.org, Jun 27 2016

Issue description

Change description:
MediaSource spec [0] has changed recently to disallow previously ambiguously defined behavior involving asynchronous range removals.
[0] http://w3c.github.io/media-source/

Changes to API surface:
* SourceBuffer.abort() no longer aborts SourceBuffer.remove() operations
* Setting MediaSource.duration can no longer truncate currently buffered media

Links:
Public standards discussion:
https://github.com/w3c/media-source/issues/19
https://github.com/w3c/media-source/issues/20
https://github.com/w3c/media-source/issues/26
Especially:
https://github.com/w3c/media-source/issues/26#issuecomment-211635911
https://github.com/w3c/media-source/pull/65

Support in other browsers:
Edge: Planned. MSFT co-editor authored this spec change with me.
Firefox: Suspected in development. @jyavenard has recently commented on spec bug (https://github.com/w3c/media-source/issues/26#issuecomment-219051274)
Safari: Unknown.
 
Anticipated Chromium change would first issue deprecation warnings when the newly disallowed behavior is seen. New behavior (without any deprecation warning) will be behind a RuntimeEnabled flag (probably one distinct from MediaSourceExperimental, since  bug 623698  will likely use MediaSourceExperimental).
Later, in M54/M55, the new behavior will be exposed on stable without any deprecation warning.
Labels: MSE-compat MSEscrubbed
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 30 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/663209d1ecce638d0fc8bde35daa7a471a899f65

commit 663209d1ecce638d0fc8bde35daa7a471a899f65
Author: Matt Wolenetz <wolenetz@chromium.org>
Date: Thu Jun 30 23:08:25 2016

MSE: Experimental support for new abort and duration behavior

Introduces a new RuntimeEnabledFeature "MediaSourceNewAbortAndDuration"
which enables new behavior corresponding to the recent MSE spec change
[1], fixing cross-platform spec ambiguities. New behavior:
* abort() gives error if there is a remove() in progress. abort() is
  intended to only abort in-progress appends, not removals.
* setting MediaSource.duration to a value which would truncate currently
  buffered media will now result in error. Apps can use explicit
  remove() to perform the desired buffered media truncation prior to
  lowering the duration.
Note that both of these behavior changes are intended to fix
previously ambiguous spec text related to asynchronous range
removals. There is no other strong reason why these two behavior
changes are included in the same CL (other than to reduce some
process redundancy.)
If "MediaSourceNewAbortAndDuration" is not enabled, then the old
behavior remains along with emission of new deprecation messages.
This change only enables that flag in 'experimental' status (see [2]).

Intent to implement thread is at [3].

[1] https://github.com/w3c/media-source/pull/65
[2] http://www.chromium.org/blink/runtime-enabled-features
[3] https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/oboI-rINUt0

BUG=623729, 398130 
TEST=Updated many of http/tests/media/media-source/* and added SBSTest.GetHighestPresentationTimestamp
R=chcunningham@chromium.org, dcheng@chromium.org, holte@chromium.org, tkent@chromium.org

Review URL: https://codereview.chromium.org/2102323002 .

Cr-Commit-Position: refs/heads/master@{#403327}

[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/blink/websourcebuffer_impl.cc
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/blink/websourcebuffer_impl.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/chunk_demuxer.cc
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/chunk_demuxer.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/media_source_state.cc
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/media_source_state.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/source_buffer_stream.cc
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/source_buffer_stream.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/media/filters/source_buffer_stream_unittest.cc
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-config-changes.js
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-duration.html
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-getvideoplaybackquality.html
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-play.html
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-remove.html
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-seek-beyond-duration.html
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/core/frame/Deprecation.cpp
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/core/frame/UseCounter.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/modules/mediasource/MediaSource.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/modules/mediasource/SourceBuffer.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/third_party/WebKit/public/platform/WebSourceBuffer.h
[modify] https://crrev.com/663209d1ecce638d0fc8bde35daa7a471a899f65/tools/metrics/histograms/histograms.xml

Comment 4 by owe...@chromium.org, Sep 12 2017

Labels: migrated-launch-owp Type-Task
This issue has been automatically relabelled type=task because type=launch-owp issues are now officially deprecated. The deprecation is because they were creating confusion about how to get launch approvals, which should be instead done via type=launch issues.

We recommend this issue be used for implementation tracking (for public visibility), but if you already have an issue for that, you may mark this as duplicate.

For more details see here: https://docs.google.com/document/d/1JA6RohjtZQc26bTrGoIE_bSXGXUDQz8vc6G0n_sZJ2o/edit

For any questions, please contact owencm, sshruthi, larforge

Sign in to add a comment