Ignore:
Timestamp:
4 Nov 2013, 16:32:06 (11 years ago)
Author:
zhang
Message:

JCT3V-F0132; JCT3V-F0171

Location:
branches/HTM-8.2-dev3-Qualcomm/source/Lib/TLibDecoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecSbac.cpp

    r655 r667  
    408408}
    409409
     410#if QC_DIM_DELTADC_UNIFY_F0132
     411Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt uiNumSeg )
     412{
     413  UInt absValDeltaDC = 0;
     414  xReadExGolombLevel( absValDeltaDC, m_cDdcDataSCModel.get(0, 0, 0) );
     415  rValDeltaDC = (Pel)absValDeltaDC + ( uiNumSeg > 1 ? 0 : 1 );
     416
     417  if( rValDeltaDC != 0 )
     418  {
     419    UInt uiSign;
     420    m_pcTDecBinIf->decodeBinEP( uiSign );
     421    if ( uiSign )
     422    {
     423      rValDeltaDC = -rValDeltaDC;
     424    }
     425  }
     426}
     427#else
    410428Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt dimType )
    411429{
     
    424442  }
    425443}
     444#endif
     445
    426446#if H_3D_DIM_DMM
    427447Void TDecSbac::xParseDmm1WedgeIdx( UInt& ruiTabIdx, Int iNumBit )
     
    11571177  }
    11581178
    1159 #if H_3D_DIM_SDC
     1179#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    11601180  if( pcCU->getSDCFlag(absPartIdx) )
    11611181  {
     
    11731193  {
    11741194#endif
     1195#if QC_DIM_DELTADC_UNIFY_F0132
     1196    if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) )
     1197#else
    11751198    if( dimType < DIM_NUM_TYPE )
     1199#endif
    11761200    {
    11771201      UInt symbol;
     1202#if QC_DIM_DELTADC_UNIFY_F0132
     1203      UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2;
     1204
     1205      if( pcCU->getSDCFlag( absPartIdx ) )
     1206      {
     1207        assert(pcCU->getPartitionSize(absPartIdx)==SIZE_2Nx2N);
     1208        pcCU->setTrIdxSubParts(0, absPartIdx, depth);
     1209        pcCU->setCbfSubParts(1, 1, 1, absPartIdx, depth);
     1210      }
     1211
     1212      m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get(0, 0, uiNumSegments-1) );
     1213
     1214      if( symbol )
     1215      {
     1216        if( !pcCU->getSDCFlag( absPartIdx ) )
     1217        {
     1218          dir += symbol;
     1219        }
     1220      }
     1221      for( UInt segment = 0; segment < uiNumSegments; segment++ )
     1222      {
     1223        Pel valDeltaDC = 0;
     1224        if( symbol )
     1225        {
     1226          xParseDimDeltaDC( valDeltaDC, uiNumSegments );
     1227        }
     1228
     1229        if( pcCU->getSDCFlag( absPartIdx ) )
     1230        {
     1231          pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx );
     1232        }
     1233        else
     1234        {
     1235          pcCU->setDimDeltaDC( dimType, segment, absPartIdx, valDeltaDC );
     1236        }
     1237      }
     1238#else
    11781239      m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get(0, 0, (RBC_IDX == dimType) ? 1 : 0) );
    11791240      if( symbol )
     
    11871248        }
    11881249      }
    1189     }
    1190 #if H_3D_DIM_SDC
     1250#endif
     1251    }
     1252#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    11911253  }
    11921254#endif
  • branches/HTM-8.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecSbac.h

    r655 r667  
    9999#if H_3D_DIM
    100100  Void  xReadExGolombLevel   ( UInt& ruiSymbol, ContextModel& rcSCModel  );
     101#if QC_DIM_DELTADC_UNIFY_F0132
     102  Void  xParseDimDeltaDC     ( Pel& rValDeltaDC, UInt uiNumSeg );
     103#else
    101104  Void  xParseDimDeltaDC     ( Pel& rValDeltaDC, UInt dimType );
     105#endif
    102106#if H_3D_DIM_DMM
    103107  Void  xParseDmm1WedgeIdx   ( UInt& ruiTabIdx, Int iNumBit );
Note: See TracChangeset for help on using the changeset viewer.