Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/ContextTables.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/ContextTables.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/ContextTables.h	(revision 939)
@@ -110,5 +110,9 @@
 #define NUM_DMM1_DATA_CTX             1       ///< number of context models for DMM1 data
 #endif
+#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
+#define NUM_ANGLE_FLAG_CTX            1
+#else
 #define NUM_ANGLE_FLAG_CTX            3
+#endif
 #endif
 
@@ -368,4 +372,13 @@
 };
 
+#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
+static const UChar 
+INIT_ANGLE_FLAG[3][NUM_ANGLE_FLAG_CTX] =
+{
+  { 154 },
+  { 141 },
+  { 155 },
+};
+#else
 static const UChar 
 INIT_ANGLE_FLAG[3][NUM_ANGLE_FLAG_CTX] =
@@ -375,4 +388,5 @@
   { 155, 170, 157 },
 };
+#endif
 
 static const UChar 
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp	(revision 939)
@@ -610,4 +610,8 @@
     memset( m_apSegmentDCOffset[1]  + firstElement,     0,                numElements * sizeof( *m_apSegmentDCOffset[1] ) );
 #endif
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+    m_apDmmPredictor[0] = 0;
+    m_apDmmPredictor[1] = 0;
+#endif
 #endif
 #if H_3D_DBBP
@@ -784,4 +788,8 @@
       m_apSegmentDCOffset[1][ui] = 0;
 #endif
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+      m_apDmmPredictor[0] = 0;
+      m_apDmmPredictor[1] = 0;
+#endif
 #endif
 #if H_3D_DBBP
@@ -898,4 +906,8 @@
   memset( m_apSegmentDCOffset[0], 0, sizeof(Pel) * m_uiNumPartition   );
   memset( m_apSegmentDCOffset[1], 0, sizeof(Pel) * m_uiNumPartition   );
+#endif
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+  m_apDmmPredictor[0] = 0;
+  m_apDmmPredictor[1] = 0;
 #endif
 #endif
@@ -2389,4 +2401,7 @@
 UInt TComDataCU::getCtxAngleFlag( UInt uiAbsPartIdx )
 {
+#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
+  return 0;
+#else
   TComDataCU* pcTempCU;
   UInt        uiTempPartIdx;
@@ -2402,4 +2417,5 @@
 
   return uiCtx;
+#endif
 }
 #endif
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.h	(revision 939)
@@ -195,4 +195,7 @@
   Bool*         m_pbSDCFlag;
   Pel*          m_apSegmentDCOffset[2];
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+  Pel          m_apDmmPredictor[2];
+#endif
 #endif
 #endif
@@ -580,4 +583,8 @@
   Pel           getSDCSegmentDCOffset( UInt uiSeg, UInt uiPartIdx ) { return m_apSegmentDCOffset[uiSeg][uiPartIdx]; }
   Void          setSDCSegmentDCOffset( Pel pOffset, UInt uiSeg, UInt uiPartIdx) { m_apSegmentDCOffset[uiSeg][uiPartIdx] = pOffset; }
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+  Void          setDmmPredictor ( Pel pOffset, UInt uiSeg) { m_apDmmPredictor[uiSeg] = pOffset; }
+  Pel           getDmmPredictor ( UInt uiSeg) { return m_apDmmPredictor[uiSeg]; }
+#endif
   UInt          getCtxSDCFlag          ( UInt   uiAbsPartIdx );
   UInt          getCtxAngleFlag        ( UInt   uiAbsPartIdx );
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp	(revision 939)
@@ -500,4 +500,8 @@
   Pel* pDst = piPred;
   xAssignBiSegDCs( pDst, uiStride, biSegPattern, patternStride, segDC1, segDC2 );
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+  pcCU->setDmmPredictor(segDC1, 0);
+  pcCU->setDmmPredictor(segDC2, 1);
+#endif
 
 #if H_3D_DIM_DMM
@@ -2324,4 +2328,5 @@
   if (orgDC == false)
   {
+#if !HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     if ( getDimType(uiIntraMode) == DMM1_IDX )
     {
@@ -2369,4 +2374,5 @@
     }
     else
+#endif
     {
       Pel* pLeftTop = pOrig;
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.cpp	(revision 939)
@@ -360,4 +360,9 @@
 Char  g_aucConvertToBit  [ MAX_CU_SIZE+1 ];
 
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+UInt g_aICEnableCANDIDATE[10] = { 0, };
+UInt g_aICEnableNUM[ 10 ] = { 0, };
+Int g_lastlayer=0;
+#endif
 #if ENC_DEC_TRACE
 FILE*  g_hTrace = NULL;
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.h	(revision 939)
@@ -189,4 +189,10 @@
 extern       Char   g_aucConvertToBit  [ MAX_CU_SIZE+1 ];   // from width to log2(width)-2
 
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+extern UInt g_aICEnableCANDIDATE[10];
+extern UInt g_aICEnableNUM[ 10 ]; //10 layers
+extern Int g_lastlayer;
+#endif
+
 #ifndef ENC_DEC_TRACE
 #define ENC_DEC_TRACE   0
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.cpp	(revision 939)
@@ -3220,6 +3220,72 @@
 #endif
 #if H_3D_IC
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+Void TComSlice::xSetApplyIC(Bool bUseLowLatencyICEnc)
+#else
 Void TComSlice::xSetApplyIC()
-{
+#endif
+{
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+  if(bUseLowLatencyICEnc)
+  {
+    Bool existInterViewRef=false;
+    TComPic* pcCurrPic = getPic();
+    TComPic* pcRefPic = NULL;
+    for ( Int i = 0; (i < getNumRefIdx( REF_PIC_LIST_0 )) && !existInterViewRef; i++ )
+    {
+      pcRefPic = getRefPic( REF_PIC_LIST_0, i );
+      if ( pcRefPic != NULL )
+      {
+        if ( pcCurrPic->getViewIndex() != pcRefPic->getViewIndex() )
+        {
+          existInterViewRef = true;        
+        }
+      }
+    }
+
+    for ( Int i = 0; (i < getNumRefIdx( REF_PIC_LIST_1 )) && !existInterViewRef; i++ )
+    {
+      pcRefPic = getRefPic( REF_PIC_LIST_1, i );
+      if ( pcRefPic != NULL )
+      {
+        if ( pcCurrPic->getViewIndex() != pcRefPic->getViewIndex() )
+        {
+          existInterViewRef = true;        
+        }
+      }
+    }
+
+    if(!existInterViewRef)
+    {
+      m_bApplyIC = false;
+    }
+    else
+    {
+      Int curLayer=getDepth();
+      if( curLayer>9) curLayer=9; // Max layer is 10
+
+      m_bApplyIC = true;
+      Int refLayer = curLayer-1;
+      if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) )
+      {    
+        Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);
+
+        if( ratio > MTK_LOW_LATENCY_IC_ENCODING_THRESHOLD_H0086)
+{
+          m_bApplyIC=true;
+        }
+        else
+        {
+          m_bApplyIC=false;
+        }
+      }
+      g_aICEnableNUM[curLayer]=0;
+      g_aICEnableCANDIDATE[curLayer]=0;
+      g_lastlayer=getDepth();
+    }
+  }
+  else
+  {
+#endif
   Int iMaxPelValue = ( 1 << g_bitDepthY ); 
   Int *aiRefOrgHist;
@@ -3295,4 +3361,7 @@
   aiCurrHist = NULL;
   aiRefOrgHist = NULL;
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+  }//if(bUseLowLatencyICEnc)
+#endif
 }
 #endif
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.h	(revision 939)
@@ -2179,4 +2179,7 @@
   Bool      getApplyIC()                                        { return m_bApplyIC; }
   Void      xSetApplyIC();
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+  Void      xSetApplyIC(Bool bUseLowLatencyICEnc);
+#endif
   Void      setIcSkipParseFlag( Bool b )                        { m_icSkipParseFlag = b; }
   Bool      getIcSkipParseFlag()                                { return m_icSkipParseFlag; }
Index: branches/HTM-10.2-dev0/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibCommon/TypeDef.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibCommon/TypeDef.h	(revision 939)
@@ -120,4 +120,9 @@
                                               // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
 
+#define MTK_LOW_LATENCY_IC_ENCODING_H0086   1 // Low-latency IC encoding in JCT3V-H0086
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+#define MTK_LOW_LATENCY_IC_ENCODING_THRESHOLD_H0086    0.1 // Threshold for low-latency IC encoding in JCT3V-H0086
+#endif
+
 #if H_3D_NBDV
 #define H_3D_NBDV_REF                     1   // Depth oriented neighboring block disparity derivation
@@ -196,6 +201,9 @@
                                               // HS_TSINGHUA_SDC_SPLIT_G0111
                                               // QC_PKU_SDC_SPLIT_G0123 Intra SDC Split
-
-
+#define MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113     1 // Use only one context for CABAC of delta_dc_flag as in JCTVC-H0084, JCTVC-H0100 and JCTVC-H0113
+#define MTK_SDC_FLAG_FIX_H0095            1   // Remove conditional check of PCM flag based on SDC flag, JCTVC-H0095
+
+
+#define MTK_DMM_SIMP_CODE_H0092           1   // Remove CABAC context for DMM1 mode coding
 
 #define H_3D_INTER_SDC                    1   // INTER SDC, Inter simplified depth coding
@@ -222,4 +230,5 @@
 #define H_3D_FAST_TEXTURE_ENCODING        1   // Fast merge mode decision and early CU determination for texture component of dependent view, JCT3V-E0173
                                               // MTK_FAST_TEXTURE_ENCODING_E0173
+#define QC_IV_PRED_CONSTRAINT_H0137       1   // Constraint on inter-view (motion) prediction tools
 #if H_3D_DIM
 #define H_3D_FAST_DEPTH_INTRA             1   // Fast DMM and RBC Mode Selection
@@ -275,4 +284,7 @@
 #define H_3D_DIM_DLT                      1   // Depth Lookup Table
 
+#define HS_DMM_SDC_PREDICTOR_UNIFY_H0108  1   // Unification of DMM and SDC predictor derivation
+#define LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135  1 // Use only one context for CABAC of dim_not_present_flag
+#define QC_SIMP_DELTADC_CODING_H0131      1   // Simplify detaDC entropy coding 
 #if H_3D_DIM_DLT
 #define H_3D_DELTA_DLT                    1
Index: branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 939)
@@ -1759,4 +1759,10 @@
 #if H_3D_IV_MERGE
         READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
+#if QC_IV_PRED_CONSTRAINT_H0137
+        if( !pcVPS->getNumDirectRefLayers(i) )
+        {
+          assert( !uiCode );         
+        }
+#endif
 #if H_3D_SPIVMP
         READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]");     pcVPS->setSubPULog2Size(i, uiCode+3); 
@@ -1765,5 +1771,10 @@
 #if H_3D_ARP
         READ_FLAG( uiCode, "iv_res_pred_flag[i]"  );       pcVPS->setUseAdvRP  ( i, uiCode ); pcVPS->setARPStepNum( i, uiCode ? H_3D_ARP_WFNR : 1 );
-
+#if QC_IV_PRED_CONSTRAINT_H0137
+        if( !pcVPS->getNumDirectRefLayers(i) )
+        {
+          assert( !uiCode );         
+        }
+#endif
 #endif
 #if H_3D_NBDV_REF
@@ -1772,4 +1783,10 @@
 #if H_3D_VSP
         READ_FLAG( uiCode, "view_synthesis_pred_flag[i]"); pcVPS->setViewSynthesisPredFlag( i, uiCode == 1 ? true : false );
+#if QC_IV_PRED_CONSTRAINT_H0137
+        if( !pcVPS->getNumDirectRefLayers(i) )
+        {
+          assert( !uiCode );         
+        }
+#endif
 #endif
 #if H_3D_DBBP
@@ -1783,4 +1800,10 @@
         {
           READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
+#if QC_IV_PRED_CONSTRAINT_H0137
+          if( !pcVPS->getNumDirectRefLayers(i) )
+          {
+            assert( !uiCode );         
+          }
+#endif
         }
 #endif
Index: branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCu.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCu.cpp	(revision 939)
@@ -1257,4 +1257,12 @@
   // get DC prediction for each segment
   Pel apDCPredValues[2];
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+  if ( getDimType( uiLumaPredMode ) == DMM1_IDX || getDimType( uiLumaPredMode ) == DMM4_IDX )
+  {
+    apDCPredValues[0] = pcCU->getDmmPredictor( 0 );
+    apDCPredValues[1] = pcCU->getDmmPredictor( 1 );
+  }
+  else
+#endif
   m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode);
   
Index: branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 939)
@@ -210,4 +210,5 @@
     return;
   }
+#if !MTK_SDC_FLAG_FIX_H0095
 #if H_3D_DIM_SDC
   if( pcCU->getSDCFlag(uiAbsPartIdx) )
@@ -215,4 +216,5 @@
     return;
   }
+#endif
 #endif
   
Index: branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 939)
@@ -87,5 +87,5 @@
 , m_cDdcDataSCModel           ( 1,             1,               NUM_DDC_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
 , m_cAngleFlagSCModel         ( 1,             1,               NUM_ANGLE_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
 , m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
 #endif
@@ -171,5 +171,5 @@
   m_cDdcDataSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DDC_DATA );
   m_cAngleFlagSCModel.initBuffer         ( sliceType, qp, (UChar*)INIT_ANGLE_FLAG );
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
   m_cDmm1DataSCModel.initBuffer          ( sliceType, qp, (UChar*)INIT_DMM1_DATA );
 #endif
@@ -241,5 +241,5 @@
   m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
   m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
   m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
 #endif
@@ -386,6 +386,9 @@
     uiCount++;
   }
+#if QC_SIMP_DELTADC_CODING_H0131
+  while( uiSymbol && ( uiCount != 3 ) );
+#else
   while( uiSymbol && ( uiCount != 13 ) );
-
+#endif
   ruiSymbol = uiCount - 1;
 
@@ -423,5 +426,9 @@
   for( Int i = 0; i < iNumBit; i++ )
   {
+#if MTK_DMM_SIMP_CODE_H0092
+      m_pcTDecBinIf->decodeBinEP( uiSymbol );
+#else
     m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmm1DataSCModel.get(0, 0, 0) );
+#endif
     uiIdx += uiSymbol << i;
   }
@@ -1128,5 +1135,9 @@
   if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed
   {
+#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
+    m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, 0 ) );
+#else
     m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) );
+#endif
   }
   else
@@ -2068,7 +2079,9 @@
     UInt dir     = pcCU->getLumaIntraDir( absPartIdx );
     uiNumSegments = isDimMode( dir ) ? 2 : 1;
-
+#if MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113
+    m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
+#else
     m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) );
-
+#endif
     if( pcCU->getSDCFlag( absPartIdx ) )
     {
Index: branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.h	(revision 939)
@@ -214,5 +214,5 @@
   ContextModel3DBuffer m_cDdcDataSCModel;
   ContextModel3DBuffer m_cAngleFlagSCModel;
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
   ContextModel3DBuffer m_cDmm1DataSCModel;
 #endif
Index: branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncCfg.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncCfg.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncCfg.h	(revision 939)
@@ -401,4 +401,7 @@
 #if H_3D_IC
   Bool      m_bUseIC;
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+  Bool      m_bUseICLowLatencyEnc;
+#endif
 #endif
 #if H_3D_INTER_SDC
@@ -511,4 +514,8 @@
   Void       setUseIC                       ( Bool bVal )    { m_bUseIC = bVal; }
   Bool       getUseIC                       ()               { return m_bUseIC; }
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+  Void       setUseICLowLatencyEnc          ( Bool bVal )    { m_bUseICLowLatencyEnc = bVal; }
+  Bool       getUseICLowLatencyEnc          ()               { return m_bUseICLowLatencyEnc; }
+#endif
 #endif
 #if H_3D_INTER_SDC
Index: branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 939)
@@ -163,5 +163,14 @@
     uiAbsPartIdx = 0;
   }
-
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+  else
+  {
+    g_aICEnableCANDIDATE[pcCU->getSlice()->getDepth()]++;
+    if(pcCU->getICFlag(uiAbsPartIdx))
+    {
+      g_aICEnableNUM[pcCU->getSlice()->getDepth()]++;
+    }
+  }
+#endif
   if( pcCU->isICFlagRequired( uiAbsPartIdx ) )
     m_pcEntropyCoderIf->codeICFlag( pcCU, uiAbsPartIdx );
@@ -281,4 +290,5 @@
     return;
   }
+#if !MTK_SDC_FLAG_FIX_H0095
 #if H_3D_DIM_SDC
   if( pcCU->getSDCFlag(uiAbsPartIdx) )
@@ -286,4 +296,5 @@
     return;
   }
+#endif
 #endif
   
Index: branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 939)
@@ -93,5 +93,5 @@
 , m_cDdcDataSCModel           ( 1,             1,               NUM_DDC_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
 , m_cAngleFlagSCModel         ( 1,             1,               NUM_ANGLE_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
 , m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
 #endif
@@ -169,5 +169,5 @@
   m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
   m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
   m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
 #endif
@@ -255,5 +255,5 @@
       curCost += m_cDdcDataSCModel.calcCost           ( curSliceType, qp, (UChar*)INIT_DDC_DATA );
       curCost += m_cAngleFlagSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_ANGLE_FLAG );  
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
       curCost += m_cDmm1DataSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_DMM1_DATA );
 #endif
@@ -319,5 +319,5 @@
   m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
   m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
   m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
 #endif
@@ -482,7 +482,13 @@
     m_pcBinIf->encodeBin( 1, rcSCModel );
     UInt uiCount = 0;
+#if QC_SIMP_DELTADC_CODING_H0131
+    Bool bNoExGo = ( uiSymbol < 3 );
+
+    while( --uiSymbol && ++uiCount < 3 )
+#else
     Bool bNoExGo = (uiSymbol < 13);
 
     while( --uiSymbol && ++uiCount < 13 )
+#endif
     {
       m_pcBinIf->encodeBin( 1, rcSCModel );
@@ -520,5 +526,9 @@
   for ( Int i = 0; i < iNumBit; i++ )
   {
+#if MTK_DMM_SIMP_CODE_H0092
+      m_pcBinIf->encodeBinEP( ( uiTabIdx >> i ) & 1 );
+#else
     m_pcBinIf->encodeBin( ( uiTabIdx >> i ) & 1, m_cDmm1DataSCModel.get(0, 0, 0) );
+#endif
   }
 }
@@ -1233,5 +1243,9 @@
   if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed
   {
+#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
+    m_pcBinIf->encodeBin( isDimMode( dir ) ? 0 : 1, m_cAngleFlagSCModel.get( 0, 0, 0 ) );
+#else
     m_pcBinIf->encodeBin( isDimMode( dir ) ? 0 : 1, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) );
+#endif
   }
   if( isDimMode( dir ) )
@@ -2313,6 +2327,9 @@
       dimDeltaDC = isDimDeltaDC( dir );
     }
-
+#if MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113
+    m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
+#else
     m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) );
+#endif
   }
   else //all-zero inter SDC is not allowed
Index: branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.h
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.h	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.h	(revision 939)
@@ -258,5 +258,5 @@
   ContextModel3DBuffer m_cDdcDataSCModel;
   ContextModel3DBuffer m_cAngleFlagSCModel;
-#if H_3D_DIM_DMM
+#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
   ContextModel3DBuffer m_cDmm1DataSCModel;
 #endif
Index: branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 939)
@@ -1989,4 +1989,12 @@
   // get DC prediction for each segment
   Pel apDCPredValues[2];
+#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
+  if ( getDimType( uiLumaPredMode ) == DMM1_IDX || getDimType( uiLumaPredMode ) == DMM4_IDX )
+  {
+    apDCPredValues[0] = pcCU->getDmmPredictor( 0 );
+    apDCPredValues[1] = pcCU->getDmmPredictor( 1 );
+  }
+  else
+#endif
   analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode );
 
Index: branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSlice.cpp
===================================================================
--- branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 938)
+++ branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 939)
@@ -866,5 +866,9 @@
      )
   {
+#if MTK_LOW_LATENCY_IC_ENCODING_H0086
+    pcSlice ->xSetApplyIC(pcEncTop->getUseICLowLatencyEnc());
+#else
     pcSlice ->xSetApplyIC();
+#endif
     if ( pcSlice->getApplyIC() )
     {
