Skip to content

6.0.0 - visionOS support

Choose a tag to compare

@superuser404notfound superuser404notfound released this 29 Jul 12:03

Superseded by 6.0.1. This tag pins LibDovi 1.1.0, which has been withdrawn (a platform-floor raise is breaking and belonged in a major, and as a minor it also broke every 5.x pin that floated onto it), so 6.0.0 no longer resolves. 6.0.1 carries the same content against LibDovi 2.0.0.

visionOS joins iOS, tvOS and macOS as a supported build platform, and the tvOS floor moves to 17.0. That floor change is the only breaking part of this release: no public symbol was removed or renamed.

Added

  • visionOS as a build platform. Package.swift declares .visionOS(.v1), and the engine builds for both visionOS device and the visionOS Simulator against FFmpegBuild 2.4.0 and LibDovi 1.1.0, which carry the xros slices. The FFmpeg slice is feature-identical to the tvOS one, down to byte-identical codec, demuxer, filter and parser lists, so Dolby Vision, HDR10+, Atmos bridging, dav1d, teletext and the sidecar demuxers are all present rather than trimmed. Requested by jihongboo (#161).

    Three source sites learned about the platform:

    • VTCapabilityProbe: the AV1 supplemental-decoder registration was guarded on tvOS / iOS / macOS versions only, and a platform absent from #available counts as available, so visionOS reached an API introduced in 26.2. The VTIsHardwareDecodeSupported gate below it needed nothing; that API is there from visionOS 1.0.
    • AirPlay: AVPlayer.isExternalPlaybackActive is unavailable on visionOS, which has no receiver to hand a stream to. The KVO observation is compiled out and reads go through a helper that is false there, so the whole "serve the loopback over the device's LAN IP" path (#86 / #227) is inert.
    • SampleBufferRenderer: preventsDisplaySleepDuringVideoPlayback does not exist (there is no idle timer to hold off) and preferredDynamicRange arrives in visionOS 26.0.

    The tvOS-only display-criteria layer needed no changes at all: visionOS has no HDMI mode handshake, so the criteria-free routing the iOS path already uses applies as it stands.

    Playback on real hardware is unverified. This release is "it builds, and every codec path is compiled in", not "it has been watched on a Vision Pro". If you run it there, a report either way is welcome on #161.

Changed

  • BREAKING: the minimum tvOS version is 17.0, up from 16.0. This is a correction rather than a new requirement. LibDovi compiles its tvOS slices with -mtvos-version-min=17.0 and declares .tvOS(.v17), so an adopter building against tvOS 16 was already linking a binary that never supported it; the manifest simply claimed otherwise. It surfaces now because the LibDovi release carrying the visionOS slices also carries that correction. If you target tvOS 16, this release is the one to skip; nothing else about it will affect you.

Requirements

Min
iOS 16.0
tvOS 17.0
macOS 14.0
visionOS 1.0