New issue
Advanced search Search tips

Issue 604353 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Media Source Extension incorrectly reports Infintite duration for ISOBMFF duration=0, and after endOfStream() with nothing buffered and ISOBMFF duration=(all 1's) unknown

Reported by cool...@gmail.com, Apr 18 2016

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

Example URL:

Steps to reproduce the problem:
1. Call MSE.appendBuffer(InitializationSegment). Initialization segment have MovieHeaderBox::duration == 0xFFFFFFFF because this is live stream. Quotation from 14496-12:2012: "If the duration cannot be determined then duration is set to all 1s."

2. After appendBuffer(), videoTag.seeking == 0-47721.858833.
Note: 0xFFFFFFFF / 90000 (timescale) = 47721.858833

3. Call MSE.endOfStream().

4. After MSE.endOfStream(), videoTag.duration == 47721.858833.
If, in step 1, MovieHeaderBox::duration == 0 then videoTag.duration == Infinity. Wrong too.

What is the expected behavior?
2. After appendBuffer(), videoTag.seeking == empty.
4. After MSE.endOfStream(), videoTag.duration == 0.

Firefox 45 do it right.

What went wrong?
videoTag.seeking and videoTag.duration values.

Did this work before? N/A 

Is it a problem with Flash or HTML5? HTML5

Does this work in other browsers? Yes 

Chrome version: 49.0.2623.110 m (64-bit)  Channel: stable
OS Version: 6.1 (Windows 7, Windows Server 2008 R2)
Flash Version: Shockwave Flash 21.0 r0

PS. I do not check TrackHeaderBox::duration and MediaHeaderBox::duration. Maybe they have bugs too?
 
Cc: wolenetz@chromium.org sande...@chromium.org
Components: -Internals>Media Internals>Media>Source

Comment 2 Deleted

Labels: Needs-Feedback

Comment 4 Deleted

Comment 5 by cool...@gmail.com, Apr 23 2016

please hide my email from comment #2

"repro" in attach.
604353.zip
3.6 KB Download
Project Member

Comment 6 by sheriffbot@chromium.org, Apr 23 2016

Labels: -Needs-Feedback Needs-Review
Owner: yini...@chromium.org
Thank you for providing more feedback. Adding requester "yiningc@chromium.org" for another review and adding "Needs-Review" label for tracking.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Owner: ----
coolcmd@, I unzipped your attached 604353.zip file, none of the 4 .mp4 files can be played. please provide detailed repro steps and expect/actual behavior
Labels: -Needs-Review Needs-Feedback

Comment 9 by cool...@gmail.com, May 5 2016

- run chrome --allow-file-access-from-files
- drag&drop 604353-f.html
- console output:
HTMLMediaElement.seekable=TimeRanges instead of empty (length == 0)
HTMLMediaElement.duration=47721.858833 instead of 0

- drag&drop 604353-0.html
- console output:
HTMLMediaElement.seekable=TimeRanges is OK
HTMLMediaElement.duration=Infinity instead of 0

Project Member

Comment 10 by sheriffbot@chromium.org, May 5 2016

Labels: -Needs-Feedback Needs-Review
Owner: yini...@chromium.org
Thank you for providing more feedback. Adding requester "yiningc@chromium.org" for another review and adding "Needs-Review" label for tracking.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: -wolenetz@chromium.org
Owner: wolenetz@chromium.org
Status: Assigned (was: Unconfirmed)
by follow steps in #9, I am able to repro this issue. 
Matt, can you take a look?
Matt, any update?

Comment 13 by cool...@gmail.com, Nov 21 2016

7 months later... nothing.
Labels: -Needs-Review MSE
Summary: Media Source Extension incorrectly reports Infintite duration for ISOBMFF duration=0, and after endOfStream() with nothing buffered and ISOBMFF duration=(all 1's) unknown (was: Media Source Extension incorrectly parse MP4::MovieHeaderBox::duration)
Actually, I believe I fixed a duplicate of the 1/3 of this issue in September (in current M55 beta) -- see  issue 649882 . 604353-f.html in #5 is now demonstrating that seekable ranges has length 0 after that fix.

For the other 2 parts of this issue:
1) If it's indeed incorrect for ISOBMFF duration == 0 to be determined as Unknown (and therefore the HTMLMediaElement and MSE-before-endOfStream()-is-called specs indicate the element's duration is to be +Infinity), then I'm less certain of the negative impact of +Infinity reflection in that case. Note that webm (matroska info.duration), if present, must be > 0, so I don't believe there's any ambiguity for similar scenario for Chrome MSE for webm.

2) Following endOfStream(), the element is indeed incorrectly reporting +Infinity duration in OnSourceEnded (604353-f.html from #5), when nothing was ever appended. It looks to me like the condition in https://cs.chromium.org/chromium/src/media/filters/chunk_demuxer.cc?rcl=1480594633&l=1248 is triggering early return without actually updating the duration, if the resulting duration is 0. This seems wrong to me. See also issue 639144.

Updating title of this bug to reflect these remaining 2 cases. 
Labels: -MSE MSE-compat
Cc: dalecur...@chromium.org
For c#14-2) see also https://bugs.chromium.org/p/chromium/issues/detail?id=751823#c10

Sign in to add a comment