À propos du projet

libavif est une implémentation portable en C du format AV1 Image File Format (AVIF), conçue pour être facile à intégrer dans d'autres projets. Elle prend en charge l'encodage et le décodage de tous les formats YUV et profondeurs de bits supportés par AV1, y compris l'alpha. En plus de la bibliothèque, elle fournit des outils en ligne de commande : avifenc pour l'encodage et avifdec pour le décodage. Utilisation de base en ligne de commande : avifenc -q 75 input.[jpg|png|y4m] output.avif avifdec output.avif decoded.png Exécutez avifenc --help pour la liste complète des options. Des exemples d'utilisation de l'API se trouvent dans le répertoire examples ; activer l'option CMake AVIF_BUILD_EXAMPLES les compile et les exécute. L'installation est disponible via les gestionnaires de paquets courants : vcpkg sous Windows, Homebrew ou MacPorts sous macOS, apt sous Linux basé sur Debian, yum sous Linux basé sur Red Hat, et pacman dans MSYS2 UCRT64. Les binaires Windows officiels sont publiés sur la page des releases. Les versions taguées sont recommandées plutôt que la branche main. La compilation nécessite CMake. Les dépendances sont contrôlées par des options CMake telles que AVIF_CODEC_AOM et AVIF_LIBYUV, qui acceptent OFF, SYSTEM ou LOCAL. Aucun codec AV1 n'est activé par défaut ; au moins un doit être sélectionné, parmi libaom (encodeur et décodeur), dav1d (décodeur), libgav1 (décodeur), rav1e (encodeur) et SVT-AV1 (encodeur). Libyuv est optionnel mais fortement recommandé pour des conversions d'espace colorimétrique plus rapides et vaut SYSTEM par défaut. Les tests peuvent être compilés avec AVIF_BUILD_TESTS ; les tests basés sur GoogleTest nécessitent AVIF_GTEST, et les tests de fuzzing utilisent fuzztest. La couverture de code est disponible via AVIF_ENABLE_COVERAGE et la cible avif_coverage avec clang et LLVM installés. Des exemples de lignes de commande de compilation couvrent l'édition de liens avec des dépendances installées et la compilation complète depuis zéro. La bibliothèque est écrite en C99, avec la plupart des tests en C++14. Le formatage utilise clang-format pour les sources et cmake-format pour les fichiers CMake. Le projet est publié sous licence BSD.