Networked Media Open Specifications
HOME OVERVIEW MODEL GUIDANCE GITHUB INFO... TOOLS... IS-XX... MORE... SEARCH

Explanation – Timing

←Explanation - Flow Representation · Index↑ · Extension - Ancestry→

Please ensure you have read the Summary and Definitions before considering the further detail covered by this page.

The model for a Flow associates time information with the data (each Entry associates a Time Value with a Data Object). This time information serves a number of purposes:

Note: Further discussion of Time Value uniqueness within a Flow can be found in 4.0. Appendix - Commentary.

In certain scenarios the Time Values have a relation to the real world time as we perceive it; and these Time Values might indicate when the events happened.

Time is assumed to be linear. Given that a Time Value is measured as the number of seconds relative to a zero-point, the time elapsed between two Time Values is given by subtracting one measurement from the other (assuming they use the same zero-point).

Time Contexts

The entity Time Context is intended to be very close in meaning to the term “timeline” that is used casually in relation to audio or video editing to describe the common time grid onto which media clips are placed.

Some example Time Contexts:

A number of Flows might use a single Time Context. But this Time Context is not necessarily the primary or intended synchronisation relationship.

For example, a Studio and a contribution from an Outside Broadcast share the Time Context defined as TAI time from the SMPTE epoch; that is, the Time Values in the Studio and Outside Broadcast are the same when content is captured at the same instant in time. However, it is likely that a re-timing component will be used at the Studio boundary to re-time the Outside Broadcast content so that it can be directly mixed with the studio content. So, content is sometimes re-timed even when it uses a shared Time Context. Refer to 3.3. Media Production Chains for more details on this example.

Representation of Time Values

A Time Value representation must provide sufficient information for the number of seconds it represents to be determined.

Example 1: A Time Value representation consists of a count value and a time unit. All Time Values in this Flow use the same time unit. The count alone can be used to compare with other Time Values in the same Flow. The time unit is needed to allow it to be compared with Time Values in other Flows.

A Time Value representation must have sufficient accuracy to allow relationships such as ordering and offsets to be established.

Example 2: A transfer for a final presentation includes an H.264 encoded video Flow and AAC encoded audio Flow that use a millisecond-resolution Time Value representation. This accuracy is sufficient for a final presentation context where sub-millisecond timing synchronisation errors are not a problem.

Example 3: A production chain consists of many operations that modify the timing information. It is important in this scenario that the timing errors are null or close to null to avoid the errors accumulating to an extent that they become an issue at the final presentation stage.

A Time Value representation can consist of a number of elements such as count, units, seconds, rate, timescale, etc. These elements can be communicated together with the media (in-band) or not (out-of-band). The specific requirements of the application determine which elements are used for a Time Value representation and how they are communicated.

Example 4: An audio Flow Representation might encode a Time Value as follows:

Example 5: An audio Flow Representation might encode a Time Value as follows:

In Examples 4 and 5 different approaches are taken to encoding the Time Values. However, each of the Time Value representations can be losslessly converted into the other – the result is that the Data Objects are at the same Time Values in these two examples. Therefore, these two Flow Representations could belong to the same Flow. Note that if the media rate in Example 5 is not taken into account then the Data Objects are at slightly different Time Values (41.666… vs 42 microseconds) and so the two Flow Representations cannot belong to the same Flow.

A Time Value is used to identify a Data Object within a time series of Data Objects. There are different approaches that can be taken to de-reference a time reference to a Data Object. For example:

Example 6: A store uses a frame count and a media rate to represent the Time Values in a Flow. A user requests a Data Object at a given millisecond count. The store converts the millisecond count to the nearest frame count using the media rate and then compares the result with the Time Value representations in the store.

←Explanation - Flow Representation · Index↑ · Extension - Ancestry→