chromium_third_party_libavif:基于 AV1 图像文件格式的 C 实现库项目

第三方软件libavif

分支88Tags1
文件最后提交记录最后更新时间
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前

libavif AppVeyor 构建状态 Travis 构建状态

本库旨在提供友好且可移植的 AV1 图像文件格式 C 语言实现,具体规范参见:

https://aomediacodec.github.io/av1-avif/

该项目目前仍在开发中,但已能够编码和解码所有 AOM 支持的 YUV 格式和位深(含 alpha 通道)。

目前,建议您检出/使用已标记的发行版本,而非直接使用 master 分支。随着错误修复和功能添加,我会定期发布新版本。

用法

请参见 examples 目录中的示例。如果您已在构建 libavif,请启用 CMake 选项 AVIF_BUILD_EXAMPLES,以便同时构建并运行这些示例。

构建说明

构建 libavif 需要 CMake

默认情况下,所有 AV1 编解码器均未启用。您可以通过启用以下任一 CMake 选项来启用它们:

  • AVIF_CODEC_AOM - 需要 CMake、NASM
  • AVIF_CODEC_DAV1D - 需要 Meson、Ninja、NASM
  • AVIF_CODEC_LIBGAV1 - 需要 CMake、Ninja
  • AVIF_CODEC_RAV1E - 需要 cargo (Rust)、NASM

要使用这些库(其 C API 形式),它们必须在外部可用(可通过 CMake 的 FIND_LIBRARY 发现),或者,如果 libavif 是子 CMake 项目,则在执行 libavif 的 CMake 脚本时,相应的 CMake 目标必须已存在。

本地/静态构建

ext/ 子目录包含一些基本脚本,每个脚本会拉取一个已知良好的 AV1 编解码器副本并进行本地静态库构建。如果您希望将任何编解码器静态链接到本地(静态)构建的 libavif 中,使用这些脚本之一进行构建,然后启用相关的 AVIF_LOCAL_* 选项是一种便捷方法,但您必须确保在 CMake 中禁用 BUILD_SHARED_LIBS,以指示其生成静态的 libavif 库。

如果您希望构建/安装 AV1 编解码器的共享库,仍可查看每个脚本内部,了解每个编解码器当前已知良好的 SHA 值。

预构建库(Windows)

如果您使用 Visual Studio 2019 在 Windows 上进行构建,并且希望在不执行构建过程的情况下试用 libavif,可在 AppVeyor 获取适用于 Debug 和 Release 版本的静态库构建。


许可证

基于 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.