Ignore:
Timestamp:
21 May 2015, 14:39:30 (9 years ago)
Author:
rwth
Message:
  • initial implementation of INTRA SDC (still not fully functional)
File:
1 edited

Legend:

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

    r1209 r1221  
    111111, m_cDmmModeSCModel                          ( 1,             1,                      NUM_DMM_MODE_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    112112#endif
    113 #if NH_3D_DMM || NH_3D_SDC
     113#if NH_3D_DMM || NH_3D_INTRA_SDC
    114114, m_cDdcDataSCModel                          ( 1,             1,                      NUM_DDC_DATA_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    115115#endif
    116 #if H_3D_DIM_SDC
     116#if NH_3D_INTRA_SDC
    117117, m_cSDCResidualFlagSCModel                  ( 1,             1,                     SDC_NUM_RESIDUAL_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
    118118, m_cSDCResidualSCModel                      ( 1,             1,                     SDC_NUM_RESIDUAL_CTX                  , m_contextModels + m_numContextModels, m_numContextModels)
     
    202202  m_cDmmModeSCModel.initBuffer                    ( sliceType, qp, (UChar*)INIT_DMM_MODE );
    203203#endif
    204 #if NH_3D_DMM || NH_3D_SDC
     204#if NH_3D_DMM || NH_3D_INTRA_SDC
    205205  m_cDdcDataSCModel.initBuffer                    ( sliceType, qp, (UChar*)INIT_DDC_DATA );
    206206#endif
    207 #if H_3D_DIM_SDC
     207#if NH_3D_INTRA_SDC
    208208  m_cSDCResidualFlagSCModel.initBuffer            ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    209209  m_cSDCResidualSCModel.initBuffer                ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL );
     
    247247#if H_3D_IC
    248248  m_cCUICFlagSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_IC_FLAG );
    249 #endif
    250 #if H_3D_DIM_SDC
    251   m_cSDCResidualFlagSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    252   m_cSDCResidualSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL );
    253   m_cSDCFlagSCModel.initBuffer            ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
    254   m_cDdcFlagSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG );
    255249#endif
    256250#if H_3D_DBBP
     
    23402334#endif
    23412335
    2342 #if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
     2336#if NH_3D_DMM || NH_3D_INTRA_SDC || H_3D_INTER_SDC
    23432337Void TDecSbac::parseDeltaDC( TComDataCU* pcCU, UInt absPartIdx, UInt depth )
    23442338{
    2345 #if H_3D_DIM_SDC || H_3D_INTER_SDC
     2339#if NH_3D_INTRA_SDC || H_3D_INTER_SDC
    23462340  if( !(pcCU->getSDCFlag( absPartIdx )) )
    23472341#endif
     
    23522346
    23532347  UInt symbol = 1;
    2354 #if H_3D_DIM_SDC
     2348#if NH_3D_INTRA_SDC
    23552349  if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx ))
    23562350  {
    23572351    m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
    2358       assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N );
    2359       pcCU->setTrIdxSubParts( 0, absPartIdx, depth );
    2360       pcCU->setCbfSubParts( 1, 1, 1, absPartIdx, depth );
     2352    assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N );
     2353    assert( pcCU->getTransformIdx(absPartIdx) == 0 );
     2354    assert( pcCU->getCbf(absPartIdx, COMPONENT_Y) == 1 );
    23612355    }
    23622356#endif
     
    23762370    if( pcCU->isIntra( absPartIdx ) )
    23772371    {
    2378 #if H_3D_DIM_SDC
     2372#if NH_3D_INTRA_SDC
    23792373      if( pcCU->getSDCFlag( absPartIdx ) )
    23802374      {
     
    23872381        pcCU->setDmmDeltaDC( getDmmType( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) ), segment, absPartIdx, valDeltaDC );
    23882382#endif
    2389 #if H_3D_DIM_SDC
     2383#if NH_3D_INTRA_SDC
    23902384      }
    23912385#endif
     
    24152409    }
    24162410  }
     2411 
     2412  DTRACE_CU("delta_dc", rValDeltaDC);
    24172413}
    24182414
     
    25072503}
    25082504#endif
    2509 #if H_3D_INTER_SDC
     2505#if NH_3D_INTRA_SDC || H_3D_INTER_SDC
    25102506Void TDecSbac::parseSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    25112507{
    25122508  UInt uiSymbol = 0;
    2513   UInt uiCtxSDCFlag = pcCU->getCtxSDCFlag( uiAbsPartIdx );
    2514 
    2515   m_pcTDecBinIf->decodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, uiCtxSDCFlag ) );
     2509
     2510  m_pcTDecBinIf->decodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, 0 ) );
    25162511  DTRACE_CU("dc_only_flag", uiSymbol)
    25172512  if( uiSymbol )
     
    25192514    pcCU->setSDCFlagSubParts( true, uiAbsPartIdx, uiDepth );
    25202515    pcCU->setTrIdxSubParts( 0, uiAbsPartIdx, uiDepth );
    2521     pcCU->setCbfSubParts( 1, 1, 1, uiAbsPartIdx, uiDepth );
     2516    pcCU->setCbfSubParts(1, COMPONENT_Y, uiAbsPartIdx, uiDepth);
    25222517  }
    25232518  else
Note: See TracChangeset for help on using the changeset viewer.