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:
Either each level will be carried in its own ‘traf’ or,
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:
the number of ranges in a ‘ssix’ are usually the same as the number of levels in ‘leva’
for one subsegment, an ‘ssix’ box cannot declare the following: {level1, range_size1},
{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:
the bullet " Levels of partial subsegments shall be assigned…" should be removed, as it only re-phrases the constraints on level values from ‘leva’.
the bullet "Each level shall be assigned to exactly one partial subsegment, i.e. byte ranges for one level shall be contiguous. " should be rephrased
Indeed, declaring multiple byte ranges for a given level in a subsegment would lead to disjoint byte ranges, hence in contradiction with the semantics for ‘leva’.
We would like to have the group feedback on this topic. Probably, we need to clarify the specification where appropriated, removing from ‘ssix’ definition the re-phrasing of constraints from ‘leva’ definition.
Additional comment on ‘ssix’:
The “subsegment_count (32 bits) shall be equal to reference_count in the immediately preceding SegmentIndexBox” (i.e. 16 bits).
For consistency, we propose to move subsegment_count on 16 bits using an ‘ssix’ version 1.
Additional comment on ‘leva’:
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:Our understanding of this is that in case one wants to map frames to levels by temporal sublayer, there are 2 possibilities:
traf
’ or,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: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: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:ssix
’ are usually the same as the number of levels in ‘leva
’ssix
’ box cannot declare the following: {level1, range_size1},{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:ssix
’ definition the re-phrasing of constraints from ‘leva’ definition. Additional comment on ‘ssix
’: The “subsegment_count (32 bits) shall be equal to reference_count in the immediately preceding SegmentIndexBox” (i.e. 16 bits). For consistency, we propose to move subsegment_count on 16 bits using an ‘ssix
’ version 1. Additional comment on ‘leva
’: