تهدف هذه المكتبة إلى أن تكون تطبيق C سهل الاستخدام ومحمول لتنسيق ملف الصورة AV1، كما هو موضح هنا:
https://aomediacodec.github.io/av1-avif/
يمكنه تشفير وفك تشفير كافة تنسيقات YUV المدعومة بـ AV1 وأعماق البت (مع ألفا).
يوصى بسحب/استخدام الإصدارات الموسومة بدلاً من استخدام الفرع الرئيسي فقط. سنقوم بانتظام بإنشاء إصدارات جديدة مع إضافة إصلاحات الأخطاء والميزات.
يرجى الاطلاع على الأمثلة في دليل "الأمثلة". إذا كنت تقوم بالفعل بإنشاء libavif
، فقم بتمكين خيار CMake AVIF_BUILD_EXAMPLES
لإنشاء الأمثلة وتشغيلها أيضًا.
libavif
عبارة عن حزمة موجودة في معظم أنظمة التشغيل الرئيسية.
vcpkg install libavif
يمكنك أيضًا تنزيل ثنائيات Windows الرسمية على صفحة الإصدار.
البيرة المنزلية:
brew install libavif
منافذ ماك:
sudo port install libavif
التوزيعات المبنية على دبيان:
sudo apt install libavif-dev
التوزيعات المعتمدة على القبعة الحمراء:
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 لتنسيق ملفات 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.