Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 152)
@@ -749,4 +749,16 @@
   Int address = (pcSlice->getPic()->getPicSym()->getCUOrderMap(lCUAddress) << reqBitsInner) + innerAddress;
   WRITE_FLAG( address==0, "first_slice_in_pic_flag" );
+
+#if LGE_ILLUCOMP_B0045
+  // IC flag is on only first_slice_in_pic
+  if (address==0)
+  {
+    if( pcSlice->getSPS()->getViewId() && !pcSlice->getIsDepth() )
+    {
+      WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "applying IC flag" );
+    }
+  }
+#endif
+
   if(address>0) 
   {
@@ -1427,4 +1439,11 @@
 }
 
+#if LGE_ILLUCOMP_B0045
+Void TEncCavlc::codeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )
+{
+  assert(0);
+}
+#endif
+
 Void TEncCavlc::codeSplitFlag   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
 {
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCavlc.h
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCavlc.h	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCavlc.h	(revision 152)
@@ -164,4 +164,7 @@
 
   Void codeSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#if LGE_ILLUCOMP_B0045
+  Void codeICFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#endif
   Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
   Void codeMergeIndex    ( TComDataCU* pcCU, UInt uiAbsPartIdx );
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCfg.h
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCfg.h	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCfg.h	(revision 152)
@@ -167,4 +167,7 @@
 #endif
   Bool      m_bUseSAO;
+#if LGE_ILLUCOMP_B0045
+  Bool      m_bUseIC;
+#endif
 #if SAO_UNIT_INTERLEAVING
   Int       m_maxNumOffsetsPerPic;
@@ -690,4 +693,8 @@
   Void  setUseSAO                      ( Bool bVal )   {m_bUseSAO = bVal;}
   Bool  getUseSAO                      ()              {return m_bUseSAO;}
+#if LGE_ILLUCOMP_B0045
+  Void  setUseIC                       ( Bool bVal )   {m_bUseIC = bVal;}
+  Bool  getUseIC                       ()              {return m_bUseIC;}
+#endif
 #if SAO_UNIT_INTERLEAVING
   Void  setMaxNumOffsetsPerPic                   (Int iVal)            { m_maxNumOffsetsPerPic = iVal; }
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCu.cpp	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncCu.cpp	(revision 152)
@@ -456,5 +456,7 @@
   TComDataCU * pcTextureCU;
   Bool  depthMapDetect =  false;
+#if !LG_BUG_FIX
   UInt         uiPrevTexPartIndex = 0;
+#endif
 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
   Bool bIntraSliceDetect = false;
@@ -511,4 +513,10 @@
   UInt uiTPelY   = rpcBestCU->getCUPelY();
   UInt uiBPelY   = uiTPelY + rpcBestCU->getHeight(0) - 1;
+
+#if LGE_ILLUCOMP_B0045
+  Bool bICEnabled = (!rpcTempCU->getSlice()->getIsDepth() && rpcTempCU->getSlice()->getViewId());
+
+  bICEnabled = bICEnabled && rpcTempCU->getSlice()->getApplyIC();
+#endif
 
 #if HHI_INTERVIEW_SKIP
@@ -637,5 +645,7 @@
           bTryNx2N = true;
           bTry2NxN = true;
+#if !LG_BUG_FIX
           uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 
+#endif
           pcTexture->incrementTexPartIndex(); 
         }
@@ -648,5 +658,7 @@
           //scan ahead till next depth
           uiTexdepth = pcTexture->accessPartInfo(1);
+#if !LG_BUG_FIX
           uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 
+#endif
           pcTexture->incrementTexPartIndex();
           temp_uiTexPartIndex = pcTexture->getTexPartIndex(); //store in case to rewind
@@ -682,5 +694,7 @@
           bTryNx2N = false;
           bTry2NxN = true;
+#if !LG_BUG_FIX
           uiPrevTexPartIndex = pcTexture->getTexPartIndex();  
+#endif
           pcTexture->incrementTexPartIndex(); ;
         }
@@ -690,5 +704,7 @@
           bTryNx2N = true;
           bTry2NxN = false;
+#if !LG_BUG_FIX
           uiPrevTexPartIndex = pcTexture->getTexPartIndex();  
+#endif
           pcTexture->incrementTexPartIndex(); ;
         }
@@ -718,4 +734,10 @@
         {
           Bool bResPredFlag  = ( uiResPrdId > 0 );
+#if LGE_ILLUCOMP_B0045
+      for(UInt uiICId = 0; uiICId < (bICEnabled ? 2 : 1); uiICId++)
+      {
+        Bool bICFlag = (uiICId ? true : false);
+        rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth);
+#endif
 #endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
@@ -740,5 +762,11 @@
             }
           }
-
+#if LGE_ILLUCOMP_B0045_ENCSIMP
+      if(bICFlag && rpcBestCU->getMergeFlag(0) && !rpcBestCU->getICFlag(0))
+      {
+        bICEnabled = false;
+        break;
+      }
+#endif
           // 2Nx2N, NxN
           if ( !bEarlySkip )
@@ -759,8 +787,15 @@
             }
           }
+#if LGE_ILLUCOMP_B0045
+      }
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
         } // uiResPrdId
 #endif
       } // != I_SLICE
+
+#if LGE_ILLUCOMP_B0045_ENCSIMP
+    bICEnabled = rpcBestCU->getICFlag(0);
+#endif
 
 #if OL_DEPTHLIMIT_A0044
@@ -841,4 +876,10 @@
         {
           Bool bResPredFlag  = ( uiResPrdId > 0 );
+#if LGE_ILLUCOMP_B0045
+      for(UInt uiICId = 0; uiICId < (bICEnabled ? 2 : 1); uiICId++)
+      {
+        Bool bICFlag = (uiICId ? true : false);
+        rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth);
+#endif
 #endif
           // 2Nx2N, NxN
@@ -1376,4 +1417,7 @@
           } //! Try AMP (SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N)
 #endif
+#if LGE_ILLUCOMP_B0045
+    }
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
         } // uiResPrdId
@@ -1401,4 +1445,7 @@
 #endif
         {
+#if LGE_ILLUCOMP_B0045
+      rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth);
+#endif
           xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
           rpcTempCU->initEstData( uiDepth, iQP );
@@ -1418,4 +1465,7 @@
                 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
                 {
+#if LGE_ILLUCOMP_B0045
+          rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth);
+#endif
                   xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
                   rpcTempCU->initEstData( uiDepth, iQP );
@@ -1451,4 +1501,7 @@
 #endif
         {
+#if LGE_ILLUCOMP_B0045
+      rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth);
+#endif
           xCheckIntraPCM (rpcBestCU, rpcTempCU);
           rpcTempCU->initEstData( uiDepth, iQP );
@@ -2094,4 +2147,7 @@
 #endif
     m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx, 0 );
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
     m_pcEntropyCoder->encodeResPredFlag( pcCU, uiAbsPartIdx, 0 );
@@ -2122,4 +2178,7 @@
   // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
   m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx );
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
     if( !pcCU->isIntra( uiAbsPartIdx ) )
@@ -2165,4 +2224,7 @@
   Bool  bResPrdAvail  = rpcTempCU->getResPredAvail( 0 );
   Bool  bResPrdFlag   = rpcTempCU->getResPredFlag ( 0 );
+#endif
+#if LGE_ILLUCOMP_B0045
+  Bool  bICFlag = rpcTempCU->getICFlag(0);
 #endif
 
@@ -2239,4 +2301,7 @@
           rpcTempCU->setResPredAvailSubParts( bResPrdAvail, 0, 0, uhDepth );
           rpcTempCU->setResPredFlagSubParts ( bResPrdFlag,  0, 0, uhDepth );
+#endif
+#if LGE_ILLUCOMP_B0045
+      rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uhDepth);
 #endif
 
@@ -3152,4 +3217,7 @@
   {
     m_pcEntropyCoder->encodeMergeIndex( pcCU, 0, 0, true );
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
+#endif
   }
   else
@@ -3159,4 +3227,7 @@
     // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
     m_pcEntropyCoder->encodePredInfo( pcCU, 0, true );
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag( pcCU, 0,          true );
+#endif
   }
   xRestoreDepthWidthHeight( pcCU );
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncEntropy.cpp
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 152)
@@ -169,4 +169,25 @@
 }
 
+#if LGE_ILLUCOMP_B0045
+Void TEncEntropy::encodeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
+{
+  if (pcCU->isIntra(uiAbsPartIdx) || (pcCU->getSlice()->getViewId() == 0) || pcCU->getSlice()->getSPS()->isDepth())
+  {
+    return;
+  }
+
+  if(!pcCU->getSlice()->getApplyIC())
+    return;
+
+  if( bRD )
+  {
+    uiAbsPartIdx = 0;
+  }
+
+  if(pcCU->isICFlagRequired(uiAbsPartIdx))
+    m_pcEntropyCoderIf->codeICFlag( pcCU, uiAbsPartIdx );
+}
+#endif
+
 Void TEncEntropy::codeFiltCountBit(ALFParam* pAlfParam, Int64* ruiRate)
 {
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncEntropy.h
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncEntropy.h	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncEntropy.h	(revision 152)
@@ -115,4 +115,7 @@
   
   virtual Void codeSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
+#if LGE_ILLUCOMP_B0045
+  virtual Void codeICFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
+#endif
   virtual Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
   virtual Void codeMergeIndex    ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
@@ -250,4 +253,7 @@
   
   Void encodeSplitFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD = false );
+#if LGE_ILLUCOMP_B0045
+  Void encodeICFlag            ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
+#endif
   Void encodeSkipFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
   Void encodePUWise       ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 152)
@@ -60,4 +60,7 @@
 , m_cCUSplitFlagSCModel       ( 1,             1,               NUM_SPLIT_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels )
 , m_cCUSkipFlagSCModel        ( 1,             1,               NUM_SKIP_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
+#if LGE_ILLUCOMP_B0045
+, m_cCUICFlagSCModel          ( 1,             1,               NUM_IC_FLAG_CTX               , m_contextModels + m_numContextModels, m_numContextModels)
+#endif
 , m_cCUMergeFlagExtSCModel    ( 1,             1,               NUM_MERGE_FLAG_EXT_CTX        , m_contextModels + m_numContextModels, m_numContextModels)
 , m_cCUMergeIdxExtSCModel     ( 1,             1,               NUM_MERGE_IDX_EXT_CTX         , m_contextModels + m_numContextModels, m_numContextModels)
@@ -141,4 +144,7 @@
   
   m_cCUSkipFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG );
+#if LGE_ILLUCOMP_B0045
+  m_cCUICFlagSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_IC_FLAG );
+#endif
   m_cCUAlfCtrlFlagSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_ALF_CTRL_FLAG );
   m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
@@ -224,4 +230,7 @@
       curCost  = m_cCUSplitFlagSCModel.calcCost       ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG );
       curCost += m_cCUSkipFlagSCModel.calcCost        ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG );
+#if LGE_ILLUCOMP_B0045
+    curCost += m_cCUICFlagSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_IC_FLAG );
+#endif
       curCost += m_cCUAlfCtrlFlagSCModel.calcCost     ( curSliceType, qp, (UChar*)INIT_ALF_CTRL_FLAG );
       curCost += m_cCUMergeFlagExtSCModel.calcCost    ( curSliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT);
@@ -295,4 +304,7 @@
   
   m_cCUSkipFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG );
+#if LGE_ILLUCOMP_B0045
+  m_cCUICFlagSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_IC_FLAG );
+#endif
   m_cCUAlfCtrlFlagSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_ALF_CTRL_FLAG );
   m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
@@ -786,4 +798,26 @@
 }
 
+#if LGE_ILLUCOMP_B0045
+/** code Illumination Compensation flag
+ * \param pcCU
+ * \param uiAbsPartIdx 
+ * \returns Void
+ */
+Void TEncSbac::codeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )
+{
+  // get context function is here
+  UInt uiSymbol = pcCU->getICFlag( uiAbsPartIdx ) ? 1 : 0;
+  UInt uiCtxIC  = pcCU->getCtxICFlag( uiAbsPartIdx ) ;
+  m_pcBinIf->encodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, uiCtxIC ) );
+  DTRACE_CABAC_VL( g_nSymbolCounter++ );
+  DTRACE_CABAC_T( "\tICFlag" );
+  DTRACE_CABAC_T( "\tuiCtxIC: ");
+  DTRACE_CABAC_V( uiCtxIC );
+  DTRACE_CABAC_T( "\tuiSymbol: ");
+  DTRACE_CABAC_V( uiSymbol );
+  DTRACE_CABAC_T( "\n");
+}
+#endif
+
 /** code merge flag
  * \param pcCU
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSbac.h
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSbac.h	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSbac.h	(revision 152)
@@ -202,4 +202,7 @@
   Void codeAlfCtrlFlag   ( TComDataCU* pcCU, UInt uiAbsPartIdx );
   Void codeSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#if LGE_ILLUCOMP_B0045
+  Void codeICFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#endif
   Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
   Void codeMergeIndex    ( TComDataCU* pcCU, UInt uiAbsPartIdx );
@@ -260,4 +263,7 @@
   ContextModel3DBuffer m_cCUSplitFlagSCModel;
   ContextModel3DBuffer m_cCUSkipFlagSCModel;
+#if LGE_ILLUCOMP_B0045
+  ContextModel3DBuffer m_cCUICFlagSCModel;
+#endif
   ContextModel3DBuffer m_cCUMergeFlagExtSCModel;
   ContextModel3DBuffer m_cCUMergeIdxExtSCModel;
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 152)
@@ -300,4 +300,7 @@
 
   // distortion
+#if LGE_ILLUCOMP_B0045
+  m_cDistParam.bUseIC = pcPatternKey->getICFlag();
+#endif
   uiSad = m_cDistParam.DistFunc( &m_cDistParam );
   
@@ -717,4 +720,7 @@
 
     m_cDistParam.pCur = piRefPos;
+#if LGE_ILLUCOMP_B0045
+  m_cDistParam.bUseIC = pcPatternKey->getICFlag();
+#endif
     uiDist = m_cDistParam.DistFunc( &m_cDistParam );
     uiDist += m_pcRdCost->getCost( cMvTest.getHor(), cMvTest.getVer() );
@@ -2625,4 +2631,7 @@
                             iWidth, iHeight, m_pcEncCfg->getUseHADME() );
 #endif
+#if LGE_ILLUCOMP_B0045
+  cDistParam.bUseIC = false;
+#endif
   ruiErr = cDistParam.DistFunc( &cDistParam );
 }
@@ -3877,4 +3886,8 @@
     cMvCand <<= 2;
 #endif
+
+#if LGE_ILLUCOMP_B0045
+  Bool bICFlag = pcCU->getICFlag(uiPartAddr) && (pcCU->getSlice()->getViewId() != pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdx));
+#endif
   // prediction pattern
   if ( pcCU->getSlice()->getPPS()->getUseWP() && pcCU->getSlice()->getSliceType()==P_SLICE )
@@ -3884,5 +3897,9 @@
   else
   {
+#if LGE_ILLUCOMP_B0045
+    xPredInterLumaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMvCand, iSizeX, iSizeY, pcTemplateCand, false, bICFlag );
+#else
     xPredInterLumaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMvCand, iSizeX, iSizeY, pcTemplateCand, false );
+#endif
   }
 
@@ -3938,4 +3955,9 @@
   pcCU->getPartIndexAndSize( iPartIdx, uiPartAddr, iRoiWidth, iRoiHeight );
   
+#if LGE_ILLUCOMP_B0045
+  Bool bICFlag = pcCU->getICFlag(uiPartAddr) && (pcCU->getSlice()->getViewId() != pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxPred));
+  pcPatternKey->setICFlag(bICFlag);
+#endif
+
   if ( bBi )
   {
@@ -4101,4 +4123,7 @@
       setDistParamComp(0);
 
+#if LGE_ILLUCOMP_B0045
+    m_cDistParam.bUseIC = pcPatternKey->getICFlag();
+#endif
       uiSad = m_cDistParam.DistFunc( &m_cDistParam );
       
@@ -4457,4 +4482,7 @@
     m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
     m_pcEntropyCoder->encodeMergeIndex( pcCU, 0, 0, true );
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag(pcCU, 0, true);
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
     m_pcEntropyCoder->encodeResPredFlag( pcCU, 0, 0, true );
@@ -5822,4 +5850,7 @@
     m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
     m_pcEntropyCoder->encodeMergeIndex(pcCU, 0, 0, true);
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag(pcCU, 0, true);
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
     m_pcEntropyCoder->encodeResPredFlag( pcCU, 0, 0, true );
@@ -5842,4 +5873,7 @@
     m_pcEntropyCoder->encodePartSize( pcCU, 0, pcCU->getDepth(0), true );
     m_pcEntropyCoder->encodePredInfo( pcCU, 0, true );
+#if LGE_ILLUCOMP_B0045
+  m_pcEntropyCoder->encodeICFlag(pcCU, 0, true);
+#endif
 #if HHI_INTER_VIEW_RESIDUAL_PRED
     m_pcEntropyCoder->encodeResPredFlag( pcCU, 0, 0, true );
Index: branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSlice.cpp
===================================================================
--- branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 145)
+++ branches/HTM-4.1-dev2-LG/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 152)
@@ -191,5 +191,7 @@
   rpcSlice->setViewOrderIdx(m_pcCfg->getViewOrderIdx());
 #endif 
-
+#if LGE_ILLUCOMP_B0045
+  rpcSlice->setApplyIC(false);
+#endif
   // set mutliview parameters
   rpcSlice->initMultiviewSlice( pcPic->getCodedScale(), pcPic->getCodedOffset() );
@@ -768,4 +770,11 @@
   Int  iNumSubstreams = 1;
   UInt uiTilesAcross  = 0;
+
+#if LGE_ILLUCOMP_B0045
+  if (pcEncTop->getViewId() != 0 && !pcEncTop->isDepthCoder() && pcEncTop->getUseIC())   // DCP of ViewID 0 is not available
+  {
+    pcSlice ->xSetApplyIC();
+  }
+#endif
 
   if( m_pcCfg->getUseSBACRD() )
