Эта библиотека призвана стать дружественной, переносимой реализацией C формата файла изображения AV1, как описано здесь:
https://aomediacodec.github.io/av1-avif/
Он может кодировать и декодировать все поддерживаемые AV1 форматы YUV и битовую глубину (с альфа-каналом).
Рекомендуется проверять/использовать выпуски с тегами, а не просто использовать основную ветку. Мы будем регулярно создавать новые версии по мере добавления исправлений ошибок и новых функций.
Пожалуйста, посмотрите примеры в каталоге «examples». Если вы уже собираете libavif
, включите параметр CMake AVIF_BUILD_EXAMPLES
, чтобы также собирать и запускать примеры.
libavif
— это пакет для большинства основных ОС.
vcpkg install libavif
Вы также можете скачать официальные двоичные файлы Windows на странице выпуска.
Домашнее пиво:
brew install libavif
МакПорты:
sudo port install libavif
Дистрибутивы на базе Debian:
sudo apt install libavif-dev
Дистрибутивы на базе Red Hat:
sudo yum -y install libavif
Для среды MSYS2 UCRT64 «по умолчанию»:
pacman -S mingw-w64-ucrt-x86_64-libavif
Для сборки libavif требуется CMake.
По умолчанию кодеки AV1 не включены. Включите их, установив для любого из следующих параметров CMake значение LOCAL
или SYSTEM
независимо от того, хотите ли вы использовать локально созданную или установленную в системе версию (например, -DAVIF_CODEC_AOM=LOCAL
):
AVIF_CODEC_AOM
для libaom (кодер и декодер)AVIF_CODEC_DAV1D
для dav1d (декодер)AVIF_CODEC_LIBGAV1
для libgav1 (декодер)AVIF_CODEC_RAV1E
для rav1e (кодер)AVIF_CODEC_SVT
для SVT-AV1 (кодер) Если установлено значение SYSTEM
, эти библиотеки (в их форме C API) должны быть доступны извне (обнаружены через FIND_LIBRARY
CMake) для их использования, или, если libavif является дочерним проектом CMake, соответствующая цель CMake должна уже существовать к моменту выполнения сценариев CMake libavif. выполняются.
Если установлено значение LOCAL
, эти библиотеки и другие зависимости будут локально перенесены CMake в заведомо исправные версии.
Чтобы переопределить локальную версию зависимости или использовать пользовательскую сборку зависимости, сначала запустите связанный сценарий в подкаталоге ext/
.
Несколько тестов, написанных на C, можно создать, включив опцию CMake AVIF_BUILD_TESTS
.
Остальные тесты можно создать, включив параметры CMake AVIF_BUILD_TESTS
и AVIF_ENABLE_GTEST
. Им требуется GoogleTest ( -DAVIF_GTEST=SYSTEM
или -DAVIF_GTEST=LOCAL
).
Следующие инструкции можно использовать для сборки библиотеки libavif и инструментов avifenc
и avifdec
.
Чтобы связать с уже установленными библиотеками зависимостей aom
, libjpeg
и libpng
(рекомендуется):
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
В целях разработки и отладки или для создания полностью статических двоичных файлов:
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
и avifdec.exe
можно загрузить на странице «Релизы».
Пожалуйста, проверьте вики дополнительные ресурсы по libavif, такие как Контрольный список выпуска.
Библиотека libavif написана на C99. Большинство тестов написаны на C++14.
Используйте clang-format для форматирования источников из папки верхнего уровня (предпочтительно 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
Используйте cmake-format для форматирования файлов CMakeLists.txt из папки верхнего уровня:
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
Выпущено под лицензией 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.