Ignore:
Timestamp:
7 May 2013, 10:29:53 (12 years ago)
Author:
zhang
Message:

JCT3V-D0195 and Results for D0183/D0195

Location:
branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.cpp

    r332 r382  
    14061406}
    14071407
    1408 Void TEncCavlc::codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx )
     1408Void TEncCavlc::codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx
     1409#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1410                                    , Bool bSdcRD
     1411#endif
     1412                                    )
    14091413{
    14101414  assert(0);
     
    18841888
    18851889#if RWTH_SDC_DLT_B0036
     1890#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    18861891Void TEncCavlc::codeSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx )
    18871892{
    18881893  assert(0);
    18891894}
    1890 
     1895#endif
    18911896Void TEncCavlc::codeSDCResidualData  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment )
    18921897{
    18931898  assert(0);
    18941899}
    1895 
     1900#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    18961901Void TEncCavlc::codeSDCPredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx )
    18971902{
     
    18991904}
    19001905#endif
     1906#endif
    19011907//! \}
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.h

    r332 r382  
    183183  Void codeQtRootCbf     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    184184 
    185   Void codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx );
     185  Void codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx
     186#if PKU_QC_DEPTH_INTRA_UNI_D0195
     187    , Bool bSdcRD = false
     188#endif
     189    );
    186190 
    187191  Void codeIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx );
     
    209213 
    210214#if RWTH_SDC_DLT_B0036
     215#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    211216  Void codeSDCFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     217#endif
    212218  Void codeSDCResidualData  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment );
     219#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    213220  Void codeSDCPredMode          ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    214221#endif
     222#endif
    215223
    216224};
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.cpp

    r332 r382  
    828828  m_pcEntropyCoderIf->codePredMode( pcCU, uiAbsPartIdx );
    829829 
     830#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    830831#if RWTH_SDC_DLT_B0036
    831832  // if B-Slice, code SDC flag later
     
    835836    encodeSDCFlag(pcCU, uiAbsPartIdx, bRD);
    836837  }
     838#endif
    837839#endif
    838840}
     
    876878    }
    877879  }
     880#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    878881#if RWTH_SDC_DLT_B0036
    879882  if( !pcCU->getSlice()->isInterB() && pcCU->isIntra(uiAbsPartIdx) && pcCU->getSDCFlag(uiAbsPartIdx)  )
     
    883886  }
    884887#endif
     888#endif
    885889 
    886890  m_pcEntropyCoderIf->codePartSize( pcCU, uiAbsPartIdx, uiDepth );
    887891 
     892#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    888893#if RWTH_SDC_DLT_B0036
    889894  // code SDC flag now!
     
    899904    }
    900905  }
     906#endif
    901907#endif
    902908}
     
    11791185
    11801186// Intra direction for Luma
    1181 Void TEncEntropy::encodeIntraDirModeLuma  ( TComDataCU* pcCU, UInt uiAbsPartIdx )
    1182 {
    1183   m_pcEntropyCoderIf->codeIntraDirLumaAng( pcCU, uiAbsPartIdx );
     1187Void TEncEntropy::encodeIntraDirModeLuma  ( TComDataCU* pcCU, UInt uiAbsPartIdx
     1188#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1189                                           ,Bool bSdcRD
     1190#endif
     1191                                           )
     1192{
     1193  m_pcEntropyCoderIf->codeIntraDirLumaAng( pcCU, uiAbsPartIdx
     1194#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1195    ,bSdcRD
     1196#endif
     1197    );
    11841198}
    11851199
     
    11951209}
    11961210
    1197 Void TEncEntropy::encodePredInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
     1211Void TEncEntropy::encodePredInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD
     1212#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1213                                 ,Bool bSdcRD
     1214#endif
     1215                                 )
    11981216{
    11991217  if( bRD )
     
    12021220  }
    12031221
     1222#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    12041223#if RWTH_SDC_DLT_B0036
    12051224  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    12081227    return;
    12091228  }
     1229#endif
    12101230#endif
    12111231
     
    12221242      encodeIntraDirModeLuma( pcCU, uiAbsPartIdx + uiPartOffset*2 );
    12231243      encodeIntraDirModeLuma( pcCU, uiAbsPartIdx + uiPartOffset*3 );
    1224       encodeIntraDirModeChroma( pcCU, uiAbsPartIdx, bRD );
     1244#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1245      if(!pcCU->getSDCFlag(uiAbsPartIdx))
     1246#endif
     1247        encodeIntraDirModeChroma( pcCU, uiAbsPartIdx, bRD );
    12251248    }
    12261249    else                                                              // if it is not NxN size, encode 1 intra directions
    12271250    {
    1228       encodeIntraDirModeLuma  ( pcCU, uiAbsPartIdx );
    1229       encodeIntraDirModeChroma( pcCU, uiAbsPartIdx, bRD );
     1251      encodeIntraDirModeLuma  ( pcCU, uiAbsPartIdx
     1252#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1253        ,bSdcRD
     1254#endif
     1255        );
     1256#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1257      if(!pcCU->getSDCFlag(uiAbsPartIdx))
     1258#endif
     1259        encodeIntraDirModeChroma( pcCU, uiAbsPartIdx, bRD );
    12301260    }
    12311261  }
     
    14171447    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 );
    14181448    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
    1419    
     1449#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    14201450    encodeSDCResidualData(pcCU, uiAbsPartIdx);
     1451#endif
    14211452    return;
    14221453  }
     
    17151746
    17161747#if RWTH_SDC_DLT_B0036
     1748#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    17171749Void TEncEntropy::encodeSDCPredMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    17181750{
     
    17341766  m_pcEntropyCoderIf->codeSDCFlag(pcCU, uiAbsPartIdx);
    17351767}
    1736 
     1768#endif
    17371769Void TEncEntropy::encodeSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    17381770{
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.h

    r332 r382  
    123123 
    124124#if RWTH_SDC_DLT_B0036
     125#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    125126  virtual Void codeSDCFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
     127#endif
    126128  virtual Void codeSDCResidualData  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment ) = 0;
     129#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    127130  virtual Void codeSDCPredMode          ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
     131#endif
    128132#endif
    129133 
     
    133137  virtual Void codeQtCbf         ( TComDataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth ) = 0;
    134138  virtual Void codeQtRootCbf     ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
    135   virtual Void codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
     139  virtual Void codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx
     140#if PKU_QC_DEPTH_INTRA_UNI_D0195
     141    , Bool bSdcRD = false
     142#endif
     143    ) = 0;
    136144 
    137145  virtual Void codeIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
     
    265273  Void encodePartSize          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD = false );
    266274  Void encodeIPCMInfo          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
    267   Void encodePredInfo          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
    268   Void encodeIntraDirModeLuma  ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     275  Void encodePredInfo          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false
     276#if PKU_QC_DEPTH_INTRA_UNI_D0195
     277    ,Bool bSdcRD = false
     278#endif
     279    );
     280  Void encodeIntraDirModeLuma  ( TComDataCU* pcCU, UInt uiAbsPartIdx
     281#if PKU_QC_DEPTH_INTRA_UNI_D0195
     282 ,Bool bSdcRD = false
     283#endif
     284    );
    269285 
    270286  Void encodeIntraDirModeChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
     
    284300 
    285301#if RWTH_SDC_DLT_B0036
     302#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    286303  Void encodeSDCFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
     304#endif
    287305  Void encodeSDCResidualData  ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
     306#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    288307  Void encodeSDCPredMode   ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
     308#endif
    289309#endif
    290310
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSbac.cpp

    r354 r382  
    103103, m_cSaoTypeIdxSCModel        ( 1,             1,               NUM_SAO_TYPE_IDX_CTX          , m_contextModels + m_numContextModels, m_numContextModels)
    104104#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     105#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    105106, m_cDmmFlagSCModel           ( 1,             1,               NUM_DMM_FLAG_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    106107, m_cDmmModeSCModel           ( 1,             1,               NUM_DMM_MODE_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
     108#endif
    107109, m_cDmmDataSCModel           ( 1,             1,               NUM_DMM_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    108110#endif
     
    114116#endif
    115117#if RWTH_SDC_DLT_B0036
     118#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    116119, m_cSDCFlagSCModel             ( 1,             1,                 SDC_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     120#else
     121, m_cDepthModeModel             ( 1,             1,                 DEPTH_MODE_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     122, m_cDmmDeltaFlagModel             ( 1,             1,                 DMM_DELTA_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     123#endif
    117124, m_cSDCResidualFlagSCModel     ( 1,             2,  SDC_NUM_RESIDUAL_FLAG_CTX  , m_contextModels + m_numContextModels, m_numContextModels)
    118125, m_cSDCResidualSignFlagSCModel ( 1,             2,  SDC_NUM_SIGN_FLAG_CTX      , m_contextModels + m_numContextModels, m_numContextModels)
     
    187194  m_cSaoTypeIdxSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX );
    188195#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     196#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    189197  m_cDmmFlagSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_FLAG );
    190198  m_cDmmModeSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_MODE );
     199#endif
    191200  m_cDmmDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_DATA );
    192201#endif
     
    198207#endif
    199208#if RWTH_SDC_DLT_B0036
     209#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    200210  m_cSDCFlagSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
     211#else
     212  m_cDepthModeModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_DEPTHMODE_FLAG );
     213  m_cDmmDeltaFlagModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMMDELTA_FLAG );
     214#endif
    201215  m_cSDCResidualFlagSCModel.initBuffer      ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    202216  m_cSDCResidualSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL );
     
    340354  m_cSaoTypeIdxSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX );
    341355#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     356#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    342357  m_cDmmFlagSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_FLAG );
    343358  m_cDmmModeSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_MODE );
     359#endif
    344360  m_cDmmDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_DATA );
    345361#endif
    346362#if RWTH_SDC_DLT_B0036
     363#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    347364  m_cSDCFlagSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
     365#else
     366  m_cDepthModeModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_DEPTHMODE_FLAG );
     367  m_cDmmDeltaFlagModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMMDELTA_FLAG );
     368#endif
    348369  m_cSDCResidualFlagSCModel.initBuffer      ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    349370  m_cSDCResidualSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL );
     
    542563}
    543564
    544 
     565#if PKU_QC_DEPTH_INTRA_UNI_D0195
     566Void TEncSbac::loadDepthMode( TEncSbac* pSrc)
     567{
     568  m_pcBinIf->copyState( pSrc->m_pcBinIf );
     569
     570  this->m_cDepthModeModel      .copyFrom( &pSrc->m_cDepthModeModel       );
     571  this->m_cDmmDeltaFlagModel   .copyFrom( &pSrc->m_cDmmDeltaFlagModel       );
     572}
     573#endif
    545574Void  TEncSbac::store( TEncSbac* pDest)
    546575{
     
    966995}
    967996#endif
    968 
    969 Void TEncSbac::codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx )
     997#if PKU_QC_DEPTH_INTRA_UNI_D0195
     998Void TEncSbac::codeDepthIntraMode( TComDataCU* pcCU, UInt uiAbsPartIdx )
     999{
     1000  UInt uiCodeWordTable[3][9] =    {{0, 0, 0, 2, 0,6, 0, 0, 7},{0, 2, 3, 4, 5, 6, 14, 31, 30},{0, 2, 0, 0, 0, 0, 3, 0, 0}};
     1001  UInt uiCodeWordLenTable[3][9] = {{0, 1, 0, 2, 0,3, 0, 0, 3},{2, 3, 3, 3, 3, 3,  4,  5,  5},{1, 2, 0, 0, 0, 0, 2, 0, 0}};
     1002  UInt uiDir = pcCU->getLumaIntraDir(uiAbsPartIdx);
     1003  Bool bSdcFlag = pcCU->getSDCFlag(uiAbsPartIdx);
     1004  UInt uiPuIdx = ( pcCU->getWidth(uiAbsPartIdx) == 64 )? 2 : ( ( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_NxN && pcCU->getWidth(uiAbsPartIdx) == 8 ) ? 0 : 1 );
     1005  UInt uiCodeIdx = 0;
     1006  if ( bSdcFlag )
     1007  {
     1008    switch(uiDir)
     1009    {
     1010      case PLANAR_IDX: uiCodeIdx = 0; break;
     1011      case DC_IDX:     uiCodeIdx = 6; break;
     1012      default:         uiCodeIdx = 2;
     1013    }
     1014  }
     1015  else if ( uiDir>=EDGE_INTRA_IDX )
     1016  {
     1017    uiCodeIdx = 8;
     1018  }
     1019  else if ( uiDir<NUM_INTRA_MODE ) 
     1020  {
     1021    uiCodeIdx = 1;
     1022  }
     1023  else
     1024  {
     1025    if (uiDir== DMM_WEDGE_FULL_IDX     || uiDir==DMM_WEDGE_FULL_D_IDX     )     {uiCodeIdx = 3;}
     1026    if (uiDir== DMM_CONTOUR_PREDTEX_IDX|| uiDir==DMM_CONTOUR_PREDTEX_D_IDX)     {uiCodeIdx = 4;}
     1027    if (uiDir== DMM_WEDGE_PREDTEX_IDX  || uiDir==DMM_WEDGE_PREDTEX_D_IDX  )     {uiCodeIdx = 5;}
     1028    if (uiDir== DMM_WEDGE_PREDDIR_IDX  || uiDir==DMM_WEDGE_PREDDIR_D_IDX  )     {uiCodeIdx = 7;}
     1029  }
     1030  //mode coding
     1031  for (UInt i=0; i<uiCodeWordLenTable[uiPuIdx][uiCodeIdx]; i++)
     1032  {
     1033    UInt uiBit = uiCodeWordTable[uiPuIdx][uiCodeIdx] & ( 1<<(uiCodeWordLenTable[uiPuIdx][uiCodeIdx]-i-1) );
     1034    UInt uiCtxDepthMode = uiPuIdx*3 + ( i >= 2? 2 : i );
     1035    m_pcBinIf->encodeBin( uiBit!=0 , m_cDepthModeModel.get(0, 0, uiCtxDepthMode) );
     1036  }
     1037}
     1038Void TEncSbac::codeDepthModelingTable( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bSdcRD)
     1039{
     1040  UInt uiDir = pcCU->getLumaIntraDir( uiAbsPartIdx );
     1041  Bool bSdcFlag =  pcCU->getSDCFlag(uiAbsPartIdx);
     1042  Bool bDmmFlag = (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX &&(!bSdcFlag))? 1:0;
     1043
     1044  codeDepthIntraMode(pcCU,uiAbsPartIdx);
     1045 
     1046  if (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX )//DMM modes or SDC DMM1
     1047  {
     1048    assert(pcCU->getWidth(uiAbsPartIdx)<64);
     1049    assert(pcCU->getWidth(uiAbsPartIdx)<64);
     1050    if( uiDir == DMM_WEDGE_FULL_IDX || uiDir == DMM_WEDGE_FULL_D_IDX)             { xCodeWedgeFullInfo     ( pcCU, uiAbsPartIdx ); }
     1051    else if( uiDir == DMM_WEDGE_PREDTEX_IDX || uiDir == DMM_WEDGE_PREDTEX_D_IDX ) { xCodeWedgePredTexInfo  ( pcCU, uiAbsPartIdx ); }
     1052    else if( uiDir == DMM_WEDGE_PREDDIR_IDX || uiDir == DMM_WEDGE_PREDDIR_D_IDX)  { xCodeWedgePredDirInfo  ( pcCU, uiAbsPartIdx ); }
     1053  }
     1054  else if(uiDir >= EDGE_INTRA_IDX)//CCM mode
     1055  {
     1056    assert(pcCU->getWidth(uiAbsPartIdx)<64);
     1057    xCodeEdgeIntraInfo( pcCU, uiAbsPartIdx );
     1058  }
     1059
     1060  if (bDmmFlag)
     1061  {
     1062    m_pcBinIf->encodeBin( (uiDir&1) , m_cDmmDeltaFlagModel.get(0, 0, 0) );
     1063    if (uiDir&1)
     1064    {
     1065      Int iDeltaDC1 = 0,iDeltaDC2 = 0;
     1066      if ( uiDir == DMM_WEDGE_FULL_D_IDX )
     1067      {
     1068        iDeltaDC1 = pcCU->getWedgeFullDeltaDC1( uiAbsPartIdx );
     1069        iDeltaDC2 = pcCU->getWedgeFullDeltaDC2( uiAbsPartIdx );
     1070      }
     1071      else if ( uiDir == DMM_WEDGE_PREDTEX_D_IDX )
     1072      {
     1073        iDeltaDC1 = pcCU->getWedgePredTexDeltaDC1( uiAbsPartIdx );
     1074        iDeltaDC2 = pcCU->getWedgePredTexDeltaDC2( uiAbsPartIdx );
     1075      }
     1076      else if ( uiDir == DMM_WEDGE_PREDDIR_D_IDX )
     1077      {
     1078        iDeltaDC1 = pcCU->getWedgePredDirDeltaDC1( uiAbsPartIdx );
     1079        iDeltaDC2 = pcCU->getWedgePredDirDeltaDC2( uiAbsPartIdx );
     1080      }
     1081      else if ( uiDir == DMM_CONTOUR_PREDTEX_D_IDX )
     1082      {
     1083        iDeltaDC1 = pcCU->getContourPredTexDeltaDC1( uiAbsPartIdx );
     1084        iDeltaDC2 = pcCU->getContourPredTexDeltaDC2( uiAbsPartIdx );
     1085
     1086      }
     1087
     1088      for ( Int i = 0; i < 2; i++ )
     1089      {
     1090        Int iDeltaDC = (i==0)? iDeltaDC1 : iDeltaDC2;
     1091        xWriteExGolombLevel( UInt( abs( iDeltaDC ) ), m_cDmmDataSCModel.get(0, 0, 1) );
     1092        if ( iDeltaDC != 0 )
     1093        {
     1094          UInt uiSign = iDeltaDC > 0 ? 0 : 1;
     1095          m_pcBinIf->encodeBinEP( uiSign );
     1096        }
     1097      }
     1098    }
     1099  }
     1100  else if (uiDir>=EDGE_INTRA_IDX)
     1101  {
     1102    m_pcBinIf->encodeBin( (uiDir == EDGE_INTRA_DELTA_IDX), m_cEdgeIntraDeltaDCSCModel.get(0, 0, 0) );
     1103    if( uiDir == EDGE_INTRA_DELTA_IDX )
     1104    {
     1105      Int iDeltaDC0 = pcCU->getEdgeDeltaDC0( uiAbsPartIdx );
     1106      Int iDeltaDC1 = pcCU->getEdgeDeltaDC1( uiAbsPartIdx );
     1107
     1108      for ( Int i = 0; i < 2; i++ )
     1109      {
     1110        Int iDeltaDC = (i==0)? iDeltaDC0 : iDeltaDC1;
     1111        xWriteExGolombLevel( UInt( abs( iDeltaDC ) ), m_cEdgeIntraDeltaDCSCModel.get(0, 0, 1) );
     1112        if ( iDeltaDC != 0 )
     1113        {
     1114          UInt uiSign = iDeltaDC > 0 ? 0 : 1;
     1115          m_pcBinIf->encodeBinEP( uiSign );
     1116        }
     1117      }
     1118    }
     1119  }
     1120  if (pcCU->getSDCFlag(uiAbsPartIdx))//SDC mode
     1121  {
     1122    assert(pcCU->getPartitionSize(uiAbsPartIdx)==SIZE_2Nx2N);
     1123    UInt uiNumSegments = ( uiDir == DC_IDX || uiDir == PLANAR_IDX )? 1 : 2;
     1124    if(!bSdcRD)
     1125    {
     1126      for (int uiSeg=0; uiSeg<uiNumSegments; uiSeg++)
     1127      {
     1128        codeSDCResidualData(pcCU, uiAbsPartIdx, uiSeg);
     1129      }
     1130    }
     1131  }
     1132}
     1133#endif
     1134Void TEncSbac::codeIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx
     1135#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1136                                   , Bool bSdcRD
     1137#endif
     1138                                   )
    9701139{
    9711140  UInt uiDir         = pcCU->getLumaIntraDir( uiAbsPartIdx );
    9721141
     1142#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9731143#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    9741144  if( pcCU->getSlice()->getSPS()->getUseDMM() && pcCU->getWidth( uiAbsPartIdx ) <= DMM_WEDGEMODEL_MAX_SIZE )
     
    10701240  }
    10711241#endif
    1072  
     1242#else
     1243  if (pcCU->getSlice()->getSPS()->isDepth())
     1244  {
     1245    codeDepthModelingTable(pcCU, uiAbsPartIdx, bSdcRD);
     1246  }
     1247  if (pcCU->getLumaIntraDir(uiAbsPartIdx)<NUM_INTRA_MODE && !pcCU->getSDCFlag(uiAbsPartIdx))
     1248  {
     1249#endif
    10731250  Int uiPreds[3] = {-1, -1, -1};
    10741251  Int uiPredNum = pcCU->getIntraDirLumaPredictor(uiAbsPartIdx, uiPreds); 
     
    11161293
    11171294    m_pcBinIf->encodeBinsEP( uiDir, 5 );
     1295#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    11181296#if LGE_EDGE_INTRA_A0070
    11191297  if (bCodeEdgeIntra)
    11201298    if (uiDir == 31) m_pcBinIf->encodeBinsEP(0,1);
    11211299#endif
     1300#endif
    11221301   }
     1302#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1303  }
     1304#else
    11231305#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    11241306  }
    11251307#endif
     1308#endif
     1309
    11261310  return;
    11271311}
     
    23972581
    23982582#if RWTH_SDC_DLT_B0036
     2583#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    23992584Void TEncSbac::codeSDCPredMode( TComDataCU* pcCU, UInt uiAbsPartIdx )
    24002585{
     
    24402625 
    24412626}
     2627#endif
    24422628
    24432629Void TEncSbac::codeSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment )
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSbac.h

    r332 r382  
    9292  Void  load                   ( TEncSbac* pScr  );
    9393  Void  loadIntraDirModeLuma   ( TEncSbac* pScr  );
     94#if PKU_QC_DEPTH_INTRA_UNI_D0195
     95  Void  loadDepthMode          ( TEncSbac* pSrc  );
     96#endif
    9497  Void  store                  ( TEncSbac* pDest );
    9598  Void  loadContexts           ( TEncSbac* pScr  );
     
    137140 
    138141#if RWTH_SDC_DLT_B0036
     142#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    139143  Void codeSDCFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     144#endif
    140145  Void codeSDCResidualData  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment );
     146#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    141147  Void codeSDCPredMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     148#endif
    142149#endif
    143150
     
    222229  Void codeQtCbf               ( TComDataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth );
    223230  Void codeQtRootCbf           ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    224  
    225   Void codeIntraDirLumaAng     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     231#if PKU_QC_DEPTH_INTRA_UNI_D0195
     232  Void codeDepthIntraMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     233  Void codeDepthModelingTable  ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bSdcRD = false );
     234#endif
     235  Void codeIntraDirLumaAng     ( TComDataCU* pcCU, UInt uiAbsPartIdx
     236#if PKU_QC_DEPTH_INTRA_UNI_D0195
     237    , Bool bSdcRD = false
     238#endif
     239    );
    226240 
    227241  Void codeIntraDirChroma      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     
    300314
    301315#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     316#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    302317  ContextModel3DBuffer m_cDmmFlagSCModel;
    303318  ContextModel3DBuffer m_cDmmModeSCModel;
     319#endif
    304320  ContextModel3DBuffer m_cDmmDataSCModel;
    305321#endif
     
    312328 
    313329#if RWTH_SDC_DLT_B0036
     330#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    314331  ContextModel3DBuffer m_cSDCFlagSCModel;
     332#else
     333  ContextModel3DBuffer m_cDepthModeModel;
     334  ContextModel3DBuffer m_cDmmDeltaFlagModel;
     335#endif
    315336 
    316337  ContextModel3DBuffer m_cSDCResidualFlagSCModel;
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp

    r379 r382  
    908908      if( uiAbsPartIdx == 0 )
    909909      {
    910         m_pcEntropyCoder->encodeIntraDirModeLuma ( pcCU, 0 );
     910        m_pcEntropyCoder->encodeIntraDirModeLuma ( pcCU, 0
     911#if PKU_QC_DEPTH_INTRA_UNI_D0195
     912         ,true
     913#endif
     914          );
    911915      }
    912916    }
     
    17621766 
    17631767  // encode pred direction + residual data
    1764   m_pcEntropyCoder->encodePredInfo( pcCU, 0, true );
    1765  
     1768  m_pcEntropyCoder->encodePredInfo( pcCU, 0, true
     1769#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1770    ,true
     1771#endif
     1772    );
    17661773  UInt   uiBits = m_pcEntropyCoder->getNumberOfWrittenBits();
    17671774 
     
    59035910    // Reload only contexts required for coding intra mode information
    59045911    m_pcRDGoOnSbacCoder->loadIntraDirModeLuma( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] );
     5912#if PKU_QC_DEPTH_INTRA_UNI_D0195
     5913    m_pcRDGoOnSbacCoder->loadDepthMode( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] );
     5914#endif
    59055915  }
    59065916 
     
    59085918 
    59095919  m_pcEntropyCoder->resetBits();
    5910   m_pcEntropyCoder->encodeIntraDirModeLuma ( pcCU, uiPartOffset);
     5920  m_pcEntropyCoder->encodeIntraDirModeLuma ( pcCU, uiPartOffset
     5921#if PKU_QC_DEPTH_INTRA_UNI_D0195
     5922    ,true
     5923#endif
     5924    );
    59115925 
    59125926  return m_pcEntropyCoder->getNumberOfWrittenBits();
Note: See TracChangeset for help on using the changeset viewer.