DashManifest
A DASH MPD parsed in pure commonMain Kotlin, because libxml2 was refused as a dependency. The model keeps what segment resolution needs and nothing else: periods, adaptation sets, representations, the three segment addressing forms (template with number or timeline, an explicit list, and one file with a segment index), BaseURL chains, and the clock of a live presentation.
Honest scope, stated where it is true: static (VOD) presentations resolve fully. A dynamic (live) manifest parses with its clock, and Dash.mediaItemFor plays it when HLS can carry its segments; DashManifestParser.segmentPlan still refuses it. Several Periods play joined when HLS can carry every one of them (#403). Xlink is out of this tier, and an encrypted set is parsed for its ContentProtection schemes only, so the door can refuse it (#404).
Constructors
Properties
Every base address that the manifest names other locations for (#440): several BaseURL elements at one level, which ISO/IEC 23009-1, 5.6 makes alternative locations of the same segments, as broadcasters use them to fail over from one network to another. Empty for a manifest that names one location at every level, which is most of them.
availabilityStartTime, in microseconds since 1970 UTC: the moment a live presentation's time 0 became available.
mediaPresentationDuration, microseconds, null when absent (live).
minimumUpdatePeriod, microseconds: how long a live manifest stays current before it is fetched again.
suggestedPresentationDelay, microseconds: how far behind the live edge the manifest asks a player to play.
timeShiftBufferDepth, microseconds: how far behind the live edge a live presentation's segments stay available.
The UTCTiming elements, in the manifest's order of preference: where a player reads the time of day that a live manifest's clock counts against, rather than trusting the device's.