-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Interoperable DASH timing model #210
Conversation
Automated build reportBuild was successful. Outputs: This comment will be updated after each build. Last update was at 2019-04-02 06:23:35Z. |
I have expanded the PR contents with a more substantial description of the timing model, focusing on the aspects of relevance to the topics under discussion. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quick review of the xlink addition, I've got a list of restrictions with Xlink that we've used to a high degree of success. I'll try to dig that out to see if there is anything useful for the IOP.
Unknown what right thing to do is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@haudiobe importing comments from your document for direct interaction here.
|
||
This chapter describes an interoperable view of DASH presentation timing and segment addressing. This interpretation is considerably narrower than afforded by [[MPEGDASH]], constraining services to a specific set of reasonably flexible behaviors that are highly interoperable with modern client platforms. Services conforming to this document SHALL use this timing model. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: What does this SHALL mean? This is not testable
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The purpose of this clause is to indicate that if services want to conform to IOP, they need to use this timing model. To emphasize that this is not some optional feature that can be toggled for some use cases. To emphasize that it is a mandatory part of making interoperable services.
I agree that it is not testable in isolation.
|
||
The playback of a static MPD SHALL NOT depend on the mapping of the MPD timeline to real time. A client MAY play any part of the presentation at any time. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: Correct as long as this is included within the availability times
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right. This links to #261
|
||
The playback of a static MPD SHALL NOT depend on the mapping of the MPD timeline to real time. A client MAY play any part of the presentation at any time. | ||
|
||
The MPD timeline of a dynamic MPD SHALL have a fixed mapping to real time, with each point on the timeline corresponding to a point in real time. Clients MAY introduce an additional offset with respect to real time [[#timing-timeshift|to the extent allowed by the time shift signaling in the MPD]]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: This is not a shall, just a statement of fact
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is a fact to one person is one interpretation out of many to another person. Outlining basic operating constants with SHALL seems perfectly sensible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A SHALL is always something that you can assert a test with. This is what Waqar does, looks for SHALLs and implements this. What would be the test?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can see the value in that usage but I would not say that this word "always" necessarily applies. It is one possible way to apply this terminology, perhaps one that you are used to. Certainly I cannot say it is a bad way to do it. However, I would not say it is the only way. The purpose of SHALLs is not only to express testable technical facts, it is first and foremost to express requirements that guide human beings in their actions.
I do not think it is a hard requirement to have a SHALL here. I will try experimenting with alternative phrasings when I have a moment.
|
||
Note: In addition to mapping the content to real time, [[#timing-mpd-updates|a dynamic MPD can be updated during the presentation]]. Updates may add new periods and remove or modify existing ones, though some restrictions apply. See [[#timing-mpd-updates]]. | ||
|
||
The zero point in the MPD timeline of a dynamic MPD SHALL be mapped to the point in real time indicated by `MPD@availabilityStartTime`. This value SHALL NOT change between MPD updates. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The zero point in the MPD timeline of a dynamic MPD SHALL be mapped to the point in real time indicated by
MPD@availabilityStartTime
.
From @haudiobe: Why SHALL? This is a definition. This is an anchor. See 4.3, clause 3.2.7.1
This value SHALL NOT change between MPD updates
From @haudiobe: Correct, but not the right place to be documented
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Marking definitions with SHALL seems reasonable to me. Not every reader has the same views on what are facts and what are optional features and what are valid interpretations of facts. SHALL makes it very unambiguous.
With regard to the place for it to be documented, I find it a suitable place but I am open to alternative suggestions if there is an obviously superior location to describe it.
:: Same as the `timescale` field of the Media Header Box and same as the `SegmentBase@timescale` attribute in the MPD. | ||
|
||
: `earliest_presentation_time` | ||
:: The start timestamp of the first [=media segment=] on the [=sample timeline=], in [=timescale units=]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: This is all defined in the ISO BMFF SPEC, so it is confusing to do it differently here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is copied from IOP v4 and just worded to match v5 terminology. I make no judgement on whether we need it in v4/v5 at all but it seems to be useful enough (especially as not all readers will always have BMFF on hand and this is quite a critical structure).
<figcaption>Explicit addressing uses a segment template that is combined with explicitly defined time spans for each [=media segment=] in order to reference [=media segments=], either by start time or by sequence number.</figcaption> | ||
</figure> | ||
|
||
The MPD SHALL contain a `SegmentTemplate/SegmentTimeline` element that contains a set of [=segment references=] which satisfies the requirements defined in this document. The references exist as a sequence of `S` elements, each of which references one or more [=media segments=] with start time `S@t` and duration `S@d` [=timescale units=] on the [=sample timeline=]. The `SegmentTemplate@duration` attribute SHALL NOT be present. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: These are all repetitions of the DASH spec, and are confusing. They can be used as explanation, but not new requirements.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The contribution text is designed to be readable on its own. It is not a COR or AMD for DASH, to only cover gaps.
|
||
Note: Only additional references are counted, so `S@r=5` indicates a total of 6 consecutive [=media segments=] with the same duration. | ||
|
||
The start time of a [=media segment=] SHALL be calculated from the start time and duration of the previous [=media segment=] if not specified by `S@t`. There SHALL NOT be any gaps or overlap between [=media segments=]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: What does it mean: "The start time of a media segment SHALL". It is a definition, not a requirement
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is a definition and what is a requirement is not a big difference in my mind. Different readers have different viewpoints. Clearly stating things we expect to be constants in the universe using SHALL statements makes sense to me and avoids alternative interpretations or doubt from easily arising.
|
||
#### Inaccuracy in media segment timing when using simple addressing #### {#timing-addressing-inaccuracy} | ||
|
||
When using [=simple addressing=], the samples contained in a [=media segment=] MAY cover a different time span on the [=sample timeline=] than what is indicated by the nominal timing in the MPD, as long as no constraints defined in this document are violated by this deviation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From @haudiobe: There is a very clear and detailed requirement on this in v4.3. Please check 3.2.7.1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not understand the purpose of this comment.
I agree that there is some text in 3.2.7.1 that has a certain degree of overlap.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK so we need to combine 3.2.7.1 with this text?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this text is not meant to be purely additive. It restates parts of IOP v4.3 in many places, simply with more clarified wording.
|
||
## Segment alignment ## {#timing-segmentalignment} | ||
|
||
[=Media segments=] are said to be aligned if the start/end points of all [=media segments=] on the [=sample timeline=] are equal in all [=representations=] that belong to the same adaptation set. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
start/end points of all media segments on the sample timeline are equal
From @haudiobe: Please check MPEG-DASH – very clearly defined in clause 4. The above is not correct as it would not allow different frame rates in one adaptation set.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If different frame rates would lead to non-aligned segments then YES they are not allowed in one adaptation set.
However, it does not necessarily follow that different frame rates would lead to non-aligned segments. You can still do it with alignment, you just cannot do it arbitrarily but have to maintain the alignment.
I agree with Thomas. SHALL statements require testing for interoperability. Definitions do not (though everybody needs to implement it that way). If you want it to use for definition, I suggest you use lower case "shall" or "must", as the uppercase versions have a different meaning. |
to align with widespread terminology. #246
The content is merged into master branch but I leave this PR open as some discussions on language aspects here might still be beneficial (potentially). However, for any new comments please open new issues on GitHub. |
Closing actual PR as contents have been merged, can reference back in closed state for historical conversations. |
Work in progress - do not merge.
This pull request adds a new section to IOP, defining an interoperable timing model.
Workflow: