HEVC中的SAO 5 saoComponentParamDist

函数功能: 为当前CTU找到最佳的Y分量最佳SAO_TYPE。saoComponentParamDist

for (typeIdx=0; typeIdx<MAX_NUM_SAO_TYPE; typeIdx++)

                                            //遍历所有的SAO_TYPE,EO_0 ,  EO_1 ,  EO_2, EO_3, BO, MAX_NUM_SAO_TYPE.

{
   estDist = estSaoTypeDist(yCbCr, typeIdx, shift, lambda, currentDistortionTableBo, currentRdCostTableBo);                                                                                                                
//得到当前滤波类型的失真值deltaD,以及offset
 //SAO_MAX_BO_CLASSES=32  SAO_BO_LEN=4,蓝色代码部分参考文章JCTVC-H0406   

      if( typeIdx == SAO_BO )
      {
       for(Int i=0; i< SAO_MAX_BO_CLASSES -SAO_BO_LEN +1; i++)


      {
        currentRDCost = 0.0;
        for(UInt uj = i; uj < i+SAO_BO_LEN; uj++)
        {
          currentRDCost += currentRdCostTableBo[uj];
        }
        if( currentRDCost < bestRDCostTableBo)
        {
          bestRDCostTableBo = currentRDCost;
          bestClassTableBo  = i;
        }
      }
      estDist = 0;
      for(classIdx = bestClassTableBo; classIdx < bestClassTableBo+SAO_BO_LEN; classIdx++)
      {
        estDist += currentDistortionTableBo[classIdx];
      }

    }

    if(m_dCost[yCbCr][typeIdx] < dCostPartBest) //得到RDcost最小的SAO_TYPE
    {
      dCostPartBest = m_dCost[yCbCr][typeIdx];
      copySaoUnit(saoLcuParam, &saoLcuParamRdo );
      bestDist = estDist;       
    }


     // merge left or merge up 计算merge 上面CTU,和左边的CTU时的deltaD.


  for (Int idxNeighbor=0;idxNeighbor<2;idxNeighbor++) //idxNeighbor=0,为判断左边CTU,=1,判断上边CTU。
  {......

        for(classIdx = 0; classIdx < m_iNumClass[typeIdx]; classIdx++)
        {
          merge_iOffset = saoLcuParamNeighbor->offset[classIdx];//获得上CTU或者左CTU的offset.
          estDist   += estSaoDist(m_iCount [yCbCr][typeIdx][classIdx+mergeBandPosition+1], merge_iOffset,                           m_iOffsetOrg[yCbCr][typeIdx][classIdx+mergeBandPosition+1],  shift);

               //计算当使用Merge 上CTU或者左CTU时的deltaD.
        }

      compDistortion[idxNeighbor+1] += ((Double)estDist/lambda);

  } 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值