Cette bibliothèque vise à être une implémentation C conviviale et portable du format de fichier image AV1, comme décrit ici :
https://aomediacodec.github.io/av1-avif/
Il peut encoder et décoder tous les formats YUV et profondeurs de bits pris en charge par AV1 (avec alpha).
Il est recommandé d'extraire/d'utiliser les versions balisées au lieu d'utiliser simplement la branche principale. Nous créerons régulièrement de nouvelles versions au fur et à mesure que des corrections de bugs et des fonctionnalités seront ajoutées.
Veuillez consulter les exemples dans le répertoire "exemples". Si vous construisez déjà libavif
, activez l'option CMake AVIF_BUILD_EXAMPLES
afin de créer et d'exécuter également les exemples.
libavif
est un package présent dans la plupart des principaux systèmes d'exploitation.
vcpkg install libavif
Vous pouvez également télécharger les binaires Windows officiels sur la page de publication.
Homebrew :
brew install libavif
MacPort :
sudo port install libavif
Distributions basées sur Debian :
sudo apt install libavif-dev
Distributions basées sur Red Hat :
sudo yum -y install libavif
Pour l'environnement MSYS2 UCRT64 « par défaut » :
pacman -S mingw-w64-ucrt-x86_64-libavif
Construire libavif nécessite CMake.
Aucun codec AV1 n'est activé par défaut. Activez-les en définissant l'une des options CMake suivantes sur LOCAL
ou SYSTEM
que vous souhaitiez utiliser une version construite localement ou installée sur le système (par exemple -DAVIF_CODEC_AOM=LOCAL
) :
AVIF_CODEC_AOM
pour libaom (encodeur et décodeur)AVIF_CODEC_DAV1D
pour dav1d (décodeur)AVIF_CODEC_LIBGAV1
pour libgav1 (décodeur)AVIF_CODEC_RAV1E
pour rav1e (encodeur)AVIF_CODEC_SVT
pour SVT-AV1 (encodeur) Lorsqu'elles sont définies sur SYSTEM
, ces bibliothèques (sous leur forme API C) doivent être disponibles en externe (détectables via FIND_LIBRARY
de CMake) pour les utiliser, ou si libavif est un projet CMake enfant, la cible CMake appropriée doit déjà exister au moment où les scripts CMake de libavif sont exécutés.
Lorsqu'elles sont définies sur LOCAL
, ces bibliothèques et les autres dépendances seront extraites localement par CMake vers des versions connues.
Pour remplacer une version de dépendance locale ou pour utiliser une version personnalisée d'une dépendance, exécutez d'abord le script associé dans le sous-répertoire ext/
.
Quelques tests écrits en C peuvent être construits en activant l'option AVIF_BUILD_TESTS
CMake.
Les tests restants peuvent être construits en activant les options AVIF_BUILD_TESTS
et AVIF_ENABLE_GTEST
CMake. Ils nécessitent GoogleTest ( -DAVIF_GTEST=SYSTEM
ou -DAVIF_GTEST=LOCAL
).
Les instructions suivantes peuvent être utilisées pour créer la bibliothèque libavif et les outils avifenc
et avifdec
.
Pour établir un lien avec les bibliothèques de dépendances aom
, libjpeg
et libpng
déjà installées (recommandé) :
git clone -b v1.1.1 https://github.com/AOMediaCodec/libavif.git
cmake -S libavif -B libavif/build -DAVIF_CODEC_AOM=SYSTEM -DAVIF_BUILD_APPS=ON
cmake --build libavif/build --parallel
À des fins de développement et de débogage, ou pour générer des binaires entièrement statiques :
git clone -b v1.1.1 https://github.com/AOMediaCodec/libavif.git
cmake -S libavif -B libavif/build -DBUILD_SHARED_LIBS=OFF -DAVIF_CODEC_AOM=LOCAL -DAVIF_LIBYUV=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_JPEG=LOCAL -DAVIF_ZLIBPNG=LOCAL -DAVIF_BUILD_APPS=ON -DCMAKE_C_FLAGS_RELEASE= " -static " -DCMAKE_EXE_LINKER_FLAGS= " -static "
cmake --build libavif/build --parallel
avifenc.exe
et avifdec.exe
liés statiquement peuvent être téléchargés à partir de la page Versions.
Veuillez consulter le wiki pour des ressources supplémentaires sur libavif, telles que la liste de contrôle de publication.
La bibliothèque libavif est écrite en C99. La plupart des tests sont écrits en C++14.
Utilisez clang-format pour formater les sources du dossier de niveau supérieur ( clang-format-16
préféré) :
clang-format -style=file -i
apps/ * .c apps/ * / * .c apps/ * / * .cc apps/ * / * .h examples/ * .c
include/avif/ * .h src/ * .c src/ * .cc
tests/ * .c tests/ * / * .cc tests/ * / * .h
Utilisez cmake-format pour formater les fichiers CMakeLists.txt du dossier de niveau supérieur :
cmake-format -i
CMakeLists.txt
tests/CMakeLists.txt
cmake/Modules/ * .cmake
contrib/CMakeLists.txt
contrib/gdk-pixbuf/CMakeLists.txt
android_jni/avifandroidjni/src/main/jni/CMakeLists.txt
Publié sous la licence BSD.
Copyright 2019 Joe Drago. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1 . Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2 . Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.