FOSDEM 2023|VVenC & VVdeC 介绍

本文整理了 Adam Wieckowski 在 FOSDEM 2023 对 VVenC 和 VVdeC 的介绍,包括了 VVenC 和 VVdeC 的背景、发展以及社区贡献等方面。

来源:FOSDEM 2023
主讲人:Adam Wieckowski
内容整理:张志宇

VVC 简介

图片
VVC 简介

VVenC 和 VVdeC 是 VVC 的开源实现,VVC 是 2020 年由 JVET(联合视频专家组) 开发完成的新编解码器。与 HEVC 相比,在相同质量的情况下,VVC 能节省 50% 的码率。VVC 被称为多功能编解码器,是因为它适用于多功能场景,例如屏幕内容、HDR、沉浸式、8K 以及用 Open GOP 做自适应流媒体等。

VVenC 和 VVdeC 背景

图片
VVenC 和 VVdeC 团队

VVenC 和 VVdeC 是由 Fraunhofer HHI 研究团队开发的,主要是视频编码系统组。HHI 是欧洲最大的研究组织 Fraunhofer 协会的成员,该协会是德国的一个大型非营利性组织。主讲人 Adam Wieckowski 是 VVenC 和 VVdeC 项目的负责人,也是视频编码系统组的联合负责人。

图片
新的参考软件的需求

所有的现代视频编解码器都是基于块工作的。HEVC 使用四叉树(在 HEVC 中只有正方形的块划分),参考软件 HM 使用 z-index 对块进行索引,这对于正方形块是一个非常好的方法。VVC 增加了长方形的块划分,许多 VVC 的参考软件例如 JEM(基于 HM 开发)仍然使用 z-index,但在新的划分中,z-index 是不可接受的,因此我们想要开发一种新的软件来处理它。我们将其命名为 NextSoftware,也就是后来的 VTM-1.0。VTM 中块是利用对象进行描述的,通过一个全局的 map 进行映射。

图片
VVenC 和 VVdeC 在 VVC 发展中的节点

NextSoftware 变成了 VVC 标准的参考软件 VTM,可以在图中看到 VTM 随着时间推移不断发展,可以看到码率节省、编码时间和解码时间。此外,还可以从图中看到项目是如何开始实施的,从早期的 VTM 3.0 开始,就已经开始了 VVdeC 的工作,到 VTM 6.0,开始了 VVenC 的工作。在 2020 年初,Ben.Bross 成为了组长,他提出了做项目开源的想法,最初是在 2020 年底做的,许可证有点不稳定。但是通过与总部的一些沟通,我们将其更改为修改后的 BSD-3 许可证。经过更多的沟通,我们有了一个未经修改的标准的开源许可证 Clear BSD-3。

VVenC 和 VVdeC 作为开源编解码器

图片
VVdeC 和 VVenC 简介

VVenC 和 VVdeC 是基于 VTM 开发的,全部是用 C++ 编写的,但有一个 pure-C 接口。因此可以将其集成到框架中,或者只是使用它。它是基于对象的,但它非常简单。与一些其他项目相反,我们不做汇编器,而只在内在函数中进行矢量化。我们试图使项目的使用尽可能简单。所以基本上我们只公开与用例相关的选项。就像编码选项一样,我们试图为用户定义所有与效率相关的东西,让用户拥有最简单的体验。它可以在 GitHub 上基于 BSD-3-Clause-Clear 许可证使用。

图片
VVdeC 和 VVenC 的发展

VVdeC

图片
VVdeC 亮点

VVdeC 完全符合 Main 10 profile,并且支持多平台(Windows, Linux, Mac OS, Androd)。从 0.1 版本开始就使用统一的线程池,可以使用超过 30 个线程并且是多线程独立的。

图片
VVdeC 性能

上图中左边是不同分辨率、不同编码条件下的性能图。右边是一些主要的里程碑,v1.0 是完全符合标准,v1.3 具有 3 倍内存的减少,v1.4 在 github 中获得了基于外部贡献的重大性能提升。

VVenC

图片
VVenC 亮点

VVenC 基本上是最好的开源编码器,上图右侧是运行时间和效率的对比,对于给定的运行时间,VVenC 拥有最好的效率。VVenC 有 5 个预设,从快到慢,并且有高效的多线程技术。基于 XPSNR 指标,VVenC 对人类视觉系统进行了非常好的优化。VVenC 有非常出色的码率控制,码率规避很少超过 2%,几乎从不超过 5%。

图片
VVenC 预设推导

接下来介绍 VVenC 5 种预设的推导。我们选用所有与用例无关的选项并进行大规模的优化。我们从一个非常简单、非常快速的工作点开始,然后推导出哪个选项应该作为下一个选项进行更改这基本上给出下一个最佳工作点的选项。这是一个大规模的优化,需要大量的计算时间。所以我们不经常这样做,如果我们知道一个工具得到了更好的实现,我们可以尝试只在选项空间内优化这个工具。但仍然有一个问题是在开始的时候,曲线会变得更陡峭,因此不能更新太快,否则会导致编码效率降低。这是因为参考软件是为易读性而设计的,而且效率还是半成品。

图片
VVenC 多线程

VVenC 多线程取决于预设、分辨率和编码选项。VVenC 在 CTU 上进行多线程处理,就像在不使用语法的情况下模拟波前并行处理一样。

图片
针对人类视觉系统的优化

VVenC 还针对人类视觉系统进行了优化,基于 XPSNR。

图片
VVenC 实践

许多人都会问,VVenC 最终能实现怎样的 FPS?因此我们在移动工作站类型的计算机上做了一些编码,使用所有默认值进行编码,这意味着使用 8 个线程。结果如上图所示,但 FPS 还取决于许多其他因素,如比特率,内容,实际 CPU 等,所以这更像是大概的数字。

图片
VVenC 里程碑

上图展示了 VVenC 发展的主要里程碑。第一个重要里程碑是 v0.3,增加了 frame-threading,在多线程效率与速度图中看到,这是一个巨大的飞跃。在 v1.0 中,添加了 pure-C 接口,允许集成到纯 C 框架中。v1.5 添加了任意的帧内周期,因此它不必与任何内容对齐,还添加了快速解码预设。在最新版本中,我们添加了 ARM 支持。每个版本我们都改进了速率控制,也得到了很好的社区反馈。

生态和社区

图片

VVenC 和 VVdeC 是仅供学术研究的原始视频编码器和解码器,并没有真正给你带来什么。关于如何在 FFmpeg 管线中集成 VVenC,在 GitHub 上有手把手的教程。关于回放,一旦你得到这个包含 VVC 的 FFmpeg,你就可以链接任何使用 FFmpeg 作为后端的播放器,它就可以工作了。

图片

我们对外部贡献持开放态度,我们希望得到一些外部贡献,我们试图通过声明 VVenC 的作者保留版权使得这变得更容易。

总结

图片

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论