Index: branches/HTM-12.0-dev1/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1048)
@@ -200,5 +200,9 @@
     m_cTEncTop.setUseDMM                       ( isDepth ? m_useDMM               : false );
 #if SEPARATE_FLAG_I0085
+#if LGE_FCO_I0116
+    m_cTEncTop.setUseIVP                       ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_useIVP               : false );
+#else
     m_cTEncTop.setUseIVP                       ( isDepth ? m_useIVP               : false );
+#endif
 #endif
     m_cTEncTop.setUseSDC                       ( isDepth ? m_useSDC               : false );
@@ -210,5 +214,9 @@
 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX
 #if H_3D_QTLPC
+#if LGE_FCO_I0116
+    m_cTEncTop.setUseQTL                       ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_bUseQTL               : false );
+#else
     m_cTEncTop.setUseQTL                       ( isDepth ? m_bUseQTL               : false );
+#endif
 #if !MTK_I0099_VPS_EX2    
     m_cTEncTop.setUsePC                        ( isDepth ? m_bUsePC                : false );
@@ -224,5 +232,9 @@
 #endif
 #if H_3D_IV_MERGE
-    m_cTEncTop.setUseMPI               ( isDepth ? m_bMPIFlag    : false );
+#if LGE_FCO_I0116
+    m_cTEncTop.setUseMPI                       ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_bMPIFlag    : false );
+#else
+    m_cTEncTop.setUseMPI                       ( isDepth ? m_bMPIFlag    : false );
+#endif
 #endif
 #endif // H_3D
@@ -1816,4 +1828,7 @@
     Bool isDepth      = ( vps.getDepthId( layer ) == 1 ) ;
     Bool isLayerZero  = ( layer == 0 ); 
+#if LGE_FCO_I0116
+    Bool isDepthFirst = (layer > 1 ? true : false);
+#endif
 
 #if H_3D_ARP
@@ -1838,5 +1853,9 @@
     vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) );
 #if SEPARATE_FLAG_I0085
+#if LGE_FCO_I0116
+    vps.setIVPFlag          ( layer, isDepth && !isLayerZero && m_useIVP && !isDepthFirst );
+#else
     vps.setIVPFlag          ( layer, isDepth && !isLayerZero && m_useIVP );
+#endif
 #endif
 #endif
@@ -1866,5 +1885,9 @@
 #endif
 #if MTK_I0099_VPS_EX2
+#if LGE_FCO_I0116
+    vps.setLimQtPredFlag         ( layer, isDepth && m_bLimQtPredFlag && !isDepthFirst ); 
+#else
     vps.setLimQtPredFlag         ( layer, isDepth && m_bLimQtPredFlag ); 
+#endif
 #endif
 #if H_3D_NBDV_REF
@@ -1881,5 +1904,9 @@
 #endif
 #if H_3D_IV_MERGE
+#if LGE_FCO_I0116
+    vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag && !isDepthFirst );
+#else
     vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag );
+#endif
 #endif
   }  
Index: branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1048)
@@ -4177,5 +4177,9 @@
     TComPic * pcTexPic = m_pcSlice->getTexturePic();
 #if H_3D_FCO
+#if LGE_FCO_I0116
+    if (pcTexPic && pcTexPic->getReconMark())
+#else
     if (pcTexturePic->getReconMark())
+#endif
     {
 #endif    
Index: branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComSlice.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibCommon/TComSlice.cpp	(revision 1048)
@@ -3727,5 +3727,9 @@
 
 #if H_3D_DDD
+#if LGE_FCO_I0116
+  if( getIsDepth() && getViewIndex() > 0 && getVPS()->getMPIFlag(layerIdInVPS))
+#else
   if( getIsDepth() && getViewIndex() > 0 )
+#endif
   {
       TComSlice *pcTextSlice = getTexturePic()->getSlice( 0 );
Index: branches/HTM-12.0-dev1/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibCommon/TypeDef.h	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibCommon/TypeDef.h	(revision 1048)
@@ -251,4 +251,7 @@
 
 #define H_3D_FCO                          0   // Flexible coding order for 3D
+#if H_3D_FCO
+#define LGE_FCO_I0116                     1
+#endif
 
 #define SCU_HS_FAST_INTRA_SDC_I0123       1
Index: branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1048)
@@ -2637,5 +2637,9 @@
 
 #if H_3D
+#if LGE_FCO_I0116
+  if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() )  && rpcSlice->getIsDepth() )
+#else
   if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() )  && !rpcSlice->getIsDepth() )
+#endif
   {
     UInt uiViewIndex = rpcSlice->getViewIndex();
Index: branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1048)
@@ -859,5 +859,9 @@
   // get collocated depth block
   UInt uiDepthStride = 0;
+#if LGE_FCO_I0116
+  Pel* pDepthPels = pcCU->getVirtualDepthBlock(pcCU->getZorderIdxInCU(), pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride);
+#else
   Pel* pDepthPels = pcCU->getVirtualDepthBlock(0, pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride);
+#endif
   AOF( pDepthPels != NULL );
   AOF( uiDepthStride != 0 );
Index: branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1048)
@@ -794,5 +794,9 @@
 
 #if MTK_I0099_VPS_EX2
+#if LGE_FCO_I0116
+  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag && pcTexture->getReconMark())
+#else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag)
+#endif
 #else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
@@ -854,5 +858,9 @@
   UInt uiTexturePart = uiMode;
 #if MTK_I0099_VPS_EX2
+#if LGE_FCO_I0116
+  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag && pcTexture->getReconMark())
+#else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag )
+#endif
 #else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())
Index: branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecTop.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1048)
@@ -229,8 +229,10 @@
   }
 
+#if !LGE_FCO_I0116
   if ( pcSlice->getIsDepth())
   {
     return;
   }
+#endif
 
   Int curPoc = pcSlice->getPOC();
@@ -1201,5 +1203,9 @@
 
 #if H_3D_IV_MERGE
+#if LGE_FCO_I0116
+  if( !pcSlice->getIsDepth() && m_pcCamParsCollector )
+#else
   if( pcSlice->getIsDepth() && m_pcCamParsCollector )
+#endif
   {
     m_pcCamParsCollector->copyCamParamForSlice( pcSlice );
Index: branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1048)
@@ -2126,5 +2126,9 @@
   }
 #if H_3D
+#if LGE_FCO_I0116
+  if( pcSlice->getVPS()->hasCamParInSliceHeader( pcSlice->getViewIndex() ) && pcSlice->getIsDepth() )
+#else
   if( pcSlice->getVPS()->hasCamParInSliceHeader( pcSlice->getViewIndex() ) && !pcSlice->getIsDepth() )
+#endif
   {
     for( UInt uiId = 0; uiId < pcSlice->getViewIndex(); uiId++ )
Index: branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1048)
@@ -538,5 +538,9 @@
 #if MTK_I0099_VPS_EX2
 #if MTK_I0099_FIX
+#if LGE_FCO_I0116
+      if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg ) && pcTexture->getReconMark())
+#else
       if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg ))
+#endif
 #else
       if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)
@@ -2588,5 +2592,9 @@
   // fetch virtual depth block
   UInt uiDepthStride = 0;
+#if LGE_FCO_I0116
+  Pel* pDepthPels = rpcTempCU->getVirtualDepthBlock(rpcTempCU->getZorderIdxInCU(), uiWidth, uiHeight, uiDepthStride);
+#else
   Pel* pDepthPels = rpcTempCU->getVirtualDepthBlock(0, uiWidth, uiHeight, uiDepthStride);
+#endif
   AOF( pDepthPels != NULL );
   AOF( uiDepthStride != 0 );
Index: branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1048)
@@ -732,5 +732,9 @@
   UInt uiTexturePart = eSize;
 #if MTK_I0099_VPS_EX2
+#if LGE_FCO_I0116
+  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark())
+#else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag )
+#endif
 #else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )
@@ -1106,5 +1110,9 @@
 
 #if MTK_I0099_VPS_EX2
+#if LGE_FCO_I0116
+  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark() )
+#else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag  )
+#endif
 #else
   if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC())
Index: branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1047)
+++ branches/HTM-12.0-dev1/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1048)
@@ -3212,5 +3212,9 @@
 #if H_3D_FCO
             TComPic* picTexture  = pcCU->getSlice()->getIvPic(false, pcCU->getSlice()->getViewIndex() );
+#if LGE_FCO_I0116
+            if ( !picTexture->getReconMark() && (DMM4_IDX == dmmType ) )
+#else
             if ( !picTexture->getReconMark() && (DMM3_IDX == dmmType || DMM4_IDX == dmmType ) )
+#endif
             {
                 continue;
