Source des bibliothèques livrées

Infinite Media Player embarque un moteur de lecture et ses dépendances. Elles sont toutes sous licence libre, et deux d'entre elles — mpv et FFmpeg — sont sous licence GNU LGPL. La LGPL vous donne le droit de les modifier, de les recompiler, et de les remplacer dans l'application. Cette page est l'offre de source qui rend ce droit effectif.

Ce qui est publié, et ce qui ne l'est pas

Ce qui est publié ici, c'est le code source des bibliothèques libres livrées : mpv, FFmpeg, les correctifs media_kit, et la ligne de compilation exacte. Ce qui ne l'est pas, c'est le code de l'application elle-même : il n'est pas sous licence libre, et il n'a pas à l'être. Les bibliothèques livrées ne sont pas de la GPL, mais de la LGPL — qui autorise l'application à rester propriétaire.

1. Les bibliothèques livrées

Les bibliothèques natives embarquées, avec leur licence réelle.
ComposantVersionLicenceRôle
mpv (via libmpv) 0.36.0 LGPL v2.1+ Le moteur de lecture. Il décode le MPEG-TS, le HLS et le MKV, y compris les codecs qu'AVFoundation ne sait pas lire (HEVC, DTS).
FFmpeg (dans libmpv) 6.0 LGPL v3 Les décodeurs et les multiplexeurs, embarqués dans libmpv.
libass 0.17.1 ISC Le rendu des sous-titres.
dav1d 1.2.1 BSD 2 clauses Le décodeur AV1.
media_kit 1.2.6 MIT La couche Dart qui pilote libmpv.

mpv est compilé avec -Dgpl=false, et FFmpeg sans --enable-gpl ni --enable-nonfree : il n'y a aucun code GPL dans ce qui est livré. Sur Windows, ce n'est pas la recette qui l'affirme : c'est la bibliothèque livrée elle-même, dont les six bibliothèques FFmpeg annoncent « LGPL version 3 or later », et dont la configuration de compilation est recopiée mot pour mot dans l'archive. La mention ci-dessous est obligatoire, et FFmpeg l'exige mot pour mot :

This software uses libraries from the FFmpeg project under the LGPLv2.1 and LGPLv3.

FFmpeg exige que son nom et sa licence soient mentionnés, et que la source du logiciel soit téléchargeable depuis la page où l'application se télécharge. C'est cette page. Nous ne possédons pas FFmpeg, ni mpv : les détenteurs de leurs droits sont les projets FFmpeg et mpv, et leurs mentions de droit d'auteur sont reproduites dans les archives (mpv-Copyright.txt, ffmpeg-LICENSE.md).

Les textes de licence complets sont dans la page Licences.

2. Pourquoi la source est publiée

La LGPL 2.1 (§6) offre quatre voies de conformité. Infinite est dans le cas de la voie (b), « shared library mechanism » : libmpv est une bibliothèque partagée sur chaque plateforme (Mpv.framework et les frameworks FFmpeg sur macOS et iOS, libmpv.so sur Android, libmpv-2.dll sur Windows), et non du code recopié dans l'exécutable.

La FAQ de la GNU précise cependant que si l'on distribue soi-même la bibliothèque avec l'application, il faut aussi distribuer sa source. C'est pourquoi la source de mpv et de FFmpeg est publiée ici, correspondant exactement aux binaires distribués.

La voie retenue est l'accès équivalent au source depuis le même endroit (LGPL 2.1 §6(d)) : les archives sont dans le dossier source/ de ce site, avec leur somme SHA-256 dans un manifeste. En filet de sécurité, l'offre de source écrite de la §6(c) est également proposée — voir la section 5.

Enfin, la LGPL 3 (§4(b)) exige que le texte de la GPL accompagne celui de la LGPL. C'est pourquoi les deux sont joints, et publiés sur la page Licences.

3. Les archives

Les versions diffèrent selon les plateformes : il y a une archive par famille de binaires, et non une seule pour tous.

Les archives, et la version de chaque composant dans chacune.
PlateformempvFFmpegArchive
macOS et iOS 0.36.0 (v0.36.0) 6.0 (n6.0) infinite-source-darwin.tar.gz
Android (téléphones, Android TV, Fire TV) commit 78d43740f52db817d98bcf24fb30a76ab6fa13ff commit ea3d24bbe3c58b171e55fe2151fc7ffaca3ab3d2 infinite-source-android.tar.gz
Windows commit 652a1dd90711839acdccc08004056d25514ef2d8 6.0 (n6.0) infinite-source-windows.tar.gz

L'archive macOS contient également la source de la version iOS : les deux plateformes sortent du même dépôt de compilation, avec le même source de mpv et de FFmpeg.

Le nom de chaque archive est stable : il ne change pas d'une version à l'autre, et le lien ci-dessus est donc le même quel que soit le binaire que vous avez téléchargé. La date de compilation, la taille exacte et la somme SHA-256 de chaque archive sont dans le manifeste :

source/manifest.json

Ce que vous pouvez vérifier

Chaque archive porte une somme SHA-256, et le manifeste donne la même somme pour le fichier que vous avez téléchargé. Les deux doivent correspondre :

shasum -a 256 infinite-source-.tar.gz

Les archives sont produites par le script de compilation du projet, et déposées dans le dossier source/, avec le manifeste ci-dessus. La spécification du dossier et du manifeste décrit précisément ce que le script produit.

Chaque archive contient :

Le détail de ce que doit contenir chaque archive — noms, versions, sommes SHA-256, emplacement, format du manifeste — est décrit dans source/README.md.

4. La marche à suivre

Le but de cette procédure est simple : vous devez pouvoir remplacer libmpv par votre version, et recompiler l'application avec elle.

  1. Télécharger l'archive correspondant à votre plateforme, dans le tableau ci-dessus.
  2. Vérifier l'intégrité. La somme SHA-256 de chaque archive est publiée dans source/manifest.json. Sur macOS et Linux : shasum -a 256 infinite-source-darwin.tar.gz — le nom de fichier est celui de l'archive que vous avez téléchargée. La somme affichée doit être identique à celle du manifeste.
  3. Extraire l'archive. Elle contient les sources de mpv et de FFmpeg, la recette de compilation qui a produit le binaire — donc les correctifs media_kit —, le fichier LIGNE-DE-COMPILATION.txt et les licences.
  4. Appliquer les correctifs media_kit, dans l'ordre indiqué par la recette, puis compiler avec les commandes exactes qui sont écrites dans LIGNE-DE-COMPILATION.txt. Aucun paramètre n'est à deviner, et aucune option n'y est abrégée.
  5. Remplacer la bibliothèque compilée par la vôtre : Mpv.framework et les frameworks FFmpeg sur macOS et iOS, libmpv.so sur Android, libmpv-2.dll sur Windows.
  6. Recompiler l'application avec la bibliothèque remplacée.

La licence vous en donne le droit : la LGPL garantit que l'utilisateur peut modifier et recompiler la bibliothèque, et aucune condition d'utilisation ne peut y déroger.

5. L'offre de source écrite

Si le téléchargement direct ne vous convient pas, ou si vous ne parvenez pas à obtenir une archive, vous pouvez en faire la demande. L'éditeur s'engage à vous transmettre l'archive correspondante, et ce pendant trois ans à compter de la date de publication (LGPL 2.1 §6(c)).

Une demande par courriel suffit ; aucune pièce jointe n'est nécessaire. L'offre est faite au nom de l'éditeur, qui distribue l'application elle-même.

6. Ce que nous ne faisons pas

Deux précisions, pour que la page soit exacte :

Pour le reste — les licences, leurs versions exactes, et le texte des licences en entier — voir la page Licences.