Expand description
SegmentTimeline as a lazy run table (ISO/IEC 23009-1 5.3.9.6).
A timeline is never expanded into one entry per segment: each S becomes
one run (first time, first number, duration, count) and a segment is
found by binary search. A @r of four billion therefore costs one run;
the total is still bounded by
crate::limits::MAX_TIMELINE_SEGMENTS so index arithmetic cannot
overflow.
Rules (5.3.9.6.1, restated in private/specs-verified/dash/docs-specs/23009-1/05-3-9-6-segment-timeline.md):
@t is absolute and never smaller than the previous run’s end; absent, a
run starts where the previous ended (the first at 0); @n restarts the
numbering; @r >= 0 gives r + 1 segments; a negative @r repeats up to
the next S@t, or for the last S to the Period end, as
ceil((end - time) / d) (the spec prints no rounding rule; this is the
transmux::SegmentTimeline::resolve reading, which the differential test
holds this to).
Structs§
- Timeline
Index - The lazily expanded timeline.
- Timeline
Segment - One segment of a timeline.