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);

  } 
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章