Changeset 382 in 3DVCSoftware


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

JCT3V-D0195 and Results for D0183/D0195

Location:
branches/HTM-6.2-dev3-Qualcomm
Files:
2 added
17 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/ContextTables.h

    r332 r382  
    128128
    129129#if RWTH_SDC_DLT_B0036
     130#if PKU_QC_DEPTH_INTRA_UNI_D0195
     131#define DEPTH_MODE_NUM_FLAG_CTX          8
     132#define DMM_DELTA_NUM_FLAG_CTX           1
     133#else
    130134#define SDC_NUM_FLAG_CTX                 3
     135#endif
    131136#define SDC_NUM_RESIDUAL_FLAG_CTX        1
    132137#define SDC_NUM_SIGN_FLAG_CTX            1
     
    523528
    524529#if RWTH_SDC_DLT_B0036
     530#if PKU_QC_DEPTH_INTRA_UNI_D0195
     531static const UChar INIT_DEPTHMODE_FLAG[3][DEPTH_MODE_NUM_FLAG_CTX]=
     532{
     533  {0,  0,  64,   0, CNU,   0, CNU, 0},
     534  {0, 64,   0, CNU,   0, CNU,   0, 0},
     535  {64, 0, CNU,   0, CNU,   0,   0, 0}
     536};
     537static const UChar INIT_DMMDELTA_FLAG[3][DMM_DELTA_NUM_FLAG_CTX]=
     538{
     539  {0},
     540  {0},
     541  {64}
     542};
     543#else
    525544static const Short INIT_SDC_FLAG[3][SDC_NUM_FLAG_CTX][2] =
    526545{
     
    535554  }
    536555};
     556#endif
    537557
    538558static const Short INIT_SDC_RESIDUAL_FLAG[3][3*SDC_NUM_RESIDUAL_FLAG_CTX][2] =
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComDataCU.cpp

    r332 r382  
    29072907}
    29082908
     2909#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    29092910UInt TComDataCU::getCtxSDCFlag( UInt uiAbsPartIdx )
    29102911{
     
    29232924  return uiCtx;
    29242925}
     2926#endif
    29252927
    29262928Bool TComDataCU::getSDCAvailable( UInt uiAbsPartIdx )
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComDataCU.h

    r332 r382  
    808808  Void          setSDCFlagSubParts  ( Bool bSDCFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
    809809 
    810   UInt          getCtxSDCFlag              ( UInt uiAbsPartIdx );
     810#if !PKU_QC_DEPTH_INTRA_UNI_D0195
     811  UInt          getCtxSDCFlag               ( UInt uiAbsPartIdx );
     812#endif
    811813 
    812814  Bool          getSDCAvailable             ( UInt uiAbsPartIdx );
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TypeDef.h

    r379 r382  
    7676#define FIX_SDC_ENC_RD_WVSO_D0163         1   // JCT3V-D0163: fix for SDC encoder rd-cost (VSO -> WVSO)
    7777
     78#define PKU_QC_DEPTH_INTRA_UNI_D0195      1   // JCT3V-D0195: unified syntax table for depth intra coding tools
    7879///// ***** TMVP/AMVP *********
    7980#define TMVP_DEPTH_SWITCH                 1   // JCT3V-B0092 additional encoder option only
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r332 r382  
    24262426
    24272427#if RWTH_SDC_DLT_B0036
     2428#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    24282429Void TDecCavlc::parseSDCFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    24292430{
     
    24342435  assert(0);
    24352436}
     2437#endif
    24362438Void TDecCavlc::parseSDCResidualData     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart )
    24372439{
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecCAVLC.h

    r332 r382  
    171171  Void parseDFSvlc         ( Int&  riVal,  const Char *pSymbolName  );
    172172#if RWTH_SDC_DLT_B0036
    173   Void parseSDCFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     173#if !PKU_QC_DEPTH_INTRA_UNI_D0195
     174  Void parseSDCFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    174175  Void parseSDCPredMode    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     176#endif
    175177  Void parseSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart );
    176178#endif
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecEntropy.cpp

    r332 r382  
    117117  m_pcEntropyDecoderIf->parsePredMode( pcCU, uiAbsPartIdx, uiDepth );
    118118 
     119#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    119120#if RWTH_SDC_DLT_B0036
    120121  // if B-Slice, code SDC flag later
     
    125126  }
    126127#endif
     128#endif
    127129}
    128130
    129131Void TDecEntropy::decodePartSize( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    130132{
     133#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    131134#if RWTH_SDC_DLT_B0036
    132135  if( !pcCU->getSlice()->isInterB() && pcCU->isIntra(uiAbsPartIdx) && pcCU->getSDCFlag(uiAbsPartIdx)  )
     
    137140  }
    138141#endif
     142#endif
    139143 
    140144  m_pcEntropyDecoderIf->parsePartSize( pcCU, uiAbsPartIdx, uiDepth );
    141145 
     146#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    142147#if RWTH_SDC_DLT_B0036
    143148  if( pcCU->getSlice()->isInterB() && pcCU->getSlice()->getSPS()->isDepth() && pcCU->isIntra(uiAbsPartIdx) )
     
    154159  }
    155160#endif
     161#endif
    156162}
    157163
    158164Void TDecEntropy::decodePredInfo    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU )
    159165{
     166#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    160167#if RWTH_SDC_DLT_B0036
    161168  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    164171    return;
    165172  }
     173#endif
    166174#endif
    167175 
     
    178186      decodeIntraDirModeLuma( pcCU, uiAbsPartIdx + uiPartOffset*2, uiDepth+1 );
    179187      decodeIntraDirModeLuma( pcCU, uiAbsPartIdx + uiPartOffset*3, uiDepth+1 );
     188#if PKU_QC_DEPTH_INTRA_UNI_D0195
     189      if(!pcCU->getSDCFlag(uiAbsPartIdx))
     190#endif
    180191      decodeIntraDirModeChroma( pcCU, uiAbsPartIdx, uiDepth );
    181192    }
     
    183194    {
    184195      decodeIntraDirModeLuma  ( pcCU, uiAbsPartIdx, uiDepth );
     196#if PKU_QC_DEPTH_INTRA_UNI_D0195
     197      if(!pcCU->getSDCFlag(uiAbsPartIdx))
     198#endif
    185199      decodeIntraDirModeChroma( pcCU, uiAbsPartIdx, uiDepth );
    186200    }
     
    789803    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 );
    790804    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
    791    
     805#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    792806    decodeSDCResidualData(pcCU, uiAbsPartIdx, uiDepth);
     807#endif
    793808    return;
    794809  }
     
    847862
    848863#if RWTH_SDC_DLT_B0036
     864#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    849865Void TDecEntropy::decodeSDCPredMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    850866{
     
    861877  m_pcEntropyDecoderIf->parseSDCFlag(pcCU, uiAbsPartIdx, uiDepth );
    862878}
    863 
     879#endif
    864880Void TDecEntropy::decodeSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    865881{
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecEntropy.h

    r332 r382  
    137137 
    138138#if RWTH_SDC_DLT_B0036
    139   virtual Void parseSDCFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
     139#if !PKU_QC_DEPTH_INTRA_UNI_D0195
     140  virtual Void parseSDCFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
    140141  virtual Void parseSDCPredMode     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
     142#endif
    141143  virtual Void parseSDCResidualData     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart ) = 0;
    142144#endif
     
    232234 
    233235#if RWTH_SDC_DLT_B0036
     236#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    234237  Void decodeSDCPredMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    235238  Void decodeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     239#endif
    236240  Void decodeSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    237241#endif
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecSbac.cpp

    r354 r382  
    9595, m_cSaoTypeIdxSCModel        ( 1,             1,               NUM_SAO_TYPE_IDX_CTX          , m_contextModels + m_numContextModels, m_numContextModels)
    9696#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     97#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9798, m_cDmmFlagSCModel           ( 1,             1,               NUM_DMM_FLAG_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    9899, m_cDmmModeSCModel           ( 1,             1,               NUM_DMM_MODE_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
     100#endif
    99101, m_cDmmDataSCModel           ( 1,             1,               NUM_DMM_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    100102#endif
     
    106108#endif
    107109#if RWTH_SDC_DLT_B0036
     110#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    108111, m_cSDCFlagSCModel             ( 1,             1,                 SDC_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     112#else
     113, m_cDepthModeModel             ( 1,             1,                 DEPTH_MODE_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     114, m_cDmmDeltaFlagModel             ( 1,             1,                 DMM_DELTA_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
     115#endif
    109116, m_cSDCResidualFlagSCModel     ( 1,             2,  SDC_NUM_RESIDUAL_FLAG_CTX  , m_contextModels + m_numContextModels, m_numContextModels)
    110117, m_cSDCResidualSignFlagSCModel ( 1,             2,  SDC_NUM_SIGN_FLAG_CTX      , m_contextModels + m_numContextModels, m_numContextModels)
     
    200207  m_uiLastDQpNonZero  = 0;
    201208#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     209#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    202210  m_cDmmFlagSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DMM_FLAG );
    203211  m_cDmmModeSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DMM_MODE );
     212#endif
    204213  m_cDmmDataSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DMM_DATA );
    205214#endif
    206215#if RWTH_SDC_DLT_B0036
     216#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    207217  m_cSDCFlagSCModel.initBuffer              ( sliceType, qp, (UChar*)INIT_SDC_FLAG );
     218#else
     219  m_cDepthModeModel.initBuffer              ( sliceType, qp, (UChar*)INIT_DEPTHMODE_FLAG );
     220  m_cDmmDeltaFlagModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DMMDELTA_FLAG );
     221#endif
    208222  m_cSDCResidualFlagSCModel.initBuffer      ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    209223  m_cSDCResidualSCModel.initBuffer          ( sliceType, qp, (UChar*)INIT_SDC_RESIDUAL );
     
    279293  m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANS_SUBDIV_FLAG );
    280294#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     295#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    281296  m_cDmmFlagSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_FLAG );
    282297  m_cDmmModeSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_MODE );
     298#endif
    283299  m_cDmmDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMM_DATA );
    284300#endif
    285301#if RWTH_SDC_DLT_B0036
     302#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    286303  m_cSDCFlagSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
     304#else
     305  m_cDepthModeModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_DEPTHMODE_FLAG );
     306  m_cDmmDeltaFlagModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DMMDELTA_FLAG );
     307#endif
    287308  m_cSDCResidualFlagSCModel.initBuffer      ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL_FLAG );
    288309  m_cSDCResidualSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_SDC_RESIDUAL );
     
    869890  pcCU->setPredModeSubParts( (PredMode)iPredMode, uiAbsPartIdx, uiDepth );
    870891}
    871  
     892#if PKU_QC_DEPTH_INTRA_UNI_D0195
     893Void TDecSbac::parseDepthIntraMode  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     894{
     895  UInt uiPuIdx = ( pcCU->getWidth(uiAbsPartIdx) == 64 )? 2 : ( ( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_NxN && pcCU->getWidth(uiAbsPartIdx) == 8 )? 0 : 1);
     896  UInt uiDir = 0;
     897  Bool bSDCFlag = 0;
     898  UInt uiSymbol = 1;
     899  UInt uiCode = 0 ;
     900  UInt uiBinNum = 0;
     901  UInt uiCtxDepthMode = 0;
     902  if ( uiPuIdx ==2 )
     903  {
     904    while(uiBinNum<2 && uiSymbol)
     905    {
     906      uiCtxDepthMode = uiPuIdx*3 + uiBinNum;
     907      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     908      uiCode = (uiCode<<1)+uiSymbol;
     909      uiBinNum++;
     910    }
     911    if (uiCode == 0)      { uiDir = PLANAR_IDX; bSDCFlag = 1;}
     912    else if (uiCode == 2) { uiDir = 0;          bSDCFlag = 0;}
     913    else if (uiCode == 3) { uiDir = DC_IDX;     bSDCFlag = 1;}
     914  }
     915  else if ( uiPuIdx ==0 )
     916  {
     917    while(uiBinNum<3 && uiSymbol)
     918    {
     919      uiCtxDepthMode = uiPuIdx*3 + ( uiBinNum >= 2? 2 : uiBinNum );
     920      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     921      uiCode = (uiCode<<1)+uiSymbol;
     922      uiBinNum++;
     923    }
     924    if (uiCode == 0)      { uiDir = 0;                     bSDCFlag = 0;}
     925    else if (uiCode == 2) { uiDir = DMM_WEDGE_FULL_IDX;    bSDCFlag = 0;}
     926    else if (uiCode == 6) { uiDir = DMM_WEDGE_PREDTEX_IDX; bSDCFlag = 0;}
     927    else if (uiCode == 7) { uiDir = EDGE_INTRA_IDX;        bSDCFlag = 0;}
     928  }
     929  else
     930  {
     931    uiCtxDepthMode = uiPuIdx*3 ;
     932    m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     933    uiCode = (uiCode<<1)+uiSymbol;
     934    if (!uiSymbol)
     935    {
     936      uiCtxDepthMode = uiPuIdx*3 + 1;
     937      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     938      uiCode = (uiCode<<1)+uiSymbol;
     939      if (uiSymbol)
     940      {
     941        uiCtxDepthMode = uiPuIdx*3 + 2;
     942        m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     943        uiCode = (uiCode<<1)+uiSymbol;
     944      }
     945    }
     946    else
     947    {
     948      uiCtxDepthMode = uiPuIdx*3 + 1;
     949      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     950      uiCode = (uiCode<<1)+uiSymbol;
     951      if (!uiSymbol)
     952      {
     953        uiCtxDepthMode = uiPuIdx*3 + 2;
     954        m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     955        uiCode = (uiCode<<1)+uiSymbol;
     956      }
     957      else
     958      {
     959        uiBinNum = 0;
     960        while( uiSymbol && uiBinNum<3 )
     961        {
     962          uiCtxDepthMode = uiPuIdx*3 + 2;
     963          m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     964          uiCode = (uiCode<<1)+uiSymbol;
     965          uiBinNum++;
     966        }
     967      }
     968    }
     969    if (uiCode == 0)       { uiDir = PLANAR_IDX;              bSDCFlag = 1;}
     970    else if (uiCode == 2)  { uiDir = 5;                       bSDCFlag = 0;}
     971    else if (uiCode == 3)  { uiDir = DMM_WEDGE_FULL_IDX;      bSDCFlag = 1;}
     972    else if (uiCode == 4)  { uiDir = DMM_WEDGE_FULL_IDX;      bSDCFlag = 0;}
     973    else if (uiCode == 5)  { uiDir = DMM_CONTOUR_PREDTEX_IDX; bSDCFlag = 0;}
     974    else if (uiCode == 6)  { uiDir = DMM_WEDGE_PREDTEX_IDX;   bSDCFlag = 0;}
     975    else if (uiCode == 14) { uiDir = DC_IDX;                  bSDCFlag = 1;}
     976    else if (uiCode == 31) { uiDir = DMM_WEDGE_PREDDIR_IDX;   bSDCFlag = 0;}
     977    else if (uiCode == 30) { uiDir = EDGE_INTRA_IDX;          bSDCFlag = 0;}
     978  }
     979  pcCU->setLumaIntraDirSubParts( (UChar)uiDir, uiAbsPartIdx, uiDepth );
     980  pcCU->setSDCFlagSubParts(bSDCFlag, uiAbsPartIdx, 0, uiDepth);
     981}
     982Void TDecSbac::parseDepthModelingTable  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     983{
     984  parseDepthIntraMode(pcCU,uiAbsPartIdx,uiDepth);
     985 
     986  UInt uiDir = pcCU->getLumaIntraDir(uiAbsPartIdx);
     987  Bool bSdcFlag =  pcCU->getSDCAvailable(uiAbsPartIdx) && pcCU->getSDCFlag(uiAbsPartIdx);
     988  Bool bDmmFlag = (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX &&(!bSdcFlag))? 1:0;
     989  if (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX)//DMM modes and SDC DMM1
     990  {
     991    if( uiDir == DMM_WEDGE_FULL_IDX )          { xParseWedgeFullInfo          ( pcCU, uiAbsPartIdx, uiDepth ); }
     992    else if( uiDir == DMM_WEDGE_PREDTEX_IDX )  { xParseWedgePredTexInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
     993    else if( uiDir == DMM_WEDGE_PREDDIR_IDX )  { xParseWedgePredDirInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
     994  }
     995  else if(uiDir >= EDGE_INTRA_IDX)//CCM mode
     996  {
     997    xParseEdgeIntraInfo( pcCU, uiAbsPartIdx, uiDepth );
     998  }
     999
     1000  UInt uiSymbol;
     1001  if (bDmmFlag)
     1002  {
     1003    if (bDmmFlag)
     1004    {
     1005      m_pcTDecBinIf->decodeBin( uiSymbol , m_cDmmDeltaFlagModel.get(0, 0, 0) );
     1006      uiDir += uiSymbol;
     1007    }
     1008    if (uiSymbol)
     1009    {
     1010      UInt uiDC;
     1011      Int iDC = 0,iDC1 = 0,iDC2 = 0;
     1012      for ( Int i = 0; i  <2; i++ )
     1013      {
     1014        xReadExGolombLevel( uiDC, m_cDmmDataSCModel.get(0, 0, 1) );
     1015        iDC = uiDC;
     1016        if ( uiDC )
     1017        {
     1018          UInt uiSign;
     1019          m_pcTDecBinIf->decodeBinEP( uiSign );
     1020          if ( uiSign )
     1021          {
     1022            iDC = -iDC;
     1023          }
     1024        }
     1025        if ( i == 0 ) { iDC1 = iDC; }
     1026        else          { iDC2 = iDC; }
     1027      }
     1028
     1029      if( uiDir == DMM_WEDGE_FULL_D_IDX )   
     1030      {
     1031        pcCU->setWedgeFullDeltaDC1SubParts( iDC1, uiAbsPartIdx, uiDepth );
     1032        pcCU->setWedgeFullDeltaDC2SubParts( iDC2, uiAbsPartIdx, uiDepth );
     1033      }
     1034      else if( uiDir == DMM_WEDGE_PREDDIR_D_IDX )
     1035      {
     1036        pcCU->setWedgePredDirDeltaDC1SubParts( iDC1, uiAbsPartIdx, uiDepth );
     1037        pcCU->setWedgePredDirDeltaDC2SubParts( iDC2, uiAbsPartIdx, uiDepth );
     1038      }
     1039      else if( uiDir == DMM_WEDGE_PREDTEX_D_IDX) 
     1040      {
     1041        pcCU->setWedgePredTexDeltaDC1SubParts( iDC1, uiAbsPartIdx, uiDepth );
     1042        pcCU->setWedgePredTexDeltaDC2SubParts( iDC2, uiAbsPartIdx, uiDepth );
     1043      }
     1044      else if (uiDir== DMM_CONTOUR_PREDTEX_D_IDX )
     1045      {
     1046        pcCU->setContourPredTexDeltaDC1SubParts( iDC1, uiAbsPartIdx, uiDepth );
     1047        pcCU->setContourPredTexDeltaDC2SubParts( iDC2, uiAbsPartIdx, uiDepth );
     1048      }
     1049    }
     1050  }
     1051  else if (uiDir >= EDGE_INTRA_IDX)
     1052  {
     1053    m_pcTDecBinIf->decodeBin( uiSymbol, m_cEdgeIntraDeltaDCSCModel.get(0, 0, 0) );
     1054    if( uiSymbol )
     1055    {
     1056      uiDir = EDGE_INTRA_DELTA_IDX;
     1057      Int iDeltaDC = 0,iDeltaDC0 = 0,iDeltaDC1 = 0;
     1058      for (Int i = 0; i<2; i++)
     1059      {
     1060        xReadExGolombLevel( (UInt &) iDeltaDC, m_cEdgeIntraDeltaDCSCModel.get(0, 0, 1) );
     1061        if( iDeltaDC != 0 )
     1062        {
     1063          UInt uiSign;
     1064          m_pcTDecBinIf->decodeBinEP( uiSign );
     1065          if ( uiSign )
     1066          {
     1067            iDeltaDC = -iDeltaDC;
     1068          }
     1069        }
     1070        if ( i == 0 ) { iDeltaDC0 = iDeltaDC; }
     1071        else          { iDeltaDC1 = iDeltaDC; }
     1072      }
     1073
     1074      pcCU->setEdgeDeltaDC0( uiAbsPartIdx, iDeltaDC0 );
     1075      pcCU->setEdgeDeltaDC1( uiAbsPartIdx, iDeltaDC1 );
     1076    }
     1077  }
     1078  else if(bSdcFlag)//SDC mode
     1079  {
     1080    assert(pcCU->getPartitionSize(uiAbsPartIdx)!=SIZE_NxN);
     1081    pcCU->setTrIdxSubParts(0, uiAbsPartIdx, uiDepth);
     1082    pcCU->setCbfSubParts(1, 1, 1, uiAbsPartIdx, uiDepth);
     1083
     1084    UInt uiNumSegments = ( uiDir == DC_IDX || uiDir == PLANAR_IDX )? 1 : 2;
     1085    for (int uiSeg=0; uiSeg<uiNumSegments; uiSeg++)
     1086    {
     1087      parseSDCResidualData(pcCU, uiAbsPartIdx, uiDepth, uiSeg);
     1088    }
     1089  }
     1090
     1091  pcCU->setLumaIntraDirSubParts( (UChar)uiDir, uiAbsPartIdx, uiDepth );
     1092}
     1093#endif
    8721094Void TDecSbac::parseIntraDirLumaAng  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    8731095{
    8741096  UInt uiSymbol;
    8751097  Int  intraPredMode;
    876 
     1098#if PKU_QC_DEPTH_INTRA_UNI_D0195
     1099  if (pcCU->getSlice()->getSPS()->isDepth())
     1100  {
     1101    parseDepthModelingTable(pcCU, uiAbsPartIdx, uiDepth);
     1102  }
     1103  if (pcCU->getLumaIntraDir(uiAbsPartIdx)<NUM_INTRA_MODE && !pcCU->getSDCFlag(uiAbsPartIdx))
     1104  {
     1105#else
    8771106#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    8781107  UInt uiFlag = 0;
     
    9281157    }
    9291158#endif
    930 
     1159#endif
    9311160    Int uiPreds[3] = {-1, -1, -1};
    9321161    Int uiPredNum = pcCU->getIntraDirLumaPredictor(uiAbsPartIdx, uiPreds); 
     1162#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9331163#if LGE_EDGE_INTRA_A0070
    9341164    UInt uiCheckBit = 0;
    9351165#endif
     1166#endif
    9361167
    9371168    m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUIntraPredSCModel.get( 0, 0, 0) );
     
    9531184
    9541185      m_pcTDecBinIf->decodeBinsEP( uiSymbol, 5 );
     1186#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9551187#if LGE_EDGE_INTRA_A0070
    9561188      if (bCodeEdgeIntra)
     
    9641196      }
    9651197#endif
     1198#endif
    9661199      intraPredMode = uiSymbol;
    9671200
     
    9791212        std::swap(uiPreds[1], uiPreds[2]);
    9801213      }
     1214#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9811215#if LGE_EDGE_INTRA_A0070
    9821216      if ( intraPredMode != EDGE_INTRA_IDX)
    9831217      {
     1218#endif
    9841219#endif
    9851220        for ( Int i = 0; i < uiPredNum; i++ )
     
    9871222          intraPredMode += ( intraPredMode >= uiPreds[i] );
    9881223        }
     1224#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9891225#if LGE_EDGE_INTRA_A0070
    9901226      }
    9911227#endif
    992     }
    993 
     1228#endif
     1229    }
     1230
     1231#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    9941232#if LGE_EDGE_INTRA_A0070
    9951233    if( intraPredMode == EDGE_INTRA_IDX )
     
    10351273  }
    10361274#endif
    1037 
    10381275  pcCU->setLumaIntraDirSubParts( (UChar)intraPredMode, uiAbsPartIdx, uiDepth );
     1276#else
     1277    pcCU->setLumaIntraDirSubParts( (UChar)intraPredMode, uiAbsPartIdx, uiDepth );
     1278  }
     1279#endif
    10391280}
    10401281
     
    23352576 
    23362577#if RWTH_SDC_DLT_B0036
     2578#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    23372579Void TDecSbac::parseSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    23382580{
     
    23882630  pcCU->setLumaIntraDirSubParts((UChar)intraPredMode, uiAbsPartIdx, uiDepth);
    23892631}
     2632#endif
    23902633
    23912634Void TDecSbac::parseSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSegment )
  • branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibDecoder/TDecSbac.h

    r332 r382  
    120120 
    121121#if RWTH_SDC_DLT_B0036
     122#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    122123  Void parseSDCFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    123124  Void parseSDCPredMode    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     125#endif
    124126  Void parseSDCResidualData     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart );
    125127#endif
     
    178180  Void parsePartSize      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    179181  Void parsePredMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    180  
     182#if PKU_QC_DEPTH_INTRA_UNI_D0195
     183  Void parseDepthIntraMode  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     184  Void parseDepthModelingTable( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     185#endif
    181186  Void parseIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    182187 
     
    253258
    254259#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     260#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    255261  ContextModel3DBuffer m_cDmmFlagSCModel;
    256262  ContextModel3DBuffer m_cDmmModeSCModel;
     263#endif
    257264  ContextModel3DBuffer m_cDmmDataSCModel;
    258265#endif
     
    265272 
    266273#if RWTH_SDC_DLT_B0036
     274#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    267275  ContextModel3DBuffer m_cSDCFlagSCModel;
     276#else
     277  ContextModel3DBuffer m_cDepthModeModel;
     278  ContextModel3DBuffer m_cDmmDeltaFlagModel;
     279#endif
    268280 
    269281  ContextModel3DBuffer m_cSDCResidualFlagSCModel;
  • 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.