ไลบรารีนี้มุ่งหวังที่จะเป็นการใช้งาน C ที่เป็นมิตรและพกพาได้ของรูปแบบไฟล์ภาพ AV1 ตามที่อธิบายไว้ที่นี่:
https://aomediacodec.github.io/av1-avif/
สามารถเข้ารหัสและถอดรหัสรูปแบบ YUV ที่รองรับ AV1 และความลึกบิตทั้งหมด (พร้อมอัลฟ่า)
ขอแนะนำให้คุณตรวจสอบ/ใช้การเผยแพร่ที่ติดแท็ก แทนที่จะใช้เพียงสาขาหลัก เราจะสร้างเวอร์ชันใหม่เป็นประจำเมื่อมีการเพิ่มการแก้ไขข้อบกพร่องและฟีเจอร์ต่างๆ
โปรดดูตัวอย่างในไดเรกทอรี "ตัวอย่าง" หากคุณสร้าง libavif
อยู่แล้ว ให้เปิดใช้งานตัวเลือก CMake AVIF_BUILD_EXAMPLES
เพื่อสร้างและเรียกใช้ตัวอย่างด้วย
libavif
เป็นแพ็คเกจในระบบปฏิบัติการหลักส่วนใหญ่
vcpkg install libavif
คุณยังสามารถดาวน์โหลดไบนารี Windows อย่างเป็นทางการได้จากหน้าเผยแพร่
โฮมบรูว์:
brew install libavif
MacPort:
sudo port install libavif
การแจกแจงแบบอิงเดเบียน:
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 ได้โดยเปิดใช้งานตัวเลือก 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 เช่น รายการตรวจสอบการเผยแพร่
ไลบรารี 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.