● libmpv
Il decoder: libmpv, build propria
Neverlag decodifica con libmpv, la forma libreria del lettore mpv. Il lettore mpv in sé non è incluso: nessuna riga di comando, nessun Lua, nessun JavaScript, nessuna parte GPL.
La build è nostra. mpv 0.41.0 e FFmpeg 8.0.3 vengono dagli archivi di release non modificati, più libplacebo 7.360.1, libass 0.17.3, FreeType 2.13.3, FriBidi 1.0.16 e HarfBuzz 10.1.0 – compilati con il clang di Apple per arm64 (Mac anche x86_64), collegati in un framework per piattaforma e integrati nell’app come Libmpv.xcframework.
FFmpeg è compilato in configurazione strettamente LGPL – senza parti GPL e senza parti non libere. Niente x264, niente x265, niente fdk-aac, niente OpenSSL – le connessioni cifrate passano dal sistema di Apple. La build si interrompe se dovesse entrarvi codice GPL.
FFmpeg, libplacebo, libass, FreeType, FriBidi e HarfBuzz sono non modificati – nessuna patch, solo configurazione. Il set di codec è quello nativo di FFmpeg, senza librerie di codec esterne.
Decodifica hardware tramite VideoToolbox, decodifica software come ripiego dove l’hardware di Apple non accetta un formato – per esempio il materiale interlacciato. Audio tramite lo stack audio di Apple, sottotitoli tramite libass, elaborazione GPU tramite libplacebo su Mac, iPhone e iPad; su Apple TV Neverlag porta da sé ogni immagine sullo schermo.
Il framework multimediale (Libmpv.framework) sta come file separato, caricato dinamicamente, nel bundle dell’app. L’app usa solo l’interfaccia pubblica di libmpv. Puoi sostituire il framework con una tua compilazione con la stessa interfaccia (LGPL 2.1 § 6 b); sul Mac sostituisci ogni copia presente nel bundle. Su iPhone, iPad e Apple TV, Apple richiede inoltre che l’intero bundle dell’app venga firmato di nuovo con il tuo certificato da sviluppatore – lo impone la piattaforma, non la licenza. Sorgenti, patch e script di compilazione li ricevi tramite l’offerta scritta. Il motore di flusso in sé non sta nel framework ma nell’app – sostituire il framework non lo tocca.
Cosa abbiamo modificato in mpv
Non abbiamo semplicemente preso mpv così com’è. Per le piattaforme Apple abbiamo rielaborato il sistema di build, in modo che libmpv funzioni su Mac, iPhone, iPad e Apple TV senza le dipendenze desktop del lettore mpv. E abbiamo esteso l’interfaccia di rendering di libmpv con un percorso attraverso cui le immagini decodificate vanno direttamente nella visualizzazione propria di Neverlag – senza passare dalle vie di uscita di mpv. È la base di Neverlag su Apple TV: lì l’app porta da sé ogni immagine sullo schermo. FFmpeg e tutte le altre librerie sono invariati. Le modifiche sono sotto LGPL 2.1 o successiva; la patch la forniamo tramite l’offerta scritta sulla pagina open source.
Open source: componenti, licenze, somme di controllo e offerta del codice sorgente