Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LibAOM与AV1的最新研发进展

LibAOM与AV1的最新研发进展

作者头像
LiveVideoStack
发布于 2021-09-01 07:38:25
发布于 2021-09-01 07:38:25
6380
举报
文章被收录于专栏:音视频技术音视频技术

# Editorial Note #

本次分享我们邀请到了来自Google Open Codec Team的韩敬宁博士,他向我们分享了AV1解码器的覆盖,AV1编码器性能的提升包括AV1压缩性能的提升和运算复杂度的降低,AV1实时编码器的应用和基于AV1的图像编码器格式AVIF的最新研究进展。

文 / 韩敬宁

整理 / LiveVideoStack

大家好,我是Google Open Codec Team韩敬宁,很高兴能有这样的机会与大家分享关于LibAOM和AV1的最新研发进展。

本次分享主要分为一下几个部分:AV1解码器的覆盖、AV1编码器性能的提升(AV1压缩性能的提升和运算复杂度的降低)、AV1实时编码器的应用、 基于AV1的图像编码器格式(AVIF的最新研究进展)。

#1. AV1解码器的覆盖

现在主要的支持AV1软件解码器的浏览器有Chrome、Edge、Firefox、Opera。操作系统中Android、ChromeOS、LinuxWindows都有支持AV1解码的原生library。为了进一步推动AV1软件解码器在移动端的覆盖,我们团队还研发了Libgav1 library,它的主要目标是Android设备,在实测的Android设备中Libgav1 library的解码运行速度相对于Libaom而言能提高2.5倍以上。在硬件解码器方向通常的最低要求是4K/60fps,大多数硬件解码器能够达到8K/60fps的性能。在现有和即将上市的电视中LG、三星、索尼和TCL都是已经有AV1硬件解码器的覆盖,手机端则是LG、OPPO、三星、Vivo和小米有AV1硬件解码器的覆盖。再GPU、CPU方向AMD、Nvidia和lntel在现在和未来会有更多的AV1硬件解码器支持。

#2. AV1编码器的性能

2.1 AV1编码器的压缩性能

AV1是在2018年中旬finalize bit-stream经过团队两年多的研究和尝试AV1的压缩性能在过去两年中有了显著的提高,现在相对于VP9而言能达到的peak compression performance是在以PSNR或SSIM这样的客观指标条件下能提高36%以上。相对于2018年bit-stream finalization的时候Libaom的AV1的压缩性能peak (compression) performance在PSNR条件下是能够提高超过14%,而在SSIM条件下是能够提高超过17%。这些数字的测试条件是基于通常的standard test set,在YouTube视频条件下实测压缩性能增益远远大于在此列举的数字。

2.2 编码器的速度和内存需求

相对于2018年bit-stream finalization的时候Libaom编码器的速度提升150倍以上,与此同时在4K的视频压缩条件下我们对内存的需求下降了80%。为了更好的支持不同的实际应用场景,Libaom支持不同的一个系列的speed setting(speed setting的数字越高就意味着编码器的运行速度越快)相对压缩性能增益会有所损耗。上图的表格中,speed setting3和3以下通常是比较高的压缩性能,运行速度5相对于VP9而言更慢一些;speed setting在5以上时,实际AV1的压缩性能运行速度更高于VP9运行速度,与此同时它会提供19%、16%的压缩性能增益。在比较encoding time时AV1和VP9都是用single thread进行处理;在speed6条件下,AV1比VP9的压缩性能提高了16%与此同时它实际的encoder复杂度只有VP9的40%。

2.3 技术亮点

关于编码器的优化,在很多层面都有新的算法出现包括group of picture level、frame coding level、coding block level,本次在每个层面选一到两个例子做简述。我们的codebase是完全开源的,如果大家感兴趣,非常欢迎大家能够参考我们的codebase,如果有新的想法也非常欢迎与我们一起合作。

2.3.1 Group of picture level

在group of picture level 中AV1 Libaom基于的算法是2-pass encoding,通常会有一非常快速的first pass encode去生成一些frame level statistics,2-pass encoding会对它做出一个更好的分析,例如动态的group of picture decision。通常对first pass statistics的分析会试图提取inter frame correlation和每个frame的acquisition noise的强度,基于这两个数据去分析当前一系列的frame是否属于相对稳定、相对静态或运动非常快、variance非常高的区间。基于这些分析再去决定实际的group of picture会包括多少个frame,在这当中一定要保证当出现scene-cut时,group of picture不会go across the scene-cut point。

2.3.2 Frame level

在frame level Libaom会对所有的long-term reference frame做decomposition。Decomposition的方法是把一个long term reference frame,如果一个 reference frame把它作为long term reference frame,通常会把它分解成Alternate reference frame(ARF)和Overlay frame。ARF会被作为一个正常的frame去encode和decode,在decoder端它不会给用户playback,它只是作为一个internal reference给后面的frame提供motion compensating prediction。Overlay frame是和ARF处于同一个位置的frame,但是Overlay frame相当于ARF到实际original frame的residual,它会去code这些residual作为实际能够playback的frame。ARF的好处是它允许对原始信号滤波能够降低frame里面的noise level,可以对滤波以后的frame做更高reconstruction quality的coding。在Libaom中采用的生成ARF的temporal filtering的non-local mean filter。它的reference patch是通过motion estimation从周围的frame找到。Filter的kernel会根据当前frame的estimated noise level进行调整。通常概念是,如果noise level越高相对的filter的强度就会更大。

上图是long-term reference frame就premium coding structure而言,最底层的frame会被分解成ARF和Overlay frame。对于long-term reference frame都是被当成两个frame去做process。

2.3.3 Coding block level

在coding block level为了更好的平衡编码器的速度和编码器的压缩性能采取了multi-winner multi-stage的搜索philosophy。基本的概念是我们在更靠前的early stage,比如试图找到prediction mode时会采取比较简单的rate decision cost estimate去分析在所有可能的prediction mode中找出小部分相对可以提供更好的prediction quality,换句话说更有可能提供更低的RD cost的prediction mode 。在选中的subset当中在下一个stage会对他们进行更精确的rate decision cost estimation,例如transform kernel selection等逐级地选到最好的、最有可能成为最优的coding mode。在motion estimation方向对传统的diamond shape motion search、center-biased search 和square search算法进行了调整。例如在Libaom中我们采用polar coordinate的sampling approach,就是对在motion search当中的sampling的distribution做了重新调整,使它在搜索密度的方向能够更加均匀分布,也能提高压缩性能。

除此之外Libaom也支持对一系列不同的metric的optimization mode,包括SSE、VMAF/VMAF-NEG等。VMAF是近年出现的比较popular的metric。它相对于PSNR也能够更好的接近实际用户的视觉感受。在Libaom中对VMAF和VMAF的衍生版本VMAF-NEG也有相应的优化模式,在这个模式下,会允许用户采取动态的pre-processing filter,也就是说有一个option是可以对原始的视频信号做pre-filter去增强关键的对比度,在安全区间相对降低一些noise level。可以根据VMAF metric在不同的block、不同context下对reconstruction error的penalty不同,对此采取不同的adapt rate trade-off,基于此条件下相对于base line的Libaom也就是对PSNR SSIM Optimization,VMAF mode会在VAMF条件下提高压缩性能30%-40%,对VMAF-NEG提高大概7%-9%的空间,这些数字是相对于PSNR based Libaom optimization的运行结果。

#3. AV1实时编码器

Libaom AV1实时编码器是从Chrome M90开始被enable by default。

在desktop方向,它相对于VP9的压缩性能提高15%-20%,相对复杂度控制在1.25倍以内。相对于VP9而言,AV1的实时编码器会提供更好的主观压缩指标。在移动端,目前Libaom AV1的实时压缩器主要的目标是对低分辨率,比如QVGA 的resolution可以支持非常低的比特率条件下进行视频通信,最低可以达到15kbps。从2020年8月份开始逐渐把Libaom AV1实时编码器放到production开始roll out。得到的用户反馈是相对于VP8/H264的软件编码器和HEVC的硬件编码器而言反馈是更好的,有更高的frame rate,更少的freeze,用户给的quality rating 也更高。Overall在移动端让用户有更长的视频通话时间。

#4. 图像压缩格式AVIF

AVIF是基于AV1的图像压缩格式,相当于AV1的bitstream在一个HEIF container形式出现,相对于传统的JPEG 而言,AVIF的压缩性能要提高超过80%,在同样的质量条件下,同样reconstruction quality条件下AVIF所需要的file size 应该是JPEG的五分之一以下。我们团队正在积极的推进AVIF编码器的性能优化,在编码器复杂度方向加速了8倍,与此同时造成的压缩性能损耗控制在5%左右,对内存的需求降低了5倍。从去年秋天开始Chrome M85已经支持使用AVIF图像格式,在今年会有更多的运算平台会支持AVIF格式,比如Android、Firefox和Safari。

#5. Libaom v3.0版本的release

今年3月我们进行了Libaom v3.0版本发布。它相对2.0版本压缩性提高大约5%以上,编码器速度进一步加快,如果目标是实时编码器的话实际会产生的binary size会变小,对VOD setting和Real-time setting做了更好的多线程优化,同时也对整个codebase 做了更系统化的文档,希望能够帮助更广泛的developer society,更容易去读懂codebase design并方便大家的使用和contribute Libaom的codebase。

以上就是我的全部分享,谢谢大家!

The cover from creativeboom.com

讲师招募 LiveVideoStackCon 2021 北京站

LiveVideoStackCon 2021 北京站(9月3-4日)正在面向社会公开招募讲师,欢迎通过 speaker@livevideostack.com 提交个人及议题资料,无论你的公司大小,title高低,老鸟还是菜鸟,只要你的内容对技术人有帮助,其他都是次要的,我们将会在24小时内给予反馈。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理!
在日常生活或工作中,我们在判断与对方网络是否畅通,使用的最多的莫过于 ping 命令了。
小林coding
2020/03/31
8260
当你「ping 一下」的时候,你知道它背后的逻辑吗?
我们在遇到网络不通的情况,大家都知道去 ping 一下,看一下网络状况。 那你知道「ping」命令后背的逻辑是什么吗?知道它是如何实现的吗?
奎哥
2018/10/09
1.8K0
当你「ping 一下」的时候,你知道它背后的逻辑吗?
网络协议 5 - ICMP 与 ping:投石问路的侦察兵
    日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了。 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 ping 命令及其对应的 ICMP 协议。
北国风光
2019/04/11
1.1K0
网络协议 5 - ICMP 与 ping:投石问路的侦察兵
你知道ping命令是如何工作的吗?
我们用来测试一台机器与另一台机器的网络连通性一般会使用ping命令,那么你知道ping命令是如何工作的吗?ping命令是基于ICMP协议工作的。
Regan Yue
2023/07/10
4340
你知道ping命令是如何工作的吗?
用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!
无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题。那台机器明明就在那里,你甚至都可以通过机器的终端连上去看。它看着好好的,可是就是连不上去,究竟是哪里出了问题呢?
网络技术联盟站
2020/09/22
8980
用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!
HCNP学习笔记之ICMP协议与ping原理以及用Python实现ping
一、ICMP协议分析 ICMP:Internet控制报文协议。由于IP协议并不是一个可靠的协议,它不保证数据被成功送达,那么,如何才能保证数据的可靠送达呢? 这里就需要使用到一个重要的协议模块ICMP
Jetpropelledsnake21
2018/07/04
1.5K0
ICMP 协议分析
ICMP是(Internet Control Message Protocol)Internet控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
用户8418197
2021/07/03
1.6K0
ICMP协议是什么
我们经常用ping命令,但是可能不知道ping命令的底层协议是ICMP,那到底什么是ICMP
opencode
2022/12/26
1K0
ICMP协议是什么
计算机网络:ICMP协议(Internet控制消息协议)介绍
这里推荐一篇实用的文章:《idea的springboot项目如何看mysql位置》,作者:【用户10024547】。
小明互联网技术分享社区
2024/12/06
2510
计算机网络:ICMP协议(Internet控制消息协议)介绍
【建议收藏】通俗易懂图解网络面试知识-第一篇
关于网络的知识,我这里主要是从OSI分层,网络协议等相关的知识,大家一起来学习,觉得不错,记得点赞,转发,在看哦。
公众号-利志分享
2022/06/13
4010
【建议收藏】通俗易懂图解网络面试知识-第一篇
所谓 ICMP,不过将军与士卒而已
关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失、重复、延迟和乱序等各种情况, 但是 IP 协议对这些糟糕的情况并不拥有有效的检测和弥补措施,当然更不会将这些结果通知收发双方。
飞天小牛肉
2021/05/14
4690
所谓 ICMP,不过将军与士卒而已
脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?
搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢?另外,内行都知道,提到外网IP和内网IP就不得不提NAT路由转换这种东西,那这双是什么鬼?本文就来简单讲讲这些到底都是怎么回事。
JackJiang
2018/11/20
2K0
ICMP (互联网控制消息协议 )是什么
互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。
微风-- 轻许--
2022/04/13
7770
【网络层】DHCP协议(应用层)、ICMP、IPv6详解
即插即用联网服务-------允许地址重用----------支持移动用户加入网络-----------支持在用地址续租
20岁爱吃必胜客
2022/12/30
8330
【网络层】DHCP协议(应用层)、ICMP、IPv6详解
互联网医生-ICMP协议
在《IP协议详解》入门文章中,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是网际报文控制协议(InternetControl Message ProtocoL,ICMP )。
网络工程师笔记
2021/05/17
8200
互联网医生-ICMP协议
ICMP 协议「建议收藏」
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。 中文名 ICMP 外文名 Internet Control Message Protocol 类 型 控制报文协议 协议族 TCP/IP协议族 归 属 网络层协议 作 用 在主机与路由器之间传递控制信息
全栈程序员站长
2022/11/01
2.1K1
ICMP 协议「建议收藏」
一文吃透ICMP协议:网络诊断与故障排查的关键利器
ICMP(Internet Control Message Protocol)即网际控制报文协议,是 TCP/IP 协议族的重要成员,工作在网络层,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成了 TCP/IP 模型中的网络层 。它就像是网络世界中的 “交通警察” 和 “维修工人”,主要负责在 IP 主机、路由器之间传递控制消息,包括报告错误、交换受限控制和状态信息等,以确保网络数据传输的顺畅与稳定。
用户11396661
2025/02/28
2540
一文吃透ICMP协议:网络诊断与故障排查的关键利器
网络世界中的侦察兵----ICMP
学习了IP协议后,都知道IP协议本身是不提供可靠性保障的,那么数据包在这么复杂的互联网环境中传输,总会遇到问题,如果遇到问题后,被丢弃、无回应,可能作为工程师的我们来说都不知道发生了什么事,更别提普通用户了,所以数据包发送出去如果被丢弃、或者某些原因造成的不可达,需要一种协议来进行通知原因,这个协议就是这篇要讲解的ICMP。
网络之路一天
2024/01/08
2580
网络世界中的侦察兵----ICMP
网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?
标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西。本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么。
JackJiang
2018/11/16
1.1K0
linux网络95值工具,Linux下网络故障排查工具之ping|traceroute和tcptraceroute|mtr工具[通俗易懂]
服务器运维人员在日常运维服务器的过程中经常会遇到服务器网络故障,有服务器硬件造成的,也有服务商网络问题造成的,也有区域网络问题造成的,这个时候就需要用到ping,traceroute,mtr这三个命令
全栈程序员站长
2022/08/31
1.6K0
推荐阅读
相关推荐
听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档