Index: branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/ContextTables.h
===================================================================
--- branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/ContextTables.h	(revision 670)
+++ branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/ContextTables.h	(revision 673)
@@ -385,7 +385,13 @@
 INIT_IC_FLAG[3][NUM_IC_FLAG_CTX] =  
 {
+#if LGE_IC_CTX_F0160
+    { 154,  154,  154, },
+    { 154,  154,  154, },
+    { 154,  154,  154, },
+#else
   { CNU,  CNU,  CNU, }, 
   { 197,  185,  201, }, 
   { 197,  185,  201, }, 
+#endif
 };
 #endif
Index: branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TComDataCU.cpp	(revision 670)
+++ branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TComDataCU.cpp	(revision 673)
@@ -2313,4 +2313,15 @@
 {
   UInt        uiCtx = 0;
+
+#if LGE_IC_CTX_F0160
+  TComDataCU* pcTempCU = NULL;
+  UInt        uiTempPartIdx = 0;
+
+  pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
+  uiCtx    = ( pcTempCU ) ? pcTempCU->isIC( uiTempPartIdx ) : 0;
+
+  pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
+  uiCtx    += ( pcTempCU ) ? pcTempCU->isIC( uiTempPartIdx ) : 0;
+#endif
 
   return uiCtx;
@@ -4571,4 +4582,15 @@
 }
 
+#if LGE_IC_CTX_F0160
+Bool TComDataCU::isIC( UInt uiPartIdx )
+{
+    if ( m_pcSlice->isIntra () )
+    {
+        return false;
+    }
+    return ( ( getSkipFlag(uiPartIdx) || getPredictionMode(uiPartIdx) == MODE_INTER) && getICFlag( uiPartIdx ) && isICFlagRequired( uiPartIdx ) );
+}
+#endif
+
 // ====================================================================================================================
 // Protected member functions
Index: branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TComDataCU.h	(revision 670)
+++ branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TComDataCU.h	(revision 673)
@@ -682,4 +682,8 @@
   Bool          isBipredRestriction( UInt puIdx );
 
+#if LGE_IC_CTX_F0160
+  Bool          isIC      ( UInt uiPartIdx );
+#endif
+
   // -------------------------------------------------------------------------------------------------------------------
   // member functions for symbol prediction (most probable / mode conversion)
Index: branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TypeDef.h	(revision 670)
+++ branches/HTM-8.2-dev3-LG/source/Lib/TLibCommon/TypeDef.h	(revision 673)
@@ -65,4 +65,5 @@
 #define H_3D          ( HEVC_EXT == 2)
 
+#define LGE_BUGFIX_F0158 1 //JCT3V-F0158
 /////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////   MAJOR DEFINES   ///////////////////////////////////  
@@ -103,4 +104,6 @@
                                               // MTK_CLIPPING_ALIGN_IC_E0168       // To support simplify bi-prediction PU with identical motion checking, JCT3V-E0168
 
+#define LGE_IC_CTX_F0160 1 //JCT3V-F0160
+
 #if H_3D_NBDV
 #define H_3D_NBDV_REF                     1   // Depth oriented neighboring block disparity derivation
@@ -220,4 +223,5 @@
 #define QC_DIM_DELTADC_UNIFY_F0132        1   // Unify delta DC coding in depth intra modes
 #define HHI_DIM_PREDSAMP_FIX_F0171        1
+#define LGE_PRED_RES_CODING_DLT_DOMAIN_F0159 1 //JCT3V-F0159
 #endif
 ///// ***** VIEW SYNTHESIS PREDICTION *********
Index: branches/HTM-8.2-dev3-LG/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- branches/HTM-8.2-dev3-LG/source/Lib/TLibDecoder/TDecCu.cpp	(revision 670)
+++ branches/HTM-8.2-dev3-LG/source/Lib/TLibDecoder/TDecCu.cpp	(revision 673)
@@ -693,5 +693,12 @@
     for( UInt uiX = 0; uiX < uiWidth; uiX++ )
     {
+#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
+        if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
+            pReco    [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
+        else
+            pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
+#else
       pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
+#endif
       pRecIPred[ uiX ] = pReco[ uiX ];
     }
Index: branches/HTM-8.2-dev3-LG/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-8.2-dev3-LG/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 670)
+++ branches/HTM-8.2-dev3-LG/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 673)
@@ -1126,5 +1126,12 @@
       for( UInt uiX = 0; uiX < uiWidth; uiX++ )
       {
+#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
+          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
+              pResi[ uiX ] = pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pOrg[ uiX ] ) - pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] );
+          else
+              pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
+#else
         pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
+#endif
       }
       pOrg  += uiStride;
@@ -1190,5 +1197,12 @@
       for( UInt uiX = 0; uiX < uiWidth; uiX++ )
       {
+#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
+          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
+              pReco    [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
+          else
+              pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
+#else
         pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
+#endif
         pRecQt   [ uiX ] = pReco[ uiX ];
         pRecIPred[ uiX ] = pReco[ uiX ];
@@ -2979,5 +2993,9 @@
       Bool bTestZeroResi = false;
 #if H_3D_DIM_ENC
+#if LGE_BUGFIX_F0158
+      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && !pcCU->getSlice()->isIRAP();
+#else
       bTestZeroResi |= pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->isIRAP();
+#endif
 #endif
 #if H_3D_DIM_SDC
