New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 620903 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Compliant append error algorithm is *not* executed when appendBuffer fails

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

Issue description

While reviewing https://codereview.chromium.org/1678523003/#ps480001, I suspected and confirmed that SourceBuffer does *not* enqueue a task to fire an 'error' event on all appendBuffer() failures. (That patch set was suggesting adding direct calls to append algorithm failures from within initsegmentreceived algorithm.)

I suspect the route forward will probably be to change the WebSourceBuffer append interface to return a boolean indicating whether or not there was a failure during processing of the append. The caller in Blink can then execute the appendError() algorithm correctly (and the patch set I was reviewing, above, would just need to reply false from failed initsegmentreceived impl in Blink and let the engine later report failed append by returning false from WebSourceBuffer append.

Note: I used a locally morphed version of mediasource-gc-after-decode-error-crash.html layout test to observe absence of SourceBuffer 'error' event, and presence of video element 'error' event on decode error resulting from append.

 
I'm trying the route suggested, above, in https://codereview.chromium.org/2076673005 -- debugging some unexpected failures at the moment.
Failures were all simply resolved. https://codereview.chromium.org/2076673005/ is now out for review.
Project Member

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

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

commit 4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9
Author: wolenetz <wolenetz@chromium.org>
Date: Wed Jun 22 22:55:11 2016

MSE: Run appendError on appendData failures

This change lets ChunkDemuxer::AppendData signal parse failure back
to Blink SourceBuffer by its return value. SourceBuffer synchronously
uses that signal to run the append error algorithm (which can enqueue
an 'error' event on the SourceBuffer, among other steps).
In parallel, ChunkDemuxer::ReportError_Locked()
still notifies WMPI and HTMLMediaElement asynchronously via
Pipeline of the error state.

BUG= 620903 
TEST=Updated mediasource-errors.html, ChunkDemuxerTests, PipelineIntegrationTests

Review-Url: https://codereview.chromium.org/2076673005
Cr-Commit-Position: refs/heads/master@{#401439}

[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/media/blink/websourcebuffer_impl.cc
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/media/blink/websourcebuffer_impl.h
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/media/filters/chunk_demuxer.cc
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/media/filters/chunk_demuxer.h
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/media/filters/chunk_demuxer_unittest.cc
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/media/test/pipeline_integration_test.cc
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-errors.html
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/third_party/WebKit/Source/modules/mediasource/SourceBuffer.h
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/third_party/WebKit/public/platform/WebSourceBuffer.h
[modify] https://crrev.com/4f0ed2f67852f56ecc8d5ca1605b1ff81a26afd9/third_party/WebKit/public/platform/WebSourceBufferClient.h

Status: Fixed (was: Started)

Sign in to add a comment