이 라이브러리는 여기에 설명된 대로 AV1 이미지 파일 형식의 친숙하고 이식 가능한 C 구현을 목표로 합니다.
https://aomediacodec.github.io/av1-avif/
AV1이 지원하는 모든 YUV 형식과 비트 깊이(알파 포함)를 인코딩하고 디코딩할 수 있습니다.
메인 브랜치만 사용하는 것보다 태그된 릴리스를 확인/사용하는 것이 좋습니다. 버그 수정 및 기능이 추가되면 정기적으로 새 버전을 만들 예정입니다.
"예제" 디렉터리의 예를 참조하세요. 이미 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
(인코더)AVIF_CODEC_SVT
(인코더) SYSTEM
으로 설정된 경우 이러한 라이브러리(C API 형식)는 외부에서 사용 가능해야 합니다(CMake의 FIND_LIBRARY
를 통해 검색 가능). libavif가 하위 CMake 프로젝트인 경우 libavif의 CMake 스크립트 시점에 적절한 CMake 대상이 이미 존재해야 합니다. 실행됩니다.
LOCAL
로 설정하면 이러한 라이브러리와 기타 종속성은 CMake에 의해 알려진 양호한 버전으로 로컬로 풀링됩니다.
로컬 종속성 버전을 재정의하거나 종속성의 사용자 정의 빌드를 사용하려면 먼저 ext/
하위 디렉터리에서 관련 스크립트를 실행하세요.
AVIF_BUILD_TESTS
CMake 옵션을 활성화하면 C로 작성된 몇 가지 테스트를 구축할 수 있습니다.
나머지 테스트는 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.