JEM4.0中有七种预测模式:
1、Merge模式
2、FRUC Merge模式(H.266新增)
3、Affine Merge模式(H.266新增)
4、Inter模式
5、KLT Inter模式(H.266新增)
6、Intra模式
7、PCM Intra模式
这些模式分别对应一下7个函数:
Void xCheckRDCostMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU DEBUG_STRING_FN_DECLARE(sDebug), Bool *earlyDetectionSkipMode );
#if VCEG_AZ07_FRUC_MERGE
Void xCheckRDCostMerge2Nx2NFRUC( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU , Bool *earlyDetectionSkipMode );
#endif
#if COM16_C1016_AFFINE
Void xCheckRDCostAffineMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU );
#endif
#if AMP_MRG
Void xCheckRDCostInter ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize DEBUG_STRING_FN_DECLARE(sDebug), Bool bUseMRG = false
#if VCEG_AZ07_IMV
, Bool bIMV = false , TComDataCU * pcCUInfo2Reuse = NULL
#endif
);
#else
Void xCheckRDCostInter ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize
#if VCEG_AZ07_IMV
, Bool bIMV = false , TComDataCU * pcCUInfo2Reuse = NULL
#endif
);
#endif
#if VCEG_AZ08_INTER_KLT
Void xCheckRDCostInterKLT(TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize);
#endif
Void xCheckRDCostIntra ( TComDataCU *&rpcBestCU,
TComDataCU *&rpcTempCU,
Double &cost,
PartSize ePartSize
DEBUG_STRING_FN_DECLARE(sDebug)
#if VCEG_AZ05_ROT_TR || VCEG_AZ05_INTRA_MPI || COM16_C1044_NSST || COM16_C1046_PDPC_INTRA
, Int& bNonZeroCoeff
#endif
);
Void xCheckIntraPCM ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU );
在所有上面的函数的函数体中,都有下面两个调用语句,用于选出最优的模式:
xCheckDQP( rpcTempCU );
xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);