今天算是来进行一次练手,实现全局使用最小CU和PU划分进行编码。
HEVC中,支持CU最大尺寸为64x64,最小为16x16,在代码中在xCompressCU中进行CU的划分。首先输入的CU为最大尺寸,由cfg文件中的MaxCUWidth和MaxCUHeight指定,计算各种划分模式的cost,通过xCheckBestMode选择最优模式进行划分,迭代处理,直到达到最大深度结束。
因此,我们可以从xCheckBestMode入手来进行修改,实现全局使用最小CU。可以看到xCheckBestMode对当前划分模式的cost和之前找出的最优模式的cost进行了比较,选择小的作为最优模式。我们可以将其直接删掉,即当前划分永远是最优模式,直到达到最大深度结束。
Void TEncCu::xCheckBestMode( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth DEBUG_STRING_FN_DECLARE(sParent) DEBUG_STRING_FN_DECLARE(sTest) DEBUG_STRING_PASS_INTO(Bool bAddSizeInfo) )
{
//