● libmpv
Le décodeur : libmpv, notre propre build
Neverlag décode avec libmpv, la forme bibliothèque du lecteur mpv. Le lecteur mpv lui-même n’est pas inclus : pas de ligne de commande, pas de Lua, pas de JavaScript, pas de parties GPL.
Le build est le nôtre. mpv 0.41.0 et FFmpeg 8.0.3 viennent des archives de release non modifiées, plus libplacebo 7.360.1, libass 0.17.3, FreeType 2.13.3, FriBidi 1.0.16 et HarfBuzz 10.1.0 – compilés avec le clang d’Apple pour arm64 (Mac aussi en x86_64), liés en un framework par plateforme et intégrés à l’app comme Libmpv.xcframework.
FFmpeg est compilé en configuration strictement LGPL – sans parties GPL ni non libres. Pas de x264, pas de x265, pas de fdk-aac, pas d’OpenSSL – les connexions chiffrées passent par le système d’Apple. Le build s’interrompt si du code GPL devait y entrer.
FFmpeg, libplacebo, libass, FreeType, FriBidi et HarfBuzz sont non modifiés – aucun patch, seulement de la configuration. Le jeu de codecs est le jeu natif de FFmpeg, sans bibliothèques de codecs externes.
Décodage matériel par VideoToolbox, décodage logiciel en repli là où le matériel d’Apple n’accepte pas un format – le contenu entrelacé, par exemple. Son par la pile audio d’Apple, sous-titres par libass, traitement GPU par libplacebo sur Mac, iPhone et iPad ; sur l’Apple TV, Neverlag affiche lui-même chaque image à l’écran.
Le framework média (Libmpv.framework) se trouve comme fichier séparé, chargé dynamiquement, dans le bundle de l’app. L’app n’utilise que l’interface publique de libmpv. Tu peux remplacer le framework par ta propre compilation avec la même interface (LGPL 2.1 § 6 b) ; sur Mac, tu remplaces chaque copie présente dans le bundle. Sur iPhone, iPad et Apple TV, Apple exige en plus que tout le bundle de l’app soit re-signé avec ton propre certificat de développeur – c’est la plateforme qui l’impose, pas la licence. Les sources, le patch et les scripts de compilation nécessaires sont disponibles par l’offre écrite. Le moteur de flux lui-même n’est pas dans le framework mais dans l’app – remplacer le framework ne le touche pas.
Ce que nous avons modifié dans mpv
Nous n’avons pas simplement repris mpv tel quel. Pour les plateformes Apple, nous avons remanié le système de build afin que libmpv fonctionne sur Mac, iPhone, iPad et Apple TV sans les dépendances de bureau du lecteur mpv. Et nous avons étendu l’interface de rendu de libmpv d’un chemin par lequel les images décodées vont directement dans l’affichage propre de Neverlag – sans passer par les voies de sortie de mpv. C’est la base de Neverlag sur l’Apple TV : là, l’app affiche elle-même chaque image à l’écran. FFmpeg et toutes les autres bibliothèques sont inchangés. Les modifications sont sous LGPL 2.1 ou ultérieure ; nous fournissons le patch par l’offre écrite sur la page open source.
Open source : composants, licences, sommes de contrôle et offre de code source