Esta biblioteca pretende ser una implementación C amigable y portátil del formato de archivo de imagen AV1, como se describe aquí:
https://aomediacodec.github.io/av1-avif/
Puede codificar y decodificar todos los formatos YUV y profundidades de bits compatibles con AV1 (con alfa).
Se recomienda consultar/usar versiones etiquetadas en lugar de simplemente usar la rama principal. Regularmente crearemos nuevas versiones a medida que se agreguen funciones y correcciones de errores.
Consulte los ejemplos en el directorio "ejemplos". Si ya está compilando libavif
, habilite la opción CMake AVIF_BUILD_EXAMPLES
para compilar y ejecutar los ejemplos también.
libavif
es un paquete en la mayoría de los principales sistemas operativos.
vcpkg install libavif
También puede descargar los binarios oficiales de Windows en la página de lanzamiento.
Elaboración casera:
brew install libavif
Puertos Mac:
sudo port install libavif
Distribuciones basadas en Debian:
sudo apt install libavif-dev
Distribuciones basadas en Red Hat:
sudo yum -y install libavif
Para el entorno MSYS2 UCRT64 "predeterminado":
pacman -S mingw-w64-ucrt-x86_64-libavif
La construcción de libavif requiere CMake.
No hay códecs AV1 habilitados de forma predeterminada. Habilítelos configurando cualquiera de las siguientes opciones de CMake en LOCAL
o SYSTEM
, ya sea que desee utilizar una versión construida localmente o instalada en el sistema (por ejemplo, -DAVIF_CODEC_AOM=LOCAL
):
AVIF_CODEC_AOM
para libaom (codificador y decodificador)AVIF_CODEC_DAV1D
para dav1d (decodificador)AVIF_CODEC_LIBGAV1
para libgav1 (decodificador)AVIF_CODEC_RAV1E
para rav1e (codificador)AVIF_CODEC_SVT
para SVT-AV1 (codificador) Cuando se configuran en SYSTEM
, estas bibliotecas (en su formato API de C) deben estar disponibles externamente (descubribles a través de FIND_LIBRARY
de CMake) para usarlas, o si libavif es un proyecto secundario de CMake, el destino de CMake apropiado ya debe existir en el momento en que los scripts de CMake de libavif son ejecutados.
Cuando se establece en LOCAL
, CMake extraerá localmente estas bibliotecas y otras dependencias a versiones en buen estado.
Para anular una versión de dependencia local o utilizar una compilación personalizada de una dependencia, primero ejecute el script asociado en el subdirectorio ext/
.
Se pueden crear algunas pruebas escritas en C habilitando la opción AVIF_BUILD_TESTS
CMake.
Las pruebas restantes se pueden crear habilitando las opciones AVIF_BUILD_TESTS
y AVIF_ENABLE_GTEST
CMake. Requieren GoogleTest ( -DAVIF_GTEST=SYSTEM
o -DAVIF_GTEST=LOCAL
).
Las siguientes instrucciones se pueden utilizar para construir la biblioteca libavif y las herramientas avifenc
y avifdec
.
Para vincular las bibliotecas de dependencia aom
, libjpeg
y libpng
ya instaladas (recomendado):
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
Para fines de desarrollo y depuración, o para generar binarios completamente estáticos:
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
y avifdec.exe
vinculados estáticamente se pueden descargar desde la página Lanzamientos.
Consulte la wiki para obtener recursos adicionales sobre libavif, como la Lista de verificación de versiones.
La biblioteca libavif está escrita en C99. La mayoría de las pruebas están escritas en C++14.
Utilice clang-format para formatear las fuentes de la carpeta de nivel superior (se prefiere clang-format-16
):
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
Utilice cmake-format para formatear los archivos CMakeLists.txt de la carpeta de nivel superior:
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
Publicado bajo la licencia 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.