Changeset 1124 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecCu.cpp


Ignore:
Timestamp:
10 Nov 2014, 12:22:20 (10 years ago)
Author:
tech
Message:

Merged branch 12.2-dev0@1123

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibDecoder/TDecCu.cpp

    r1084 r1124  
    291291  DTRACE_CU_S("=========== coding_unit ===========\n")
    292292#endif
    293 
    294 
     293#if !LGE_DDD_REMOVAL_J0042_J0030
    295294#if H_3D_DDD
    296295      pcCU->setUseDDD( false, uiAbsPartIdx, uiDepth );
     296#endif
    297297#endif
    298298
     
    315315  {
    316316#if H_3D_ARP && H_3D_IV_MERGE
     317#if HHI_TOOL_PARAMETERS_I2_J0107
     318    if( pcCU->getSlice()->getIvResPredFlag() || pcCU->getSlice()->getIvMvPredFlag() )
     319#else
    317320    if( pcCU->getSlice()->getVPS()->getUseAdvRP( pcCU->getSlice()->getLayerId() ) || pcCU->getSlice()->getVPS()->getIvMvPredFlag( pcCU->getSlice()->getLayerId() ))
     321#endif
    318322#else
    319323#if H_3D_ARP
     
    345349#endif
    346350#if H_3D_NBDV_REF
     351#if HHI_TOOL_PARAMETERS_I2_J0107
     352      if( pcCU->getSlice()->getDepthBasedBlkPartFlag() )  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
     353#else
    347354      if(pcCU->getSlice()->getVPS()->getDepthRefinementFlag( pcCU->getSlice()->getLayerIdInVps() ))  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
     355#endif
    348356      {
    349357        DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true);
     
    452460#endif
    453461    pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, 0, uiDepth );
    454 
     462#if !LGE_DDD_REMOVAL_J0042_J0030
    455463#if H_3D_DDD
    456464    if( uiMergeIndex == m_ppcCU[uiDepth]->getUseDDDCandIdx() )
     
    460468        pcCU->setDDDepthSubParts( m_ppcCU[uiDepth]->getDDTmpDepth(),uiAbsPartIdx, 0, uiDepth );
    461469    }
     470#endif
    462471#endif
    463472
     
    735744  //construction of depth candidates
    736745  Pel testDepth;
     746#if SINGLE_DEPTH_SIMP_J0115
     747  Pel DepthNeighbours[2];
     748#else
    737749  Pel DepthNeighbours[5];
     750#endif
    738751  Int index =0;
     752#if SINGLE_DEPTH_SIMP_J0115
     753  for( Int i = 0; (i < 2) && (index<SINGLE_DEPTH_MODE_CAND_LIST_SIZE) ; i++ )
     754#else
    739755  for( Int i = 0; (i < 5) && (index<SINGLE_DEPTH_MODE_CAND_LIST_SIZE) ; i++ )
     756#endif
    740757  {
    741758    if(!pcCU->getNeighDepth (0, uiAbsPartIdx, &testDepth, i))
     
    745762    DepthNeighbours[index]=testDepth;
    746763    index++;
     764#if !SINGLE_DEPTH_SIMP_J0115
    747765    for(Int j=0;j<index-1;j++)
    748766    {
     
    753771     }
    754772    }
     773#endif
    755774  }
    756775
     
    10631082    }
    10641083  }
    1065  
     1084
    10661085  TextType  eText             = ( uiChromaId > 0 ? TEXT_CHROMA_V : TEXT_CHROMA_U );
    10671086  UInt      uiWidth           = pcCU     ->getWidth   ( 0 ) >> ( uiTrDepth + 1 );
     
    10711090  Pel*      piPred            = ( uiChromaId > 0 ? pcPredYuv->getCrAddr( uiAbsPartIdx ) : pcPredYuv->getCbAddr( uiAbsPartIdx ) );
    10721091  Pel*      piResi            = ( uiChromaId > 0 ? pcResiYuv->getCrAddr( uiAbsPartIdx ) : pcResiYuv->getCbAddr( uiAbsPartIdx ) );
    1073  
     1092
    10741093  UInt      uiNumCoeffInc     = ( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() * pcCU->getSlice()->getSPS()->getMaxCUHeight() ) >> ( pcCU->getSlice()->getSPS()->getMaxCUDepth() << 1 ) ) >> 2;
    10751094  TCoeff*   pcCoeff           = ( uiChromaId > 0 ? pcCU->getCoeffCr() : pcCU->getCoeffCb() ) + ( uiNumCoeffInc * uiAbsPartIdx );
    1076  
     1095
    10771096  UInt      uiChromaPredMode  = pcCU->getChromaIntraDir( 0 );
    1078  
     1097
    10791098  UInt      uiZOrder          = pcCU->getZorderIdxInCU() + uiAbsPartIdx;
    10801099  Pel*      piRecIPred        = ( uiChromaId > 0 ? pcCU->getPic()->getPicYuvRec()->getCrAddr( pcCU->getAddr(), uiZOrder ) : pcCU->getPic()->getPicYuvRec()->getCbAddr( pcCU->getAddr(), uiZOrder ) );
     
    10871106
    10881107  pcCU->getPattern()->initAdiPatternChroma( pcCU, uiAbsPartIdx, uiTrDepth,
    1089                                            m_pcPrediction->getPredicBuf       (),
    1090                                            m_pcPrediction->getPredicBufWidth  (),
    1091                                            m_pcPrediction->getPredicBufHeight (),
    1092                                            bAboveAvail, bLeftAvail );
     1108    m_pcPrediction->getPredicBuf       (),
     1109    m_pcPrediction->getPredicBufWidth  (),
     1110    m_pcPrediction->getPredicBufHeight (),
     1111    bAboveAvail, bLeftAvail );
    10931112  Int* pPatChroma   = ( uiChromaId > 0 ? pcCU->getPattern()->getAdiCrBuf( uiWidth, uiHeight, m_pcPrediction->getPredicBuf() ) : pcCU->getPattern()->getAdiCbBuf( uiWidth, uiHeight, m_pcPrediction->getPredicBuf() ) );
    1094  
     1113
    10951114  //===== get prediction signal =====
    10961115  {
     
    11071126  if ( pcCU->getCbf( uiAbsPartIdx, eText, uiTrDepth ) )
    11081127  {
    1109   //===== inverse transform =====
    1110   Int curChromaQpOffset;
    1111   if(eText == TEXT_CHROMA_U)
    1112   {
    1113     curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCbQpOffset() + pcCU->getSlice()->getSliceQpDeltaCb();
    1114   }
    1115   else
    1116   {
    1117     curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
    1118   }
    1119   m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset );
    1120 
    1121   Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)eText];
     1128    //===== inverse transform =====
     1129    Int curChromaQpOffset;
     1130    if(eText == TEXT_CHROMA_U)
     1131    {
     1132      curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCbQpOffset() + pcCU->getSlice()->getSliceQpDeltaCb();
     1133    }
     1134    else
     1135    {
     1136      curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
     1137    }
     1138    m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset );
     1139
     1140    Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)eText];
    11221141    assert(scalingListType < SCALING_LIST_NUM);
    1123   m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma );
    1124 
    1125   //===== reconstruction =====
    1126   Pel* pPred      = piPred;
    1127   Pel* pResi      = piResi;
    1128   Pel* pReco      = piReco;
    1129   Pel* pRecIPred  = piRecIPred;
    1130   for( UInt uiY = 0; uiY < uiHeight; uiY++ )
    1131   {
    1132     for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    1133     {
    1134       pReco    [ uiX ] = ClipC( pPred[ uiX ] + pResi[ uiX ] );
    1135       pRecIPred[ uiX ] = pReco[ uiX ];
    1136     }
    1137     pPred     += uiStride;
    1138     pResi     += uiStride;
    1139     pReco     += uiStride;
    1140     pRecIPred += uiRecIPredStride;
    1141   }
    1142 }
     1142    m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma );
     1143
     1144    //===== reconstruction =====
     1145    Pel* pPred      = piPred;
     1146    Pel* pResi      = piResi;
     1147    Pel* pReco      = piReco;
     1148    Pel* pRecIPred  = piRecIPred;
     1149    for( UInt uiY = 0; uiY < uiHeight; uiY++ )
     1150    {
     1151      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
     1152      {
     1153        pReco    [ uiX ] = ClipC( pPred[ uiX ] + pResi[ uiX ] );
     1154        pRecIPred[ uiX ] = pReco[ uiX ];
     1155      }
     1156      pPred     += uiStride;
     1157      pResi     += uiStride;
     1158      pReco     += uiStride;
     1159      pRecIPred += uiRecIPredStride;
     1160    }
     1161  }
    11431162  else
    11441163  {
Note: See TracChangeset for help on using the changeset viewer.