bastimeyer · GitHub

Remove requirement from publishTime and availabilityStartTime in dynamic DASH manifests and simply default to UNIX Epoch.


Resolves #6322

According to ISO/IEC 23009-1:2022 section 5.3.1.2, MPD@publishTime is an optional attribute with a default value, and it "shall be present" in dynamic manifests, same as the MPD@availabilityStartTime attribute. For static manifests, we've already set these attributes to optional in the parser, as they are not important in this case.

For dynamic manifests however, defaulting to UNIX Epoch can be problematic, depending on whether segment timelines include at least one timestamp anchor or not. If they don't, as the SegmentTimeline.S@t attribute is optional (section 5.3.9.6.2), then their anchor is the manifest's publishTime. Defaulting to 1970-01-01T00:00:00Z in dynamic manifests and using that as the anchor doesn't make sense, hence why MPD@publishTime was previously set as a required attribute.

Parsers however should always be more lenient with data that's not 100% valid, so let's fix the attribute requirement.

The MPD@availabilityStartTime changes don't have any tests here, but that should be fine.

Read the original on github.com ↗