Commit a6d428a
fix(video): drop master playlist, advertise media.m3u8 directly to AVPlayer
Verified via standalone aetherctl on macOS QuickTime (which uses the
same AVFoundation HLS pipeline as tvOS AVPlayer):
* With our previous master.m3u8 (`#EXTM3U / #EXT-X-VERSION:7 /
#EXT-X-INDEPENDENT-SEGMENTS / #EXT-X-STREAM-INF:BANDWIDTH=…,
CODECS="dvh1",RESOLUTION=3840x2076,VIDEO-RANGE=PQ / media.m3u8`),
AVPlayer fetches the master once or twice, then drops the session
without ever attempting `media.m3u8`. No errorLog, no
failedToPlayToEndTime, no item.status=failed. Just AVPlayer parking
in `waitingToPlay`. Tried the full RFC 6381 form `dvh1.08.06`,
same outcome.
* Pointing AVPlayer at `media.m3u8` directly (skipping the master
entirely) the engine immediately starts serving init.mp4, seg0,
seg1, … and AVPlayer buffers smoothly through the playlist.
The audio path has always worked this way (no master, the buffered
provider returns nil for `masterCodecs` and `HLSLocalServer.playlist
URL` advertises `media.m3u8`). Adopt the same architecture for video.
Trade-off: lose the explicit `VIDEO-RANGE=PQ` / `CODECS=dvh1.08.LL`
signaling on the variant level. AVPlayer must infer Dolby Vision from
the init segment's `dvh1` sample-entry FourCC, the `dvvC`
configuration box, and the `colr` atom's BT.2020+PQ primaries /
transfer / matrix. Apple's HLS authoring guidance for DV recommends
master-level signaling but doesn't require it for single-variant
streams; segment-level signaling alone is enough for AVPlayer to
recognise the bitstream as DV. Whether the HDMI Dolby Vision
handshake on a capable TV engages with no master playlist is the
follow-up empirical check on the next build.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 9a98899 commit a6d428a
2 files changed
Lines changed: 33 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
645 | 645 | | |
646 | 646 | | |
647 | 647 | | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | | - | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
653 | 673 | | |
654 | 674 | | |
655 | 675 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
14 | 22 | | |
15 | 23 | | |
16 | 24 | | |
| |||
0 commit comments