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


Ignore:
Timestamp:
27 Mar 2014, 10:11:29 (11 years ago)
Author:
tech
Message:

Merged HTM-10.0-dev0@871. (MV-HEVC 7 HLS)

File:
1 edited

Legend:

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

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    640640  m_ppcCU[uiDepth]->copySubCU( pcCU, uiAbsPartIdx, uiDepth );
    641641 
     642#if H_MV_ENC_DEC_TRAC
     643#if ENC_DEC_TRACE
     644  stopAtPos  ( m_ppcCU[uiDepth]->getSlice()->getPOC(),
     645    m_ppcCU[uiDepth]->getSlice()->getLayerId(),
     646    m_ppcCU[uiDepth]->getCUPelX(),
     647    m_ppcCU[uiDepth]->getCUPelY(),
     648    m_ppcCU[uiDepth]->getWidth(0),
     649    m_ppcCU[uiDepth]->getHeight(0) );
     650#endif
     651#endif
     652
    642653  switch( m_ppcCU[uiDepth]->getPredictionMode(0) )
    643654  {
     
    918929#endif
    919930 
     931#if H_3D && UPDATE_HM13
     932  Bool useDltFlag = (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps());
     933
     934  if ( pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ) || useDltFlag )
     935#else
     936  if ( pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ) )
     937#endif
     938  {
    920939  //===== inverse transform =====
    921940  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
    922941
    923942  Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)TEXT_LUMA];
    924   assert(scalingListType < 6);
     943    assert(scalingListType < SCALING_LIST_NUM);
    925944  m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_LUMA, pcCU->getLumaIntraDir( uiAbsPartIdx ), piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkip );
    926945
     
    936955    {
    937956#if H_3D
     957#if UPDATE_HM13
     958      if ( useDltFlag )
     959#else
    938960      if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     961#endif
    939962      {
    940963        pReco    [ uiX ] = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
     
    953976    pReco     += uiStride;
    954977    pRecIPred += uiRecIPredStride;
     978  }
     979}
     980  else
     981  {
     982    //===== reconstruction =====
     983    Pel* pPred      = piPred;
     984    Pel* pReco      = piReco;
     985    Pel* pRecIPred  = piRecIPred;
     986    for ( Int y = 0; y < uiHeight; y++ )
     987    {
     988      for ( Int x = 0; x < uiWidth; x++ )
     989      {
     990        pReco    [ x ] = pPred[ x ];
     991        pRecIPred[ x ] = pReco[ x ];
     992      }
     993      pPred     += uiStride;
     994      pReco     += uiStride;
     995      pRecIPred += uiRecIPredStride;
     996    }
    955997  }
    956998}
     
    10221064  }
    10231065
     1066  if ( pcCU->getCbf( uiAbsPartIdx, eText, uiTrDepth ) )
     1067  {
    10241068  //===== inverse transform =====
    10251069  Int curChromaQpOffset;
     
    10351079
    10361080  Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)eText];
    1037   assert(scalingListType < 6);
     1081    assert(scalingListType < SCALING_LIST_NUM);
    10381082  m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma );
    10391083
     
    10541098    pReco     += uiStride;
    10551099    pRecIPred += uiRecIPredStride;
     1100  }
     1101}
     1102  else
     1103  {
     1104    //===== reconstruction =====
     1105    Pel* pPred      = piPred;
     1106    Pel* pReco      = piReco;
     1107    Pel* pRecIPred  = piRecIPred;
     1108    for ( Int y = 0; y < uiHeight; y++ )
     1109    {
     1110      for ( Int x = 0; x < uiWidth; x++ )
     1111      {
     1112        pReco    [ x ] = pPred[ x ];
     1113        pRecIPred[ x ] = pReco[ x ];
     1114      }
     1115      pPred     += uiStride;
     1116      pReco     += uiStride;
     1117      pRecIPred += uiRecIPredStride;
     1118    }   
    10561119  }
    10571120}
Note: See TracChangeset for help on using the changeset viewer.