x265参考帧管理,首先了解一下帧类型:
openGOP: 关闭情况下gop都是独立解码,反之亦然哦~
IDR: 帧内编码,不参考其他帧;
CRA: openGOP中的第一帧,帧内编码,会参考其他gop中的帧,
RASL:从CRA接入的访问点,如果参考之前的GOP,有些帧会被丢弃.
RADL: 不是从CRA接入的访问点,可以解码的帧
I:帧内解码,会参考IDR.
B:分为可参考和不可参考
http://www.voidcn.com/article/p-arfwwztb-bga.html
参考帧dpb中有m_bHasReferences标记当前帧是否参考,每帧要更新;
标记NAL类型;
参考帧列表RPS按照和当前帧距离的大小排序,参考帧存储在m_picList中;
每帧将帧加入到RPS首位置;
m_picList去除掉m_bHasReferences==0的,放入m_freelist;
指针传值:
m_fencPic->refPic->rpsCurrList0->rpsCurrList0->m_refFrameList;
m_bHasReferences:有没有帧用它作为参考,如果没有从列表中移除
refMask:
-1:参考帧都可用;值为1屏蔽第0个参考帧;2 屏蔽第一个参考帧;4屏蔽第二个参考帧;8屏蔽最后一个参考帧;
怎么来的:利用左边,上边,左上,右上,左下等等已经编码过的来预测;前后向参考帧和mv不一致才开启后向;
另外:/* do not allow bidir merge candidates if PU is smaller than 8x8, drop L1 reference */