HM平台之xCompressCU(TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth, PartSize eParent)函数

来源:互联网 发布:让wow.js兼容ie8 编辑:程序博客网 时间:2024/06/08 17:35

         这是HEVC编码器最重要的的函数之一,主要是确定CU的分割深度、预测模式等参数。从宏观上大致可以包含merge和skip的预测函数xCheckRDCostMerge2Nx2N()、帧间预测函数xCheckRDCostInter()和帧内预测函数xCheckRDCostIntra() 以及函数copyPartFrom()和xCheckBestMode()。该函数实现的功能:遍历每个预测模式,通过比较率失真代价值,得到最优的预测模式,保存到参数rpcBestCU中,然后通过调用自身进行子CU的编码。参数rpcTempCU主要有两个作用:1.存放每一个预测函数的最优参数,然后通过xCheckBestMode() 函数将最优参数传给rpcBestCU;注意的是,在进行下一个预测函数之前,rpcTempCU会被初始化,模式信息、代价值、失真和码率等参数将会被清零;2.存放子CU的最优信息,当CU进行回溯裁剪时,通过比较rpcBestCU和 rpcTempCU两个参数的率失真代价值进行判断是否划分。copyPartFrom()函数实现的是将子CU的最优信息传递给rpcTempCU。参数eParent是父CU的最优预测模式,这个参数在进行非对称分割模式的预测时会用到。子CU总的率失真代价值的计算:这个率失真代价值的计算并不是将子CU的最优率失真代价值进行相加得到,而是根据总的失真和码率进行计算。这是因为在预测完成后,还会增加一定的码率,如编码分割标志位。函数简介如下:

1. xCheckRDCostMerge2Nx2N():merge和skip模式的预测函数,当残差为0时,为skip模式。这个函数与普通的帧间预测函数的区别是没有运动估计过程。

2. xCheckRDCostInter():普通帧间模式2N×2N、N×N、N×2N、2N×N、2N×nD、2N×nU、nL×2N和nR×2N的预测函数,包括运动估计、运动补偿等过程。作用:进行预测,得到每种帧间模式的率失真代价值、失真和码率,并通过比较得到最优的帧间模式。

3. xCheckRDCostIntra():帧内预测函数,帧内模式包括平面模式、DC模式以及33种角度预测模式。作用:选择最优的一种帧内模式,得到率失真代价值、码率和失真。

4. copyPartFrom():将子CU的最优编码信息传递给当前深度的rpcTempCU中。

5. xCheckBestMode():通过比较rpcTempCU和rpcBestCU中的编码信息,将最优的信息存放在rpcBestCU中。

                                             
0 0