Ignore:
Timestamp:
12 Apr 2018, 11:12:21 (7 years ago)
Author:
tech
Message:
  • Update HM-16.18
  • Cleanups
  • Encoder Extension

-- Representation formats
-- Parameter set sharing
-- GOP configuration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-16.2-dev/source/Lib/TLibEncoder/TEncSbac.cpp

    r1405 r1412  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2016, ITU/ISO/IEC
     6 * Copyright (c) 2010-2017, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    6262, m_cCUSplitFlagSCModel                ( 1,             1,                      NUM_SPLIT_FLAG_CTX                   , m_contextModels + m_numContextModels, m_numContextModels)
    6363, m_cCUSkipFlagSCModel                 ( 1,             1,                      NUM_SKIP_FLAG_CTX                    , m_contextModels + m_numContextModels, m_numContextModels)
    64 #if NH_3D_DIS
     64#if NH_3D
    6565, m_cCUDISFlagSCModel                  ( 1,             1,                      NUM_DIS_FLAG_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    6666, m_cCUDISTypeSCModel                  ( 1,             1,                      NUM_DIS_TYPE_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
     
    6868, m_cCUMergeFlagExtSCModel             ( 1,             1,                      NUM_MERGE_FLAG_EXT_CTX               , m_contextModels + m_numContextModels, m_numContextModels)
    6969, m_cCUMergeIdxExtSCModel              ( 1,             1,                      NUM_MERGE_IDX_EXT_CTX                , m_contextModels + m_numContextModels, m_numContextModels)
    70 #if NH_3D_ARP
     70#if NH_3D
    7171, m_cCUPUARPWSCModel                   ( 1,             1,                      NUM_ARPW_CTX                         , m_contextModels + m_numContextModels, m_numContextModels)
    72 #endif                                                                                                               
    73 #if NH_3D_IC                                                                                                         
    7472, m_cCUICFlagSCModel                   ( 1,             1,                      NUM_IC_FLAG_CTX                      , m_contextModels + m_numContextModels, m_numContextModels)
    7573#endif
     
    102100, m_ChromaQpAdjIdcSCModel              ( 1,             1,                      NUM_CHROMA_QP_ADJ_IDC_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
    103101
    104 #if NH_3D_DMM
     102#if NH_3D
    105103, m_cNotDmmFlagSCModel                 ( 1,             1,                      NUM_NOTDMM_FLAG_CTX                  , m_contextModels + m_numContextModels, m_numContextModels)
    106104, m_cDmmModeSCModel                    ( 1,             1,                      NUM_DMM_MODE_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    107 #endif
    108 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER
    109105, m_cDdcDataSCModel                    ( 1,             1,                      NUM_DDC_DATA_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    110106, m_cSDCFlagSCModel                    ( 1,             1,                       NUM_SDC_FLAG_CTX                    , m_contextModels + m_numContextModels, m_numContextModels)
    111 #endif
    112 #if NH_3D_SDC_INTRA
    113107, m_cSDCResidualFlagSCModel            ( 1,             1,                      SDC_NUM_RESIDUAL_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
    114108, m_cSDCResidualSCModel                ( 1,             1,                      SDC_NUM_RESIDUAL_CTX                 , m_contextModels + m_numContextModels, m_numContextModels)
    115109, m_cDdcFlagSCModel                    ( 1,             1,                      NUM_DDC_FLAG_CTX                     , m_contextModels + m_numContextModels, m_numContextModels)
    116 #endif                                                                                                         
    117 #if NH_3D_DBBP
    118110, m_cDBBPFlagSCModel                   ( 1,             1,                       DBBP_NUM_FLAG_CTX                   , m_contextModels + m_numContextModels, m_numContextModels)
    119111#endif
     
    143135  m_cCUSplitFlagSCModel.initBuffer                ( eSliceType, iQp, (UChar*)INIT_SPLIT_FLAG );
    144136  m_cCUSkipFlagSCModel.initBuffer                 ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG );
    145 #if NH_3D_DIS
     137#if NH_3D
    146138  m_cCUDISFlagSCModel.initBuffer                  ( eSliceType, iQp, (UChar*)INIT_DIS_FLAG );
    147139  m_cCUDISTypeSCModel.initBuffer                  ( eSliceType, iQp, (UChar*)INIT_DIS_TYPE );
     
    149141  m_cCUMergeFlagExtSCModel.initBuffer             ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
    150142  m_cCUMergeIdxExtSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT);
    151 #if NH_3D_ARP
     143#if NH_3D
    152144  m_cCUPUARPWSCModel.initBuffer                   ( eSliceType, iQp, (UChar*)INIT_ARPW );
    153 #endif
    154 #if NH_3D_IC
    155145  m_cCUICFlagSCModel.initBuffer                   ( eSliceType, iQp, (UChar*)INIT_IC_FLAG );
    156146#endif
     
    183173  m_ChromaQpAdjIdcSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_CHROMA_QP_ADJ_IDC );
    184174
    185 #if NH_3D_DMM
     175#if NH_3D
    186176  m_cNotDmmFlagSCModel.initBuffer                 ( eSliceType, iQp, (UChar*)INIT_NOTDMM_FLAG );
    187177  m_cDmmModeSCModel.initBuffer                    ( eSliceType, iQp, (UChar*)INIT_DMM_MODE );
    188 #endif
    189 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER
    190178  m_cDdcDataSCModel.initBuffer                    ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
    191179  m_cSDCFlagSCModel.initBuffer                    ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
    192 #endif
    193 #if NH_3D_SDC_INTRA
    194180  m_cSDCResidualFlagSCModel.initBuffer            ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    195181  m_cSDCResidualSCModel.initBuffer                ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL );
    196182  m_cDdcFlagSCModel.initBuffer                    ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG );
    197 #endif                                           
    198 #if NH_3D_DBBP
    199183  m_cDBBPFlagSCModel.initBuffer                   ( eSliceType, iQp, (UChar*)INIT_DBBP_FLAG );
    200184#endif
     
    231215      curCost  = m_cCUSplitFlagSCModel.calcCost                ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG );
    232216      curCost += m_cCUSkipFlagSCModel.calcCost                 ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG );
    233 #if NH_3D_DIS
     217#if NH_3D
    234218      curCost += m_cCUDISFlagSCModel.calcCost                  ( curSliceType, qp, (UChar*)INIT_DIS_FLAG );
    235219      curCost += m_cCUDISTypeSCModel.calcCost                  ( curSliceType, qp, (UChar*)INIT_DIS_TYPE );
     
    237221      curCost += m_cCUMergeFlagExtSCModel.calcCost             ( curSliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT);
    238222      curCost += m_cCUMergeIdxExtSCModel.calcCost              ( curSliceType, qp, (UChar*)INIT_MERGE_IDX_EXT);
    239 #if NH_3D_ARP
     223#if NH_3D
    240224      curCost += m_cCUPUARPWSCModel.calcCost                   ( curSliceType, qp, (UChar*)INIT_ARPW );
    241 #endif                                                     
    242 #if NH_3D_IC                                               
    243225      curCost += m_cCUICFlagSCModel.calcCost                   ( curSliceType, qp, (UChar*)INIT_IC_FLAG );
    244 #endif                                                     
    245 #if NH_3D_SDC_INTRA || NH_3D_SDC_INTER
    246226      curCost += m_cSDCFlagSCModel.calcCost                    ( curSliceType, qp, (UChar*)INIT_SDC_FLAG );
    247 #endif                                                     
    248 #if NH_3D_DBBP
    249227      curCost += m_cDBBPFlagSCModel.calcCost                   ( curSliceType, qp, (UChar*)INIT_DBBP_FLAG );
    250228#endif
     
    276254      curCost += m_ChromaQpAdjFlagSCModel.calcCost             ( curSliceType, qp, (UChar*)INIT_CHROMA_QP_ADJ_FLAG );
    277255      curCost += m_ChromaQpAdjIdcSCModel.calcCost              ( curSliceType, qp, (UChar*)INIT_CHROMA_QP_ADJ_IDC );
    278 #if NH_3D_DMM
     256#if NH_3D
    279257      curCost += m_cNotDmmFlagSCModel.calcCost                 ( curSliceType, qp, (UChar*)INIT_NOTDMM_FLAG ); 
    280258      curCost += m_cDmmModeSCModel.calcCost                    ( curSliceType, qp, (UChar*)INIT_DMM_MODE );
    281 #endif
    282 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER
    283259      curCost += m_cDdcDataSCModel.calcCost                    ( curSliceType, qp, (UChar*)INIT_DDC_DATA );
    284260#endif
     
    406382}
    407383
    408 #if NH_3D_DIS
     384#if NH_3D
    409385Void TEncSbac::codeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx )
    410386{
     
    522498}
    523499
    524 #if NH_3D_DMM
     500#if NH_3D
    525501Void TEncSbac::loadIntraDepthDmm( const TEncSbac* pSrc )
    526502{
     
    567543{
    568544  PartSize eSize         = pcCU->getPartitionSize( uiAbsPartIdx );
    569 #if NH_3D_QTLPC
     545#if NH_3D
    570546  Bool    bLimQtPredFlag = pcCU->getPic()->getSlice(0)->getQtPredFlag();
    571547  TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
     
    578554  UInt uiTexturePart = eSize;
    579555
    580 #if H_3D_FCO
    581   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark())
    582 #else
    583556  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag )
    584 #endif
    585557  {
    586558    TComDataCU *pcTextureCU = pcTexture->getCtu(pcCU->getCtuRsAddr());
     
    616588  DTRACE_CU("part_mode", eSize )
    617589#endif       
    618 #if NH_3D_QTLPC
     590#if NH_3D
    619591    if (depthDependent==false || uiTexturePart == SIZE_NxN|| uiTexturePart == SIZE_2Nx2N)
    620592    {
    621593#endif
    622 
    623   switch(eSize)
    624   {
    625     case SIZE_2Nx2N:
    626     {
    627       m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    628       break;
    629     }
    630     case SIZE_2NxN:
    631     case SIZE_2NxnU:
    632     case SIZE_2NxnD:
    633     {
    634       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    635       m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    636       if ( pcCU->getSlice()->getSPS()->getUseAMP() && uiDepth < log2DiffMaxMinCodingBlockSize )
    637       {
    638         if (eSize == SIZE_2NxN)
    639         {
    640           m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    641         }
    642         else
    643         {
    644           m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    645           m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1));
    646         }
    647       }
    648       break;
    649     }
    650     case SIZE_Nx2N:
    651     case SIZE_nLx2N:
    652     case SIZE_nRx2N:
    653     {
    654       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    655       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    656 
    657       if( uiDepth == log2DiffMaxMinCodingBlockSize && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
    658       {
    659         m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) );
    660       }
    661 
    662       if ( pcCU->getSlice()->getSPS()->getUseAMP() && uiDepth < log2DiffMaxMinCodingBlockSize )
    663       {
    664         if (eSize == SIZE_Nx2N)
    665         {
    666           m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    667         }
    668         else
    669         {
    670           m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    671           m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1));
    672         }
    673       }
    674       break;
    675     }
    676     case SIZE_NxN:
    677     {
    678       if( uiDepth == log2DiffMaxMinCodingBlockSize && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
    679       {
    680         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    681         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    682         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
    683       }
    684       break;
    685     }
    686     default:
    687     {
    688       assert(0);
    689       break;
    690     }
    691   }
    692 #if NH_3D_QTLPC
     594      switch(eSize)
     595      {
     596      case SIZE_2Nx2N:
     597        {
     598          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     599          break;
     600        }
     601      case SIZE_2NxN:
     602      case SIZE_2NxnU:
     603      case SIZE_2NxnD:
     604        {
     605          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     606          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     607          if ( pcCU->getSlice()->getSPS()->getUseAMP() && uiDepth < log2DiffMaxMinCodingBlockSize )
     608          {
     609            if (eSize == SIZE_2NxN)
     610            {
     611              m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     612            }
     613            else
     614            {
     615              m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     616              m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1));
     617            }
     618          }
     619          break;
     620        }
     621      case SIZE_Nx2N:
     622      case SIZE_nLx2N:
     623      case SIZE_nRx2N:
     624        {
     625          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     626          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     627
     628          if( uiDepth == log2DiffMaxMinCodingBlockSize && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     629          {
     630            m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     631          }
     632
     633          if ( pcCU->getSlice()->getSPS()->getUseAMP() && uiDepth < log2DiffMaxMinCodingBlockSize )
     634          {
     635            if (eSize == SIZE_Nx2N)
     636            {
     637              m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     638            }
     639            else
     640            {
     641              m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     642              m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1));
     643            }
     644          }
     645          break;
     646        }
     647      case SIZE_NxN:
     648        {
     649          if( uiDepth == log2DiffMaxMinCodingBlockSize && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     650          {
     651            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     652            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     653            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     654          }
     655          break;
     656        }
     657      default:
     658        {
     659          assert(0);
     660          break;
     661        }
     662      }
     663#if NH_3D
    693664    }
    694665    else if(uiTexturePart == SIZE_2NxN || uiTexturePart == SIZE_2NxnU || uiTexturePart == SIZE_2NxnD)
    695666    {
    696       //assert(eSize!=SIZE_NxN);
    697       //assert(eSize!=SIZE_Nx2N);
    698       //assert(eSize==SIZE_2Nx2N || eSize==SIZE_2NxN || eSize==SIZE_2NxnU || eSize==SIZE_2NxnD);
    699667      switch(eSize)
    700668      {
     
    729697    else if(uiTexturePart == SIZE_Nx2N|| uiTexturePart==SIZE_nLx2N || uiTexturePart==SIZE_nRx2N)
    730698    {
    731       //assert(eSize!=SIZE_NxN);
    732       //assert(eSize!=SIZE_2NxN);
    733       //assert(eSize==SIZE_2Nx2N ||eSize==SIZE_Nx2N || eSize==SIZE_nLx2N || eSize==SIZE_nRx2N);
    734699      switch(eSize)
    735700      {
     
    768733    }
    769734#endif
    770 
    771735}
    772736
     
    885849}
    886850
    887 #if NH_3D_ARP
     851#if NH_3D
    888852Void TEncSbac::codeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx )
    889853{
     
    903867#endif
    904868}
    905 #endif
    906 
    907 #if NH_3D_IC
     869
    908870/** code Illumination Compensation flag
    909871 * \param pcCU
     
    940902
    941903  assert( uiCtx < 3 );
    942 #if NH_3D_QTLPC
     904#if NH_3D
    943905  Bool bCodeSplitFlag    = true;
    944906
     
    951913  Bool rapPic     = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
    952914
    953 #if H_3D_FCO
    954   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark() )
    955 #else
    956915  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag  )
    957 #endif
    958916  {
    959917    TComDataCU *pcTextureCU = pcTexture->getCtu(pcCU->getCtuRsAddr());
     
    1009967  {
    1010968    dir[j] = pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx+partOffset*j );
    1011 #if NH_3D_DMM
     969#if NH_3D
    1012970    if( pcCU->getSlice()->getIntraSdcWedgeFlag() ||  pcCU->getSlice()->getIntraContourFlag() )
    1013971    {
     
    1018976    {
    1019977#endif
    1020     pcCU->getIntraDirPredictor(absPartIdx+partOffset*j, preds[j], COMPONENT_Y);
    1021     for(UInt i = 0; i < NUM_MOST_PROBABLE_MODES; i++)
    1022     {
    1023       if(dir[j] == preds[j][i])
    1024       {
    1025         predIdx[j] = i;
    1026       }
    1027     }
    1028     m_pcBinIf->encodeBin((predIdx[j] != -1)? 1 : 0, m_cCUIntraPredSCModel.get( 0, 0, 0 ) );
     978      pcCU->getIntraDirPredictor(absPartIdx+partOffset*j, preds[j], COMPONENT_Y);
     979      for(UInt i = 0; i < NUM_MOST_PROBABLE_MODES; i++)
     980      {
     981        if(dir[j] == preds[j][i])
     982        {
     983          predIdx[j] = i;
     984        }
     985      }
     986      m_pcBinIf->encodeBin((predIdx[j] != -1)? 1 : 0, m_cCUIntraPredSCModel.get( 0, 0, 0 ) );
    1029987#if NH_MV_ENC_DEC_TRAC
    1030988      DTRACE_CU("prev_intra_luma_pred_flag", (predIdx[j] != -1)? 1 : 0);
    1031989#endif
    1032 #if NH_3D_DMM
     990#if NH_3D
    1033991    }
    1034992#endif
     
    1037995  for (j=0;j<partNum;j++)
    1038996  {
    1039 #if NH_3D_DMM
     997#if NH_3D
    1040998    if( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx+partOffset*j ) < NUM_INTRA_MODE )
    1041999    {
    10421000#endif
    1043     if(predIdx[j] != -1)
    1044     {
    1045       m_pcBinIf->encodeBinEP( predIdx[j] ? 1 : 0 );
    1046       if (predIdx[j])
    1047       {
    1048         m_pcBinIf->encodeBinEP( predIdx[j]-1 );
    1049       }
     1001      if(predIdx[j] != -1)
     1002      {
     1003        m_pcBinIf->encodeBinEP( predIdx[j] ? 1 : 0 );
     1004        if (predIdx[j])
     1005        {
     1006          m_pcBinIf->encodeBinEP( predIdx[j]-1 );
     1007        }
    10501008#if NH_MV_ENC_DEC_TRAC
    10511009        DTRACE_CU("mpm_idx", predIdx[j] );
    10521010#endif
    1053     }
    1054     else
    1055     {
    1056       if (preds[j][0] > preds[j][1])
    1057       {
    1058         std::swap(preds[j][0], preds[j][1]);
    1059       }
    1060       if (preds[j][0] > preds[j][2])
    1061       {
    1062         std::swap(preds[j][0], preds[j][2]);
    1063       }
    1064       if (preds[j][1] > preds[j][2])
    1065       {
    1066         std::swap(preds[j][1], preds[j][2]);
    1067       }
    1068       for(Int i = (Int(NUM_MOST_PROBABLE_MODES) - 1); i >= 0; i--)
    1069       {
    1070         dir[j] = dir[j] > preds[j][i] ? dir[j] - 1 : dir[j];
    1071       }
    1072       m_pcBinIf->encodeBinsEP( dir[j], 5 );
     1011      }
     1012      else
     1013      {
     1014        if (preds[j][0] > preds[j][1])
     1015        {
     1016          std::swap(preds[j][0], preds[j][1]);
     1017        }
     1018        if (preds[j][0] > preds[j][2])
     1019        {
     1020          std::swap(preds[j][0], preds[j][2]);
     1021        }
     1022        if (preds[j][1] > preds[j][2])
     1023        {
     1024          std::swap(preds[j][1], preds[j][2]);
     1025        }
     1026        for(Int i = (Int(NUM_MOST_PROBABLE_MODES) - 1); i >= 0; i--)
     1027        {
     1028          dir[j] = dir[j] > preds[j][i] ? dir[j] - 1 : dir[j];
     1029        }
     1030        m_pcBinIf->encodeBinsEP( dir[j], 5 );
    10731031#if NH_MV_ENC_DEC_TRAC
    10741032        DTRACE_CU("rem_intra_luma_pred_mode", dir[j] );
    10751033#endif
    1076     }
    1077 #if NH_3D_DMM
     1034      }
     1035#if NH_3D
    10781036    }
    10791037#endif
     
    17211679    else
    17221680    {
    1723       beValid = pcCU->getSlice()->getPPS()->getSignHideFlag();
     1681      beValid = pcCU->getSlice()->getPPS()->getSignDataHidingEnabledFlag();
    17241682    }
    17251683  }
     
    21682126 ****************************************************************************
    21692127 */
    2170 Void TEncSbac::estBit( estBitsSbacStruct* pcEstBitsSbac, Int width, Int height, ChannelType chType )
     2128Void TEncSbac::estBit( estBitsSbacStruct* pcEstBitsSbac, Int width, Int height, ChannelType chType, COEFF_SCAN_TYPE scanType )
    21712129{
    21722130  estCBFBit( pcEstBitsSbac );
     
    21782136
    21792137  // encode last significant position
    2180   estLastSignificantPositionBit( pcEstBitsSbac, width, height, chType );
     2138  estLastSignificantPositionBit( pcEstBitsSbac, width, height, chType, scanType );
    21812139
    21822140  // encode significant coefficients
     
    23122270 */
    23132271
    2314 Void TEncSbac::estLastSignificantPositionBit( estBitsSbacStruct* pcEstBitsSbac, Int width, Int height, ChannelType chType )
    2315 {
     2272Void TEncSbac::estLastSignificantPositionBit( estBitsSbacStruct* pcEstBitsSbac, Int width, Int height, ChannelType chType, COEFF_SCAN_TYPE scanType )
     2273{
     2274  if (scanType == SCAN_VER)
     2275  {
     2276    swap(width, height);
     2277  }
     2278
    23162279  //--------------------------------------------------------------------------------------------------.
    23172280
     
    24592422}
    24602423
    2461 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER
     2424#if NH_3D
    24622425Void TEncSbac::codeDeltaDC( TComDataCU* pcCU, UInt absPartIdx )
    24632426{
    2464 #if NH_3D_SDC_INTRA || NH_3D_SDC_INTER
    24652427  if( !(pcCU->getSDCFlag( absPartIdx )) )
    2466 #endif
    2467 #if NH_3D_DMM
    24682428    if( !(pcCU->isIntra( absPartIdx ) && isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) )) )
    2469 #endif
    24702429    assert( 0 );
    24712430
    24722431  UInt uiNumSegments = 1;
    2473 #if NH_3D_DMM
    24742432  uiNumSegments = isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) ) ? 2 : 1;
    2475 #endif
    24762433
    24772434  UInt hasDeltaDC = 1;
    2478 #if NH_3D_SDC_INTRA
    24792435  if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx ))
    24802436  {
     
    24892445    m_pcBinIf->encodeBin( hasDeltaDC, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
    24902446  }
    2491 #endif
    24922447
    24932448  if( hasDeltaDC )
     
    24982453      if( pcCU->isIntra( absPartIdx ) )
    24992454      {
    2500 #if NH_3D_SDC_INTRA
    25012455        if( pcCU->getSDCFlag( absPartIdx ) )
    25022456        {
     
    25052459        else
    25062460        {
    2507 #endif
    2508 #if NH_3D_DMM
    25092461        deltaDC = pcCU->getDmmDeltaDC( getDmmType( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, absPartIdx ) ), segment, absPartIdx );
    2510 #endif
    2511 #if NH_3D_SDC_INTRA
    2512         }
    2513 #endif
    2514       }
    2515 #if NH_3D_SDC_INTER
     2462        }
     2463      }
    25162464      else
    25172465      {
    25182466        deltaDC = pcCU->getSDCSegmentDCOffset( segment, absPartIdx );
    25192467      }
    2520 #endif
    25212468      xCodeDeltaDC( deltaDC, uiNumSegments );
    25222469    }
     
    25652512  return;
    25662513}
    2567 #endif
    2568 
    2569 #if NH_3D_DMM
     2514
    25702515Void TEncSbac::xCodeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx )
    25712516{
     
    26122557  }
    26132558}
    2614 #endif
    2615 
    2616 #if NH_3D_SDC_INTRA || NH_3D_SDC_INTER
     2559
    26172560Void TEncSbac::codeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )
    26182561{
     
    26242567}
    26252568
    2626 #endif
    2627 
    2628 #if NH_3D_DBBP
     2569
    26292570Void TEncSbac::codeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )
    26302571{
Note: See TracChangeset for help on using the changeset viewer.