5.20.2 - Exact indexed IRAP seeking for VOD resume
Fixed
Mid-stream VOD resume and producer restarts now seek directly to the indexed video IRAP for the target segment (#191).
Root cause
The segment plan retained the exact video-stream IRAP timestamp, but the resume and restart paths converted it to seconds and issued an unconstrained global seek. On multi-stream B-frame MP4, libavformat could choose an earlier global sync point. The producer then had to scan and discard a whole GOP over the remote origin before it could write the requested segment, which made startup fragile on slow links.
Fix
- Seek on the video stream native timestamp axis.
- Use the indexed IRAP as both the target and lower bound, preventing an earlier landing.
- Retain the previous global-time fallback when the precise seek is unsupported.
- Keep folded multi-clip disc timelines on the compatibility path because their plan timestamps are not raw demuxer timestamps.
- Cover the landing behavior with the self-contained
Issue191IRAPSeekTestsB-frame MP4 fixture.
Acknowledgements
Thanks to @kskchaitanya1993 for the decisive slow-origin diagnostics.
Verification
Full suite: 976 tests in 161 suites; strict concurrency build clean; arm64 tvOS and iOS Simulator package builds green; pull request CI and release-commit CI green.