HEVC学习(十) —— 与变换有关的几个主要函数及重要变量

本文主要是列出几个与变换有关的函数,以及涉及到的比较重要的变量,但不会去深入讨论函数的实现,日后有机会的话会更详细地讨论这几个函数,这里仅是列举出来,起到备忘的作用,也能供大家参考。

 

如何定位到这几个函数的,方法与前面的一篇博客HEVC学习(八) —— 以SAO为例浅析跟踪代码方法类似,有兴趣的朋友可以去看看,这里就不重复这个过程了。

 

在xCompressCU函数中,有这么几个函数值得我们注意的,xCheckRDCostInter、xCheckRDCostMerge2Nx2N、xCheckRDCostIntra。它们分别是实现帧间预测模式、Merge模式、帧内预测式的主函数。前两个函数的子函数xEstimateResidualQT(实际上通过调用函数encodeResAndCalcRdInterCU)、第三个函数的子函数xRecurIntraCodingQT(实际上通过调用xIntraCodingLumaBlk、xIntraCodingChromaBlk)均会调用函数transformNxN,该函数如下定义:

Void TComTrQuant::transformNxN( TComDataCU* pcCU,
                               Pel*        pcResidual, 
                               UInt        uiStride, 
                               TCoeff*     rpcCoeff, 
#if ADAPTIVE_QP_SELECTION
                               Int*&       rpcArlCoeff, 
#endif
                               UInt        uiWidth, 
                               UInt        uiHeight, 
                               UInt&       uiAbsSum, 
                               TextType    eTType, 
                               UInt        uiAbsPartIdx,
                               Bool        useTransformSkip
                               )
{
  if (pcCU->getCUTransquantBypass(uiAbsPartIdx))
  {
    uiAbsSum=0;
    for (UInt k = 0; k<uiHeight; k++)
    {
      for (UInt j = 0; j<uiWidth; j++)
      {
        rpcCoeff[k*uiWidth+j]= pcResidual[k*uiStride+j];
        uiAbsSum += abs(pcResidual[k*uiStride+j]);
      }
    }
    return;
  }
  UInt uiMode;  //luma intra pred
  if(eTType == TEXT_LUMA && pcCU->getPredictionMode(uiAbsPartIdx) == MODE_INTRA )
  {
    uiMode = pcCU->getLumaIntraDir( uiAbsPartIdx );
  }
  else
  {
    uiMode = REG_DCT;
  }
  
  uiAbsSum = 0;
  assert( (pcCU->getSlice()->getSPS()->getMaxTrSize() >= uiWidth) );
  if(useTransformSkip)
  {
    xTransform
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值