Open
Bug 1088472
Opened 10 years ago
Updated 8 months ago
test_SeekableBeforeEndOfStream.html hangs in seeking within test.webm
Categories
(Core :: Audio/Video: Playback, defect, P5)
Core
Audio/Video: Playback
Tracking
()
NEW
People
(Reporter: jwwang, Unassigned)
References
Details
Attachments
(1 file)
2.01 KB,
patch
|
Details | Diff | Splinter Review |
I tried to have test_SeekableBeforeEndOfStream.html test different files to increase the test coverage:
1. copy testing/web-platform/tests/media-source/webm/test.webm to content/media/mediasource/test
2. apply test_SeekableBeforeEndOfStream_html_mod.patch
3. run |./mach mochitest-plain content/media/mediasource/test/test_SeekableBeforeEndOfStream.html|
I found it hang during seeking within test.webm. However it didn't with the original seek.webm.
I wonder there is something wrong to test.webm which is used by our web-platform media-source tests. And it could be the reason why the web-platform media-source tests tend to time out.
Reporter | ||
Updated•10 years ago
|
Flags: needinfo?(kinetik)
Comment 1•10 years ago
|
||
Nice find! The main difference is that test.webm has the Cues at the end of the file whereas seek.webm has them at the beginning.
The seek blocks in WebMReader::Seek when the script sets currentTime to 2s with the following stack:
mozilla::ReentrantMonitorAutoEnter::Wait
mozilla::SourceBufferResource::Read
mozilla::webm_read
ne_io_read
ne_bare_read_vint
ne_read_id
ne_peek_element
ne_parse
ne_init_cue_points
nestegg_track_seek
mozilla::WebMReader::Seek
In SourceBufferResource::Read, blockingRead is true, mEnded is false, and mOffset is 219448. The length of test.webm is also 219448.
ne_parse attempts to read until it sees a non-Cue element or EOF. Since we're not at EOF (because EndOfStream has not been called and we don't know if more data will be appended) and we're never going to receive more data (to see a non-Cue element), ne_parse never completes because it's waiting on data that will never arrive.
Flags: needinfo?(kinetik)
Reporter | ||
Comment 2•10 years ago
|
||
(In reply to Matthew Gregan [:kinetik] from comment #1)
> Nice find! The main difference is that test.webm has the Cues at the end of
> the file whereas seek.webm has them at the beginning.
Does that mean test.webm has an invalid format or our webm reader should handle this case?
Comment hidden (off-topic) |
Comment 4•10 years ago
|
||
(In reply to JW Wang [:jwwang] from comment #2)
> Does that mean test.webm has an invalid format or our webm reader should
> handle this case?
It's a perfectly valid WebM file. The problem is a bug/bad interaction between our WebM parser and the way MSE resources are presented to it.
(In reply to Jean-Yves Avenard [:jya] from comment #3)
> I wouldn't be surprised if the reason was related to the issues I'm seeing
> in bug 1065827.
> I believe I have identified the issue in the MediaDecoderStateMachine,
> there's a racing condition that can happen when we are in DECODER_SEEKING
> state and we enter DECODER_DECODING state before
> MediaDecoderStateMachine::DecoderSeek gets the chance to run
It's unrelated.
Comment hidden (off-topic) |
Comment hidden (off-topic) |
Updated•10 years ago
|
Priority: -- → P5
Updated•9 years ago
|
Component: Audio/Video → Audio/Video: Playback
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•