Index: branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComPrediction.cpp
===================================================================
--- branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComPrediction.cpp	(revision 360)
+++ branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComPrediction.cpp	(revision 379)
@@ -540,4 +540,8 @@
   // Do prediction
   {
+#if QC_DC_PREDICTOR_D0183
+    Int iMean0, iMean1;
+    getPredDCs( pbRegion, iWidth, pSrc+srcStride+1, srcStride, iMean0, iMean1 );
+#else
     //UInt uiSum0 = 0, uiSum1 = 0;
     Int iSum0 = 0, iSum1 = 0;
@@ -578,4 +582,5 @@
     iMean0 = iSum0 / iCount0; // TODO : integer op.
     iMean1 = iSum1 / iCount1;
+#endif
 #if LGE_EDGE_INTRA_DELTA_DC
     if( bDelta ) 
@@ -2431,4 +2436,32 @@
 }
 
+#if QC_DC_PREDICTOR_D0183
+Void TComPrediction::getPredDCs( Bool* pbPattern, Int iStride, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2 )
+{
+  Int  iDC1, iDC2;
+  const Int  iTR = (   iStride - 1        ) - iMaskStride;
+  const Int  iTM = ( ( iStride - 1 ) >> 1 ) - iMaskStride;
+  const Int  iLB = (   iStride - 1        ) * iMaskStride - 1;
+  const Int  iLM = ( ( iStride - 1 ) >> 1 ) * iMaskStride - 1;
+  const UInt uiBitDepth = g_uiBitDepth + g_uiBitIncrement;
+
+  Bool bL = ( pbPattern[0] != pbPattern[(iStride-1)*iStride] );
+  Bool bT = ( pbPattern[0] != pbPattern[(iStride-1)]         );
+
+  if( bL == bT )
+  {
+    iDC1 = bL ? ( piMask[iTR] + piMask[iLB] )>>1 : 1<<( uiBitDepth - 1 );
+    iDC2 =      ( piMask[ -1] + piMask[-iMaskStride] )>>1;
+  }
+  else
+  {
+    iDC1 = bL ? piMask[iLB] : piMask[iTR];
+    iDC2 = bL ? piMask[iTM] : piMask[iLM];
+  }
+
+  riPredDC1 = pbPattern[0] ? iDC1 : iDC2;
+  riPredDC2 = pbPattern[0] ? iDC2 : iDC1;
+}
+#else
 Void TComPrediction::getWedgePredDCs( TComWedgelet* pcWedgelet, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2, Bool bAbove, Bool bLeft )
 {
@@ -2508,4 +2541,5 @@
   }
 }
+#endif
 
 Void TComPrediction::calcWedgeDCs( TComWedgelet* pcWedgelet, Pel* piOrig, UInt uiStride, Int& riDC1, Int& riDC2 )
@@ -2875,5 +2909,9 @@
   Int iMaskStride = ( iWidth<<1 ) + 1;
   piMask += iMaskStride+1;
+#if QC_DC_PREDICTOR_D0183
+  getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 );
+#else
   getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );
+#endif
 
   // assign wedge pred DCs to prediction
@@ -2904,5 +2942,9 @@
   Int iMaskStride = ( iWidth<<1 ) + 1;
   piMask += iMaskStride+1;
+#if QC_DC_PREDICTOR_D0183
+  getPredDCs( pcContourWedge->getPattern(), pcContourWedge->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 );
+#else
   getWedgePredDCs( pcContourWedge, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );
+#endif
 
   // assign wedge pred DCs to prediction
@@ -3089,5 +3131,9 @@
   Int iMaskStride = ( iWidth<<1 ) + 1;
   piMask += iMaskStride+1;
+#if QC_DC_PREDICTOR_D0183
+  getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 );
+#else
   getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );
+#endif
 
   // assign wedge pred DCs to prediction
@@ -3134,5 +3180,9 @@
   Int iMaskStride = ( iWidth<<1 ) + 1;
   piMask += iMaskStride+1;
+#if QC_DC_PREDICTOR_D0183
+  getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 );
+#else
   getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );
+#endif
 
   // assign wedge pred DCs to prediction
Index: branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComPrediction.h
===================================================================
--- branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComPrediction.h	(revision 360)
+++ branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TComPrediction.h	(revision 379)
@@ -191,6 +191,9 @@
 #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
   Void  calcWedgeDCs            ( TComWedgelet* pcWedgelet, Pel* piOrig, UInt uiStride, Int& riDC1, Int& riDC2 );
   Void  assignWedgeDCs2Pred     ( TComWedgelet* pcWedgelet, Pel* piPred,  UInt uiStride, Int   iDC1, Int   iDC2 );
Index: branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TypeDef.h	(revision 360)
+++ branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibCommon/TypeDef.h	(revision 379)
@@ -63,4 +63,6 @@
 #define LGE_EDGE_INTRA_A0070              1   // JCT3V-A0070
 #define LGE_DMM3_SIMP_C0044               1
+
+#define QC_DC_PREDICTOR_D0183             1   // JCT3V-D0183: Simplified DC predictor for depth intra modes
 
 ///// ***** SDC *********
Index: branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 360)
+++ branches/HTM-6.2-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 379)
@@ -6312,5 +6312,9 @@
   Int iMaskStride = ( uiWidth<<1 ) + 1;
   piMask += iMaskStride+1;
+#if QC_DC_PREDICTOR_D0183
+  getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 );
+#else
   getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAboveAvail, bLeftAvail );
+#endif
 
   riDeltaDC1 = iDC1 - iPredDC1;
@@ -7877,4 +7881,7 @@
 
   // PredDC Calculation
+#if QC_DC_PREDICTOR_D0183
+  getPredDCs( pbRegion, uiWidth, piMask+iMaskStride+1, iMaskStride, iPredDC0, iPredDC1 );
+#else
   {
     UInt uiSum0 = 0;
@@ -7916,4 +7923,5 @@
     iPredDC1 = uiSum1 / uiCount1;
   }
+#endif
 
   iDeltaDC0 = iDC0 - iPredDC0;
