This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 24345 - Remove "default-base-is-moof is set" requirement and clarify what "movie-fragment relative addressing" means
Summary: Remove "default-base-is-moof is set" requirement and clarify what "movie-frag...
Status: RESOLVED FIXED
Alias: None
Product: HTML WG
Classification: Unclassified
Component: Media Source Extensions (show other bugs)
Version: unspecified
Hardware: PC All
: P2 normal
Target Milestone: CR
Assignee: Adrian Bateman [MSFT]
QA Contact: HTML WG Bugzilla archive list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-21 22:35 UTC by Aaron Colwell
Modified: 2014-03-03 23:46 UTC (History)
4 users (show)

See Also:


Attachments

Description Aaron Colwell 2014-01-21 22:35:25 UTC
I'd like to make the following changes to Section 4 of the ISOBMFF byte stream format spec (https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/isobmff-byte-stream-format.html#iso-media-segments)

Current text:
"The Movie Fragment Box does not use movie-fragment relative addressing or the flag default-base-is-moof is not set."

Proposed text:
"At least one Track Fragment Header Box(tfhd) has the base-data-offset-present flag set."

I believe this will more clearly indicates "does not use movie-fragment relative addressing" and allows MSE to accept files that use relative addressing, but don't specify the default-base-is-moof flag.

Chrome has never enforced the "default-base-is-moof is set" requirement and a large amount of YouTube content does not have this flag set. Requiring this flag be set only marginally reduces implementation complexity and existing MP4 implementations likely handle the "default-base-is-moof not set" case anyways.

FWIW, I also believe making this change will also allow certain legacy SmoothStreaming content to work now with MSE.
Comment 1 Cyril Concolato 2014-01-27 10:34:29 UTC
I agree. What's important is to make sure that the base-data-offset-present flag is not set. Your text also removes the ambiguous "movie-fragment relative addressing" term. I'm fine with it.
Comment 2 Jer Noble 2014-02-07 17:18:48 UTC
(In reply to Cyril Concolato from comment #1)
> I agree. What's important is to make sure that the base-data-offset-present
> flag is not set. Your text also removes the ambiguous "movie-fragment
> relative addressing" term. I'm fine with it.

(In reply to Aaron Colwell from comment #0)
> I'd like to make the following changes to Section 4 of the ISOBMFF byte
> stream format spec
> (https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/isobmff-
> byte-stream-format.html#iso-media-segments)
> 
> Current text:
> "The Movie Fragment Box does not use movie-fragment relative addressing or
> the flag default-base-is-moof is not set."
> 
> Proposed text:
> "At least one Track Fragment Header Box(tfhd) has the
> base-data-offset-present flag set."

While this is a step in the right direction, I believe this goes too far.

The intent of the default-base-is-moof flag is to keep readers from having to completely parse previous 'traf' boxes in order to determine the offset of subsequent 'traf' boxes.  

If two or more 'traf' boxes are contained within the same 'moof' box, and both have base-data-offset-present = 0 and default-base-is-moof = 0, the first 'traf' will be relative to the enclosing 'moof', but the second 'traf' will be relative to end of the data in the first 'traf'.  IOW, the first 'traf' uses "movie-fragment relative addressing" and the second 'traf' does not.

So loosening up the restrictions from 'must have default-base-is-moof' to 'cannot have base-data-offset-present' goes too far.

Here is my counterproposal:

Current text:
"The Movie Fragment Box does not use movie-fragment relative addressing or the flag default-base-is-moof is not set."

Proposed text:
"The Movie Fragment Box does not use _movie-fragment relative addressing_."

and later:

"A Movie Fragment Box uses _movie-fragment relative addressing_ when either of the following conditions are met:
  * Every Track Fragment Box in the Movie Fragment Box has the ‘default-base-is-moof’ flag set
  * The Movie Fragment Box contains a single Track Fragment Box and that box does not have the 'base-data-offset-present’ flag set."

This makes the definition of "movie-fragment relative addressing" unambiguous, and loosens up the restriction only enough to cover the YouTube case.
Comment 3 Aaron Colwell 2014-02-08 16:58:18 UTC
I'm fine with Jer's proposal, but I believe it also means that we'll have to require that the data-offset-present flag be set on the first Track Fragment Run ('trun') box in every 'traf' box that is present in the 'moof'. If I understand the spec correctly, the 'moof' relative addressing only comes into play if data-offset-present is set in a 'trun' box. Otherwise if no 'data_offset' fields are present in any 'trun' boxes, the positions are relative to the beginning of the 'mdat' box that follows the 'moof' and each 'trun' requires parsing of the previous 'trun' even if that 'trun' is in a previous 'traf'.
Comment 4 Aaron Colwell 2014-03-03 23:46:59 UTC
Change committed
https://dvcs.w3.org/hg/html-media/rev/cad94fce3b90