zl程序教程

您现在的位置是:首页 >  其他

当前栏目

优化 Dav1D

2023-04-18 14:50:49 时间

来源:Global Video Tech Meetup:New York 主讲:来自 Two Orioles 的 Ronald S. Bultje 翻译整理:钟宏成 本次演讲介绍了 AV1 的软件解码器 dav1d 的一些优化进展,关于特定编码工具的解码优化、HDR/10bit 内容的优化、更好的多线程优化。最后,在 Q&A 中提到,软件解码器基本上是启动生态系统,希望一年或两年后,我们都将使用硬件解码器。

目录

  • 介绍
  • 案例1:特定编码工具的解码优化
  • 案例2:HDR/10-bit 的优化
  • 案例3:更好的多线程
  • Q&A

介绍

Dav1d 是一个 AV1 软件解码器,AV1 是开放媒体联盟在2018年发布的一个视频编码标准,用于互联网视频流,包括视频聊天、视频直播、视频点播等。

Dav1d 是一个 videoLan 的项目,在 2-clause BSD 许可下开源。Dav1d 的目标是快速、高效,包含帧级、tile级、后处理滤波的多线程,以及平台优化包括 Arm(Neon), x86(AVX2/SSSE3)。

案例1:特定编码工具的解码优化

AOM 的一个工作组 SIWG 的 Victor Cherepanov 进行了编码工具的解码复杂度实验,实验通过在编码时每次关闭一个特定编码工具,然后检测解码器的解码时间变化,从而反映编码工具在解码复杂度中的贡献。通过分析该图可以发现 dav1d 的实现中显著慢于 gav1 实现的部分,从而优化解决。

案例2:HDR/10-bit 的优化

reddit 上的一个用户 post 了 AV1 HDR 播放的性能问题,事实上这就是 HDR/10-bit 的优化问题,半年多前我们开始为 dav1d 加入 HDR/10-bit 的 SIMD 优化,ARM 上的大部分工作都已经完成;最近在对 x86 平台进行优化,AVX2 的代码从 rav1e 的代码开始,已经完成了大部分工作,SSSE3 的还在 TODO 列表中。

SIMD 优化的加速效果是分明显,从基本无法播放加速到性能接近 8bit 内容。具体来说,相同内容的 10bit 解码比 8bit 解码慢 25% 左右,这是预期中的,因为 10bit 解码需要更多内存。

案例3:更好的多线程

Dav1d 包含帧级、tile 级、后处理滤波的多线程。来自程序员的建议通常是同时使用所有多线程优化,但这事实上是困难的。

  • 使用全部的这三个线程类型有很多选项需要用户配置,但这些在理想中应该是由程序自动完成的,尤其是这些配置是与内容相关的(设置多少tile,多少后处理滤波线程?)。
  • 以帧级多线程为例,实际上需要很多线程来饱和特定的核心数,所以添加新线程的系统负载倍数相对较低。这意味着,使用所有这些线程类型最终会产生大量的线程,而这些线程大部分时间都在休眠。
  • 在移动系统(大小核系统)上有额外的问题,因为线程会分布在大小核心上,解码器有内在的期望,即这些线程的每一个都有类似的输入,在大小核心系统上,小核心上的任务将拖慢整个解码过程。

因此我们希望能够改进这个过程,我们创建了一些 tasks,与之前的不同多线程机制类似。一些并行的工作线程从全局的 task 池中获取任务并执行。因此,并发的种类不再是多个类型的多线程,而是变成 task 的并行。这带来下列的好处:

  • 相比之前的每个多线程类型都有一个配置,现在我们只有单一的配置;
  • 可以添加新的多线程类型,而不会添加或更改任何 API;
  • 现在可以达到目标的核占用,而与内容类型无关了(比如内容没有分tile,没有后处理滤镜的时候无法使用这些类型的多线程)
  • 可以更好地伸缩,特别是在移动平台上。

以上就是所有分享的内容,如果你想知道如何使用 dav1d,或者它如何适用于你?答案是你可能已经在使用它了。比如多媒体框架 FFmpeg,GStreamer,播放器 VLC,或者浏览器 Firefox,Chrome。

Q&A

Q: 我们看到 AV1 在三星电视或 Roku 电视中被推出,它们的解码器将是硬件解码器。

A: 我认为在短期内,他们将使用 dav1d 作为后备软件解码器,但这真的应该被视为 placeholder。正如你提到的,用户最终使用硬解码是非常理想的,因为它在回报吞吐量方面给予更多保证、使用更少的能量,所以这对环境更好,等等。软件解码器基本上是启动生态系统,希望一年或两年后,他们都将使用硬件解码器。

附上演讲视频:

http://mpvideo.qpic.cn/0b2elyaakaaaiiagj6npojqvaxwdavpaabia.f10002.mp4?dis_k=b106df747c0b08c1c97dcf395788b54d&dis_t=1639033097&vid=wxv_2169148754082267138&format_id=10002&support_redirect=0&mmversion=false