Skip to content

2.4.0 - visionOS slices

Latest

Choose a tag to compare

@superuser404notfound superuser404notfound released this 29 Jul 11:13

Every xcframework now ships xros-arm64 and xros-arm64-simulator alongside the existing five slices, and Package.swift declares .visionOS(.v1). Nothing else changed: the iOS, tvOS and macOS slices are bit-identical to 2.3.0.

Added

  • visionOS device and simulator slices. FFmpeg, dav1d, zimg and libzvbi all cross-compile to arm64-apple-xros1.0 and its simulator variant. The resulting slice is feature-identical to the tvOS one, verified by diffing the generated codec, demuxer, filter and parser lists: 39 decoders, 24 demuxers, 13 filters and 19 parsers, byte-identical sets, including yadif_videotoolbox for Metal deinterlacing, libdav1d, libzvbi_teletext, and the sup / webvtt sidecar demuxers. Binaries report platform VISIONOS minos 1.0 under vtool.

Local FFmpeg patches

One patch was added, bringing the total to four:

  • patch_ffmpeg_visionos: libavcodec/videotoolbox.c selects kCVPixelBufferOpenGLESCompatibilityKey under #if TARGET_OS_IPHONE, which is 1 on visionOS (TARGET_OS_IOS is the one that is 0). The key is marked unavailable there, because the platform has neither OpenGL ES nor OpenGL, so the hardware-decode path did not compile for xros. The patch takes the key out of the visionOS branch only. Nothing is lost: the attribute merely asks CoreVideo to make the buffer bindable as a GL texture, and on visionOS every consumer is Metal, which the IOSurface properties set alongside it already cover. TARGET_OS_VISION is defined as 0 on SDKs that predate it, and an undefined macro evaluates to 0 in #if, so the patch is a no-op on every other slice.

Everything else cross-compiled as it stands: dav1d's meson cross build, zimg's and zvbi's autotools, and FFmpeg's own configure with --target-os=darwin and an xros triple all needed no changes.

Note for consumers

The visionOS simulator slice is arm64-only, for the obvious reason: there is no Intel Vision Pro.

Built and verified against Xcode 26 with the visionOS 26.5 SDK; the package builds for both generic/platform=visionOS and the visionOS Simulator.