Open source in Neverlag

Last updated: 26 September 2026

Neverlag plays video with the mpv stack: mpv, FFmpeg, libplacebo and the subtitle libraries around them. Most of it is licensed under the GNU Lesser General Public License (LGPL) 2.1 or later. This page is the notice the LGPL asks for: which components are in the app, in which exact versions, where their source code is, what we changed, how we build them, how you can replace the library, and our written offer to provide the source.

Neverlag itself — the app, its user interface and everything outside the media framework — is not open source. The libraries listed here are, and they stay under their own licences. The licence texts are in the app under Settings → About Neverlag → Legal → Open-source licences, unchanged from the source packages.

Components

Versions as pinned in the build (Vendor/build-scripts/versions.env in the Neverlag repository). Each source link points to exactly that version; the checksum is the SHA-256 of the release archive we build from, or the commit of the tag.

Component Version Licence Platforms Role in Neverlag Source code
mpv (libmpv) 0.41.0 LGPL-2.1-or-later all Playback core: demuxing, decoding, timing, subtitles, the render API. Built with Neverlag changes (patch below). mpv (libmpv) 0.41.0 SHA-256 ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209
FFmpeg 8.0.3 LGPL-2.1-or-later all Containers, protocols, decoders (libavformat, libavcodec, libavfilter, libswscale, libswresample, libavutil). Strict LGPL configuration, no GPL or non-free parts. FFmpeg 8.0.3 SHA-256 6136812ea6d4e68bdba27e33c2a94382711cdf4f8602ffef056ff792bd6f9818
libplacebo 7.360.1 LGPL-2.1-or-later all GPU video processing used by mpv (colour management, scaling, tone mapping). Cloned with submodules; OpenGL on Mac, iPhone and iPad, CPU path on Apple TV. libplacebo 7.360.1 Commit cee9b076f2c63104ccfd497fa79c39a867293ec4
glad part of libplacebo 2.0.8 MIT Mac, iPhone / iPad OpenGL function loader generated inside the libplacebo build. glad 2.0.8 Commit 73db193f853e2ee079bf3ca8a64aa2eaf6459043
fast_float part of libplacebo 8.2.2 MIT all Header-only number parsing used by libplacebo. fast_float 8.2.2 Commit 97b54ca9e75f5303507699d27c6b4f4efe4641a1
libass 0.17.3 ISC all Subtitle rendering (ASS/SSA, text subtitles). libass 0.17.3 SHA-256 eae425da50f0015c21f7b3a9c7262a910f0218af469e22e2931462fed3c50959
FreeType 2.13.3 FTL all Font rasterisation for subtitles. FreeType 2.13.3 SHA-256 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289
FriBidi 1.0.16 LGPL-2.1-or-later all Bidirectional text (Arabic, Hebrew) in subtitles. FriBidi 1.0.16 SHA-256 1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c
HarfBuzz 10.1.0 MIT all Text shaping for subtitles. HarfBuzz 10.1.0 SHA-256 6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82
GRDB.swift 7.11.1 MIT all SQLite access for the local catalogue and programme guide (Swift package, not part of the media framework). GRDB.swift 7.11.1

How the libraries are linked — and how to replace them

The libraries (mpv, FFmpeg, libplacebo, FriBidi and the others in the table) are built into one media framework that ships as a separate file inside the app bundle (folder Frameworks) and is loaded when the app starts. The app talks to it through the public libmpv API (client.h, render.h, stream_cb.h and the render_cb.h added by our patch) and through the FFmpeg headers listed below.

Because the framework is a separate, dynamically loaded file, you can replace it with your own build — a different mpv version, your own FFmpeg configuration, a patched libplacebo — as long as it keeps the same interface (LGPL 2.1 §6 b). Build it from the sources and flags on this page, sign it with your own certificate, and put it in place of the shipped framework (Libmpv.framework — on the Mac it is embedded twice: in the app, which uses libavformat for recordings, and in the playback service PlaybackService.xpc, which runs mpv; replace both). On a Mac that is all; on iPhone, iPad and Apple TV the platform additionally requires the whole app bundle to be re-signed with your own developer certificate — a rule of Apple's platform, not of this licence.

Neverlag does not contain the mpv player, only libmpv: no command line, no Lua or JavaScript scripting, no GPL parts. FFmpeg is configured strictly LGPL (--disable-gpl --disable-nonfree --disable-version3), mpv with -Dgpl=false.

What Neverlag changed

FFmpeg, libplacebo, libass, FreeType, FriBidi and HarfBuzz are built from the unmodified release archives. mpv is built with the following changes, published as one patch against the release tarball:

  1. meson.build: compile osdep/utils-mac.c on Apple platforms even without Cocoa, because the CoreAudio and AudioUnit outputs reference its string helpers. All platforms.
  2. meson.build: allow the VideoToolbox-GL hardware decoding path to build against plain OpenGL instead of requiring the Cocoa or iOS GL back ends. Mac only.
  3. A new libmpv render back end "cb" (include/mpv/render_cb.h, video/out/libmpv_cb.c, option -Dlibmpv-cb): it hands the decoded frame to the app without copying it instead of rendering it. Enabled on Apple TV and on iPhone / iPad.

neverlag-mpv-changes.patch — Download: neverlag-mpv-changes.patch (mpv 0.41.0, unified diff, applies with patch -p1). The changes are licensed under the LGPL 2.1 or later like the files they touch.

How we build

All libraries are compiled with Apple clang from Xcode for arm64 (Mac additionally x86_64), deployment targets macOS 14.0, iOS 17.0, tvOS 17.0. TLS goes through the system (SecureTransport); no OpenSSL, GnuTLS or Mbed TLS is linked. The flags below are the ones in the build scripts; lines marked with a platform apply to that platform only.

FFmpeg

./configure --enable-static --disable-shared --enable-pic --pkg-config-flags=--static
  --disable-autodetect --disable-gpl --disable-nonfree --disable-version3
  --enable-videotoolbox --enable-audiotoolbox
  --disable-doc --disable-programs --disable-avdevice
  --enable-protocol=file,http,https,tcp,tls,crypto,hls
  --enable-demuxer=mpegts,hls,mov,matroska,mpegps,flv
  --enable-decoder=h264,hevc,mpeg2video,mpeg4,vp9,av1
  --enable-decoder=aac,ac3,eac3,mp2,mp3,opus,flac
  --enable-zlib --enable-securetransport
# iPhone / iPad
  --enable-cross-compile --target-os=darwin --arch=arm64 --sysroot=<iPhoneOS SDK>
# Apple TV
  --enable-cross-compile --target-os=darwin --arch=arm64 --sysroot=<AppleTVOS SDK>
# Mac
  (x86_64 slice: --enable-cross-compile --target-os=darwin --arch=x86_64)

No encoders except what the listed decoders imply; no libx264, libx265, libfdk-aac or other GPL/non-free parts. The build aborts if config.h does not contain CONFIG_GPL 0.

mpv (libmpv)

meson setup --default-library static --buildtype release
  -Dlibmpv=true -Dcplayer=false -Dgpl=false -Dtests=false
  -Dcocoa=disabled -Dswift-build=disabled -Dmacos-cocoa-cb=disabled
  -Dmacos-media-player=disabled -Dmacos-touchbar=disabled -Davfoundation=disabled
  -Dlua=disabled -Djavascript=disabled -Duchardet=disabled -Dzimg=disabled -Djpeg=disabled
  -Dlibarchive=disabled -Dlibbluray=disabled -Drubberband=disabled -Dvapoursynth=disabled
  -Dmanpage-build=disabled -Dhtml-build=disabled
# Mac
  -Dplain-gl=enabled -Dvideotoolbox-gl=enabled
# iPhone / iPad
  -Dlibmpv-cb=enabled -Dplain-gl=enabled -Dios-gl=enabled
  -Dvideotoolbox-gl=disabled -Dvideotoolbox-pl=disabled
  -Daudiounit=enabled -Dcoreaudio=disabled
# Apple TV
  -Dlibmpv-cb=enabled -Dgl=disabled -Dplain-gl=disabled -Dios-gl=disabled
  -Dvideotoolbox-gl=disabled -Dvideotoolbox-pl=disabled
  -Daudiounit=enabled -Dcoreaudio=disabled

Source tree = release tarball + neverlag-mpv-changes.patch (see above). -Dgpl=false selects the LGPL build of mpv.

libplacebo

meson setup --default-library static --buildtype release
  -Dvulkan=disabled -Dd3d11=disabled -Dshaderc=disabled -Dglslang=disabled
  -Dlcms=disabled -Dlibdovi=disabled -Ddemos=false -Dtests=false
# Mac
  -Dopengl=enabled
# iPhone / iPad
  -Dopengl=enabled
# Apple TV
  -Dopengl=disabled

xxHash is not found by the build (pkg-config is limited to the build prefix); libplacebo falls back to its built-in SipHash (public domain).

libass

./configure --disable-shared --enable-static --disable-fontconfig

FreeType

meson setup --default-library static --buildtype release
  -Dharfbuzz=disabled -Dbrotli=disabled -Dbzip2=disabled -Dpng=disabled -Dzlib=system -Dtests=disabled

FriBidi

meson setup --default-library static --buildtype release -Ddocs=false -Dtests=false -Dbin=false

HarfBuzz

meson setup --default-library static --buildtype release
  -Dfreetype=enabled -Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dicu=disabled
  -Dtests=disabled -Ddocs=disabled -Dintrospection=disabled -Dutilities=disabled
# Mac
  -Dcoretext=enabled
# iPhone / iPad
  -Dcoretext=enabled
# Apple TV
  -Dcoretext=disabled

Libmpv.framework (packaging)

libtool -static -o libmpv-full.a libmpv.a libplacebo.a libass.a libharfbuzz.a libfribidi.a libfreetype.a
  libavformat.a libavcodec.a libavfilter.a libswscale.a libswresample.a libavutil.a
clang -dynamiclib -Wl,-all_load libmpv-full.a -install_name @rpath/Libmpv.framework/Libmpv
  -compatibility_version 1 -current_version 1 -Wl,-dead_strip
  -Wl,-exported_symbols_list Libmpv.exports   # _mpv_* _av* _sws_* _swr_* _swscale_* _swresample_*
  -lz -liconv -lc++ -framework VideoToolbox -framework AudioToolbox -framework CoreAudio
  -framework CoreMedia -framework CoreVideo -framework CoreText -framework CoreGraphics
  -framework Security -framework IOSurface -framework CoreFoundation
# Mac
  -arch arm64 -arch x86_64 -mmacosx-version-min=<macOS target> -framework OpenGL
  install_name @rpath/Libmpv.framework/Versions/A/Libmpv (versioned bundle)
# iPhone / iPad
  -target arm64-apple-ios<iOS target> -framework OpenGLES -framework AVFoundation -framework UIKit
# Apple TV
  -target arm64-apple-tvos<tvOS target> -framework AVFoundation -framework UIKit

Vendor/build-scripts/make-framework.sh: the static archives are linked into one dynamic library per platform (Mach-O dylib, install name @rpath/Libmpv.framework/…), wrapped as Libmpv.framework with the headers, a module map (modules Libmpv and Libmpv.CFFmpeg) and Info.plist, and assembled into Libmpv.xcframework. Xcode embeds it in the app bundle (Frameworks/) and signs it. Only the public C API is exported.

Written offer (source code)

For at least three years from the date you received your copy of Neverlag, axiena AG will give any third party who asks the complete corresponding machine-readable source code of the LGPL-licensed libraries in exactly the versions the app contains — including all Neverlag modifications (the patch above) and the scripts and configuration used to build them — for a charge no more than our cost of performing this distribution. This offer is made under section 4 and section 6 c of the GNU Lesser General Public License 2.1.

Write to support@neverlag.app or info@axiena.ch and name the app version and platform (Settings → About Neverlag). You will get download links to the archives; if you prefer a physical medium, we will send one at cost.

axiena AG
Einsiedlerstrasse 535
8810 Horgen, Switzerland
support@neverlag.app · info@axiena.ch

Other third-party material

libass (ISC), FreeType (FreeType License), HarfBuzz (MIT), glad (MIT), fast_float (MIT) and GRDB.swift (MIT) require their licence and copyright notices to be reproduced; they are in the app under Open-source licences.

The demo channels play excerpts and trailers of the Blender Open Movies, © Blender Foundation, licensed under Creative Commons Attribution (CC BY 2.5 and 3.0), re-encoded and partly shortened for demo mode.

← Back to the start page