Closed
Bug 1194197
Opened 10 years ago
Closed 9 years ago
When the EndOfStream algorithm runs, error should be thrown to media element
Categories
(Core :: Audio/Video: Playback, defect, P1)
Core
Audio/Video: Playback
Tracking
()
RESOLVED
FIXED
mozilla43
People
(Reporter: jya, Assigned: jya)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
1.30 KB,
patch
|
cpearce
:
review+
|
Details | Diff | Splinter Review |
If any error happened during an append buffer, the Append Error Algorithm is to be run.
Typically "run the append error algorithm with the decode error parameter set to true and abort these steps."
append error algorithm:
https://w3c.github.io/media-source/#sourcebuffer-append-error
which "5. If decode error is true, then run the end of stream algorithm with the error parameter set to "decode".
the End Of Stream algorithm (https://w3c.github.io/media-source/#end-of-stream-algorithm) states that is the decoder error parameter is set to true then:
"3c: if error is set to "decode"
If the HTMLMediaElement.readyState attribute equals HAVE_NOTHING
Run the "If the media data can be fetched but is found by inspection to be in an unsupported format, or can otherwise not be rendered at all" steps of the resource fetch algorithm.
If the HTMLMediaElement.readyState attribute is greater than HAVE_NOTHING
Run the media data is corrupted steps of the resource fetch algorithm.
"
We currently do nothing ; the error is ignored
This is the core reason on why we have so many bugs being opened about playback stalling with MSE.
The sourcebuffer does produce the errors as per spec ; but the parent mediasource never tells the html media element that an error occured ; so instead of giving a visual clue that an error occurred ; we have the spinner going on forever.
Assignee | ||
Comment 1•10 years ago
|
||
JW, what would be the easiest way to test the readyState ; or propagate the error to the HTML Media Element?
The MediaSource End Of Stream Algorithm code (MediaSource::EndOfStream) runs on the main thread.
Would simply calling MediaDecoder::DecodeError() sufficient?
The HTMLMediaElement seems to only take care of a single type of MEDIA_ERR_DECODE and doesn't distinguish things between the various readyState cases.
Assignee | ||
Updated•10 years ago
|
Flags: needinfo?(jwwang)
Comment 2•10 years ago
|
||
We should uplift this fix to Aurora 42 because it will reduce false positive bug reports for 42's new MSE code. This error will help testers differentiate between Firefox bugs and corrupted media files.
status-firefox42:
--- → affected
Priority: -- → P1
Assignee | ||
Updated•10 years ago
|
Assignee: nobody → jyavenard
Assignee | ||
Comment 3•10 years ago
|
||
This is not 100% per spec, however neither is our handling of those errors in the media element.
Attachment #8647839 -
Flags: review?(cpearce)
Updated•10 years ago
|
Attachment #8647839 -
Flags: review?(cpearce) → review+
Comment 4•10 years ago
|
||
I think the End Of Stream algorithm should just report the network or decode error to the media element and let the element figure out what to do according to its readyState. It is strange for the algorithm to care about the readyState and tell the element what to do about the error which might contradict the original spec.
Flags: needinfo?(jwwang)
Assignee | ||
Comment 5•10 years ago
|
||
Thanks.. This is what I did in the patch.
I'm going to remove the comments about TODO because there's nothing more we can do
Comment 7•10 years ago
|
||
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla43
Comment 8•9 years ago
|
||
Comment 9•9 years ago
|
||
Backed out for a youtube playback regression. See Bug 1199573.
https://hg.mozilla.org/releases/mozilla-aurora/rev/5bb661db5c6c
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Updated•9 years ago
|
Status: REOPENED → RESOLVED
Closed: 10 years ago → 9 years ago
Resolution: --- → FIXED
Comment 10•9 years ago
|
||
You need to log in
before you can comment on or make changes to this bug.
Description
•