Skip to content

5.5.0 - FFmpeg as dynamic frameworks (FFmpegBuild 2.0.0)

Choose a tag to compare

@superuser404notfound superuser404notfound released this 17 Jul 06:54

FFmpeg ships as dynamically linked frameworks

AetherEngine 5.5.0 adopts FFmpegBuild 2.0.0. No API changes; existing callers compile and run unchanged. The minor bump signals a packaging change in the dependency graph.

What changed

  • Dynamic linking. The FFmpeg xcframeworks were static archives that SPM linked into the adopting app's binary. They are now dynamic frameworks (dylib-in-framework, @rpath install names) that Xcode embeds and signs in YourApp.app/Frameworks/ automatically. For closed-source App Store apps this is the shape that keeps the LGPL relink requirement satisfiable; statically linked LGPL code in a closed binary has no realistic compliance path.
  • License statement corrected. The FFmpeg parts are LGPL-2.1-or-later (built with neither --enable-gpl nor --enable-version3), not LGPL-3.0 as FFmpegBuild's README previously claimed. FFmpegBuild now carries the correct text plus a LICENSES/ directory covering every component (FFmpeg LGPL-2.1+, dav1d BSD-2-Clause, zimg WTFPL, libzvbi LGPL-2.0+).
  • libzvbi GPL excision. zvbi's tree contains GPL-2 sources (packet-830.c, pdc.c, exp-vtx.c), and one of them was reachable from the LGPL part of the library, so it was being statically linked into consuming apps. FFmpegBuild 2.0.0 excludes those files and stubs the two referenced entry points; they sit behind event masks the teletext decoder never registers, so teletext subtitles are unaffected.
  • README. The License section now states explicitly that AetherEngine's App Store / DRM exception covers the engine's own code and does not extend to FFmpeg, and points adopters at FFmpegBuild's documented steps (embed dynamically, reproduce the license texts, link the source of the exact build).

Adopter notes

  • Update alongside FFmpegBuild: SemVer keeps from: "1.x" pins on the static 1.0.5; this release moves the engine's own pin to from: "2.0.0".
  • Your app bundle grows a Frameworks/ directory with nine frameworks (~9.5 MB on tvOS arm64 in total, comparable to the previous static contribution to the app binary).
  • If you ship on the App Store, reproduce the license texts from FFmpegBuild's LICENSES/ directory in your app (acknowledgements screen or bundled file) and state that the app uses FFmpeg.

Acknowledgements

Thanks to the adopter whose careful licensing review of the FFmpeg story flagged the static/dynamic contradiction and prompted the whole cleanup.