介绍 dav2d:为 AV2 视频编解码器铺平道路

视频工程界的准则是简单的:一个编解码器只有在每个人都能解码它时才算真正存在。虽然规范提供了蓝图,但新标准的实际效用取决于那些让用户能够真正观看内容的、现有的、高性能的实现。

随着 AV2 规范的正式发布,VideoLAN 宣布了 dav2d,这是一个快速、可移植且开源的解码器,旨在为大众带来下一代免版税视频。

通过尽早开始开发,VideoLAN 旨在避免 AV1 早期阶段遇到的瓶颈,并确保在专用硬件加速变得普及之前,AV2 在现实世界中使用是切实可行的。

AV2 的挑战

AV2 是 AV1 的继任者,AV1 是来自 Alliance for Open Media (AOM) 的免版税编解码器。基于 AV1 的成功,AV2 在预测、变换、熵编码、滤波和色度处理方面引入了一系列新的编码工具,以进一步推向压缩效率的极限。

早期评估表明,AV2 的压缩效率比 AV1 提高了约 25%,在某些情况下甚至有更大的提升。然而,这种效率是以显著的计算成本为代价的。 根据 Jean-Baptiste Kempf 的说法,AV2 解码的复杂度大约是 AV1 解码的五倍。

对于今天的硬件,这种复杂度意味着如果没有激进的、针对特定架构的优化,实时软件解码几乎是不可能的。这正是为什么 dav2d 的开发早在规范完全稳定之前就开始了——以确保在编解码器部署的那一刻,软件生态系统就已经准备就绪。

来自 dav1d 的经验教训

dav2d 背后的策略是直接从创建 dav1d(目前应用最广泛的 AV1 软件解码器)中获得的经验的直接体现。当 AV1 最初被定稿时,AOM 社区内部曾存在争议:一些人认为参考解码器和最终的硬件实现就足够了。VideoLAN 不同意,认为浏览器、操作系统和媒体播放器在硬件支持变得普遍之前,就需要高质量的生产级软件解码器。

历史证明 VideoLAN 是正确的。dav1d 成为了许多开发者的参考实现,并已集成到 VLC、FFmpeg、Chrome、Firefox、Safari 和 Android 中。

通过将同样的哲学应用于 AV2,VideoLAN 正在为社区提供一个可以立即构建、基准测试和集成的工具。正如一位社区成员在 Hacker News 讨论中指出的,现场实现往往会成为事实上的规范,因为它们提供了一种解释编码字节的具体方式。

技术架构与性能

由于 AV2 与 AV1 共享许多概念,dav2d 并不从零开始。它继承了 dav1d 的架构基础,包括其线程处理、SIMD 组织、可移植性和 API 设计的方法。

当前实现状态

dav2d 树已经针对 AVM v15 实现了功能完备,支持 8 位和 10 位解码。已实现的 key components 包括:

  • Bitstream parsing 和 header handling
  • Entropy decoding 和 CDF handling
  • Intra 和 inter prediction
  • Transforms 和 Wiener filtering
  • Deblocking 和 CDEF
  • Film grain synthesis

优化策略

为了应对 5 倍的复杂度增加,VideoLAN 正在采用分层优化策略:首先使用干净的 C 实现进行验证,然后针对最关键的 "hot paths" 进行架构特定的汇编优化。

  • x86: 实现用于 inverse transform sizes、CCTX 和 deblock paths 的 AVX2 代码。
  • ARM: 针对 entropy decoding、SAD 和 motion-related functions 的 AArch64 NEON 优化,并开展了 arm32 的早期工作。
  • RISC-V: 适配现有的 intra prediction 和 motion compensation 汇编。

checkasm 的作用

dav2d 相比 dav1d 早期阶段最大的优势之一是 checkasm。该框架允许开发者实时地将优化的汇编实现与对应的 C 等效实现进行验证和基准测试。这种基础设施使得优化过程既快速又安全,确保性能提升不会以牺牲正确性为代价。

开源精神

dav2d 在 BSD 风格的许可证下开发,从第一天起就是开源的。这种方法被视为媒体技术健康部署的关键,为规范提供了独立的验证,并为整个生态系统提供了共同的基础。

虽然一些观察者对潜在的专利池问题提出了担忧——引用了 AV1 面临的 Sisvel 和 Dolby 的挑战——但 dav2d 的重点仍然在于编解码器的技术赋能。通过提供高性能、开源的实现,VideoLAN 监视着行业拥有一个可行的替代方案,无论法律环境如何变化。

展望未来

开发一个生产就绪的 dav2d 还需要很长的路。未来的工作包括跟踪不断演进的 AV2 规范,提高高位深性能,减少内存使用,并改进线程模型。然而,凭借 dav1d 时代的工具和经验,dav2d 已准备好在第一批支持 AV2 的芯片进入市场之前,让全球观众能够使用 AV2。

Sources