Diese Bibliothek soll eine benutzerfreundliche, portable C-Implementierung des AV1-Bilddateiformats sein, wie hier beschrieben:
https://aomediacodec.github.io/av1-avif/
Es kann alle von AV1 unterstützten YUV-Formate und Bittiefen (mit Alpha) kodieren und dekodieren.
Es wird empfohlen, getaggte Releases auszuchecken/zu verwenden, anstatt nur den Hauptzweig zu verwenden. Wir werden regelmäßig neue Versionen erstellen, wenn Fehlerkorrekturen und Funktionen hinzugefügt werden.
Bitte sehen Sie sich die Beispiele im Verzeichnis „examples“ an. Wenn Sie bereits libavif
erstellen, aktivieren Sie die CMake-Option AVIF_BUILD_EXAMPLES
um auch die Beispiele zu erstellen und auszuführen.
libavif
ist ein Paket in den meisten großen Betriebssystemen.
vcpkg install libavif
Sie können auch die offiziellen Windows-Binärdateien auf der Release-Seite herunterladen.
Selbstgebraut:
brew install libavif
MacPorts:
sudo port install libavif
Debian-basierte Distributionen:
sudo apt install libavif-dev
Red Hat-basierte Distributionen:
sudo yum -y install libavif
Für die „Standard“-MSYS2-UCRT64-Umgebung:
pacman -S mingw-w64-ucrt-x86_64-libavif
Für die Erstellung von libavif ist CMake erforderlich.
Standardmäßig sind keine AV1-Codecs aktiviert. Aktivieren Sie sie, indem Sie eine der folgenden CMake-Optionen auf LOCAL
oder SYSTEM
setzen, unabhängig davon, ob Sie eine lokal erstellte oder eine vom System installierte Version verwenden möchten (z. B. -DAVIF_CODEC_AOM=LOCAL
):
AVIF_CODEC_AOM
für libaom (Encoder und Decoder)AVIF_CODEC_DAV1D
für dav1d (Decoder)AVIF_CODEC_LIBGAV1
für libgav1 (Decoder)AVIF_CODEC_RAV1E
für rav1e (Encoder)AVIF_CODEC_SVT
für SVT-AV1 (Encoder) Bei Einstellung auf SYSTEM
müssen diese Bibliotheken (in ihrer C-API-Form) extern verfügbar sein (erkennbar über FIND_LIBRARY
von CMake), um sie verwenden zu können. Wenn libavif ein untergeordnetes CMake-Projekt ist, muss das entsprechende CMake-Ziel zum Zeitpunkt der CMake-Skripte von libavif bereits vorhanden sein werden ausgeführt.
Bei der Einstellung LOCAL
werden diese Bibliotheken und die anderen Abhängigkeiten von CMake lokal in bekanntermaßen funktionierende Versionen gezogen.
Um eine lokale Abhängigkeitsversion zu überschreiben oder einen benutzerdefinierten Build einer Abhängigkeit zu verwenden, führen Sie zunächst das zugehörige Skript im Unterverzeichnis ext/
aus.
Einige in C geschriebene Tests können durch Aktivieren der CMake-Option AVIF_BUILD_TESTS
erstellt werden.
Die verbleibenden Tests können durch Aktivieren der CMake-Optionen AVIF_BUILD_TESTS
und AVIF_ENABLE_GTEST
erstellt werden. Sie erfordern GoogleTest ( -DAVIF_GTEST=SYSTEM
oder -DAVIF_GTEST=LOCAL
).
Die folgenden Anweisungen können zum Erstellen der libavif-Bibliothek und der Tools avifenc
und avifdec
verwendet werden.
So verknüpfen Sie die bereits installierten Abhängigkeitsbibliotheken aom
, libjpeg
und libpng
(empfohlen):
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
Für Entwicklungs- und Debugzwecke oder zum Generieren vollständig statischer Binärdateien:
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
Statisch verknüpfte avifenc.exe
und avifdec.exe
können von der Seite „Releases“ heruntergeladen werden.
Bitte schauen Sie im Wiki nach zusätzlichen Ressourcen zu libavif, wie zum Beispiel der Release-Checkliste.
Die libavif-Bibliothek ist in C99 geschrieben. Die meisten Tests sind in C++14 geschrieben.
Verwenden Sie clang-format, um die Quellen aus dem Ordner der obersten Ebene zu formatieren ( clang-format-16
bevorzugt):
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
Verwenden Sie cmake-format, um die CMakeLists.txt-Dateien aus dem Ordner der obersten Ebene zu formatieren:
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
Veröffentlicht unter der BSD-Lizenz.
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.