Index: branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.h
===================================================================
--- branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.h	(revision 433)
+++ branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.h	(revision 434)
@@ -249,4 +249,7 @@
 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
   Void  predIntraLumaDMM        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder );
+#if QC_DC_PREDICTOR_D0183
+  Void  getPredDCs              ( Bool* pbPattern, Int iPatternStride, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2 );
+#else
   Void  getWedgePredDCs         ( TComWedgelet* pcWedgelet, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2, Bool bAbove, Bool bLeft );
 #endif
Index: branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp
===================================================================
--- branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 433)
+++ branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 434)
@@ -866,4 +866,5 @@
     assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 );
     assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
+#if !PKU_QC_DEPTH_INTRA_UNI_D0195
     decodeSDCResidualData(pcCU, uiAbsPartIdx, uiDepth);
 #endif
@@ -939,4 +940,5 @@
   m_pcEntropyDecoderIf->parseSDCFlag(pcCU, uiAbsPartIdx, uiDepth );
 }
+#endif
 Void TDecEntropy::decodeSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
 {
Index: branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 433)
+++ branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 434)
@@ -919,4 +919,111 @@
   pcCU->setPredModeSubParts( (PredMode)iPredMode, uiAbsPartIdx, uiDepth );
 }
+#if PKU_QC_DEPTH_INTRA_UNI_D0195
+Void TDecSbac::parseDepthIntraMode  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  UInt uiPuIdx = ( pcCU->getWidth(uiAbsPartIdx) == 64 )? 2 : ( ( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_NxN && pcCU->getWidth(uiAbsPartIdx) == 8 )? 0 : 1);
+  UInt uiDir = 0;
+  Bool bSDCFlag = 0;
+  UInt uiSymbol = 1;
+  UInt uiCode = 0 ;
+  UInt uiBinNum = 0;
+  UInt uiCtxDepthMode = 0;
+  if ( uiPuIdx ==2 )
+  {
+    while(uiBinNum<2 && uiSymbol)
+    {
+      uiCtxDepthMode = uiPuIdx*3 + uiBinNum;
+      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+      uiCode = (uiCode<<1)+uiSymbol;
+      uiBinNum++;
+    }
+    if (uiCode == 0)      { uiDir = PLANAR_IDX; bSDCFlag = 1;}
+    else if (uiCode == 2) { uiDir = 0;          bSDCFlag = 0;}
+    else if (uiCode == 3) { uiDir = DC_IDX;     bSDCFlag = 1;}
+  }
+  else if ( uiPuIdx ==0 )
+  {
+    while(uiBinNum<3 && uiSymbol)
+    {
+      uiCtxDepthMode = uiPuIdx*3 + ( uiBinNum >= 2? 2 : uiBinNum );
+      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+      uiCode = (uiCode<<1)+uiSymbol;
+      uiBinNum++;
+    }
+    if (uiCode == 0)      { uiDir = 0;                     bSDCFlag = 0;}
+    else if (uiCode == 2) { uiDir = DMM_WEDGE_FULL_IDX;    bSDCFlag = 0;}
+    else if (uiCode == 6) { uiDir = DMM_WEDGE_PREDTEX_IDX; bSDCFlag = 0;}
+    else if (uiCode == 7) { uiDir = EDGE_INTRA_IDX;        bSDCFlag = 0;}
+  }
+  else
+  {
+    uiCtxDepthMode = uiPuIdx*3 ;
+    m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+    uiCode = (uiCode<<1)+uiSymbol;
+    if (!uiSymbol)
+    {
+      uiCtxDepthMode = uiPuIdx*3 + 1;
+      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+      uiCode = (uiCode<<1)+uiSymbol;
+      if (uiSymbol) 
+      { 
+        uiCtxDepthMode = uiPuIdx*3 + 2;
+        m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+        uiCode = (uiCode<<1)+uiSymbol;
+      }
+    }
+    else
+    {
+      uiCtxDepthMode = uiPuIdx*3 + 1;
+      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+      uiCode = (uiCode<<1)+uiSymbol;
+      if (!uiSymbol) 
+      { 
+        uiCtxDepthMode = uiPuIdx*3 + 2;
+        m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+        uiCode = (uiCode<<1)+uiSymbol;
+      }
+      else
+      {
+        uiBinNum = 0;
+        while( uiSymbol && uiBinNum<3 )
+        {
+          uiCtxDepthMode = uiPuIdx*3 + 2;
+          m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
+          uiCode = (uiCode<<1)+uiSymbol;
+          uiBinNum++;
+        }
+      }
+    }
+    if (uiCode == 0)       { uiDir = PLANAR_IDX;              bSDCFlag = 1;}
+    else if (uiCode == 2)  { uiDir = 5;                       bSDCFlag = 0;}
+    else if (uiCode == 3)  { uiDir = DMM_WEDGE_FULL_IDX;      bSDCFlag = 1;}
+    else if (uiCode == 4)  { uiDir = DMM_WEDGE_FULL_IDX;      bSDCFlag = 0;}
+    else if (uiCode == 5)  { uiDir = DMM_CONTOUR_PREDTEX_IDX; bSDCFlag = 0;}
+    else if (uiCode == 6)  { uiDir = DMM_WEDGE_PREDTEX_IDX;   bSDCFlag = 0;}
+    else if (uiCode == 14) { uiDir = DC_IDX;                  bSDCFlag = 1;}
+    else if (uiCode == 31) { uiDir = DMM_WEDGE_PREDDIR_IDX;   bSDCFlag = 0;}
+    else if (uiCode == 30) { uiDir = EDGE_INTRA_IDX;          bSDCFlag = 0;}
+  }
+  pcCU->setLumaIntraDirSubParts( (UChar)uiDir, uiAbsPartIdx, uiDepth );
+  pcCU->setSDCFlagSubParts(bSDCFlag, uiAbsPartIdx, 0, uiDepth); 
+}
+Void TDecSbac::parseDepthModelingTable  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  parseDepthIntraMode(pcCU,uiAbsPartIdx,uiDepth);
+  
+  UInt uiDir = pcCU->getLumaIntraDir(uiAbsPartIdx);
+  Bool bSdcFlag =  pcCU->getSDCAvailable(uiAbsPartIdx) && pcCU->getSDCFlag(uiAbsPartIdx);
+  Bool bDmmFlag = (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX &&(!bSdcFlag))? 1:0;
+  if (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX)//DMM modes and SDC DMM1
+  {
+    if( uiDir == DMM_WEDGE_FULL_IDX )          { xParseWedgeFullInfo          ( pcCU, uiAbsPartIdx, uiDepth ); }
+    else if( uiDir == DMM_WEDGE_PREDTEX_IDX )  { xParseWedgePredTexInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
+    else if( uiDir == DMM_WEDGE_PREDDIR_IDX )  { xParseWedgePredDirInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
+  } 
+  else if(uiDir >= EDGE_INTRA_IDX)//CCM mode
+  {
+    xParseEdgeIntraInfo( pcCU, uiAbsPartIdx, uiDepth );
+  }
   
   UInt uiSymbol;
@@ -1078,4 +1185,5 @@
         bCodeEdgeIntra = true;
     }
+#endif
 #endif
     Int uiPreds[3] = {-1, -1, -1};
Index: branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.h
===================================================================
--- branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.h	(revision 433)
+++ branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.h	(revision 434)
@@ -192,4 +192,8 @@
   Void parsePartSize      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
   Void parsePredMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#if PKU_QC_DEPTH_INTRA_UNI_D0195
+  Void parseDepthIntraMode  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+  Void parseDepthModelingTable( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#endif
   Void parseIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
   
Index: branches/HTM-6.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp
===================================================================
--- branches/HTM-6.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 433)
+++ branches/HTM-6.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 434)
@@ -869,4 +869,5 @@
   m_pcEntropyCoderIf->codePredMode( pcCU, uiAbsPartIdx );
   
+#if !PKU_QC_DEPTH_INTRA_UNI_D0195
 #if RWTH_SDC_DLT_B0036
   // if B-Slice, code SDC flag later
@@ -1290,4 +1291,11 @@
     {
       encodeIntraDirModeLuma  ( pcCU, uiAbsPartIdx 
+#if PKU_QC_DEPTH_INTRA_UNI_D0195
+        ,bSdcRD
+#endif
+        );
+#if PKU_QC_DEPTH_INTRA_UNI_D0195
+      if(!pcCU->getSDCFlag(uiAbsPartIdx))
+#endif
       encodeIntraDirModeChroma( pcCU, uiAbsPartIdx, bRD );
     }
@@ -1487,4 +1495,5 @@
     assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 );
     assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
+#if !PKU_QC_DEPTH_INTRA_UNI_D0195
     encodeSDCResidualData(pcCU, uiAbsPartIdx);
 #endif
@@ -1904,4 +1913,5 @@
   m_pcEntropyCoderIf->codeSDCFlag(pcCU, uiAbsPartIdx);
 }
+#endif
 Void TEncEntropy::encodeSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
 {
