在基于残差编码时,参考帧用于进行预测编码获取预测像素值。参考帧选取是否准确,参考帧个数的多少,均将影响编码器的压缩性能。
在AV1里最大参考帧个数是7个(VP9里是3个,H.265里是16个)。和VP9类似,AV1的参考帧有许多不同类型,除了在VP9视频编码里面已有的LAST(nearest past),GOLDEN(distant past)和ALTREF(temporal filtered future),新增了2个near past帧LAST2和LAST3,以及2个future帧BWDREF和ALTREF2,如下图所示。
其中LAST,LAST2和LAST3是已经编码完的帧,且距离当前帧比较近。GOLDEN帧有点类似H.265里面的关键帧。ALTREF帧比较特殊,它是一种可以不显示的帧,在时域上根据相邻帧的运动轨迹进行滤波而构建,它自身在编码完后会保留在参考帧列表中,为后续帧提供参考。BWDREF是一种lookahead帧,可以给那些时域层级更高和距离较近的帧提供后向参考,它不需要进行滤波。
AV1在decoded frame buffer里面最多可以存储8帧,包括4种类型(LAST,GOLDEN,BWDREF和ALTREF)。在编码的时候,帧间预测帧最多可以选择decoded frame buffer里的2帧作为参考帧。参考帧的使用模式有两种,Single和Compound。
其中Single reference模式的帧间预测只使用1个参考帧,Compound模式的帧间预测会使用2个不同的参考帧。
Compound模式帧间预测有两个特殊情况,即单向Compound和双向Compound预测,前者所使用的参考帧的显示顺序,要么都在当前帧前面,要么都在当前帧的后面。而后者使用的参考帧显示顺序,一个在当前帧的前面,另一个是在当前帧的后面。
现在大多数的视频编码器为了提高压缩性能,往往会使用多层多参考的编码结构,AV1也不例外。AV1里面有一个叫Golden Frame(GF) group的概念,一个GF group里的所有帧可以共享GOLDEN帧和ALTREF帧。
上图中Overlay帧是编码后的ALTREF帧,GF group以KEY Frame或Overlay Frame开始,后面紧跟的是ALTREF帧,这2帧一起组成分层结构的最底层。
使用码流分析软件查看一段AV1码流参考帧,https://pengbins.github.io/aomanalyzer.io
上图用不同颜色表示参考帧类型,可以直观看出每个块使用的参考帧类型和个数。
补充术语
ALTREF:alternate reference frame
BWDREF:backward reference frame
AV1:AOMedia Video 1
作者: 手撕编解码
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。