HM中AMP模式的快速算法

从HM4.0开始,有AMP模式的快速算法的标签:

#define AMP_ENC_SPEEDUP                                   1 ///< encoder only speed-up by AMP mode skipping
#if AMP_ENC_SPEEDUP
#define AMP_MRG                                           1 ///< encoder only force merge for AMP partition (no motion search for AMP)
#endif

关于AMP的快速算法的两个标签AMP_ENC_SPEEDUPAMP_MRG默认均是打开的。

先讲开关AMP_ENC_SPEEDUP
AMP_ENC_SPEEDUP快速模式不打开,则直接编码四种AMP模式:

xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );

AMP_ENC_SPEEDUP快速模式打开,则用函数TEncCu::deriveTestModeAMP 产生编码相应的AMP模式的条件,满足条件时才调用xCheckRDCostInter。具体如下[1]:
HM中AMP模式的快速算法_第1张图片
若bTestAMP_Hor为真,则需要判断SIZE_2NxnU、SIZE_2NxnD两种模式;若bTestAMP_Ver为真,则需要判断SIZE_nLx2N、SIZE_nRx2N两种模式。
开关AMP_MRG用于决定哪些情况需要尝试merge模式的AMP划分,变量变成了bTestMergeAMP_Hor和bTestMergeAMP_Ver。

参考文献:
[1] 浙江大学博士论文《HEVC低复杂度编码优化算法研究》,2013,沈晓琳

你可能感兴趣的:(H.265,视频编码)