Pustaka ini bertujuan untuk menjadi implementasi C yang ramah dan portabel dari Format File Gambar AV1, seperti yang dijelaskan di sini:
https://aomediacodec.github.io/av1-avif/
Itu dapat menyandikan dan mendekode semua format YUV dan kedalaman bit yang didukung AV1 (dengan alfa).
Disarankan agar Anda memeriksa/menggunakan rilis yang diberi tag daripada hanya menggunakan cabang utama. Kami akan secara teratur membuat versi baru seiring dengan penambahan perbaikan bug dan fitur.
Silakan lihat contoh di direktori "contoh". Jika Anda sudah membuat libavif
, aktifkan opsi CMake AVIF_BUILD_EXAMPLES
untuk membuat dan menjalankan contoh juga.
libavif
adalah paket di sebagian besar OS utama.
vcpkg install libavif
Anda juga dapat mengunduh binari windows resmi di halaman rilis.
minuman rumahan:
brew install libavif
MacPort:
sudo port install libavif
Distribusi berbasis Debian:
sudo apt install libavif-dev
Distribusi berbasis Red Hat:
sudo yum -y install libavif
Untuk lingkungan MSYS2 UCRT64 "default":
pacman -S mingw-w64-ucrt-x86_64-libavif
Membangun libavif membutuhkan CMake.
Tidak ada codec AV1 yang diaktifkan secara default. Aktifkan dengan mengatur salah satu opsi CMake berikut ke LOCAL
atau SYSTEM
apakah Anda ingin menggunakan versi yang dibuat secara lokal atau versi yang diinstal sistem (misalnya -DAVIF_CODEC_AOM=LOCAL
):
AVIF_CODEC_AOM
untuk libaom (encoder dan decoder)AVIF_CODEC_DAV1D
untuk dav1d (dekoder)AVIF_CODEC_LIBGAV1
untuk libgav1 (dekoder)AVIF_CODEC_RAV1E
untuk rav1e (pembuat enkode)AVIF_CODEC_SVT
untuk SVT-AV1 (pengkode) Bila disetel ke SYSTEM
, perpustakaan ini (dalam bentuk C API) harus tersedia secara eksternal (dapat ditemukan melalui FIND_LIBRARY
CMake) untuk menggunakannya, atau jika libavif adalah proyek CMake turunan, target CMake yang sesuai harus sudah ada pada saat skrip CMake libavif dieksekusi.
Jika disetel ke LOCAL
, pustaka ini dan dependensi lainnya akan ditarik secara lokal oleh CMake ke versi yang dikenal baik.
Untuk mengganti versi ketergantungan lokal atau menggunakan versi ketergantungan khusus, pertama-tama jalankan skrip terkait di subdirektori ext/
.
Beberapa pengujian yang ditulis dalam C dapat dibuat dengan mengaktifkan opsi CMake AVIF_BUILD_TESTS
.
Pengujian yang tersisa dapat dibuat dengan mengaktifkan opsi CMake AVIF_BUILD_TESTS
dan AVIF_ENABLE_GTEST
. Mereka memerlukan GoogleTest ( -DAVIF_GTEST=SYSTEM
atau -DAVIF_GTEST=LOCAL
).
Petunjuk berikut dapat digunakan untuk membangun perpustakaan libavif dan alat avifenc
dan avifdec
.
Untuk menautkan ke perpustakaan ketergantungan aom
, libjpeg
dan libpng
yang sudah diinstal (disarankan):
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
Untuk tujuan pengembangan dan debugging, atau untuk menghasilkan biner yang sepenuhnya statis:
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
dan avifdec.exe
yang tertaut secara statis dapat diunduh dari halaman Rilis.
Silakan periksa wiki untuk sumber tambahan tentang libavif, seperti Daftar Periksa Rilis.
Perpustakaan libavif ditulis dalam C99. Sebagian besar tes ditulis dalam C++14.
Gunakan clang-format untuk memformat sumber dari folder tingkat atas ( clang-format-16
lebih disukai):
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
Gunakan format cmake untuk memformat file CMakeLists.txt dari folder tingkat atas:
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
Dirilis di bawah Lisensi 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.