PrismCore / Getting started

Platform requirements

Minimum OS versions, toolchain, dependencies and the FFmpeg build capabilities PrismCore 3.5.4 depends on.

Operating systems

PlatformMinimum
iOS / iPadOS16.0
tvOS17.0
macOS14.0
visionOS1.0

These are the package's declared deployment targets. A few APIs exist on one platform only — DisplayCriteriaController, which drives the HDMI display handshake, is tvOS only — and the API reference marks every such symbol.

Toolchain

  • Swift tools 6.0 (// swift-tools-version: 6.0). The PrismCore targets themselves compile in the Swift 5 language mode; your app can use either mode.
  • The test suite runs on Swift Testing. Some tests need Xcode's toolchain rather than the Command Line Tools — see Testing.

Dependencies

PackageRequirementProvides
MPVKit.upToNextMinor(from: "1.0.0")FFmpeg (libavformat, libavcodec, libavutil, libswresample, libswscale) as prebuilt dynamic xcframeworks, plus libdovi

FFmpeg is linked dynamically. No FFmpeg source is redistributed in the PrismCore repository; the binaries and their build recipes live with MPVKit.

Capabilities that depend on the FFmpeg build

Half of what the engine decides is a question about the build rather than the media. FFmpegBuild.capabilities and FFmpegBuild.summary report what the loaded build can do:

CapabilityWithout it
eac3 encoderThe audio bridge targets AAC instead of E-AC-3. Bridged tracks still play through AVPlayer, but as AAC (up to 5.1) — no bitstream passthrough to an AV receiver. Stock MPVKit ships E-AC-3 decoders only.
Any bridge encoder (eac3 or aac)A source whose audio all needs bridging goes to the software path, which decodes the audio itself — provided the build has a software decoder for its video.
AV1 decoderAV1 without a hardware decoder cannot use the software path.
pan / abuffer / abuffersink filtersNo dialogue-boost renditions (PrismCoreSession.isDialogueBoostAvailable).
GPU deinterlacer (yadif_videotoolbox)Interlaced video on the software path is deinterlaced on the CPU (bwdif), and hardware decode is given up for it.

Hardware video decode is asked of the device, not inferred: AV1 rides the native path only where VTIsHardwareDecodeSupported says the device has an AV1 decoder.

Sandbox and networking

  • macOS App Sandbox: binding the loopback server requires com.apple.security.network.server, even for 127.0.0.1.
  • Local network: only the opt-in AirPlay mode (reachability: .localNetworkUnencryptedForAirPlay) serves beyond loopback, and only over IPv4.
  • Remote sources are read by FFmpeg's own HTTP stack by default, or by PrismCore's coordinated HTTP reader when you opt in.