Open source in Neverlag
Neverlag riproduce video con lo stack mpv: mpv, FFmpeg, libplacebo e le librerie per i sottotitoli che li accompagnano. La maggior parte è rilasciata sotto la GNU Lesser General Public License (LGPL) 2.1 o successiva. Questa pagina è l’avviso richiesto dalla LGPL: quali componenti si trovano nell’app, in quali versioni esatte, dove sta il loro codice sorgente, cosa abbiamo modificato, come compiliamo, come puoi sostituire la libreria — e la nostra offerta scritta di fornire il codice sorgente.
Neverlag stesso — l’app, la sua interfaccia e tutto ciò che sta fuori dal framework multimediale — non è open source. Le librerie elencate qui lo sono e restano sotto le proprie licenze. I testi delle licenze si trovano nell’app in Impostazioni → Informazioni su Neverlag → Note legali → Licenze open source, senza modifiche rispetto ai pacchetti sorgente.
Componenti
Versioni come fissate nella compilazione (Vendor/build-scripts/versions.env nel repository Neverlag). Ogni link al sorgente punta esattamente a quella versione; il checksum è lo SHA-256 dell’archivio della release da cui compiliamo, oppure il commit del tag.
| Componente | Versione | Licenza | Piattaforme | Ruolo in Neverlag | Codice sorgente |
|---|---|---|---|---|---|
| mpv (libmpv) | 0.41.0 | LGPL-2.1-or-later | tutte | Nucleo di riproduzione: demuxing, decodifica, temporizzazione, sottotitoli, API di rendering. Compilato con le modifiche Neverlag (patch sotto). | mpv (libmpv) 0.41.0 SHA-256 ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209 |
| FFmpeg | 8.0.3 | LGPL-2.1-or-later | tutte | Contenitori, protocolli, decodificatori (libavformat, libavcodec, libavfilter, libswscale, libswresample, libavutil). Configurazione strettamente LGPL, senza parti GPL o non libere. | FFmpeg 8.0.3 SHA-256 6136812ea6d4e68bdba27e33c2a94382711cdf4f8602ffef056ff792bd6f9818 |
| libplacebo | 7.360.1 | LGPL-2.1-or-later | tutte | Elaborazione video su GPU per mpv (gestione del colore, ridimensionamento, tone mapping). Clone Git con sottomoduli; OpenGL su Mac, iPhone e iPad, percorso CPU su Apple TV. | libplacebo 7.360.1 Commit cee9b076f2c63104ccfd497fa79c39a867293ec4 |
| glad parte di libplacebo | 2.0.8 | MIT | Mac, iPhone / iPad | Caricatore di funzioni OpenGL, generato durante la compilazione di libplacebo. | glad 2.0.8 Commit 73db193f853e2ee079bf3ca8a64aa2eaf6459043 |
| fast_float parte di libplacebo | 8.2.2 | MIT | tutte | Parser numerico header-only, usato da libplacebo. | fast_float 8.2.2 Commit 97b54ca9e75f5303507699d27c6b4f4efe4641a1 |
| libass | 0.17.3 | ISC | tutte | Rendering dei sottotitoli (ASS/SSA, sottotitoli testuali). | libass 0.17.3 SHA-256 eae425da50f0015c21f7b3a9c7262a910f0218af469e22e2931462fed3c50959 |
| FreeType | 2.13.3 | FTL | tutte | Rasterizzazione dei caratteri per i sottotitoli. | FreeType 2.13.3 SHA-256 0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289 |
| FriBidi | 1.0.16 | LGPL-2.1-or-later | tutte | Testo bidirezionale (arabo, ebraico) nei sottotitoli. | FriBidi 1.0.16 SHA-256 1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c |
| HarfBuzz | 10.1.0 | MIT | tutte | Shaping del testo per i sottotitoli. | HarfBuzz 10.1.0 SHA-256 6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82 |
| GRDB.swift | 7.11.1 | MIT | tutte | Accesso SQLite per il catalogo locale e la guida TV (pacchetto Swift, non parte del framework multimediale). | GRDB.swift 7.11.1 |
Come sono collegate le librerie — e come sostituirle
Le librerie (mpv, FFmpeg, libplacebo, FriBidi e le altre della tabella) sono compilate in un unico framework multimediale, fornito come file separato nel bundle dell’app (cartella Frameworks) e caricato all’avvio dell’app. L’app vi accede tramite l’API pubblica libmpv (client.h, render.h, stream_cb.h e il render_cb.h aggiunto dal nostro patch) e tramite gli header FFmpeg elencati più sotto.
Poiché il framework è un file separato, caricato dinamicamente, puoi sostituirlo con una tua compilazione — un’altra versione di mpv, la tua configurazione di FFmpeg, un libplacebo con patch — purché l’interfaccia resti la stessa (LGPL 2.1 §6 b). Compilalo dai sorgenti e dalle opzioni di questa pagina, firmalo con il tuo certificato e mettilo al posto del framework fornito (Libmpv.framework — su Mac è presente due volte: nell’app, che usa libavformat per le registrazioni, e nel servizio di riproduzione PlaybackService.xpc, che esegue mpv; sostituisci entrambi). Su Mac è tutto; su iPhone, iPad e Apple TV la piattaforma richiede inoltre che l’intero bundle dell’app venga firmato di nuovo con il tuo certificato da sviluppatore — una regola della piattaforma Apple, non di questa licenza.
Neverlag non contiene il player mpv, solo libmpv: nessuna riga di comando, nessuno scripting Lua o JavaScript, nessuna parte GPL. FFmpeg è configurato strettamente LGPL (--disable-gpl --disable-nonfree --disable-version3), mpv con -Dgpl=false.
Cosa ha modificato Neverlag
FFmpeg, libplacebo, libass, FreeType, FriBidi e HarfBuzz vengono compilati dagli archivi di release non modificati. mpv lo compiliamo con le seguenti modifiche, pubblicate come un unico patch rispetto all’archivio della release:
- meson.build: compilare osdep/utils-mac.c sulle piattaforme Apple anche senza Cocoa, perché le uscite CoreAudio e AudioUnit usano le sue funzioni per le stringhe. Tutte le piattaforme.
- meson.build: permettere al percorso di decodifica hardware VideoToolbox-GL di compilarsi contro OpenGL semplice invece di richiedere i back-end GL Cocoa o iOS. Solo Mac.
- Un nuovo back-end di rendering libmpv «cb» (include/mpv/render_cb.h, video/out/libmpv_cb.c, opzione -Dlibmpv-cb): passa il fotogramma decodificato all’app senza copiarlo, invece di renderizzarlo. Attivo su Apple TV e su iPhone / iPad.
neverlag-mpv-changes.patch — Download: neverlag-mpv-changes.patch (mpv 0.41.0, diff unificato, si applica con patch -p1). Le modifiche sono sotto LGPL 2.1 o successiva, come i file che toccano.
Come compiliamo
Tutte le librerie vengono compilate con il clang di Apple fornito da Xcode per arm64 (Mac anche x86_64), target di distribuzione macOS 14.0, iOS 17.0, tvOS 17.0. Il TLS passa dal sistema (SecureTransport); non è collegato alcun OpenSSL, GnuTLS o Mbed TLS. Le opzioni qui sotto sono quelle degli script di compilazione; le righe contrassegnate con una piattaforma valgono solo per quella.
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) Nessuna parte GPL o non libera (niente libx264, libx265, libfdk-aac). La compilazione si interrompe se config.h non contiene 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 Albero dei sorgenti = archivio della release + neverlag-mpv-changes.patch (vedi sopra). -Dgpl=false seleziona la compilazione LGPL di 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 La compilazione non trova xxHash (pkg-config è limitato al prefisso di compilazione); libplacebo ricorre al suo SipHash integrato (pubblico dominio).
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: gli archivi statici vengono collegati, per piattaforma, in una libreria dinamica (dylib Mach-O, install name @rpath/Libmpv.framework/…), impacchettata con header, module map (moduli Libmpv e Libmpv.CFFmpeg) e Info.plist come Libmpv.framework e assemblata in Libmpv.xcframework. Xcode la incorpora nel bundle dell’app (Frameworks/) e la firma. Viene esportata solo l’API C pubblica.
Offerta scritta (codice sorgente)
Per almeno tre anni dal giorno in cui hai ricevuto la tua copia di Neverlag, axiena AG fornisce a qualsiasi terzo che ne faccia richiesta il codice sorgente completo, leggibile da macchina, delle librerie sotto licenza LGPL esattamente nelle versioni contenute nell’app — comprese tutte le modifiche Neverlag (il patch sopra) e gli script e la configurazione con cui vengono compilate — a un costo non superiore a quello sostenuto per questa consegna. Questa offerta è fatta ai sensi degli articoli 4 e 6 c della GNU Lesser General Public License 2.1.
Scrivi a support@neverlag.app o info@axiena.ch indicando versione dell’app e piattaforma (Impostazioni → Informazioni su Neverlag). Riceverai i link per scaricare gli archivi; se preferisci un supporto fisico, te lo inviamo al prezzo di costo.
axiena AG
Einsiedlerstrasse 535
8810 Horgen, Svizzera
support@neverlag.app · info@axiena.ch
Altro materiale di terzi
libass (ISC), FreeType (FreeType License), HarfBuzz (MIT), glad (MIT), fast_float (MIT) e GRDB.swift (MIT) richiedono che le loro note di licenza e di copyright vengano riprodotte; si trovano nell’app in Licenze open source.
I canali demo riproducono estratti e trailer dei Blender Open Movies, © Blender Foundation, con licenza Creative Commons Attribution (CC BY 2.5 e 3.0), ricodificati e in parte abbreviati per la modalità demo.