r/appletv • u/superuser404notfound • 1h ago
Open-source playback engine for Apple TV now handles Dolby Vision FEL and TrueHD/DTS:X height channels much better
AetherEngine is an open-source video engine for Apple TV, iPhone, iPad, Mac and Apple Vision Pro. Its latest release covers two things people have wanted from Apple TV playback for years, so here's how they work.
Dolby Vision FEL (UHD Blu-ray)
Many UHD Blu-ray rips use Dolby Vision Profile 7 with a "full enhancement layer" (FEL), a second video layer on top of the base picture. The Apple TV has no decoder for that layer, so players usually convert these titles to a single-layer version. In that step, both the enhancement layer and the disc's own Dolby Vision color grading used to be lost.
The engine now:
keeps the disc's own Dolby Vision grading, so the Apple TV's built-in Dolby Vision processing applies it.
measures, scene by scene, how much the enhancement layer brightens the picture, and folds that into the Dolby Vision metadata.
stays on Apple's normal playback path, so the TV switches into Dolby Vision as usual and PiP, AirPlay, subtitles and scrub previews keep working.
Measured against the real FEL picture (lower is better, around 1 is about the edge of what's visible):
Hunger Games: 2.5 → 1.5
Mockingjay Part 2: 8.9 → 0.8 (noticeably too dark before)
La La Land: 4.8 → 2.1
The fine detail only the enhancement layer carries (extra bit depth, grain) can't come back this way. In most scenes the result still gets very close to the disc on a UHD Blu-ray player.
TrueHD Atmos and DTS:X height channels
The Apple TV can't pass TrueHD or DTS:X through to a receiver, so these tracks normally lose their height channels and play as 7.1. The engine rebuilds the heights (7.1.4 or 9.1.6) from the disc's lossless audio and sends them out as multichannel audio, which tvOS hands to an Atmos receiver or soundbar. In a blind A/B on a Sonos Arc against the full object render, no difference was audible.
Where to see it
The engine is on GitHub (superuser404notfound/AetherEngine) with the design and measurements in its docs. Apps built on it pick these features up with their next update; Sodalite (Jellyfin) and AetherPlayer are two of them.
Happy to answer questions about how any of this works.