Ignore:
Timestamp:
13 May 2015, 15:16:14 (10 years ago)
Author:
hhi
Message:

Alignment and reactivation of DMM and depth encoder optimizations:

  • new macro NH_3D_DMM for DMM functionality, including several clean-ups.
  • new macro NH_3D_SDC for SDC functionality, currently only used for covering common SDC and DMM parts.
  • new macro NH_3D_ENC_DEPTH for encoder optimizations related to depth.
  • temporary macro TEMP_SDC_CLEANUP for covering several proposed cleanups related to SDC and DMM.
Location:
branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r1200 r1209  
    33893389#endif
    33903390#if H_3D_INTER_SDC
    3391 Void TDecCavlc::parseDeltaDC( TComDataCU* /*pcCU*/, UInt /*uiAbsPartIdx*/, UInt /*uiDepth*/ )
    3392 {
    3393   assert(0);
    3394 }
    3395 
    33963391Void TDecCavlc::parseSDCFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    33973392{
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecCAVLC.h

    r1200 r1209  
    123123  Void  parseICFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    124124#endif
     125#if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
     126  Void  parseDeltaDC        ( TComDataCU* /*pcCU*/, UInt /*absPartIdx*/, UInt /*depth*/ ) { assert(0); };
     127#endif
    125128#if H_3D_INTER_SDC
    126   Void  parseDeltaDC        ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    127129  Void  parseSDCFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    128130#endif
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecCu.cpp

    r1200 r1209  
    10091009
    10101010  //===== get prediction signal =====
    1011 #if H_3D_DIM
    1012   if( isDimMode( uiLumaPredMode ) )
    1013   {
    1014     m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight );
     1011#if NH_3D_DMM
     1012  if( bIsLuma && isDmmMode( uiChFinalMode ) )
     1013  {
     1014    m_pcPrediction->predIntraLumaDmm( pcCU, uiAbsPartIdx, getDmmType( uiChFinalMode ), piPred, uiStride, uiWidth, uiHeight );
    10151015  }
    10161016  else
    10171017  {
    10181018#endif
    1019 
    10201019  m_pcPrediction->predIntraAng( compID,   uiChFinalMode, 0 /* Decoder does not have an original image */, 0, piPred, uiStride, rTu, bAboveAvail, bLeftAvail, bUseFilteredPredictions );
    1021 #if H_3D_DIM
     1020#if NH_3D_DMM
    10221021  }
    10231022#endif
     
    10401039#endif
    10411040#if H_3D
    1042   Bool useDltFlag = (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps());
     1041  Bool useDltFlag = (isDmmMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps());
    10431042
    10441043  if ( pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ) || useDltFlag )
     
    11581157  }
    11591158}
    1160 #if H_3D_DIM
    1161       mapDepthModeToIntraDir( uiChromaPredMode );
    1162 #endif
    1163 
    11641159
    11651160Void
     
    11911186Void TDecCu::xReconIntraSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    11921187{
     1188#if TEMP_SDC_CLEANUP // PM: consider this cleanup for DMM and SDC
     1189  TComYuv* pcRecoYuv  = m_ppcYuvReco[uiDepth];
     1190  TComYuv* pcPredYuv  = m_ppcYuvReco[uiDepth];
     1191  TComYuv* pcResiYuv  = m_ppcYuvResi[uiDepth];
     1192
     1193  Bool bAboveAvail    = false;
     1194  Bool bLeftAvail     = false;
     1195  UInt uiWidth        = pcCU->getWidth ( 0 );
     1196  UInt uiHeight       = pcCU->getHeight( 0 );
     1197  UInt uiLumaPredMode = pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiAbsPartIdx );
     1198
     1199  UInt sdcDepth = 0;
     1200  UInt uiStride;
     1201  Pel* piReco;
     1202  Pel* piPred;
     1203  Pel* piResi;
     1204
     1205  UInt uiZOrder;       
     1206  Pel* piRecIPred;     
     1207  UInt uiRecIPredStride;
     1208 
     1209  Pel apDCPredValues[2];
     1210  UInt uiNumSegments;
     1211
     1212  Bool* pbMask = NULL;
     1213  UInt uiMaskStride = 0;
     1214
     1215#if NH_3D_DMM
     1216  TComWedgelet* dmm4Segmentation = NULL;
     1217  if( isDmmMode( uiLumaPredMode ) )
     1218  {
     1219    assert( uiWidth == uiHeight  );
     1220    assert( uiWidth >= DMM_MIN_SIZE && uiWidth <= DMM_MAX_SIZE );
     1221    assert( !((uiWidth >> pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()) > 1) );
     1222
     1223    uiNumSegments     = 2;
     1224
     1225    uiStride          = pcRecoYuv->getStride( COMPONENT_Y );
     1226    piReco            = pcRecoYuv->getAddr  ( COMPONENT_Y, uiAbsPartIdx );
     1227    piPred            = pcPredYuv->getAddr  ( COMPONENT_Y, uiAbsPartIdx );
     1228    piResi            = pcResiYuv->getAddr  ( COMPONENT_Y, uiAbsPartIdx );
     1229
     1230    piRecIPred        = pcCU->getPic()->getPicYuvRec()->getAddr  ( COMPONENT_Y, pcCU->getCtuRsAddr(), pcCU->getZorderIdxInCtu() + uiAbsPartIdx );
     1231    uiRecIPredStride  = pcCU->getPic()->getPicYuvRec()->getStride( COMPONENT_Y );
     1232
     1233    //===== init availability pattern =====
     1234#if !TEMP_SDC_CLEANUP // PM: please migrate together with below "initPattern" and remove macro
     1235    pcCU->getPattern()->initPattern   ( pcCU, sdcDepth, uiAbsPartIdx );
     1236    pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, sdcDepth, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail );
     1237#endif
     1238
     1239    // get partition
     1240    pbMask       = new Bool[ uiWidth*uiHeight ];
     1241    uiMaskStride = uiWidth;
     1242    switch( getDmmType( uiLumaPredMode ) )
     1243    {
     1244    case( DMM1_IDX ): { (getWedgeListScaled( uiWidth )->at( pcCU->getDmm1WedgeTabIdx( uiAbsPartIdx ) )).getPatternScaledCopy( uiWidth, pbMask ); } break;
     1245    case( DMM4_IDX ): { m_pcPrediction->predContourFromTex( pcCU, uiAbsPartIdx, uiWidth, uiHeight, pbMask );                                     } break;
     1246    default: assert(0);
     1247    }
     1248
     1249    // get predicted partition values
     1250    Pel predDC1 = 0, predDC2 = 0;
     1251    m_pcPrediction->predBiSegDCs( pcCU, uiAbsPartIdx, uiWidth, uiHeight, pbMask, uiMaskStride, predDC1, predDC2 );
     1252
     1253    // set prediction signal
     1254    Pel* pDst = piPred;
     1255    m_pcPrediction->assignBiSegDCs( pDst, uiStride, pbMask, uiMaskStride, predDC1, predDC2 );
     1256    apDCPredValues[0] = predDC1;
     1257    apDCPredValues[1] = predDC2;
     1258  }
     1259  else // regular HEVC intra modes
     1260  {
     1261#endif
     1262    uiNumSegments = 1;
     1263
     1264    UInt numParts = 1;
     1265    UInt uiSubPartIdx = uiAbsPartIdx;
     1266
     1267    if ((uiWidth >> pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()) > 1)
     1268    {
     1269      numParts = uiWidth * uiWidth >> (2 * pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize());
     1270      sdcDepth = g_aucConvertToBit[uiWidth] + 2 - pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize();
     1271      uiWidth = uiHeight = (1 << pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize());
     1272    }
     1273
     1274    for ( Int i = 0; i < numParts; i++ )
     1275    {
     1276      uiStride    = pcRecoYuv->getStride  ();
     1277      piReco      = pcRecoYuv->getLumaAddr( uiSubPartIdx );
     1278      piPred      = pcPredYuv->getLumaAddr( uiSubPartIdx );
     1279      piResi      = pcResiYuv->getLumaAddr( uiSubPartIdx );
     1280
     1281      uiZOrder          = pcCU->getZorderIdxInCU() + uiSubPartIdx;
     1282      piRecIPred        = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder );
     1283      uiRecIPredStride  = pcCU->getPic()->getPicYuvRec()->getStride  ();
     1284
     1285      AOF( uiWidth == uiHeight );
     1286
     1287      //===== init availability pattern =====
     1288      pcCU->getPattern()->initPattern   ( pcCU, sdcDepth, uiSubPartIdx );
     1289      pcCU->getPattern()->initAdiPattern( pcCU, uiSubPartIdx, sdcDepth, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail );
     1290
     1291      m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail );
     1292
     1293      if ( numParts > 1 )
     1294      {
     1295        for( UInt uiY = 0; uiY < uiHeight; uiY++ )
     1296        {
     1297          for( UInt uiX = 0; uiX < uiWidth; uiX++ )
     1298          {
     1299            piReco        [ uiX ] = ClipY( piPred[ uiX ] );
     1300            piRecIPred    [ uiX ] = piReco[ uiX ];
     1301          }
     1302          piPred     += uiStride;
     1303          piReco     += uiStride;
     1304          piRecIPred += uiRecIPredStride;
     1305        }
     1306      }
     1307      uiSubPartIdx += ( (uiWidth * uiWidth) >> 4 );
     1308    }
     1309
     1310    // reset to full block
     1311    uiWidth  = pcCU->getWidth( 0 );
     1312    uiHeight = pcCU->getHeight( 0 );
     1313
     1314    piReco            = pcRecoYuv->getLumaAddr( uiAbsPartIdx );
     1315    piPred            = pcPredYuv->getLumaAddr( uiAbsPartIdx );
     1316    piResi            = pcResiYuv->getLumaAddr( uiAbsPartIdx );
     1317
     1318    uiZOrder          = pcCU->getZorderIdxInCU() + uiAbsPartIdx;
     1319    piRecIPred        = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder );
     1320    uiRecIPredStride  = pcCU->getPic()->getPicYuvRec()->getStride  ();
     1321
     1322    m_pcPrediction->predConstantSDC( piPred, uiStride, uiWidth, apDCPredValues[0] ); apDCPredValues[1] = 0;
     1323#if NH_3D_DMM
     1324  }
     1325#endif
     1326#else
    11931327  UInt uiWidth        = pcCU->getWidth  ( 0 );
    11941328  UInt uiHeight       = pcCU->getHeight ( 0 );
     
    12421376    TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
    12431377    //===== get prediction signal =====
    1244     if( isDimMode( uiLumaPredMode ) )
     1378    if( isDmmMode( uiLumaPredMode ) )
    12451379    {
    12461380      m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, false, dmm4Segmentation  );
     
    12921426  UInt uiMaskStride = 0;
    12931427 
    1294   if( getDimType( uiLumaPredMode ) == DMM1_IDX )
     1428  if( getDmmType( uiLumaPredMode ) == DMM1_IDX )
    12951429  {
    12961430    Int uiTabIdx = pcCU->getDmmWedgeTabIdx(DMM1_IDX, uiAbsPartIdx);
     
    13041438    uiMaskStride = pcCU->isDMM1UpscaleMode( uiWidth ) ? uiWidth : pcWedgelet->getStride();
    13051439  }
    1306   if( getDimType( uiLumaPredMode ) == DMM4_IDX )
     1440  if( getDmmType( uiLumaPredMode ) == DMM4_IDX )
    13071441  {
    13081442    uiNumSegments = 2;
     
    13121446  // get DC prediction for each segment
    13131447  Pel apDCPredValues[2];
    1314   if ( getDimType( uiLumaPredMode ) == DMM1_IDX || getDimType( uiLumaPredMode ) == DMM4_IDX )
     1448  if ( getDmmType( uiLumaPredMode ) == DMM1_IDX || getDmmType( uiLumaPredMode ) == DMM4_IDX )
    13151449  {
    13161450    apDCPredValues[0] = pcCU->getDmmPredictor( 0 );
     
    13211455    m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode);
    13221456  }
     1457#endif
    13231458 
    13241459  // reconstruct residual based on mask + DC residuals
     
    13791514    pRecCr += uiStrideC;
    13801515  }
     1516#if NH_3D_DMM
     1517#if TEMP_SDC_CLEANUP // PM: consider this cleanup for DMM and SDC
     1518  if( pbMask ) { delete[] pbMask; }
     1519#else
    13811520  dmm4SegmentationOrg->destroy(); delete dmm4SegmentationOrg;
     1521#endif
     1522#endif
    13821523}
    13831524#endif
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecEntropy.cpp

    r1200 r1209  
    970970    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
    971971}
     972#endif
    972973#if H_3D_INTER_SDC
    973974  if( pcCU->getSDCFlag( uiAbsPartIdx ) && !pcCU->isIntra( uiAbsPartIdx) )
     
    978979  }
    979980#endif
    980   if( pcCU->getSlice()->getIsDepth() && ( pcCU->getSDCFlag( uiAbsPartIdx ) || pcCU->isIntra( uiAbsPartIdx ) ) )
    981   {
    982     Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1;
    983     UInt uiPartOffset = ( pcCU->getPic()->getNumPartInCU() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2;
    984  
    985     if( !pcCU->getSDCFlag( uiAbsPartIdx ) )
    986     {
    987       for( Int iPart = 0; iPart < iPartNum; iPart++ )
    988       {
    989         if( getDimType( pcCU->getLumaIntraDir( uiAbsPartIdx + uiPartOffset*iPart ) ) < DIM_NUM_TYPE )
    990         {
    991           m_pcEntropyDecoderIf->parseDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart, uiDepth + ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) );
    992         }
    993       }
    994     }
    995     else
     981#if NH_3D
     982  if( pcCU->getSlice()->getIsDepth() )
     983  {
     984#if H_3D_DIM_SDC || H_3D_INTER_SDC
     985    if( pcCU->getSDCFlag( uiAbsPartIdx ) )
    996986    {
    997987      m_pcEntropyDecoderIf->parseDeltaDC( pcCU, uiAbsPartIdx, uiDepth );
    998988      return;
    999989    }
     990#endif
     991#if NH_3D_DMM
     992    if( pcCU->isIntra( uiAbsPartIdx ) )
     993    {
     994      Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1;
     995      UInt uiPartOffset = ( pcCU->getPic()->getNumPartitionsInCtu() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2;
     996      for( Int iPart = 0; iPart < iPartNum; iPart++ )
     997      {
     998        if( isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiAbsPartIdx + uiPartOffset*iPart ) ) )
     999        {
     1000          m_pcEntropyDecoderIf->parseDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart, uiDepth + ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) );
     1001        }
     1002      }
     1003    }
     1004#endif
    10001005  }
    10011006#endif
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecEntropy.h

    r1200 r1209  
    9191  virtual Void parseICFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
    9292#endif
     93#if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
     94  virtual Void  parseDeltaDC      ( TComDataCU* pcCU, UInt absPartIdx, UInt depth ) = 0;
     95#endif
    9396#if H_3D_INTER_SDC
    94   virtual Void parseDeltaDC       ( TComDataCU* pcCU, UInt absPartIdx, UInt depth ) = 0;
    9597  virtual Void parseSDCFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
    9698#endif
     
    180182  Void decodeICFlag            ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    181183#endif
     184
    182185#if H_3D_INTER_SDC
    183186  Void decodeSDCFlag           ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecSbac.cpp

    r1200 r1209  
    106106, m_ChromaQpAdjFlagSCModel                   ( 1,             1,                      NUM_CHROMA_QP_ADJ_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
    107107, m_ChromaQpAdjIdcSCModel                    ( 1,             1,                      NUM_CHROMA_QP_ADJ_IDC_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
    108 #if H_3D_DIM
    109 , m_cDepthIntraModeSCModel    ( 1,             1,               NUM_DEPTH_INTRA_MODE_CTX      , m_contextModels + m_numContextModels, m_numContextModels)
    110 , m_cDdcFlagSCModel           ( 1,             1,               NUM_DDC_FLAG_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    111 , m_cDdcDataSCModel           ( 1,             1,               NUM_DDC_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    112 , m_cAngleFlagSCModel         ( 1,             1,               NUM_ANGLE_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
     108
     109#if NH_3D_DMM
     110, m_cNotDmmFlagSCModel                       ( 1,             1,                      NUM_NOTDMM_FLAG_CTX                  , m_contextModels + m_numContextModels, m_numContextModels)
     111, m_cDmmModeSCModel                          ( 1,             1,                      NUM_DMM_MODE_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
     112#endif
     113#if NH_3D_DMM || NH_3D_SDC
     114, m_cDdcDataSCModel                          ( 1,             1,                      NUM_DDC_DATA_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
     115#endif
    113116#if H_3D_DIM_SDC
    114 , m_cSDCResidualFlagSCModel     ( 1,             1,             SDC_NUM_RESIDUAL_FLAG_CTX     , m_contextModels + m_numContextModels, m_numContextModels)
    115 , m_cSDCResidualSCModel         ( 1,             1,             SDC_NUM_RESIDUAL_CTX          , m_contextModels + m_numContextModels, m_numContextModels)
    116 #endif
    117 #endif
    118 #if H_3D_DIM_SDC
    119 , m_cSDCFlagSCModel                  ( 1,             1,  NUM_SDC_FLAG_CTX                 , m_contextModels + m_numContextModels, m_numContextModels)
     117, m_cSDCResidualFlagSCModel                  ( 1,             1,                     SDC_NUM_RESIDUAL_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     118, m_cSDCResidualSCModel                      ( 1,             1,                     SDC_NUM_RESIDUAL_CTX                  , m_contextModels + m_numContextModels, m_numContextModels)
     119, m_cSDCFlagSCModel                          ( 1,             1,                     NUM_SDC_FLAG_CTX                      , m_contextModels + m_numContextModels, m_numContextModels)
     120, m_cDdcFlagSCModel                          ( 1,             1,                     NUM_DDC_FLAG_CTX                      , m_contextModels + m_numContextModels, m_numContextModels)
    120121#endif
    121122#if H_3D_DBBP
    122 , m_cDBBPFlagSCModel             ( 1,             1,                 DBBP_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     123, m_cDBBPFlagSCModel                         ( 1,             1,                     DBBP_NUM_FLAG_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    123124#endif
    124125
     
    197198  m_ChromaQpAdjFlagSCModel.initBuffer             ( sliceType, qp, (UChar*)INIT_CHROMA_QP_ADJ_FLAG );
    198199  m_ChromaQpAdjIdcSCModel.initBuffer              ( sliceType, qp, (UChar*)INIT_CHROMA_QP_ADJ_IDC );
    199 #if H_3D_DIM
    200   m_cDepthIntraModeSCModel.initBuffer    ( sliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE );
    201   m_cDdcFlagSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DDC_FLAG );
    202   m_cDdcDataSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DDC_DATA );
    203   m_cAngleFlagSCModel.initBuffer         ( sliceType, qp, (UChar*)INIT_ANGLE_FLAG );
     200#if NH_3D_DMM
     201  m_cNotDmmFlagSCModel.initBuffer                 ( sliceType, qp, (UChar*)INIT_NOTDMM_FLAG );
     202  m_cDmmModeSCModel.initBuffer                    ( sliceType, qp, (UChar*)INIT_DMM_MODE );
     203#endif
     204#if NH_3D_DMM || NH_3D_SDC
     205  m_cDdcDataSCModel.initBuffer                    ( sliceType, qp, (UChar*)INIT_DDC_DATA );
     206#endif
    204207#if H_3D_DIM_SDC
    205   m_cSDCResidualFlagSCModel.initBuffer    ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    206   m_cSDCResidualSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL );
    207 #endif
    208 #endif
    209 #if H_3D_DIM_SDC
    210   m_cSDCFlagSCModel.initBuffer            ( sliceType, qp, (UChar*)INIT_SDC_FLAG );
     208  m_cSDCResidualFlagSCModel.initBuffer            ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
     209  m_cSDCResidualSCModel.initBuffer                ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL );
     210  m_cSDCFlagSCModel.initBuffer                    ( sliceType, qp, (UChar*)INIT_SDC_FLAG );
     211  m_cDdcFlagSCModel.initBuffer                    ( sliceType, qp, (UChar*)INIT_DDC_FLAG );
    211212#endif
    212213#if H_3D_DBBP
    213   m_cDBBPFlagSCModel.initBuffer              ( sliceType, qp, (UChar*)INIT_DBBP_FLAG );
     214  m_cDBBPFlagSCModel.initBuffer                   ( sliceType, qp, (UChar*)INIT_DBBP_FLAG );
    214215#endif
    215216
     
    247248  m_cCUICFlagSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_IC_FLAG );
    248249#endif
    249 #if H_3D_DIM
    250   m_cDepthIntraModeSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_DEPTH_INTRA_MODE );
    251   m_cDdcFlagSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG );
    252   m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
    253   m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
    254250#if H_3D_DIM_SDC
    255251  m_cSDCResidualFlagSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    256252  m_cSDCResidualSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL );
    257 #endif
    258 #endif
    259 #if H_3D_DIM_SDC
    260253  m_cSDCFlagSCModel.initBuffer            ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
     254  m_cDdcFlagSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG );
    261255#endif
    262256#if H_3D_DBBP
     
    433427  }
    434428}
    435 
    436 #if H_3D_DIM
    437 Void TDecSbac::xReadExGolombLevel( UInt& ruiSymbol, ContextModel& rcSCModel  )
    438 {
    439   UInt uiSymbol;
    440   UInt uiCount = 0;
    441   do
    442   {
    443     m_pcTDecBinIf->decodeBin( uiSymbol, rcSCModel );
    444     uiCount++;
    445   }
    446   while( uiSymbol && ( uiCount != 3 ) );
    447   ruiSymbol = uiCount - 1;
    448 
    449   if( uiSymbol )
    450   {
    451     xReadEpExGolomb( uiSymbol, 0 );
    452     ruiSymbol += uiSymbol + 1;
    453   }
    454 
    455   return;
    456 }
    457 
    458 Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt uiNumSeg )
    459 {
    460   UInt absValDeltaDC = 0;
    461   xReadExGolombLevel( absValDeltaDC, m_cDdcDataSCModel.get(0, 0, 0) );
    462   rValDeltaDC = (Pel)absValDeltaDC + ( uiNumSeg > 1 ? 0 : 1 );
    463 
    464   if( rValDeltaDC != 0 )
    465   {
    466     UInt uiSign;
    467     m_pcTDecBinIf->decodeBinEP( uiSign );
    468     if ( uiSign )
    469     {
    470       rValDeltaDC = -rValDeltaDC;
    471     }
    472   }
    473 }
    474 
    475 
    476 #if H_3D_DIM_DMM
    477 Void TDecSbac::xParseDmm1WedgeIdx( UInt& ruiTabIdx, Int iNumBit )
    478 {
    479   UInt uiSymbol, uiIdx = 0;
    480   for( Int i = 0; i < iNumBit; i++ )
    481   {
    482     m_pcTDecBinIf->decodeBinEP( uiSymbol );
    483     uiIdx += uiSymbol << i;
    484   }
    485   ruiTabIdx = uiIdx;
    486 }
    487 #endif
    488 
    489 
    490 #endif
    491 
    492429
    493430/** Parse I_PCM information.
     
    1019956  for (j=0;j<partNum;j++)
    1020957  {
    1021 #if H_3D_DIM
     958#if NH_3D_DMM
    1022959    if( pcCU->getSlice()->getIntraSdcWedgeFlag() || pcCU->getSlice()->getIntraContourFlag() )
    1023960    {
    1024       parseIntraDepth( pcCU, absPartIdx+partOffset*j, depth );
    1025     }
    1026     if( pcCU->getLumaIntraDir( absPartIdx+partOffset*j ) < NUM_INTRA_MODE )
     961      xParseIntraDepthMode( pcCU, absPartIdx+partOffset*j, depth );
     962      xParseDmmData       ( pcCU, absPartIdx+partOffset*j, depth );
     963    }
     964    if( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx+partOffset*j ) < NUM_INTRA_MODE )
    1027965    {
    1028966#endif
     
    1032970      DTRACE_CU("prev_intra_luma_pred_flag", symbol)
    1033971#endif
    1034 #if H_3D_DIM
     972#if NH_3D_DMM
    1035973    }
    1036974#endif
     
    1038976  for (j=0;j<partNum;j++)
    1039977  {
    1040 #if H_3D_DIM
    1041     if( pcCU->getLumaIntraDir( absPartIdx+partOffset*j ) < NUM_INTRA_MODE )
     978#if NH_3D_DMM
     979    if( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx+partOffset*j ) < NUM_INTRA_MODE )
    1042980    {
    1043981#endif
     
    10841022    }
    10851023    pcCU->setIntraDirSubParts(CHANNEL_TYPE_LUMA, (UChar)intraPredMode, absPartIdx+partOffset*j, depth );
    1086 #if H_3D_DIM
     1024#if NH_3D_DMM
    10871025    }
    10881026#endif
     
    11201058  pcCU->setIntraDirSubParts( CHANNEL_TYPE_CHROMA, uiSymbol, uiAbsPartIdx, uiDepth );
    11211059}
    1122 
    1123 #if H_3D_DIM
    1124 Void TDecSbac::parseIntraDepth( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
    1125 {
    1126   parseIntraDepthMode( pcCU, absPartIdx, depth );
    1127 
    1128   UInt dir     = pcCU->getLumaIntraDir( absPartIdx );
    1129   UInt dimType = getDimType( dir );
    1130 
    1131   switch( dimType )
    1132   {
    1133 #if H_3D_DIM_DMM
    1134   case( DMM1_IDX ):
    1135     {
    1136       UInt uiTabIdx = 0;
    1137       xParseDmm1WedgeIdx( uiTabIdx, g_dmm1TabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] );
    1138 
    1139       assert( uiTabIdx < g_dmmWedgeLists[ g_aucConvertToBit[ pcCU->getDMM1BasePatternWidth( pcCU->getWidth( absPartIdx ) )]].size());
    1140 
    1141       pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dimType, absPartIdx, depth );
    1142     } break;
    1143   case( DMM4_IDX ): break;
    1144 #endif
    1145   default: break;
    1146   }
    1147 
    1148   pcCU->setLumaIntraDirSubParts( (UChar)dir, absPartIdx, depth );
    1149 }
    1150 
    1151 Void TDecSbac::parseIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
    1152 {
    1153   UInt uiSymbol, uiIsDimMode;
    1154 
    1155   if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed
    1156   {
    1157     m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, 0 ) );
    1158   }
    1159   else
    1160   {
    1161     uiSymbol = 1;
    1162   }
    1163   uiIsDimMode = uiSymbol ? 0 : 1;
    1164   pcCU->setLumaIntraDirSubParts( 0, absPartIdx, depth );
    1165 
    1166   //decode DMM index
    1167   if( uiIsDimMode )
    1168   {
    1169     if( pcCU->getSlice()->getIntraSdcWedgeFlag() && pcCU->getSlice()->getIntraContourFlag() )
    1170     {
    1171       m_pcTDecBinIf->decodeBin( uiSymbol, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );
    1172       if( !uiSymbol )
    1173       {
    1174         pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth );
    1175       }
    1176       else
    1177       {
    1178         pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth );
    1179       }
    1180     }
    1181     else if ( pcCU->getSlice()->getIntraSdcWedgeFlag() )
    1182     {
    1183       pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth );
    1184     }
    1185     else if( pcCU->getSlice()->getIntraContourFlag() )
    1186     {
    1187       pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth );
    1188     }
    1189   }
    1190 }
    1191 #endif
    11921060
    11931061Void TDecSbac::parseInterDir( TComDataCU* pcCU, UInt& ruiInterDir, UInt uiAbsPartIdx )
     
    24722340#endif
    24732341
    2474 #if H_3D_INTER_SDC
     2342#if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
    24752343Void TDecSbac::parseDeltaDC( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
    24762344{
    2477   if( ! ( pcCU->getSDCFlag( absPartIdx ) || ( pcCU->isIntra( absPartIdx ) && getDimType( pcCU->getLumaIntraDir( absPartIdx ) ) < DIM_NUM_TYPE ) ) )
    2478   {
     2345#if H_3D_DIM_SDC || H_3D_INTER_SDC
     2346  if( !(pcCU->getSDCFlag( absPartIdx )) )
     2347#endif
     2348#if NH_3D_DMM
     2349  if( !(pcCU->isIntra( absPartIdx ) && isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) )) )
     2350#endif
    24792351    assert( 0 );
    2480   }
    24812352
    24822353  UInt symbol = 1;
    2483   UInt uiNumSegments = isDimMode( pcCU->getLumaIntraDir( absPartIdx ) ) ? 2 : 1;
    2484 
     2354#if H_3D_DIM_SDC
    24852355  if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx ))
    24862356  {
    2487 
    24882357    m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
    24892358      assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N );
     
    24912360      pcCU->setCbfSubParts( 1, 1, 1, absPartIdx, depth );
    24922361    }
     2362#endif
     2363  UInt uiNumSegments = 1;
     2364#if NH_3D_DMM
     2365  uiNumSegments = isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) ) ? 2 : 1;
     2366#endif
    24932367
    24942368  for( UInt segment = 0; segment < uiNumSegments; segment++ )
     
    24972371    if( symbol )
    24982372    {
    2499       xParseDimDeltaDC( valDeltaDC, uiNumSegments );
     2373      xParseDeltaDC( valDeltaDC, uiNumSegments );
    25002374    }
    25012375
    25022376    if( pcCU->isIntra( absPartIdx ) )
    25032377    {
    2504       UInt dir     = pcCU->getLumaIntraDir( absPartIdx );
    2505 
     2378#if H_3D_DIM_SDC
    25062379      if( pcCU->getSDCFlag( absPartIdx ) )
    25072380      {
     
    25102383      else
    25112384      {
    2512         pcCU->setDimDeltaDC( getDimType( dir ), segment, absPartIdx, valDeltaDC );
    2513       }
    2514     }
     2385#endif
     2386#if NH_3D_DMM
     2387        pcCU->setDmmDeltaDC( getDmmType( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) ), segment, absPartIdx, valDeltaDC );
     2388#endif
     2389#if H_3D_DIM_SDC
     2390      }
     2391#endif
     2392    }
     2393#if H_3D_INTER_SDC
    25152394    else
    25162395    {
    25172396      pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx );
    25182397    }
    2519   }
    2520 }
    2521 
     2398#endif
     2399  }
     2400}
     2401
     2402Void TDecSbac::xParseDeltaDC( Pel& rValDeltaDC, UInt uiNumSeg )
     2403{
     2404  UInt absValDeltaDC = 0;
     2405  xReadExGolombLevelDdc( absValDeltaDC );
     2406  rValDeltaDC = (Pel)absValDeltaDC + ( uiNumSeg > 1 ? 0 : 1 );
     2407
     2408  if( rValDeltaDC != 0 )
     2409  {
     2410    UInt uiSign;
     2411    m_pcTDecBinIf->decodeBinEP( uiSign RExt__DECODER_DEBUG_BIT_STATISTICS_PASS_OPT_ARG(STATS__CABAC_BITS__DELTADC_SIGN_EP) );
     2412    if ( uiSign )
     2413    {
     2414      rValDeltaDC = -rValDeltaDC;
     2415    }
     2416  }
     2417}
     2418
     2419Void TDecSbac::xReadExGolombLevelDdc( UInt& ruiSymbol )
     2420{
     2421  UInt uiSymbol;
     2422  UInt uiCount = 0;
     2423  do
     2424  {
     2425    m_pcTDecBinIf->decodeBin( uiSymbol, m_cDdcDataSCModel.get(0, 0, 0) RExt__DECODER_DEBUG_BIT_STATISTICS_PASS_OPT_ARG(STATS__CABAC_BITS__DELTADC_PREFIX) );
     2426    uiCount++;
     2427  }
     2428  while( uiSymbol && ( uiCount != 3 ) );
     2429  ruiSymbol = uiCount - 1;
     2430
     2431  if( uiSymbol )
     2432  {
     2433    xReadEpExGolomb( uiSymbol, 0 RExt__DECODER_DEBUG_BIT_STATISTICS_PASS_OPT_ARG(STATS__CABAC_BITS__DELTADC_SUFFIX_EP) );
     2434    ruiSymbol += uiSymbol + 1;
     2435  }
     2436
     2437  return;
     2438}
     2439#endif
     2440#if NH_3D_DMM
     2441Void TDecSbac::xParseIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
     2442{
     2443  pcCU->setIntraDirSubParts( CHANNEL_TYPE_LUMA, 0, absPartIdx, depth );
     2444
     2445  UInt uiSymbol;
     2446  if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed
     2447  {
     2448    m_pcTDecBinIf->decodeBin( uiSymbol, m_cNotDmmFlagSCModel.get( 0, 0, 0 ) RExt__DECODER_DEBUG_BIT_STATISTICS_PASS_OPT_ARG(STATS__CABAC_BITS__NOTDMM_FLAG) );
     2449  }
     2450  else
     2451  {
     2452    uiSymbol = 1;
     2453  }
     2454
     2455  //decode DMM mode index
     2456  if( !uiSymbol )
     2457  {
     2458    if( pcCU->getSlice()->getIntraSdcWedgeFlag() && pcCU->getSlice()->getIntraContourFlag() )
     2459    {
     2460      m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmmModeSCModel.get( 0, 0, 0 ) RExt__DECODER_DEBUG_BIT_STATISTICS_PASS_OPT_ARG(STATS__CABAC_BITS__DMMMODE) );
     2461      if( !uiSymbol )
     2462      {
     2463        pcCU->setIntraDirSubParts( CHANNEL_TYPE_LUMA, DMM_OFFSET, absPartIdx, depth );
     2464      }
     2465      else
     2466      {
     2467        pcCU->setIntraDirSubParts( CHANNEL_TYPE_LUMA, ( 1+ DMM_OFFSET ), absPartIdx, depth );
     2468      }
     2469    }
     2470    else if( pcCU->getSlice()->getIntraSdcWedgeFlag() )
     2471    {
     2472      pcCU->setIntraDirSubParts( CHANNEL_TYPE_LUMA, DMM_OFFSET, absPartIdx, depth );
     2473    }
     2474    else if( pcCU->getSlice()->getIntraContourFlag() )
     2475    {
     2476      pcCU->setIntraDirSubParts( CHANNEL_TYPE_LUMA, ( 1+ DMM_OFFSET ), absPartIdx, depth );
     2477    }
     2478  }
     2479}
     2480
     2481Void TDecSbac::xParseDmmData( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
     2482{
     2483  UInt dir = pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx );
     2484  switch( getDmmType( dir ) )
     2485  {
     2486  case( DMM1_IDX ):
     2487    {
     2488      UInt uiTabIdx = 0;
     2489      xParseDmm1WedgeIdx( uiTabIdx, g_dmm1TabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] );
     2490      assert( uiTabIdx < getWedgeListScaled( pcCU->getWidth( absPartIdx ) )->size() );
     2491      pcCU->setDmm1WedgeTabIdxSubParts( uiTabIdx, absPartIdx, depth );
     2492    } break;
     2493  case( DMM4_IDX ): break;
     2494  default: break;
     2495  }
     2496}
     2497
     2498Void TDecSbac::xParseDmm1WedgeIdx( UInt& ruiTabIdx, Int iNumBit )
     2499{
     2500  UInt uiSymbol, uiIdx = 0;
     2501  for( Int i = 0; i < iNumBit; i++ )
     2502  {
     2503    m_pcTDecBinIf->decodeBinEP( uiSymbol RExt__DECODER_DEBUG_BIT_STATISTICS_PASS_OPT_ARG(STATS__CABAC_BITS__DMM1_BITS_EP) );
     2504    uiIdx += uiSymbol << i;
     2505  }
     2506  ruiTabIdx = uiIdx;
     2507}
     2508#endif
     2509#if H_3D_INTER_SDC
    25222510Void TDecSbac::parseSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    25232511{
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecSbac.h

    r1200 r1209  
    107107  Void  xReadCoefRemainExGolomb ( UInt &rSymbol, UInt &rParam, const Bool useLimitedPrefixLength, const Int maxLog2TrDynamicRange );
    108108#endif
    109 #if H_3D_DIM
    110   Void  xReadExGolombLevel   ( UInt& ruiSymbol, ContextModel& rcSCModel  );
    111   Void  xParseDimDeltaDC     ( Pel& rValDeltaDC, UInt uiNumSeg );
    112 #if H_3D_DIM_DMM
     109#if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
     110  Void  xReadExGolombLevelDdc( UInt& ruiSymbol );
     111  Void  xParseDeltaDC        ( Pel& rValDeltaDC, UInt uiNumSeg );
     112#endif
     113#if NH_3D_DMM
     114  Void  xParseIntraDepthMode ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
     115  Void  xParseDmmData        ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    113116  Void  xParseDmm1WedgeIdx   ( UInt& ruiTabIdx, Int iNumBit );
    114117#endif
     
    116119  Void  xParseSDCResidualData     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart );
    117120#endif
    118 #endif
    119121#if H_3D_INTER_SDC
    120   Void  parseDeltaDC         ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    121122  Void  parseSDCFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    122123#endif
     
    134135#if H_3D
    135136  Void parseDIS          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     137#endif
     138#if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
     139  Void  parseDeltaDC      ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    136140#endif
    137141  Void parseCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     
    150154  Void parseIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    151155  Void parseIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    152 
    153 #if H_3D_DIM
    154   Void parseIntraDepth     ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    155   Void parseIntraDepthMode ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    156 #endif
    157 
    158156  Void parseInterDir      ( TComDataCU* pcCU, UInt& ruiInterDir, UInt uiAbsPartIdx );
    159157  Void parseRefFrmIdx     ( TComDataCU* pcCU, Int& riRefFrmIdx, RefPicList eRefList );
     
    227225  ContextModel3DBuffer m_ChromaQpAdjFlagSCModel;
    228226  ContextModel3DBuffer m_ChromaQpAdjIdcSCModel;
    229 #if H_3D_DIM
    230   ContextModel3DBuffer m_cDepthIntraModeSCModel;
    231   ContextModel3DBuffer m_cDdcFlagSCModel;
     227#if NH_3D_DMM
     228  ContextModel3DBuffer m_cNotDmmFlagSCModel;
     229  ContextModel3DBuffer m_cDmmModeSCModel;
     230#endif
     231#if NH_3D_DMM || NH_3D_SDC
    232232  ContextModel3DBuffer m_cDdcDataSCModel;
    233   ContextModel3DBuffer m_cAngleFlagSCModel;
     233#endif
    234234#if H_3D_DIM_SDC 
    235235  ContextModel3DBuffer m_cSDCResidualFlagSCModel;
    236236  ContextModel3DBuffer m_cSDCResidualSCModel;
    237 #endif
    238 #endif
    239 #if H_3D_DIM_SDC 
    240237  ContextModel3DBuffer m_cSDCFlagSCModel;
     238  ContextModel3DBuffer m_cDdcFlagSCModel;
    241239#endif
    242240#if H_3D_DBBP
Note: See TracChangeset for help on using the changeset viewer.