このライブラリは、ここで説明するように、AV1 画像ファイル形式のフレンドリーでポータブルな C 実装を目指しています。
https://aomediacodec.github.io/av1-avif/
AV1 がサポートするすべての YUV 形式とビット深度 (アルファ付き) をエンコードおよびデコードできます。
メインブランチだけを使用するのではなく、タグ付きリリースをチェックアウト/使用することをお勧めします。バグ修正や機能の追加に応じて、定期的に新しいバージョンを作成します。
「examples」ディレクトリ内のサンプルを参照してください。すでにlibavif
ビルドしている場合は、サンプルもビルドして実行できるように、CMake オプションAVIF_BUILD_EXAMPLES
を有効にします。
libavif
ほとんどの主要な OS に含まれるパッケージです。
vcpkg install libavif
リリース ページから公式 Windows バイナリをダウンロードすることもできます。
自作:
brew install libavif
Macポート:
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
(エンコーダーおよびデコーダー)AVIF_CODEC_DAV1D
(デコーダー)AVIF_CODEC_LIBGAV1
AVIF_CODEC_RAV1E
(rav1e の場合) (エンコーダー)AVIF_CODEC_SVT
SYSTEM
に設定した場合、これらのライブラリ (C API フォーム内) を使用するには、これらのライブラリが外部で利用可能 (CMake のFIND_LIBRARY
経由で検出可能) である必要があります。または、libavif が子 CMake プロジェクトである場合、libavif の CMake スクリプトが実行される時点までに適切な CMake ターゲットがすでに存在している必要があります。が実行されます。
LOCAL
に設定すると、これらのライブラリとその他の依存関係は、CMake によってローカルにプルされ、既知の正常なバージョンになります。
ローカルの依存関係バージョンをオーバーライドするか、依存関係のカスタム ビルドを使用するには、まずext/
サブディレクトリで関連するスクリプトを実行します。
C で書かれたいくつかのテストは、 AVIF_BUILD_TESTS
CMake オプションを有効にすることで構築できます。
残りのテストは、 AVIF_BUILD_TESTS
およびAVIF_ENABLE_GTEST
CMake オプションを有効にすることで構築できます。 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 に関する追加リソースについては wiki を確認してください。
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.