帧间预测算法里另一个重要的概念就是参考帧了
Reference Frame
在实际的软件实现中,一般编码器会维护两个Reference Frame list,分别为 RefFrame[0]和RefFrame[1],当仅只有一个参考帧时,RefFrame[1]会被置空,也就是赋值为 -1
| RefFrame[0] | Name of ref_frame |
|---|---|
| 0 | INTRA_FRAME |
| 1 | LAST_FRAME |
| 2 | LAST2_FRAME |
| 3 | LAST3_FRAME |
| 4 | GOLDEN_FRAME |
| 5 | BWDREF_FRAME |
| 6 | ALTREF2_FRAME |
| 7 | ALTREF_FRAME |
| RefFrame[1] | Name of ref_frame |
|---|---|
| -1 | NONE |
| 0 | INTRA_FRAME |
| 1 | LAST_FRAME |
| 2 | LAST2_FRAME |
| 3 | LAST3_FRAME |
| 4 | GOLDEN_FRAME |
| 5 | BWDREF_FRAME |
| 6 | ALTREF2_FRAME |
| 7 | ALTREF_FRAME |
根据上面提到的概念,帧间预测的时候是分为single reference和compound reference的,顾名思义,single reference就是只参考一个参考帧,compound reference指复合两个参考帧得出最终参考。
这里注意点,compound prediction是参考两帧,但并不意味着这两帧一前一后,因为compound prediction的参考帧也分同向参考于双向参考
下图就是AV1中帧的参考结构,如上面所列出来的,帧间一共有7帧可作为参考帧,其含义大致可以如下理解
| 参照帧名 | 含义 |
|---|---|
| LAST_FRAME | 以前帧中最近的参考帧 |
| LAST2_FRAME | 以前帧中第二近的参考帧 |
| LAST3_FRAME | 以前帧中第三近的参考帧 |
| GOLDEN_FRAME | 以前帧中较远的帧,Golden一般为I帧 |
| BWDREF_FRAME | 未来帧最近的,该帧不做时域滤波 |
| ALTREF2_FRAME | 未来帧中第二近的 |
| ALTREF_FRAME | 未来帧中最远的帧 |

Single Reference 和 Compound Reference
single reference意味着仅从一帧获取运动向量,而compound reference是从不同的两帧获取运动向量,然后取其平均而得到最后的运动向量的。
版权声明:本文为starperfection原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。