Skip to content

5.20.5 - Stable and bounded live startup timing

Choose a tag to compare

@superuser404notfound superuser404notfound released this 24 Jul 15:27

Fixed

Stable live playlist timing (#209)

Live loopback sessions now keep one immutable TARGETDURATION and matching HOLD-BACK for the complete provider lifetime.

The first-manifest gate previously captured cadence once, while later playlist refreshes independently recomputed timing from mutable cadence and segment duration. A session could therefore change from TARGETDURATION:1 / HOLD-BACK=3 to TARGETDURATION:2 / HOLD-BACK=6 after AVPlayer was already ready and buffered.

The provider now owns one shared timing seal. The startup gate re-reads cadence until release and seals that decision; every later playlist build uses the same value.

Bounded fastZap startup (#208)

Explicit .fastZap sessions now have a bounded first-manifest wait on strict-realtime origins.

  • Full holdback remains preferred.
  • At least two finalized segments are always required.
  • After that threshold, .fastZap waits one observed-segment grace clamped to 0.5...2.0 seconds before allowing a shallow first window.
  • .standard retains the full-holdback guarantee.

The bounded path intentionally accepts the possibility of one early -16832 or a short rebuffer while the live window deepens.

Verification

  • deterministic AE#208 and AE#209 regression suites
  • full macOS test suite
  • strict Swift concurrency build with warnings as errors
  • iOS Simulator CI
  • tvOS Simulator CI

Issues #208 and #209 remain open for physical Apple TV retests.