Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComDataCU.cpp	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComDataCU.cpp	(revision 374)
@@ -3003,6 +3003,25 @@
   UInt iNumbPart;
 
+#if SHARP_ILLUCOMP_PARSE_D0060
+  if (!(getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N))
+  {
+    return false;
+  }
+  if (getSlice()->getIcSkipParseFlag())
+  {
+    if (getMergeFlag(uiAbsPartIdx) && getMergeIndex(uiAbsPartIdx) == 0)
+    {
+      return false;
+    }
+  }
+  if (getMergeFlag(uiAbsPartIdx))
+  {
+    return true;
+  }
+#endif
+#if HHI_MPI
   if(!getSlice()->getIsDepth())
   {
+#endif
     Int iWidth, iHeight;
 
@@ -3025,4 +3044,5 @@
       }
     }
+#if HHI_MPI
   }
   else
@@ -3046,4 +3066,5 @@
     }
   }
+#endif
 
   return false;
@@ -3056,4 +3077,21 @@
   Int iWidth, iHeight;
 
+#if SHARP_ILLUCOMP_PARSE_D0060
+  if (!(getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N))
+  {
+    return false;
+  }
+  if (getSlice()->getIcSkipParseFlag())
+  {
+    if (getMergeFlag(uiAbsPartIdx) && getMergeIndex(uiAbsPartIdx) == 0)
+    {
+      return false;
+    }
+  }
+  if (getMergeFlag(uiAbsPartIdx))
+  {
+    return true;
+  }
+#endif
   UInt uiPartMode = getPartitionSize(uiAbsPartIdx);
 
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.cpp	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.cpp	(revision 374)
@@ -113,4 +113,7 @@
 #if LGE_ILLUCOMP_B0045
 , m_bApplyIC                      ( false )
+#if SHARP_ILLUCOMP_PARSE_D0060
+, m_icSkipParseFlag               ( false )
+#endif
 #endif
 #if INTER_VIEW_VECTOR_SCALING_C0115
@@ -827,4 +830,10 @@
 
   m_bLMvdL1Zero = pSrc->m_bLMvdL1Zero;
+#if LGE_ILLUCOMP_B0045
+  m_bApplyIC = pSrc->m_bApplyIC;
+#if SHARP_ILLUCOMP_PARSE_D0060
+  m_icSkipParseFlag = pSrc->m_icSkipParseFlag;
+#endif
+#endif
 }
 
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.h	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.h	(revision 374)
@@ -1106,4 +1106,7 @@
 #if LGE_ILLUCOMP_B0045
   Bool        m_bApplyIC;
+#if SHARP_ILLUCOMP_PARSE_D0060
+  Bool        m_icSkipParseFlag;
+#endif
 #endif
 #if INTER_VIEW_VECTOR_SCALING_C0115|QC_MVHEVC_B0046
@@ -1401,4 +1404,8 @@
   Bool      getApplyIC            ()  { return m_bApplyIC; }
   Void      xSetApplyIC           ();
+#if SHARP_ILLUCOMP_PARSE_D0060
+  Void      setIcSkipParseFlag( Bool b ) { m_icSkipParseFlag = b; }
+  Bool      getIcSkipParseFlag() { return m_icSkipParseFlag; }
+#endif
 #endif
 #if QC_TMVP_MRG_REFIDX_C0047
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TypeDef.h	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibCommon/TypeDef.h	(revision 374)
@@ -143,4 +143,6 @@
 #endif
 #endif
+
+#define SHARP_ILLUCOMP_PARSE_D0060        1   // JCT3V-D0060 Removal of IC's parsing dependency
 
 ///// ***** INTERVIEW SKIP *********
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 374)
@@ -1665,4 +1665,11 @@
     }
     rpcSlice->setApplyIC(uiCodeTmp);
+#if SHARP_ILLUCOMP_PARSE_D0060
+    if (rpcSlice->getApplyIC())
+    {
+      READ_FLAG (uiCodeTmp, "ic_skip_mergeidx0");
+      rpcSlice->setIcSkipParseFlag(uiCodeTmp);
+    }
+#endif
   }
 #endif
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 374)
@@ -790,4 +790,10 @@
       WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "applying IC flag" );
     }
+#if SHARP_ILLUCOMP_PARSE_D0060
+    if (pcSlice->getApplyIC())
+    {
+      WRITE_FLAG( pcSlice->getIcSkipParseFlag() ? 1 : 0, "ic_skip_mergeidx0" );
+    }
+#endif
   }
 #endif
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncCu.cpp	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncCu.cpp	(revision 374)
@@ -665,5 +665,9 @@
 
 #if LGE_ILLUCOMP_B0045
+#if SHARP_ILLUCOMP_PARSE_D0060
+    bICEnabled = false;
+#else
     bICEnabled = rpcBestCU->getICFlag(0);
+#endif
 #endif
 
@@ -720,8 +724,14 @@
           Bool bResPredFlag  = ( uiResPrdId > 0 );
 #if LGE_ILLUCOMP_B0045
+#if SHARP_ILLUCOMP_PARSE_D0060
+          {
+            Bool bICFlag = false;
+            rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth);
+#else
           for(UInt uiICId = 0; uiICId < (bICEnabled ? 2 : 1); uiICId++)
           {
             Bool bICFlag = (uiICId ? true : false);
             rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth);
+#endif
 #endif
 #endif
@@ -1875,4 +1885,13 @@
     {
       TComYuv* pcPredYuvTemp = NULL;
+#if SHARP_ILLUCOMP_PARSE_D0060
+      if (rpcTempCU->getSlice()->getApplyIC() && rpcTempCU->getSlice()->getIcSkipParseFlag())
+      {
+        if (bICFlag && uiMergeCand == 0) 
+        {
+          continue;
+        }
+      }
+#endif
 #if LOSSLESS_CODING
       UInt iteration;
Index: /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncSlice.cpp
===================================================================
--- /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 373)
+++ /branches/HTM-6.2-dev1-Sharp/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 374)
@@ -778,4 +778,10 @@
   {
     pcSlice ->xSetApplyIC();
+#if SHARP_ILLUCOMP_PARSE_D0060
+    if (pcSlice->getApplyIC())
+    {
+      pcSlice->setIcSkipParseFlag(rpcPic->getCurrSlice()->getPOC() % m_pcCfg->getIntraPeriod() != 0);
+    }
+#endif
   }
 #endif
