Skip to content
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

Closed

Conversation

sandersaares
Copy link
Member

@sandersaares sandersaares commented Nov 7, 2018

Work in progress - do not merge.

This pull request adds a new section to IOP, defining an interoperable timing model.

Workflow:

  1. January 2019 - review period.
  2. February 2019 - merge this PR into IOP v5
  3. After merge - create separate PR to adjust other chapters to match (reference timing mechanisms instead of re-defining them; also adjust to match updated constraints).

@documentbot
Copy link

documentbot commented Nov 7, 2018

Automated build report

Build was successful. Outputs:

This comment will be updated after each build. Last update was at 2019-04-02 06:23:35Z.

@sandersaares
Copy link
Member Author

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.

@sandersaares sandersaares changed the title Period splitting example for #166 and #178 DASH timing model that forbids short representations but permits free period splitting Nov 12, 2018
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
Copy link

@technogeek00 technogeek00 left a 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.

DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved
@sandersaares sandersaares changed the title DASH timing model that forbids short representations but permits free period splitting Interoperable DASH timing model Jan 29, 2019
Copy link

@technogeek00 technogeek00 left a 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.

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

Copy link
Member Author

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.

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

Copy link
Member Author

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]].

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

Copy link
Member Author

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.

Copy link
Contributor

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?

Copy link
Member Author

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.

DASH-IF-IOP.bs.md Outdated Show resolved Hide resolved

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.

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

Copy link
Member Author

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=].

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

Copy link
Member Author

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.

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.

Copy link
Member Author

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=].

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

Copy link
Member Author

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.

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

Copy link
Member Author

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.

Copy link
Contributor

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?

Copy link
Member Author

@sandersaares sandersaares Feb 7, 2019

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.

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.

Copy link
Member Author

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.

@acbegen
Copy link

acbegen commented Feb 6, 2019

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.
In a document like IOP, I would not expect too many SHALL (as opposed to what we have now in IOP5).

@sandersaares
Copy link
Member Author

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.

@technogeek00
Copy link

Closing actual PR as contents have been merged, can reference back in closed state for historical conversations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants