estIntraPredQT

来源:互联网 发布:人工智能狂潮 pdf 编辑:程序博客网 时间:2024/05/29 23:46
首先是inter部分,在xCheckRDCostInter中,的确prediction和residual coding是分开的,先是m_pcPredSearch->predInterSearch进行运动估计,再是m_pcPredSearch->encodeResAndCalcRdInterCU进行残差编码,但是,在这个残差编码中,调用了xEstimateResidualQT进行递归编码,其思路跟帧内预测的对应函数是类似的,这点该如何理解?
其次是intra部分,在xCheckRDCostIntra中,(只考虑亮度分量)工作量都在m_pcPredSearch  ->estIntraPredQT中,先有一个外循环for( UInt uiPU = 0; uiPU < uiNumPU; uiPU++, uiPartOffset += uiQNumParts )对CU中的每个PU进行遍历,其次的一个循环for( Int modeIdx = 0; modeIdx < numModesAvailable; modeIdx++ )对每种预测模式进行遍历,然后根据一个简化了的cost筛选出numModesForFullRD个最佳的待选项,此处的数量小于35但大于1,跟PU的尺寸有关。
再次,还是intra部分,继续上面的讨论,下一个循环是for( UInt uiMode = 0; uiMode < numModesForFullRD; uiMode++ ),此循环中会调用xRecurIntraCodingQT进行TU的划分,注意此时倒数第二个参数为true,即该函数中的bCheckSplit为false,只进行当前深度的TU计算;根据计算得到的RDCost,从numModesForFullRD中选出最佳的一个,此处已经在uiMode的循环外了。然后再次调用xRecurIntraCodingQT,注意此时倒数第二个参数为false,即函数中的bCheckSplit为true,进行所有深度的TU计算,从而确定最终的TU划分。
原创粉丝点击