DashManifest

data class DashManifest(val isDynamic: Boolean, val durationMicros: Long?, val periods: List<DashPeriod>, val baseUrl: String, val availabilityStartTimeMicros: Long? = null, val minimumUpdatePeriodMicros: Long? = null, val timeShiftBufferDepthMicros: Long? = null, val suggestedPresentationDelayMicros: Long? = null, val location: String? = null, val utcTimings: List<DashUtcTiming> = emptyList(), val alternativeBaseUrls: List<DashBaseUrls> = emptyList())

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

Link copied to clipboard
constructor(isDynamic: Boolean, durationMicros: Long?, periods: List<DashPeriod>, baseUrl: String, availabilityStartTimeMicros: Long? = null, minimumUpdatePeriodMicros: Long? = null, timeShiftBufferDepthMicros: Long? = null, suggestedPresentationDelayMicros: Long? = null, location: String? = null, utcTimings: List<DashUtcTiming> = emptyList(), alternativeBaseUrls: List<DashBaseUrls> = emptyList())

Properties

Link copied to clipboard

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.

Link copied to clipboard

availabilityStartTime, in microseconds since 1970 UTC: the moment a live presentation's time 0 became available.

Link copied to clipboard

The manifest-level BaseURL chain already applied onto the fetch URL.

Link copied to clipboard

mediaPresentationDuration, microseconds, null when absent (live).

Link copied to clipboard
Link copied to clipboard

The Location element, resolved: where a live manifest is to be fetched from from now on, or null when it names none or one the policy refuses.

Link copied to clipboard

minimumUpdatePeriod, microseconds: how long a live manifest stays current before it is fetched again.

Link copied to clipboard
Link copied to clipboard

suggestedPresentationDelay, microseconds: how far behind the live edge the manifest asks a player to play.

Link copied to clipboard

timeShiftBufferDepth, microseconds: how far behind the live edge a live presentation's segments stay available.

Link copied to clipboard

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.