Timed Metadata Formatting

Validator implements checks to assert conformance to ISO/IEC 23001-18 Event Message Track for carriage of timed metadata. Also the spec text of DASH-IF Live media ingest dash_if_ingest clause 6.6 may be followed.

Must Fix: ISO/IEC 23001-18 clause 7.1

Timed metadata tracks shall use nmhd and and hdlr meta (ISO/IEC 14496-12 clause 12.3)

Validator check the hdlr and nmhd presence. This error implies that packager/encoder

This error implies that packager/encoder output is incorrect and must be fixed or the track is not a metadata track.

Must Fix: ISO/IEC 23001-18 clause 7.2 Sample Entry

Event Message tracks shall use the EventMessageSampleEntry format. DASH-IF dash_if_ingest also allows URIMetaSampleEntry and a scheme urn:mpeg:dash:event:2012

Validator checks the sample entry of a timed metadata track to be evte or urim.

This error implies that packager/encoder output is incorrect and must be fixed or the track is not a metadata track.

Must Fix: ISO/IEC 23001-18 clause 7.4 Sample format

Each ISO-BMFF sample in the track shall contain either

  • one or more EventMessageInstanceBoxes

  • or a single EventMessageEmptyBox

In the last case, the sample contains no EventMessageInstanceBoxes, and no events are active during the sample presentation time. Note: There is no required ordering of the EventMessageInstanceBoxes in the sample

Validator checks the validity of event message track samples.

This error implies that packager/encoder output is incorrect and must be fixed or the track is not a metadata track.

Must Fix: ISO/IEC 23001-18 clause 7.4 Sample Consistency

All instances of the same event shall contain identical values for all fields except the presentation_time_delta. Each instance is documented with one EventMessageInstanceBox in the track. Instances of the same event in the track are detected by using the algorithm as defined in ISO/IEC 23009-1 for detecting duplicate event messages. Each EventMessageInstanceBox documents an event message which has or will have an active interval.

If the media presentation time of the containing sample is T, the active interval is defined to run: from (T + presentation_time_delta) to, but not including (T + presentation_time_delta + event_duration). Each sample in the track also has a duration D. Each sample shall contain all events that have an active interval that overlaps the sample’s time interval [T, T+D). A sample may also contain instances of other events that become active after T+D i.e. future events.

Validator checks the sample consistency between subsequent samples.

This error implies that packager/encoder output is incorrect and must be fixed or the track is not a metadata track. In some cases such errors may accur if events arrived late at the encoder or packager generating the file.

Must Fix: ISO/IEC 23001-18 clause 8 Timing constraints and DASH-IF Live media ingest 6.6.8

Any sample with a presentation time and duration, shall contain all EventMessageInstanceBoxes active during the timespan from the presentation time up to but not including presentation time plus duration. Consequently, EventMessageInstanceBoxes with a duration extending multiple samples are carried in each of these samples.

A change in the set of active events shall trigger a sample boundary, with a matching presentation time, in other words, a new sample is introduced anytime an event is starting or ending

If the EventMessageInstanceBox.event_duration is zero or unknown, the sample duration shall not be zero, and may for example be a small value such as a single tick on the timescale.

Validator checks the sample timing constraints of (subsequent) samples.

This error implies that packager/encoder output is incorrect and must be fixed or the track is not a metadata track.

Should Fix: ISO/IEC 23001-18 clause 8 Timing constraints

One or more samples carrying EventMessageEmptyBox should be used to cover timespans where no event is active. If not the case, the sample contains an EventMessageInstanceBox that will become active or was active in the past.

If the sample is the first sample containing one or more specific instances of EventMessageInstanceBox, the EventMessageInstanceBox. presentation_time_delta should not be negative. However, if prior samples or parts of the track are not available EventMessageInstanceBox. presentation_time_delta may be negative to reflect the accurate presentation time of the event. (amended)

Validator checks consistency of samples.

Should Fix: DASH-IF Live Media ingest clause 6.6.3 and 6.6.4

To fulfill CMAF track requirements in [MPEGCMAF] clause 7.3., such as not having gaps in the media timeline, filler data may be needed. Such filler data SHALL be defined by the metadata scheme signaled in URIMetaSampleEntry. For example, WebVTT tracks define a VTTEmptyCueBox in [MPEG4-30] clause 6.6. This cue is to be carried in samples in which no active cue occurs. Other schemes could define empty fillers amongst similar lines, such as the EventMessageEmptyBox (emeb) in ISO/IEC 23001-18.

CMAF track files do not support overlapping, multiple concurrently active or zero duration samples. In case metadata or events are concurrent, overlapping or of zero duration, such semantics MUST be defined by the scheme signaled in the URIMetaSampleEntry. The timed metadata track MUST still conform to [MPEGCMAF] clause 7.3.

Validator checks for gaps and overlaps in both 23001-18 tracks and DASH-IF media ingest based tracks.

Should Fix: DASH-IF Live Media ingest clause 6.6.5.b

5b. The URIMetaSampleEntry SHOULD contain the URN “urn:mpeg:dash:event:2012” or an equivalent URN to signal the presence of DASHEventMessageBox’es.

Validator checks the urn in case URIMetaSampleEntry is used and raises a should fix error.

Should Fix: DASH-IF Live Media ingest clause 6.6.5.j and ISO/IEC 23001-18 7.4

5j. The value and id field of the DASHEventMessageBox can be used by the receiving entity to detect duplicate events.

Instances of the same event in the track are detected by using the conditions as defined in ISO/IEC 23009-1 for detecting duplicate event messages.

id and value fields can be used to detect duplicates, thus messages with same id and value should be the same.

Validator checks for non identical messages that are supposed to be identical and raises a should fix warning.