性能可期——Netflix与Intel优化SVT-AV1

文 / AndreyNorkin, Joel Sole, Kyle Swanson, Mariana Afonso, Anush Moorthy, Anne Aaron


译 / 元宝


原文:


https://medium.com/netflix-techblog/introducing-svt-av1-a-scalable-open-source-av1-framework-c726cce3103a


视频编码标准的历史


从历史的发展来看,视频压缩的标准是由两个国际的标准化组织ITU-T和MPEG(ISO)共同制定的。最早取得成功的数字视频标准是MPEG-2,它真正意义上实现了视频的数字传输。此外,H.264/AVC也取得了同样的成功,H.264/AVC是目前的现代设备(通常是硬件)最普遍支持的视频压缩标准。另一方面,还有一些公司自己开发的视频编解码器,例如微软的VC-1和谷歌的VPx编解码器。大家采用同一视频压缩标准的好处是互操作性。视频压缩的标准规范详细地描述了应如何处理视频比特流来生成可显示的视频帧。这就允许了设备制造商可以自主地实现自己的解码器。当内容提供商根据视频压缩标准对其视频进行编码后,可以保证所有的兼容设备都能够解码和显示这一视频。


最近,由于普遍存在许可不确定性的问题,应用ITU-T和ISO标准化的最新视频编解码器速度很慢。因此,有一群公司组成了一个开放媒体联盟(AOM),这个联盟致力于创建一个现代的、免版税的视频编解码器,并且该编解码器将被大量设备广泛支持和采用。目前,AOM的委员会成员包括亚马逊、苹果、ARM、思科、Facebook、谷歌、IBM、英特尔、微软、Mozilla、Netflix、Nvidia和三星,并且还有许多公司都加入了AOM的推广团队。在2018年,AOM发布了AV1视频编解码器的规范。


解码器规范没有变过,而编码器被改进多年


如上所述,一个标准规定了如何解码被压缩的比特流来生成可显示的视频流,这意味着编码器是可以根据其特性进行更改的,比如计算性能和给定比特率的可实现质量。编码器通常可以在标准多年不变的情况下进行改进,包括不同的速度和质量的权衡。像这样的开发实例有x264编码器,它从H.264标准制定后的多年来一直在改进。


要开发一个符合标准的解码器,采用标准规范应该就是足够的。为了指导大家实现编解码器,标准化委员会还发布了参考软件,这其中包括兼容的解码器和编码器。参考软件作为标准开发过程的基础,同时也是一个评价视频编码工具性能的框架。参考软件通常伴随着标准的发展而发展。此外,当标准规范制定完成后,参考软件也可以帮助推进兼容解码器和编码器的实现。


AOM已经为AV1开发了参考软件,该软件名为libaom,可以在线使用。libaom是建立在VP9、VP8和前几代VPx视频编解码器的代码基础之上的。在AV1开发的过程中,该软件是由AOM视频编解码器团队进一步开发的。


Netflix对SVT-AV1的兴趣


参考软件通常关注的是以牺牲编码速度为代价所能得到的最佳压缩比。众所周知,现代视频编解码器参考软件的编码时间都是相当长的


英特尔开发SVT-AV1的目标之一是创建一个工业产品级别的AV1编码器,它能同时提供高性能和可扩展性。SVT-AV1在编码过程的几个阶段中均使用了并行化,这使其能够适应可用内核的数量。这使得SVT-AV1可以在保持压缩效率的同时减少编码时间。


在2018年8月,Netflix的视频算法团队和英特尔的可视化云团队决定联手开发SVT-AV1。从那时起,英特尔和Netflix的团队在SVT-AV1的开发上紧密合作,包括讨论架构决策、实现新工具和提高压缩效率。Netflix对SVT-AV1的主要兴趣点与英特尔有些不同,但与英特尔构建工业产品级别、高度可扩展的编码器的意图是互补的。


在Netflix,我们相信AV1的生态系统将得益于实现一个可供选择的简洁、高效开源编码器。目前至少就有一个可供选择的开源AV1编码器,rav1e。但是,rav1e是用Rust语言编写的,而用C语言编写的编码器对潜在的开发人员来说有更广泛的基础。开源编码器还应该支持实现简单的实验和提供测试新编码工具的平台。因此,我们对AV1软件的要求如下:


  • 代码易于理解,具有较低的入门门槛和测试框架


  • 具有与参考实现相当的有竞争力的压缩效率


  • 完整的工具集,实现的解码器要满足与编码器共享通用代码,并且还要简化新编码工具的实验


  • 减少编码器的运行时间,以便在测试新想法时实现更短的周期


我们相信,如果SVT-AV1符合了这些特性,它则可以用作未来视频编码标准开发的平台,例如对AV2视频编解码器的研究和开发工作以及改进AV1的编码。


因此,Netflix和英特尔开发SVT-AV1具有互补的目标。编码器的速度是有助于创新的,因为它可以更快地运行实验。代码的简洁性有助于开源社区的采用,这对于开源项目的成功至关重要。我们可以说,大量的并行化可能有对压缩效率的权衡,但它也允许测试更多的编码选项。此外,我们预计多核平台在未来将普遍用于视频编码,这会使得在支持多线程的架构中测试新工具非常重要。


我们取得的进展


为了使SVT-AV1成为一个优秀的实验平台和AV1参考,我们已经完成了以下里程碑:



  • 为Linux,Windows和MacO添加了一个持续集成(CI)框架。


  • 基于Google     Test添加了一个单元测试框架。外部的承包商正在添加单元测试,以实现对已经开发的代码的充分覆盖。此外,单元测试将涵盖新的代码。


  • 在CI框架中添加了其他类型的测试,例如自动编码和Valgrind测试。


  • 启动了一个解码器项目,它与编码器共享AV1算法的常用部分。


  • 引入了样式指南,并对现有代码进行了相应的格式化。


SVT-AV1的工作目前正在进行中,因为它仍需实现一些编码工具,因此在1-pass模式下,与libaom编码器在PSNR BD速率上的平均差距约为14%。为了降低BD速率的差距,计划添加以下功能,:


  • 多参考图片


  • ALTREF图片


  • 八像素运动补偿(1/8像素)


  • 全局运动补偿


  • OBMC


  • 楔形预测


  • TMVP


  • 调色板预测


  • 自适应变换块大小


  • 网格量化系数优化


  • 分割


  • 4:2:2支持


  • 速率控制(ABR,CBR,VBR)


  • 2-pass编码模式


前面还有很多工作要做,我们致力于使SVT-AV1项目能满足成为一个优秀实验平台的目标,同时也适用于生产应用程序。您可以在AWCY(AreWeCompressedYet)网站的beta版上跟踪SVT-AV1的性能进展。AWCY是用于在AV1开发过程中用来评估AV1工具的框架。在下图中,您可以看到两个版本的SVT-AV1编解码器的比较,蓝色的图表示2019年3月15日的SVT-AV1版本,绿色的图表示2019年3月19日的SVT-AV1版本。

性能可期——Netflix与Intel优化SVT-AV1

SVT-AV1的编码速度其实已经很出众了。在最慢的速度设置下,SVT-AV1不能达到libaom的压缩效率,但它执行编码的速度明显快于最快的libaom模式。目前,在最慢模式下的SVT-AV1与在1-pass模式下使用cpu_used = 1(libaom的第二慢速模式)的libaom编码器相比多使用了大约13.5%的比特数,但在速度上大约是快了4倍多。与2-pass模式下的libaom编码的BD速率的差距就更大了,我们计划通过在SVT-AV1中实现2-pass模式编码来解决这个问题。我们还可以注意到,SVT-AV1更快的编码设置可以更显著地减少编码时间,从而显著提高编码器的速度。

————————————————

版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/90252629


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

性能可期——Netflix与Intel优化SVT-AV1

上一篇:李智:用数学来理解世界


下一篇:Instagram视频上传延迟优化