对于帧间预测而言,一定会涉及到参考图像的问题,但是搞清楚HM中参考图像是如何配置,对理解其编码结构尤为关键。顾名思义,参考图像应该是属于picture级别的,因此可以在compressGOP函数中找到相应的函数。主要包括以下三个函数:
1、arrangeLongtermPicturesInRPS(pcSlice, rcListPic);
2、pcSlice->setRefPicList ( rcListPic );
3、pcSlice->setRefPOCList();
首先说第一个函数,主要是在RPS(Reference Picture Set)句法中设置LongTermPicture,那么什么是LT呢?参考图像主要有以下三种:long-term,short-term before curr和short-term after curr。第一个函数就是用来提供long-term 参考图像的,具体实现可以查看函数,这里不做重点叙述。
重点是第二个函数setRefPicList,上面我们了解到参考图像主要有三种,但是最后参考图像列表中的参考图像是通过下面的方式确定的。那些在参考列表中用到的参考图像,其标志为1,相反,则为0;故setRefPicList函数的实现过程是先通过标志位判断(if(m_pcRPS->getUsed(i)))确定三种参考图像的实际参考帧(如下面第一部分),然后再通过ref_pic_list_init过程,再组成list0和list1列表,实现过程详见程序。