You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DrHurt's codec writeup in #4 lists AV1 with Main and High profiles + DV
10 / 10.1 / 10.4 as AVPlayer-supported. The engine previously dispatched
ALL AV1 sources to the SW pipeline (regardless of platform), which left
HW-AV1 devices (M3+ Mac, iPhone 15 Pro+, hypothetical future Apple TV)
without the AVPlayer benefits — Atmos passthrough, Dolby Vision HDMI
handshake, system HDR / HDR10+ pipeline.
This commit adds:
1. `AetherEngine.load` dispatch checks `VTCapabilityProbe.av1Available`
per-source. When the platform's VideoToolbox has an AV1 decoder
(currently HW only — see below), AV1 sources route to the native
HLS-fMP4 + AVPlayer path. Otherwise, they continue routing to
`SoftwarePlaybackHost` (dav1d via libavcodec).
2. `HLSVideoEngine` re-accepts AV1 in its codec gate. Plain AV1 emits
`av01` codec tag and a full Apple HLS Authoring Spec CODECS string
with proper color signaling (`av01.<profile>.<level><tier>.<bitDepth>.<monochrome>.<chromaSub><chromaSub><chromaPos>.<colorPrim>.<transfer>.<matrix>.<videoFullRange>`).
3. `DVVariant` enum gains AV1 entries `.av1Profile10` / `.av1Profile101`
/ `.av1Profile104` / `.av1Profile102`. `classifyDVVariant` takes a
`codecID` argument and dispatches HEVC vs AV1 profile interpretation
correctly (the old code lumped Dolby profile 10 in with HEVC P8.x,
which was a quiet bug — DV profile 10 is AV1's DV envelope per
Dolby ETSI TS 103 572).
4. AV1+DV codec-tag generation per Apple HLS Authoring Spec patterns
(analogous to existing HEVC+DV):
- P10.0 (no base): `dav1` track tag + `dav1.10.LL` codec string,
range PQ.
- P10.1 (HDR10 base): same `dav1` shape; HDR10 fallback implicit.
- P10.4 (HLG base): `av01` track tag + `av01.0.LL.10.0.111.09.18.09.0`
primary CODECS + SUPPLEMENTAL `dav1.10.LL/db4h`, range HLG.
- P10.2 (SDR base): rejected (rare, like P8.2).
FFmpeg's mp4 muxer writes the `dvvC` box automatically when
codecpar carries DOVI side data (profile > 7 → `dvvC` per
`libavformat/movenc.c:2505-2507`).
**Probe correction note:** an earlier draft of this change made
`VTCapabilityProbe.av1Available` optimistic on iOS 17+ / macOS 14+
(returned true based on Apple's "dav1d in macOS 14+" announcement).
Empirically verified on M1 macOS 26.4: `VTIsHardwareDecodeSupported(av01)`
returns false and `AVURLAsset.isPlayable` returns false for AV1
sources, even after explicit `VTRegisterSupplementalVideoDecoderIfAvailable`
registration. Apple's HLS-fMP4 pipeline requires HW AV1 in practice; the
shipped dav1d is reachable via direct file playback on some Apple silicon
configurations but not via AVPlayer's HLS pipeline. The probe stays on
strict HW gating, which is what the original 1893327 fix correctly
established.
**AV1+DV testing:** no publicly available AV1+DV samples to validate
against. Dolby's professional tooling is closed; Netflix / YouTube TV
content is locked behind their apps. The codec-tag generation follows
Apple HLS Authoring Spec patterns directly transferred from the
verified HEVC+DV implementation. Real-world verification deferred
until AV1+DV content becomes accessible.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments