Changeset 296 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecSbac.cpp


Ignore:
Timestamp:
20 Feb 2013, 22:07:43 (11 years ago)
Author:
tech
Message:

Reintegrated branch 5.1-dev0 rev. 295.

File:
1 edited

Legend:

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

    r189 r296  
    6262, m_cCUMergeFlagExtSCModel    ( 1,             1,               NUM_MERGE_FLAG_EXT_CTX        , m_contextModels + m_numContextModels, m_numContextModels)
    6363, m_cCUMergeIdxExtSCModel     ( 1,             1,               NUM_MERGE_IDX_EXT_CTX         , m_contextModels + m_numContextModels, m_numContextModels)
    64 #if HHI_INTER_VIEW_RESIDUAL_PRED
     64#if H3D_IVRP
    6565, m_cResPredFlagSCModel       ( 1,             1,               NUM_RES_PRED_FLAG_CTX         , m_contextModels + m_numContextModels, m_numContextModels)
    6666#endif
     
    8787, m_cALFUvlcSCModel           ( 1,             1,               NUM_ALF_UVLC_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    8888, m_cALFSvlcSCModel           ( 1,             1,               NUM_ALF_SVLC_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    89 #if AMP_CTX
    9089, m_cCUAMPSCModel             ( 1,             1,               NUM_CU_AMP_CTX                , m_contextModels + m_numContextModels, m_numContextModels)
    91 #else
    92 , m_cCUXPosiSCModel           ( 1,             1,               NUM_CU_X_POS_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    93 , m_cCUYPosiSCModel           ( 1,             1,               NUM_CU_Y_POS_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    94 #endif
    9590, m_cSaoFlagSCModel           ( 1,             1,               NUM_SAO_FLAG_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    9691, m_cSaoUvlcSCModel           ( 1,             1,               NUM_SAO_UVLC_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    9792, m_cSaoSvlcSCModel           ( 1,             1,               NUM_SAO_SVLC_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    98 #if SAO_UNIT_INTERLEAVING
    9993, m_cSaoMergeLeftSCModel      ( 1,             1,               NUM_SAO_MERGE_LEFT_FLAG_CTX   , m_contextModels + m_numContextModels, m_numContextModels)
    10094, m_cSaoMergeUpSCModel        ( 1,             1,               NUM_SAO_MERGE_UP_FLAG_CTX     , m_contextModels + m_numContextModels, m_numContextModels)
    10195, m_cSaoTypeIdxSCModel        ( 1,             1,               NUM_SAO_TYPE_IDX_CTX          , m_contextModels + m_numContextModels, m_numContextModels)
    102 #endif
    10396#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    10497, m_cDmmFlagSCModel           ( 1,             1,               NUM_DMM_FLAG_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
     
    166159  m_cCUMergeFlagExtSCModel.initBuffer    ( sliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT );
    167160  m_cCUMergeIdxExtSCModel.initBuffer     ( sliceType, qp, (UChar*)INIT_MERGE_IDX_EXT );
    168 #if HHI_INTER_VIEW_RESIDUAL_PRED
     161#if H3D_IVRP
    169162  m_cResPredFlagSCModel.initBuffer       ( sliceType, qp, (UChar*)INIT_RES_PRED_FLAG );
    170163#endif
    171164  m_cCUAlfCtrlFlagSCModel.initBuffer     ( sliceType, qp, (UChar*)INIT_ALF_CTRL_FLAG );
    172165  m_cCUPartSizeSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_PART_SIZE );
    173 #if AMP_CTX
    174166  m_cCUAMPSCModel.initBuffer             ( sliceType, qp, (UChar*)INIT_CU_AMP_POS );
    175 #else
    176   m_cCUXPosiSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_CU_X_POS );
    177   m_cCUYPosiSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_CU_Y_POS );
    178 #endif
    179167  m_cCUPredModeSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_PRED_MODE );
    180168  m_cCUIntraPredSCModel.initBuffer       ( sliceType, qp, (UChar*)INIT_INTRA_PRED_MODE );
     
    199187  m_cSaoUvlcSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_SAO_UVLC );
    200188  m_cSaoSvlcSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_SAO_SVLC );
    201 #if SAO_UNIT_INTERLEAVING
    202189  m_cSaoMergeLeftSCModel.initBuffer      ( sliceType, qp, (UChar*)INIT_SAO_MERGE_LEFT_FLAG );
    203190  m_cSaoMergeUpSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_SAO_MERGE_UP_FLAG );
    204191  m_cSaoTypeIdxSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_SAO_TYPE_IDX );
    205 #endif
    206192
    207193  m_cCUTransSubdivFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_TRANS_SUBDIV_FLAG );
     
    260246  m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT );
    261247  m_cCUMergeIdxExtSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT );
    262 #if HHI_INTER_VIEW_RESIDUAL_PRED
     248#if H3D_IVRP
    263249  m_cResPredFlagSCModel.initBuffer       ( eSliceType, iQp, (UChar*)INIT_RES_PRED_FLAG );
    264250#endif
    265251  m_cCUAlfCtrlFlagSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_ALF_CTRL_FLAG );
    266252  m_cCUPartSizeSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_PART_SIZE );
    267 #if AMP_CTX
    268253  m_cCUAMPSCModel.initBuffer             ( eSliceType, iQp, (UChar*)INIT_CU_AMP_POS );
    269 #else
    270   m_cCUXPosiSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_CU_X_POS );
    271   m_cCUYPosiSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_CU_Y_POS );
    272 #endif
    273254  m_cCUPredModeSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_PRED_MODE );
    274255  m_cCUIntraPredSCModel.initBuffer       ( eSliceType, iQp, (UChar*)INIT_INTRA_PRED_MODE );
     
    293274  m_cSaoUvlcSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_SAO_UVLC );
    294275  m_cSaoSvlcSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_SAO_SVLC );
    295 #if SAO_UNIT_INTERLEAVING
    296276  m_cSaoMergeLeftSCModel.initBuffer      ( eSliceType, iQp, (UChar*)INIT_SAO_MERGE_LEFT_FLAG );
    297277  m_cSaoMergeUpSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SAO_MERGE_UP_FLAG );
    298278  m_cSaoTypeIdxSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX );
    299 #endif
    300279  m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANS_SUBDIV_FLAG );
    301280#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     
    449428  }
    450429
    451 #if EIGHT_BITS_RICE_CODE
    452430  ruiGoRiceParam = g_aauiGoRiceUpdate[ ruiGoRiceParam ][ min<UInt>( ruiSymbol, 23 ) ];
    453 #else
    454   ruiGoRiceParam = g_aauiGoRiceUpdate[ ruiGoRiceParam ][ min<UInt>( ruiSymbol, 15 ) ];
    455 #endif
    456431
    457432  return;
     
    470445{
    471446  UInt uiSymbol;
    472 #if BURST_IPCM
    473447  Int numSubseqIPCM = 0;
    474448  Bool readPCMSampleFlag = false;
     
    490464    }
    491465  }
    492 #else
    493   m_pcTDecBinIf->decodeBinTrm(uiSymbol);
    494 #endif
    495 
    496 #if BURST_IPCM
     466
    497467  if (readPCMSampleFlag == true)
    498 #else
    499   if (uiSymbol)
    500 #endif
    501468  {
    502469    Bool bIpcmFlag = true;
    503470
    504 #if !BURST_IPCM
    505     m_pcTDecBinIf->decodePCMAlignBits();
    506 #endif
    507471
    508472    pcCU->setPartSizeSubParts  ( SIZE_2Nx2N, uiAbsPartIdx, uiDepth );
     
    568532    }
    569533
    570 #if BURST_IPCM
    571534    pcCU->setNumSucIPCM( pcCU->getNumSucIPCM() - 1);
    572535    if(pcCU->getNumSucIPCM() == 0)
     
    574537      m_pcTDecBinIf->resetBac();
    575538    }
    576 #else
    577     m_pcTDecBinIf->resetBac();
    578 #endif
    579539  }
    580540}
     
    664624{
    665625  UInt uiNumCand = MRG_MAX_NUM_CANDS;
    666 #if !MRG_IDX_CTX_RED 
    667   UInt auiCtx[4] = { 0, 1, 2, 3 };
    668 #endif
    669626  UInt uiUnaryIdx = 0;
    670627  uiNumCand = pcCU->getSlice()->getMaxNumMergeCand();
     
    678635    {
    679636      UInt uiSymbol = 0;
    680 #if MRG_IDX_CTX_RED
    681637      if ( uiUnaryIdx==0 )
    682638      {
     
    687643        m_pcTDecBinIf->decodeBinEP( uiSymbol );
    688644      }
    689 #else
    690       m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUMergeIdxExtSCModel.get( 0, 0, auiCtx[uiUnaryIdx] ) );
    691 #endif
    692645      if( uiSymbol == 0 )
    693646      {
     
    717670}
    718671
    719 #if HHI_INTER_VIEW_RESIDUAL_PRED
     672#if H3D_IVRP
    720673Void
    721674TDecSbac::parseResPredFlag( TComDataCU* pcCU, Bool& rbResPredFlag, UInt uiAbsPartIdx, UInt uiDepth )
     
    728681#endif
    729682
    730 #if HHI_INTER_VIEW_MOTION_PRED
     683#if H3D_IVMP
    731684Void TDecSbac::parseMVPIdx      ( Int& riMVPIdx, Int iNumAMVPCands )
    732685{
     
    762715  Bool bIntraSliceDetect  = (pcCU->getSlice()->getSliceType() == I_SLICE);
    763716
     717#if HHI_QTLPC_RAU_OFF_C0160
     718  Bool rapPic     = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
     719  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTLPC())
     720#else
    764721  if(bDepthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC())
     722#endif
    765723  {
    766724    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     
    804762  Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE);
    805763
     764#if HHI_QTLPC_RAU_OFF_C0160
     765  Bool rapPic     = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
     766  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTLPC())
     767#else
    806768  if(bDepthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC())
     769#endif
    807770  {
    808771    TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr());
     
    869832        if (eMode == SIZE_2NxN)
    870833        {
    871 #if AMP_CTX
    872834            m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 ));
    873 #else
    874           m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUYPosiSCModel.get( 0, 0, 0 ));
    875 #endif
    876835          if (uiSymbol == 0)
    877836          {
    878 #if AMP_CTX
    879837            m_pcTDecBinIf->decodeBinEP(uiSymbol);
    880 #else
    881             m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUYPosiSCModel.get( 0, 0, 1 ));
    882 #endif
    883838            eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD);
    884839          }
     
    886841        else if (eMode == SIZE_Nx2N)
    887842        {
    888 #if AMP_CTX
    889843          m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 ));
    890 #else
    891           m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUXPosiSCModel.get( 0, 0, 0 ));
    892 #endif
    893844          if (uiSymbol == 0)
    894845          {
    895 #if AMP_CTX
    896846            m_pcTDecBinIf->decodeBinEP(uiSymbol);
    897 #else
    898             m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUXPosiSCModel.get( 0, 0, 1 ));
    899 #endif
    900847            eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N);
    901848          }
     
    970917#if HHI_DMM_PRED_TEX
    971918    if( intraPredMode == DMM_WEDGE_PREDTEX_D_IDX )     { xParseWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx, uiDepth ); }
     919#if LGE_DMM3_SIMP_C0044
     920    if( intraPredMode == DMM_WEDGE_PREDTEX_IDX )       { xParseWedgePredTexInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
     921#endif
    972922    if( intraPredMode == DMM_CONTOUR_PREDTEX_D_IDX )   { xParseContourPredTexDeltaInfo( pcCU, uiAbsPartIdx, uiDepth ); }
    973923#endif
     
    975925  else
    976926  {
    977 #endif
    978 #if !LOGI_INTRA_NAME_3MPM
    979     Int iIntraIdx = pcCU->getIntraSizeIdx(uiAbsPartIdx);
    980927#endif
    981928
     
    990937#endif
    991938
    992 #if LOGI_INTRA_NAME_3MPM
    993939    Int uiPreds[3] = {-1, -1, -1};
    994 #else
    995     Int uiPreds[2] = {-1, -1};
    996 #endif
    997940    Int uiPredNum = pcCU->getIntraDirLumaPredictor(uiAbsPartIdx, uiPreds); 
    998941#if LGE_EDGE_INTRA_A0070
     
    1005948    {
    1006949      m_pcTDecBinIf->decodeBinEP( uiSymbol );
    1007 #if LOGI_INTRA_NAME_3MPM
    1008950      if (uiSymbol)
    1009951      {
     
    1011953        uiSymbol++;
    1012954      }
    1013 #endif
    1014955      intraPredMode = uiPreds[uiSymbol];
    1015956    }
     
    1018959      intraPredMode = 0;
    1019960
    1020 #if LOGI_INTRA_NAME_3MPM
    1021961
    1022962      m_pcTDecBinIf->decodeBinsEP( uiSymbol, 5 );
     
    1047987        std::swap(uiPreds[1], uiPreds[2]);
    1048988      }
    1049 #else
    1050       m_pcTDecBinIf->decodeBinsEP( uiSymbol, g_aucIntraModeBitsAng[iIntraIdx] - 1 );
    1051       intraPredMode = uiSymbol;
    1052 
    1053       if ( intraPredMode == 31 )
    1054       {
    1055         m_pcTDecBinIf->decodeBinEP( uiSymbol );
    1056         intraPredMode += uiSymbol;     
    1057       }
    1058 #endif
    1059989#if LGE_EDGE_INTRA_A0070
    1060990      if ( intraPredMode != EDGE_INTRA_IDX)
     
    11451075    {
    11461076      UInt uiIPredMode;
    1147 #if CHROMA_MODE_CODING
    11481077      m_pcTDecBinIf->decodeBinsEP( uiIPredMode, 2 );
    1149 #else
    1150       xReadUnaryMaxSymbol( uiIPredMode, m_cCUChromaPredSCModel.get( 0, 0 ) + 1, 0, 3 );
    1151 #endif
    11521078      UInt uiAllowedChromaDir[ NUM_CHROMA_MODE ];
    11531079      pcCU->getAllowedChromaDir( uiAbsPartIdx, uiAllowedChromaDir );
     
    12171143  ContextModel *pCtx = m_cCUMvdSCModel.get( 0 );
    12181144
    1219 #if H0111_MVD_L1_ZERO
    12201145  if(pcCU->getSlice()->getMvdL1ZeroFlag() && eRefList == REF_PIC_LIST_1 && pcCU->getInterDir(uiAbsPartIdx)==3)
    12211146  {
     
    12251150  else
    12261151  {
    1227 #endif
    12281152
    12291153    m_pcTDecBinIf->decodeBin( uiHorAbs, *pCtx );
     
    12681192    }
    12691193
    1270 #if H0111_MVD_L1_ZERO
    1271   }
    1272 #endif
     1194  }
    12731195
    12741196  const TComMv cMv( uiHorSign ? -Int( uiHorAbs ): uiHorAbs, uiVerSign ? -Int( uiVerAbs ) : uiVerAbs );
     
    13101232Void TDecSbac::parseDeltaQP( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    13111233{
    1312 #if H0736_AVC_STYLE_QP_RANGE
    13131234  Int qp;
    1314 #endif
    13151235  UInt uiDQp;
    13161236  Int  iDQp;
     
    13201240  if ( uiDQp == 0 )
    13211241  {
    1322 #if H0736_AVC_STYLE_QP_RANGE
    13231242    qp = pcCU->getRefQP(uiAbsPartIdx);
    1324 #else
    1325     uiDQp = pcCU->getRefQP(uiAbsPartIdx);
    1326 #endif
    13271243  }
    13281244  else
    13291245  {
    13301246    UInt uiSign;
    1331 #if H0736_AVC_STYLE_QP_RANGE
    13321247    Int qpBdOffsetY = pcCU->getSlice()->getSPS()->getQpBDOffsetY();
    1333 #else
    1334     UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
    1335 #endif
    13361248    m_pcTDecBinIf->decodeBinEP(uiSign);
    13371249
    1338 #if H0736_AVC_STYLE_QP_RANGE
    13391250    UInt uiMaxAbsDQpMinus1 = 24 + (qpBdOffsetY/2) + (uiSign);
    1340 #else
    1341     UInt uiMaxAbsDQpMinus1 = 24 + (uiQpBdOffsetY/2) + (uiSign);
    1342 #endif
    13431251    UInt uiAbsDQpMinus1;
    13441252    xReadUnaryMaxSymbol (uiAbsDQpMinus1,  &m_cCUDeltaQpSCModel.get( 0, 0, 1 ), 1, uiMaxAbsDQpMinus1);
     
    13511259    }
    13521260
    1353 #if H0736_AVC_STYLE_QP_RANGE
    13541261    qp = (((Int) pcCU->getRefQP( uiAbsPartIdx ) + iDQp + 52 + 2*qpBdOffsetY )%(52+qpBdOffsetY)) - qpBdOffsetY;
    1355 #else
    1356 #if LOSSLESS_CODING
    1357     uiDQp = (pcCU->getRefQP(uiAbsPartIdx) + iDQp + 52) % 52;
    1358 #else
    1359     uiDQp = pcCU->getRefQP(uiAbsPartIdx) + iDQp;
    1360 #endif
    1361 #endif
    13621262  }
    13631263 
    13641264  UInt uiAbsQpCUPartIdx = (uiAbsPartIdx>>(8-(pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()<<1)))<<(8-(pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()<<1)) ;
    13651265  UInt uiQpCUDepth =   min(uiDepth,pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()) ;
    1366 #if H0736_AVC_STYLE_QP_RANGE
    13671266  pcCU->setQPSubParts( qp, uiAbsQpCUPartIdx, uiQpCUDepth );
    1368 #else
    1369   pcCU->setQPSubParts( uiDQp, uiAbsQpCUPartIdx, uiQpCUDepth );
    1370 #endif
    13711267}
    13721268
     
    14091305
    14101306  // posX
    1411 #if LAST_CTX_REDUCTION
    14121307  Int widthCtx = eTType ? 4 : width;
    14131308  const UInt *puiCtxIdxX = g_uiLastCtx + ( g_aucConvertToBit[ widthCtx ] * ( g_aucConvertToBit[ widthCtx ] + 3 ) );
    1414 #else
    1415   const UInt *puiCtxIdxX = g_uiLastCtx + ( g_aucConvertToBit[ width ] * ( g_aucConvertToBit[ width ] + 3 ) );
    1416 #endif
    14171309  for( uiPosLastX = 0; uiPosLastX < g_uiGroupIdx[ width - 1 ]; uiPosLastX++ )
    14181310  {
    1419 #if LAST_CTX_REDUCTION
    14201311    if ( eTType  )
    14211312    {
     
    14241315    else
    14251316    {
    1426 #endif
    14271317      m_pcTDecBinIf->decodeBin( uiLast, *( pCtxX + puiCtxIdxX[ uiPosLastX ] ) );
    1428 #if LAST_CTX_REDUCTION
    1429     }
    1430 #endif
     1318    }
    14311319    if( !uiLast )
    14321320    {
     
    14361324
    14371325  // posY
    1438 #if LAST_CTX_REDUCTION
    14391326  Int heightCtx = eTType? 4 : height;
    14401327  const UInt *puiCtxIdxY = g_uiLastCtx + ( g_aucConvertToBit[ heightCtx ] * ( g_aucConvertToBit[ heightCtx ] + 3 ) );
    1441 #else
    1442   const UInt *puiCtxIdxY = g_uiLastCtx + ( g_aucConvertToBit[ height ] * ( g_aucConvertToBit[ height ] + 3 ) );
    1443 #endif
    14441328  for( uiPosLastY = 0; uiPosLastY < g_uiGroupIdx[ height - 1 ]; uiPosLastY++ )
    14451329  {
    1446 #if LAST_CTX_REDUCTION
    14471330    if (eTType)
    14481331    {
     
    14511334    else
    14521335    {
    1453 #endif
    14541336      m_pcTDecBinIf->decodeBin( uiLast, *( pCtxY + puiCtxIdxY[ uiPosLastY ] ) );
    1455 #if LAST_CTX_REDUCTION
    1456     }
    1457 #endif
     1337    }
    14581338    if( !uiLast )
    14591339    {
     
    15751455  UInt uiGoRiceParam           = 0;
    15761456
    1577 #if MULTIBITS_DATA_HIDING
    15781457  UInt const tsig = pcCU->getSlice()->getPPS()->getTSIG();
    15791458#if LOSSLESS_CODING
     
    15911470#endif
    15921471  UInt absSum = 0;
    1593 #endif  // MULTIBITS_DATA_HIDING
    15941472
    15951473  UInt uiSigCoeffGroupFlag[ MLS_GRP_NUM ];
     
    16001478  {
    16011479    scanCG = g_auiSigLastScan[ uiScanIdx ][ uiLog2BlockSize > 3 ? uiLog2BlockSize-2-1 : 0  ];   
    1602 #if MULTILEVEL_SIGMAP_EXT
    16031480    if( uiLog2BlockSize == 3 )
    16041481    {
     
    16091486      scanCG = g_sigLastScanCG32x32;
    16101487    }
    1611 #endif
    16121488  }
    16131489  else
     
    16221498    Int numNonZero = 0;
    16231499   
    1624 #if MULTIBITS_DATA_HIDING
    16251500    Int lastNZPosInCG = -1, firstNZPosInCG = SCAN_SET_SIZE;
    1626 #endif
    16271501
    16281502    Int pos[SCAN_SET_SIZE];
    16291503    if( iScanPosSig == (Int) uiScanPosLast )
    16301504    {
    1631 #if MULTIBITS_DATA_HIDING
    16321505      lastNZPosInCG  = iScanPosSig;
    16331506      firstNZPosInCG = iScanPosSig;
    1634 #endif
    16351507      iScanPosSig--;
    16361508      pos[ numNonZero ] = uiBlkPosLast;
     
    16381510    }
    16391511
    1640 #if !MULTILEVEL_SIGMAP_EXT
    1641     if( blockType > 3 )
    1642     {
    1643 #endif
    16441512      // decode significant_coeffgroup_flag
    16451513      Int iCGBlkPos = scanCG[ iSubSet ];
    16461514      Int iCGPosY   = iCGBlkPos / uiNumBlkSide;
    16471515      Int iCGPosX   = iCGBlkPos - (iCGPosY * uiNumBlkSide);
    1648 #if MULTILEVEL_SIGMAP_EXT
    16491516      if( uiWidth == 8 && uiHeight == 8 && (uiScanIdx == SCAN_HOR || uiScanIdx == SCAN_VER) )
    16501517      {
     
    16521519        iCGPosX = (uiScanIdx == SCAN_VER ? iCGBlkPos : 0);
    16531520      }
    1654 #endif
    1655 #if !REMOVE_INFER_SIGGRP
    1656       Bool bInferredCGFlag = false;
    1657 #endif
    1658 #if REMOVE_INFER_SIGGRP
    16591521      if( iSubSet == iLastScanSet || iSubSet == 0)
    1660 #else
    1661       if( iSubSet == iLastScanSet )
    1662 #endif
    16631522      {
    16641523        uiSigCoeffGroupFlag[ iCGBlkPos ] = 1;
     
    16661525      else
    16671526      {
    1668 #if !REMOVE_INFER_SIGGRP
    1669 #if MULTILEVEL_SIGMAP_EXT
    1670         if( !TComTrQuant::bothCGNeighboursOne( uiSigCoeffGroupFlag, iCGPosX, iCGPosY, uiScanIdx, uiWidth, uiHeight) && ( iSubSet ) )
    1671 #else
    1672         if( !TComTrQuant::bothCGNeighboursOne( uiSigCoeffGroupFlag, iCGPosX, iCGPosY, uiWidth, uiHeight) && ( iSubSet ) )
    1673 #endif
    1674         {
    1675 #endif
    16761527          UInt uiSigCoeffGroup;
    1677 #if MULTILEVEL_SIGMAP_EXT
    16781528          UInt uiCtxSig  = TComTrQuant::getSigCoeffGroupCtxInc( uiSigCoeffGroupFlag, iCGPosX, iCGPosY, uiScanIdx, uiWidth, uiHeight );
    1679 #else
    1680           UInt uiCtxSig  = TComTrQuant::getSigCoeffGroupCtxInc( uiSigCoeffGroupFlag, iCGPosX, iCGPosY, uiWidth, uiHeight );
    1681 #endif
    16821529          m_pcTDecBinIf->decodeBin( uiSigCoeffGroup, baseCoeffGroupCtx[ uiCtxSig ] );
    16831530          uiSigCoeffGroupFlag[ iCGBlkPos ] = uiSigCoeffGroup;
    1684 #if !REMOVE_INFER_SIGGRP
    1685         }
    1686         else
    1687         {
    1688           uiSigCoeffGroupFlag[ iCGBlkPos ] = 1;
    1689           bInferredCGFlag = true;
    1690         }
    1691 #endif
    16921531      }
    16931532
     
    17031542        if( uiSigCoeffGroupFlag[ iCGBlkPos ] )
    17041543        {
    1705 #if REMOVE_INFER_SIGGRP
    17061544          if( iScanPosSig > iSubPos || iSubSet == 0  || numNonZero )
    1707 #else
    1708           if( iScanPosSig > iSubPos || bInferredCGFlag || numNonZero )
    1709 #endif
    17101545          {
    17111546            uiCtxSig  = TComTrQuant::getSigCtxInc( pcCoef, uiPosX, uiPosY, blockType, uiWidth, uiHeight, eTType );
     
    17221557          pos[ numNonZero ] = uiBlkPos;
    17231558          numNonZero ++;
    1724 #if MULTIBITS_DATA_HIDING
    17251559          if( lastNZPosInCG == -1 )
    17261560          {
     
    17281562          }
    17291563          firstNZPosInCG = iScanPosSig;
    1730 #endif
    17311564        }
    17321565      }
    1733 #if !MULTILEVEL_SIGMAP_EXT
    1734     }
    1735     else
    1736     {
    1737       for( ; iScanPosSig >= iSubPos; iScanPosSig-- )
    1738       {
    1739         UInt uiBlkPos   = scan[ iScanPosSig ];
    1740         UInt  uiPosY    = uiBlkPos >> uiLog2BlockSize;
    1741         UInt  uiPosX    = uiBlkPos - ( uiPosY << uiLog2BlockSize );
    1742         UInt  uiSig     = 0;
    1743         UInt  uiCtxSig  = TComTrQuant::getSigCtxInc( pcCoef, uiPosX, uiPosY, blockType, uiWidth, uiHeight, eTType );
    1744         m_pcTDecBinIf->decodeBin( uiSig, baseCtx[ uiCtxSig ] );
    1745         pcCoef[ uiBlkPos ] = uiSig;
    1746         if( uiSig )
    1747         {
    1748           pos[ numNonZero ] = uiBlkPos;
    1749           numNonZero ++;
    1750 #if MULTIBITS_DATA_HIDING
    1751           if( lastNZPosInCG == -1 )
    1752           {
    1753             lastNZPosInCG = iScanPosSig;
    1754           }
    1755           firstNZPosInCG = iScanPosSig;
    1756 #endif
    1757         }
    1758       }
    1759     }
    1760 #endif
    17611566
    17621567   
    17631568    if( numNonZero )
    17641569    {
    1765 #if MULTIBITS_DATA_HIDING
    17661570      Bool signHidden = ( lastNZPosInCG - firstNZPosInCG >= (Int)tsig );
    17671571      absSum = 0;
    1768 #endif  // MULTIBITS_DATA_HIDING
    17691572
    17701573      UInt c1 = 1;
    1771 #if !RESTRICT_GR1GR2FLAG_NUMBER
    1772       UInt c2 = 0;
    1773 #endif
    1774 #if LEVEL_CTX_LUMA_RED
    17751574      UInt uiCtxSet    = (iSubSet > 0 && eTType==TEXT_LUMA) ? 2 : 0;
    1776 #else
    1777       UInt uiCtxSet    = (iSubSet > 0 && eTType==TEXT_LUMA) ? 3 : 0;
    1778 #endif
    17791575      UInt uiBin;
    17801576     
     
    17821578      {
    17831579        uiCtxSet++;
    1784 #if !LEVEL_CTX_LUMA_RED
    1785         if(eTType==TEXT_LUMA && uiNumOne > 3)
    1786         {
    1787           uiCtxSet++;
    1788         }
    1789 #endif
    17901580      }
    17911581     
     
    17941584      Int absCoeff[SCAN_SET_SIZE];
    17951585
    1796 #if RESTRICT_GR1GR2FLAG_NUMBER
    17971586      for ( Int i = 0; i < numNonZero; i++) absCoeff[i] = 1;   
    17981587      Int numC1Flag = min(numNonZero, C1FLAG_NUMBER);
     
    18001589
    18011590      for( Int idx = 0; idx < numC1Flag; idx++ )
    1802 #else
    1803       for( Int idx = 0; idx < numNonZero; idx++ )
    1804 #endif
    18051591      {
    18061592        m_pcTDecBinIf->decodeBin( uiBin, baseCtxMod[c1] );
     
    18081594        {
    18091595          c1 = 0;
    1810 #if RESTRICT_GR1GR2FLAG_NUMBER
    18111596          if (firstC2FlagIdx == -1)
    18121597          {
    18131598            firstC2FlagIdx = idx;
    18141599          }
    1815 #endif
    18161600        }
    18171601        else if( (c1 < 3) && (c1 > 0) )
     
    18241608      if (c1 == 0)
    18251609      {
    1826 #if RESTRICT_GR1GR2FLAG_NUMBER
    18271610        baseCtxMod = ( eTType==TEXT_LUMA ) ? m_cCUAbsSCModel.get( 0, 0 ) + uiCtxSet : m_cCUAbsSCModel.get( 0, 0 ) + NUM_ABS_FLAG_CTX_LUMA + uiCtxSet;
    18281611        if ( firstC2FlagIdx != -1)
     
    18311614          absCoeff[ firstC2FlagIdx ] = uiBin + 2;
    18321615        }
    1833 #else   
    1834         baseCtxMod = ( eTType==TEXT_LUMA ) ? m_cCUAbsSCModel.get( 0, 0 ) + 3 * uiCtxSet : m_cCUAbsSCModel.get( 0, 0 ) + NUM_ABS_FLAG_CTX_LUMA + 3 * uiCtxSet;
     1616      }
     1617
     1618      UInt coeffSigns;
     1619      if ( signHidden && beValid )
     1620      {
     1621        m_pcTDecBinIf->decodeBinsEP( coeffSigns, numNonZero-1 );
     1622        coeffSigns <<= 32 - (numNonZero-1);
     1623      }
     1624      else
     1625      {
     1626        m_pcTDecBinIf->decodeBinsEP( coeffSigns, numNonZero );
     1627        coeffSigns <<= 32 - numNonZero;
     1628      }
     1629     
     1630      Int iFirstCoeff2 = 1;   
     1631      if (c1 == 0 || numNonZero > C1FLAG_NUMBER)
     1632      {
    18351633        for( Int idx = 0; idx < numNonZero; idx++ )
    18361634        {
    1837           if( absCoeff[ idx ] == 2 )
    1838           {
    1839             m_pcTDecBinIf->decodeBin( uiBin, baseCtxMod[c2] );
    1840             absCoeff[ idx ] = uiBin + 2;
    1841             c2 += (c2 < 2);
    1842             uiNumOne++;
    1843           }
    1844         }
    1845 #endif
    1846       }
    1847 
    1848 #if MULTIBITS_DATA_HIDING
    1849       UInt coeffSigns;
    1850       if ( signHidden && beValid )
    1851       {
    1852         m_pcTDecBinIf->decodeBinsEP( coeffSigns, numNonZero-1 );
    1853         coeffSigns <<= 32 - (numNonZero-1);
    1854       }
    1855       else
    1856       {
    1857         m_pcTDecBinIf->decodeBinsEP( coeffSigns, numNonZero );
    1858         coeffSigns <<= 32 - numNonZero;
    1859       }
    1860 #else
    1861       UInt coeffSigns;
    1862       m_pcTDecBinIf->decodeBinsEP( coeffSigns, numNonZero );
    1863       coeffSigns <<= 32 - numNonZero;
    1864 #endif
    1865      
    1866 #if RESTRICT_GR1GR2FLAG_NUMBER
    1867       Int iFirstCoeff2 = 1;   
    1868       if (c1 == 0 || numNonZero > C1FLAG_NUMBER)
    1869 #else
    1870       if (c1 == 0)
    1871 #endif
    1872       {
    1873         for( Int idx = 0; idx < numNonZero; idx++ )
    1874         {
    1875 #if RESTRICT_GR1GR2FLAG_NUMBER   
    18761635          UInt baseLevel  = (idx < C1FLAG_NUMBER)? (2 + iFirstCoeff2) : 1;
    18771636
     
    18881647            uiNumOne++;
    18891648          }
    1890 #else
    1891           if( absCoeff[ idx ] == 3 )
    1892           {
    1893             UInt uiLevel;
    1894             xReadGoRiceExGolomb( uiLevel, uiGoRiceParam );
    1895             absCoeff[ idx ] = uiLevel + 3;
    1896           }
    1897 #endif
    18981649        }
    18991650      }
     
    19021653      {
    19031654        Int blkPos = pos[ idx ];
    1904 #if MULTIBITS_DATA_HIDING
    19051655        // Signs applied later.
    19061656        pcCoef[ blkPos ] = absCoeff[ idx ];
     
    19191669          coeffSigns <<= 1;
    19201670        }
    1921 #else
    1922         Int sign = static_cast<Int>( coeffSigns ) >> 31;
    1923         pcCoef[ blkPos ] = ( absCoeff[ idx ] ^ sign ) - sign;
    1924         coeffSigns <<= 1;
    1925 #endif
    19261671      }
    19271672    }
     
    19361681
    19371682
    1938 #if SAO_UNIT_INTERLEAVING
    19391683Void TDecSbac::parseSaoUvlc (UInt& ruiVal)
    19401684{
     
    21731917  }
    21741918}
    2175 #endif
    21761919
    21771920/**
     
    22041947}
    22051948
    2206 #if OL_FLUSH
    22071949Void TDecSbac::decodeFlush ( )
    22081950{
     
    22121954
    22131955}
    2214 #endif
    22151956
    22161957#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX || (LGE_EDGE_INTRA_A0070 && LGE_EDGE_INTRA_DELTA_DC)
     
    24122153#endif
    24132154#if HHI_DMM_PRED_TEX
     2155#if LGE_DMM3_SIMP_C0044
     2156Void TDecSbac::xParseWedgePredTexInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     2157{
     2158  Int iIntraIdx = pcCU->getIntraSizeIdx(uiAbsPartIdx);
     2159  Int iBits = g_aucWedgeTexPredBitsListIdx[iIntraIdx];
     2160
     2161  UInt uiSymbol, uiTabIdx = 0;
     2162  for ( Int i = 0; i < iBits; i++ )
     2163  {
     2164    m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmmDataSCModel.get(0, 0, 3) );
     2165    uiTabIdx += ( uiSymbol && i == 0 ) ? 1 : 0;
     2166    uiTabIdx += ( uiSymbol && i == 1 ) ? 2 : 0;
     2167    uiTabIdx += ( uiSymbol && i == 2 ) ? 4 : 0;
     2168    uiTabIdx += ( uiSymbol && i == 3 ) ? 8 : 0;
     2169    uiTabIdx += ( uiSymbol && i == 4 ) ? 16 : 0;
     2170    uiTabIdx += ( uiSymbol && i == 5 ) ? 32 : 0;
     2171    uiTabIdx += ( uiSymbol && i == 6 ) ? 64 : 0;
     2172    uiTabIdx += ( uiSymbol && i == 7 ) ? 128 : 0;
     2173    uiTabIdx += ( uiSymbol && i == 8 ) ? 256 : 0;
     2174    uiTabIdx += ( uiSymbol && i == 9 ) ? 512 : 0;
     2175    uiTabIdx += ( uiSymbol && i == 10 ) ? 1024 : 0;
     2176  }
     2177
     2178  pcCU->setWedgePredTexIntraTabIdxSubParts( uiTabIdx, uiAbsPartIdx, uiDepth );
     2179}
     2180#endif
     2181
    24142182Void TDecSbac::xParseWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    24152183{
     2184#if LGE_DMM3_SIMP_C0044
     2185  xParseWedgePredTexInfo( pcCU, uiAbsPartIdx, uiDepth );
     2186#endif
    24162187  UInt uiDC1, uiDC2;
    24172188  xReadExGolombLevel( uiDC1, m_cDmmDataSCModel.get(0, 0, 1) );
Note: See TracChangeset for help on using the changeset viewer.