Dav2d
摘要
VideoLAN社区宣布了dav2d,这是一个针对新型AV2视频编码器的高效软件解码器,旨在为实际应用提供可移植且高性能的解码功能。
暂无内容
查看缓存全文
缓存时间: 2026/05/31 13:34
# 让 dav2d 诞生——Jean-Baptiste Kempf
来源:https://jbkempf.com/blog/2026/dav2d/
## dav2d
*一种编解码器,直到人人都能解码它才算真正存在。*
今天,我们发布了 dav2d(https://code.videolan.org/videolan/dav2d),一款面向全新 AV2(https://jbkempf.com/tags/av2/) 编解码器的快速解码器,由 VideoLAN(https://www.videolan.org/) 社区的成员们共同开发。
几周前,我们开源了仓库并开始公开开发。此后,AV2 自身也发布了首个正式规范版本,这正是一个好时机来解释 dav2d 是什么、我们为何启动该项目,以及当前进展如何。
dav2d(https://jbkempf.com/tags/dav2d/) 是我们从 dav1d(https://code.videolan.org/videolan/dav1d)(我们的 AV1 解码器)开始的工作的延续。
目标相似:提供一个轻量、快速、可移植且正确的解码器,适用于真实应用、媒体播放器、浏览器、测试工具和操作系统。
## AV2
AV2(https://jbkempf.com/tags/av2/) 是 AV1(https://jbkempf.com/tags/av1/) 的继任者,也是开放媒体联盟(Alliance for Open Media)(https://aomedia.org/) 最新的免版税视频编解码器。
规范现已公开发布,地址为:
- https://av2.aomedia.org/
- https://github.com/AOMediaCodec/av2-spec
AV1 于 2018 年定稿,成为有史以来部署最成功的视频编解码器之一。如今,它已广泛应用于全球的浏览器、移动设备、操作系统、电视、流媒体服务和视频应用中。
AV2 在此基础上更进一步。该编解码器在预测、变换、熵编码、滤波和色度处理方面引入了新编码工具,同时继续追求提高压缩效率。
报告的增益因测试条件而异,但与 AV1 相比,通常能看到约 25% 的改进,部分评估甚至报告了更大的增益。
AV2 解码的复杂度大约是 AV1 的 *五倍*。实际上,这意味着没有经过精心、特定架构优化的软件,在当今硬件上很难实时解码 AV2。
这就是我们提前启动 dav2d 的原因——而不是等到规范稳定下来再动手。
## 从 dav1d 到 dav2d
dav2d(https://jbkempf.com/tags/dav2d/) 的起源要追溯到 dav1d(https://jbkempf.com/tags/dav1d/) 的早期。
当 AV1 临近定稿时,我们坚持推动一款快速软件解码器,因为我们不相信硬件解码能足够快地在足够多的设备上普及。
并非所有人都同意这一判断。AOM 社区的一些成员认为,硬件实现和参考解码器就足够了。
但我们不这么认为。浏览器、媒体播放器、操作系统和移动设备,早在专用硬件普及之前就需要一个生产级解码器。
最终,AOM 自身资助了部分早期开发工作,联盟的部分成员后来也加入了这一努力。
结果就是 dav1d。
事后看来,对快速软件解码器的需求比许多人预想的要大得多。
如今,dav1d 是部署最广泛的 AV1 软件解码器。
它被用于 VLC(https://www.videolan.org/vlc/)、FFmpeg(https://ffmpeg.org/)、mpv(https://mpv.io/)、Firefox、Chrome、Safari、Android、Windows、Linux 以及许多其他应用和平台。
该项目也已成为许多从事 AV1 部署、测试和优化工作的开发者的参考 AV1 解码器实现。
你可以在这个博客上阅读 dav1d 的完整历史:介绍 dav1d(https://jbkempf.com/blog/Introducing-dav1d/)、走向首个版本之路(https://jbkempf.com/blog/dav1d-toward-the-first-release/)、首个版本(https://jbkempf.com/blog/First-release-of-dav1d/)、dav1d 1.2(https://jbkempf.com/blog/2023/dav1d-1.2.0/) 和 1.5 “Sonic”(https://jbkempf.com/blog/2025/dav1d-1.5/)。
对于 AV2,我们尝试更早地启动这项工作。
编解码器规范固然重要,但这还不够。开发者需要一个可以编译、测试、基准测试、集成并与其他实现进行比较的解码器。
这就是 dav2d 旨在提供的东西。
## 当前状态
当前的 dav2d 代码仓库已包含一个功能完整的 AVM v15 解码器,支持 8 位和 10 位解码。
编解码器的大部分主要部分已经实现,并且正在进行优化,包括:
- 比特流解析;
- 帧和序列头部;
- 熵解码和 CDF 处理;
- 帧内预测;
- 帧间预测和参考运动向量;
- 变换;
- CCTX 和 CfL;
- 去块效应滤波;
- CDEF;
- 维纳滤波;
- 胶片颗粒合成。
这仍然是早期工作,AV2 生态系统本身也还年轻,但解码器已经可用,远不止是一个空的公告仓库。
越来越多的工作现在集中在正确性、一致性、优化和平台支持上。
项目进展如此迅速的一个原因是,dav2d 并非从零开始。AV2 与 AV1 共享许多概念,而 dav1d 已经在线程化、SIMD 组织、测试、可移植性和 API 设计等架构问题上积累了经验。
虽然 AV2 需要大量新的解码器代码,但 dav1d 多年开发中积累的许多经验可以直接迁移到 dav2d 上。
## 性能优化工作
性能优化工作已经开始。
在 x86 上,dav2d 已经包含了针对多种逆变换尺寸的 AVX2 代码,以及涉及 CCTX、去块效应、帧内预测和 CfL 相关路径的工作。
在 ARM 上,已经有针对 AArch64 NEON 的熵解码、SAD、帧内预测、调色板预测、DC 预测器、平滑预测器和运动相关函数的工作。一些 arm32 的工作也已开始。
还有早期的 RISC-V 工作,主要是重新启用和适配现有的帧内预测和运动补偿汇编代码。
这与我们在 dav1d 中的进展方式相同:首先是干净的 C 实现,然后是验证基础设施,接着是针对最重要热点的特定架构优化代码。
## checkasm
与 dav1d 早期相比,一个重要的不同是工具链。
在 dav1d 开发期间,我们创建了 checkasm(https://code.videolan.org/videolan/checkasm),这是一个用于验证和基准测试优化实现与 C 等效实现对比的框架。
dav2d 从第一天起就受益于这一基础设施。
结合从 dav1d 获得的架构经验,这使得项目的进展比 dav1d 在类似阶段快得多。
当前代码仓库已经包含多个领域的 checkasm 覆盖,包括逆变换、运动补偿、胶片颗粒、CfL 和参考运动向量代码。
这应该会使未来的优化工作更快、更安全。
## 开源
与之前的 dav1d 一样,dav2d 作为一个开源项目开发。
解码器采用与 dav1d 相同的 BSD 风格许可证发布,使其易于集成到开源和专有应用中。
与大多数 VideoLAN(https://jbkempf.com/tags/videolan/) 项目一样,开发从第一天起在公开环境下进行:
- 仓库:https://code.videolan.org/videolan/dav2d
- 问题跟踪:https://code.videolan.org/videolan/dav2d/-/issues
- 合并请求:https://code.videolan.org/videolan/dav2d/-/merge_requests
我们相信,开源实现对新媒体技术的健康部署至关重要。它们提供了互操作性、对规范的独立验证、更便捷的实验环境,以及整个生态系统的共同基础。
## 未来计划
前方还有大量工作要做。
我们需要继续跟踪 AV2 规范,改进一致性,扩展测试覆盖范围,进一步优化 x86 和 ARM,推进 RISC-V 工作,提升高位深度性能,改进线程化,减少内存占用,并准备未来的版本。
但基础已经就位:工具链、架构以及从 dav1d 积累的经验,并辅以额外的改进。
dav1d 帮助 AV1 在硬件支持普及之前很久就变得实用。
我们打算为 AV2 做同样的事。
*让 dav2d 诞生。来自 VideoLAN,满载热爱。*
相似文章
AV2 v1.0.0 规范
开放媒体联盟(Alliance for Open Media)发布了 AV2 v1.0.0 规范,这是一种新一代视频编码标准,为流媒体、广播和实时视频会议提供卓越的压缩效率。
AdaCodec:面向视频多模态大模型的预测性视觉编码
AdaCodec 通过仅在场景预测失败时传输完整视觉标记,否则使用紧凑的帧间变化描述,从而减少多模态大模型中的视频编码冗余。在匹配的标记预算下,它优于逐帧 RGB 基线,并且在使用显著更少标记的情况下取得更好或相当的结果,将首令牌延迟从 9.26 秒降至 1.62 秒。
LLaVA-OneVision-2:迈向下一代感知智能
LLaVA-OneVision-2 引入了编解码流分词和窗口注意力机制以实现高效的视频理解,在包括视频、空间和跟踪任务在内的多个多模态基准测试中取得了最先进的性能。
自回归视频生成的投机解码
SDVG 将投机解码引入自回归视频扩散,通过图像质量路由器在 MovieGenVideoBench 上实现最高 2.09× 加速,同时保留 95.7% 质量。
LiVeAction:一种面向实时操作的轻量级、通用且非对称神经编解码器设计
本文介绍了 LiVeAction,这是一种专为资源受限设备上的实时操作而设计的轻量级神经编解码器。它利用类 FFT 结构和基于方差的率失真惩罚,在保持低功耗传感器实用性的同时,实现了卓越的率失真性能。