在上一篇介绍的函数中,在求TMVP时调用了一个比较重要的函数,xGetColMVP。本文对该函数进行较为详细的分析:
Bool TComDataCU::xGetColMVP( RefPicList eRefPicList, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int& riRefIdx )
{//! 这部分的内容可以参考draft 8.5.2.1.7, Derivation process for temporal luma motion vector prediction
//! 这个函数的返回条件可以参考该部分的第3小点,The variables mvLXCol and availableFlagLXCol are derived as follows ...
UInt uiAbsPartAddr = uiPartUnitIdx;
RefPicList eColRefPicList;
Int iColPOC, iColRefPOC, iCurrPOC, iCurrRefPOC, iScale;
TComMv cColMv;
// use coldir.
//! Colocated Picture
TComPic *pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx());
//! Colocated CU
TComDataCU *pColCU = pColPic->getCU( uiCUAddr );
if(pColCU->getPic()==0||pColCU->getPartitionSize(uiPartUn