以JEM4.0为例,inter/merge/affine的MVP candidates的建立分别用以下几个函数:
/** Constructs a list of candidates for AMVP
* \param uiPartIdx
* \param uiPartAddr
* \param eRefPicList
* \param iRefIdx
* \param pInfo
*/
Void TComDataCU::fillMvpCand ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo
#if VCEG_AZ07_FRUC_MERGE
, TComPrediction * pPred
#endif
)
//! Construct a list of merging candidates
Void TComDataCU::getInterMergeCandidates( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int& numValidMergeCand
#if VCEG_AZ06_IC
, Bool* pbICFlag
#endif
#if COM16_C806_VCEG_AZ10_SUB_PU_TMVP
, UChar* peMergeTypeNeighbors
#if JVET_C0035_ATMVP_SIMPLIFICATION
, TComMvField* pcMvFieldSP[NUM_MGR_TYPE]
, UChar* puhInterDirSP[NUM_MGR_TYPE]
#else
, TComMvField* pcMvFieldSP[2]
, UChar* puhInterDirSP[2]
#endif
, UInt uiDecCurrAbsPartIdx
, TComDataCU* pDecCurrCU
#endif
, Int mrgCandIdx
)
/** Constructs a list of candidates for Affine AMVP
* \param uiPartIdx
* \param uiPartAddr
* \param eRefPicList
* \param iRefIdx
* \param pInfo
*/
Void TComDataCU::fillAffineMvpCand ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AffineAMVPInfo* pInfo )