Index: trunk/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 655)
+++ trunk/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 724)
@@ -378,5 +378,7 @@
 #if H_3D_DIM
   ("DMM",                   m_useDMM,           true,  "Depth intra model modes")
+#if !SEC_DMM3_RBC_F0147
   ("RBC",                   m_useRBC,           true,  "Region boundary chain mode")
+#endif
   ("SDC",                   m_useSDC,           true,  "Simplified depth coding")
   ("DLT",                   m_useDLT,           true,  "Depth lookup table")
@@ -508,9 +510,20 @@
   ("AdvMultiviewResPred",      m_uiUseAdvResPred,           (UInt)1, "Usage of Advanced Residual Prediction" )
 #endif
+#if MTK_SPIVMP_F0110
+  ("SubPULog2Size", m_iSubPULog2Size, (Int)3, "Sub-PU size index: 2^n")
+#endif
+
 #if H_3D_IC
+#if SEC_ONLY_TEXTURE_IC_F0151
+  ("IlluCompEnable",           m_abUseIC, true, "Enable illumination compensation")
+#else
   ("IlluCompEnable",           m_abUseIC, std::vector<Bool>(2, true), "Enable illumination compensation")
+#endif
 #endif
 #if H_3D_INTER_SDC
   ("InterSDC",                 m_bDepthInterSDCFlag,        true, "Enable depth inter SDC")
+#endif
+#if SEC_MPI_ENABLING_MERGE_F0150
+  ("MPI",                      m_bMPIFlag,        true, "Enable MPI")
 #endif
   // Coding tools
@@ -750,5 +763,9 @@
 #endif
 #if H_3D_IV_MERGE
+#if QC_DEPTH_IV_MRG_F0125  
+  ("IvMvPred",                        m_ivMvPredFlag            , std::vector<Bool>(2, true)            , "inter view motion prediction " )
+#else
   ("IvMvPred",                        m_ivMvPredFlag,           true            , "inter view motion prediction " )  
+#endif
 #endif
 #if H_3D_NBDV_REF
@@ -1473,4 +1490,9 @@
 #if H_3D_ARP
   xConfirmPara( ( 0 != m_uiUseAdvResPred ) &&  ( 1 != m_uiUseAdvResPred ), "UseAdvResPred must be 0 or 1." );
+#endif
+#if MTK_SPIVMP_F0110
+  xConfirmPara( m_iSubPULog2Size < 2,                                        "SubPULog2Size must be 2 or greater.");
+  xConfirmPara( m_iSubPULog2Size > 6,                                        "SubPULog2Size must be 6 or smaller.");
+  xConfirmPara( (1<<m_iSubPULog2Size) > m_uiMaxCUWidth,                      "SubPULog2Size must be log2(maxCUSize) or smaller.");
 #endif
 #if ADAPTIVE_QP_SELECTION
@@ -2414,5 +2436,12 @@
 #endif
 #if H_3D_IV_MERGE
+#if QC_DEPTH_IV_MRG_F0125
+  printf("IvMvPred:%d %d", m_ivMvPredFlag[0] ? 1 : 0, m_ivMvPredFlag[1] ? 1 : 0);
+#else
   printf("IvMvPred:%d ", m_ivMvPredFlag );
+#endif
+#if MTK_SPIVMP_F0110
+  printf(" SubPULog2Size:%d  " , m_iSubPULog2Size  );
+#endif
 #endif
 #if H_3D_ARP
@@ -2420,5 +2449,9 @@
 #endif
 #if H_3D_IC
+#if SEC_ONLY_TEXTURE_IC_F0151
+  printf( "IlluCompEnable: %d ", m_abUseIC);
+#else
   printf( "IlluCompEnable: %d %d ", m_abUseIC[0] ? 1 : 0, m_abUseIC[1] ? 1 : 0 );
+#endif
 #endif
 #if H_3D_NBDV_REF
@@ -2433,5 +2466,7 @@
 #if H_3D_DIM
   printf("DMM:%d ", m_useDMM );
+#if !SEC_DMM3_RBC_F0147
   printf("RBC:%d ", m_useRBC );
+#endif
   printf("SDC:%d ", m_useSDC );
   printf("DLT:%d ", m_useDLT );
@@ -2439,4 +2474,7 @@
 #if H_3D_INTER_SDC
   printf( "interSDC: %d ", m_bDepthInterSDCFlag ? 1 : 0 );
+#endif
+#if SEC_MPI_ENABLING_MERGE_F0150
+  printf( "MPI: %d ", m_bMPIFlag ? 1 : 0 );
 #endif
   printf("\n\n");  
Index: trunk/source/App/TAppEncoder/TAppEncCfg.h
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncCfg.h	(revision 655)
+++ trunk/source/App/TAppEncoder/TAppEncCfg.h	(revision 724)
@@ -115,5 +115,12 @@
 
 #if H_3D_IV_MERGE
+#if QC_DEPTH_IV_MRG_F0125
+  vector<Bool>           m_ivMvPredFlag;                      ///< Interview motion vector prediction 
+#else
   Bool                   m_ivMvPredFlag;                      ///< Interview motion vector prediction 
+#endif
+#if MTK_SPIVMP_F0110
+  Int                    m_iSubPULog2Size;                    
+#endif
 #endif
 #if H_3D_ARP                                                  /// < flag and number of weighting factors in ARP
@@ -122,5 +129,9 @@
 #endif
 #if H_3D_IC
+#if SEC_ONLY_TEXTURE_IC_F0151
+  Bool   m_abUseIC;
+#else
   vector<Bool> m_abUseIC;                                    ///< flag for using illumination compensation for inter-view prediction
+#endif
 #endif
 #if H_3D_NBDV_REF
@@ -461,5 +472,7 @@
 #if H_3D_DIM
   Bool      m_useDMM;                                        ///< flag for using DMM
+#if !SEC_DMM3_RBC_F0147
   Bool      m_useRBC;                                        ///< flag for using RBC
+#endif
   Bool      m_useSDC;                                        ///< flag for using SDC
   Bool      m_useDLT;                                        ///< flag for using DLT
@@ -471,4 +484,7 @@
 #if H_3D_INTER_SDC
   Bool m_bDepthInterSDCFlag;                                ///< flag for inter SDC of depth map coding
+#endif
+#if SEC_MPI_ENABLING_MERGE_F0150
+  Bool m_bMPIFlag;                                           ///< flag for MPI of depth map coding
 #endif
 #endif
Index: trunk/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncTop.cpp	(revision 655)
+++ trunk/source/App/TAppEncoder/TAppEncTop.cpp	(revision 724)
@@ -149,8 +149,15 @@
     //====== Camera Parameters =========
     m_cTEncTop.setCameraParameters             ( &m_cCameraData );     
+#if QC_DEPTH_IV_MRG_F0125
+    m_cTEncTop.setCamParPrecision              ( m_cCameraData.getCamParsCodedPrecision  () );
+    m_cTEncTop.setCamParInSliceHeader          ( m_cCameraData.getVaryingCameraParameters() );
+    m_cTEncTop.setCodedScale                   ( m_cCameraData.getCodedScale             () );
+    m_cTEncTop.setCodedOffset                  ( m_cCameraData.getCodedOffset            () );
+#else
     m_cTEncTop.setCamParPrecision              ( isDepth ? false : m_cCameraData.getCamParsCodedPrecision  () );
     m_cTEncTop.setCamParInSliceHeader          ( isDepth ? 0     : m_cCameraData.getVaryingCameraParameters() );
     m_cTEncTop.setCodedScale                   ( isDepth ? 0     : m_cCameraData.getCodedScale             () );
     m_cTEncTop.setCodedOffset                  ( isDepth ? 0     : m_cCameraData.getCodedOffset            () );
+#endif
 #if H_3D_VSO
     //====== VSO =========
@@ -176,11 +183,20 @@
     m_cTEncTop.setARPStepNum                   ( ( isDepth || 0==layerIdInVps ) ? 1 : H_3D_ARP_WFNR     );
 #endif
+#if MTK_SPIVMP_F0110
+    m_cTEncTop.setSubPULog2Size                 (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size   );
+#endif
 #if H_3D_IC
+#if SEC_ONLY_TEXTURE_IC_F0151
+    m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC );
+#else
     m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] );
+#endif
 #endif
   //========== Depth intra modes ==========
 #if H_3D_DIM
     m_cTEncTop.setUseDMM                       ( isDepth ? m_useDMM               : false );
+#if !SEC_DMM3_RBC_F0147
     m_cTEncTop.setUseRBC                       ( isDepth ? m_useRBC               : false );
+#endif
     m_cTEncTop.setUseSDC                       ( isDepth ? m_useSDC               : false );
     m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT               : false );
@@ -193,4 +209,7 @@
 #if H_3D_INTER_SDC
     m_cTEncTop.setInterSDCEnable               ( isDepth ? m_bDepthInterSDCFlag    : false );
+#endif
+#if SEC_MPI_ENABLING_MERGE_F0150
+    m_cTEncTop.setUseMPI               ( isDepth ? m_bMPIFlag    : false );
 #endif
 #endif // H_3D
@@ -1639,7 +1658,21 @@
     vps.setARPStepNum      ( layer, ( isDepth || isLayerZero ) ? 1 : H_3D_ARP_WFNR     );
 #endif  
+#if MTK_SPIVMP_F0110
+    if( isDepth )
+    {
+      vps.setSubPULog2Size         ( layer, (layer != 1) ? m_iSubPULog2Size: 0 ); 
+    }
+    else
+    {
+      vps.setSubPULog2Size         ( layer, (!isLayerZero) ? m_iSubPULog2Size: 0 ); 
+    }
+#endif
 
 #if H_3D_DIM
+#if SEC_DMM3_RBC_F0147
+    vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) );
+#else
     vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useRBC || m_useSDC || m_useDLT ) );
+#endif
 #if H_3D_DIM_DLT
     vps.setUseDLTFlag( layer , isDepth && m_useDLT );
@@ -1652,5 +1685,16 @@
 
 #if H_3D_IV_MERGE
+#if QC_DEPTH_IV_MRG_F0125
+    if( isDepth )
+    {
+      vps.setIvMvPredFlag         ( layer, (layer != 1) && m_ivMvPredFlag[1] ); 
+    }
+    else
+    {
+      vps.setIvMvPredFlag         ( layer, !isLayerZero && m_ivMvPredFlag[0] ); 
+    }
+#else
     vps.setIvMvPredFlag         ( layer, !isLayerZero && !isDepth && m_ivMvPredFlag ); 
+#endif
 #endif
 #if H_3D_NBDV_REF
@@ -1663,4 +1707,7 @@
     vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag );
 #endif
+#if SEC_MPI_ENABLING_MERGE_F0150
+    vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag );
+#endif
   }  
 #if H_3D
