MPEGGroup / FileFormat

MPEG file format discussions
24 stars 0 forks source link

Interaction of subsegment index and level assignment #12

Closed dwsinger closed 4 days ago

dwsinger commented 4 years ago

While reading through the specification, we came across a few questions we would like to clarify. First, semantics for the ‘leva’ box (8.8.13.1) states:

For the context of the LevelAssignmentBox, a fraction is defined to consist of one or more MovieFragmentBoxes and the associated MediaDataBoxes, possibly including only an initial part of the last MediaDataBox. Within a fraction, data for each level shall appear contiguously. Data for levels within a fraction shall appear in increasing order of level value. All data in a fraction shall be assigned to levels. NOTE In the context of DASH (ISO/IEC 23009-1), each subsegment indexed within a SubsegmentIndexBox is a fraction

Our understanding of this is that in case one wants to map frames to levels by temporal sublayer, there are 2 possibilities:

  1. Either each level will be carried in its own ‘traf’ or,
  2. in case of single ‘traf’, multiple ‘trun’s will have to be used to order the samples by levels,

since the data for each layer shall appear in increasing order of level value. Is this understanding correct? The semantics for the ‘ssix’ box (8.16.4.1) states:

Each level shall be assigned to exactly one partial subsegment, i.e. byte ranges for one level shall be contiguous.

We understand this to mean that bytes for a level X are all contiguous in the subsegment and there shall be no bytes from another level in-between them. Is this the correct reading? The semantics for the ‘ssix’ box (8.16.4.1) also contains the following statement:

Levels of partial subsegments shall be assigned by increasing numbers within a subsegment, i.e., samples of a partial subsegment may depend on any samples of preceding partial subsegments in the same subsegment, but not the other way around. For example, each partial subsegment contains samples having an identical temporal level and partial subsegments appear in increasing temporal level order within the subsegment.

We note that meaning of relative values of levels are already constrained by the ‘leva’ semantics. We therefore understand this "Levels of partial subsegments shall be assigned ..." to mean that in the list of byte-range mapping in the ‘ssix’ for a subsegment, levels shall appear in increasing order. If our interpretation is correct, then we believe that:

{level2, range_size2}, {level1, range_size3}, {level2, range_size4} This seems to contradict figure 6 in DASH (the above Figure 3), where the ‘ssix’ has such a byte range layout (see L1 or L2 on Figure 3). If not , e.g. specifying multiple byte ranges for a given level in a subsegment is allowed, then:

cconcolato commented 4 months ago

Note that this topic is covered in the TuC (WG03N1197_23807). I'm proposing to close this issue and address it as part of the TuC resolution.