5.5.0 - FFmpeg as dynamic frameworks (FFmpegBuild 2.0.0)
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,
@rpathinstall names) that Xcode embeds and signs inYourApp.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-gplnor--enable-version3), not LGPL-3.0 as FFmpegBuild's README previously claimed. FFmpegBuild now carries the correct text plus aLICENSES/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 tofrom: "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.