Index: /branches/HTM-12.2-dev1-Mediatek/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1090)
@@ -2091,4 +2091,7 @@
     vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag );
 #endif
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+    vps.setSingleDepthModeFlag( layer, !isLayerZero && isDepth && m_useSingleDepthMode );         
+#endif
 #if H_3D_IV_MERGE
 #if H_3D_FCO
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TComSlice.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TComSlice.cpp	(revision 1090)
@@ -1953,4 +1953,7 @@
     m_ivMvScalingFlag[i] = true; 
     m_bIVPFlag [i]      = false;
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+    m_singleDepthModeFlag[ i ] = false;
+#endif
 #endif
 
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TComSlice.h	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TComSlice.h	(revision 1090)
@@ -950,5 +950,7 @@
   Bool        m_bMPIFlag[MAX_NUM_LAYERS   ];
 #endif
-
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+  Bool        m_singleDepthModeFlag    [ MAX_NUM_LAYERS ];
+#endif
 #endif
 public:
@@ -1345,4 +1347,8 @@
   Bool    getMPIFlag      ( Int layerIdInVps )           { return m_bMPIFlag[layerIdInVps]; }
   Void    setMPIFlag      ( Int layerIdInVps, Bool bval ){ m_bMPIFlag[layerIdInVps] = bval; }
+#endif
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+  Void    setSingleDepthModeFlag  ( Int layerIdInVps, Bool val )  { m_singleDepthModeFlag[ layerIdInVps ] = val; }
+  Bool    getSingleDepthModeFlag  ( Int layerIdInVps )            { return m_singleDepthModeFlag[ layerIdInVps ]; }; 
 #endif
 #endif  
@@ -2425,7 +2431,9 @@
   TComPic*  getTexturePic       ()                              { return  m_ivPicsCurrPoc[0][ m_viewIndex ]; }
 #endif
+#if !MTK_SINGLE_DEPTH_VPS_FLAG_J0060
 #if H_3D_SINGLE_DEPTH
   Void      setApplySingleDepthMode( Bool b )                                { m_bApplySingleDepthMode = b; }
   Bool      getApplySingleDepthMode()                                        { return m_bApplySingleDepthMode; }
+#endif
 #endif
 #if H_3D_IC
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TypeDef.h	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibCommon/TypeDef.h	(revision 1090)
@@ -231,5 +231,5 @@
 
 #define H_3D_SINGLE_DEPTH                 1   // Single depth mode proposed in JCT3V-I0095
-
+#define MTK_SINGLE_DEPTH_VPS_FLAG_J0060   1   // Add VPS control flags and remove slice header control flag for single depth, JCT3V-J0060
 
 #define H_3D_INTER_SDC                    1   // INTER SDC, Inter simplified depth coding
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1090)
@@ -1903,4 +1903,7 @@
             READ_FLAG( uiCode, "depth_inter_SDC_flag" );              pcVPS->setInterSDCFlag( i, uiCode ? true : false );
 #endif
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+        READ_FLAG( uiCode, "single_depth_mode_flag[i]"); pcVPS->setSingleDepthModeFlag( i, uiCode == 1 ? true : false );        
+#endif
       }
     }
@@ -2559,4 +2562,5 @@
     }
 #endif
+#if !MTK_SINGLE_DEPTH_VPS_FLAG_J0060
 #if H_3D_SINGLE_DEPTH
     if(rpcSlice->getIsDepth())
@@ -2566,4 +2570,5 @@
       rpcSlice->setApplySingleDepthMode(uiCodeTmp);
     }
+#endif
 #endif
     if (!rpcSlice->isIntra())
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibDecoder/TDecEntropy.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 1090)
@@ -59,8 +59,15 @@
     return;
   }
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+  if(!pcCU->getSlice()->getVPS()->getSingleDepthModeFlag(pcCU->getSlice()->getLayerIdInVps()))
+  {
+     return;
+  }
+#else
   if(!pcCU->getSlice()->getApplySingleDepthMode())
   {
      return;
   }
+#endif
   m_pcEntropyDecoderIf->parseSingleDepthMode( pcCU, uiAbsPartIdx, uiDepth );
 }
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1090)
@@ -1619,4 +1619,7 @@
         WRITE_FLAG( pcVPS->getInterSDCFlag( i ) ? 1 : 0, "depth_inter_SDC_flag" );
 #endif
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+        WRITE_FLAG( pcVPS->getSingleDepthModeFlag( i ) ? 1 : 0, "single_depth_mode_flag" );
+#endif
       }
     }  
@@ -2046,4 +2049,5 @@
     }
 #endif
+#if !MTK_SINGLE_DEPTH_VPS_FLAG_J0060
 #if H_3D_SINGLE_DEPTH
     if(pcSlice->getIsDepth())
@@ -2051,4 +2055,5 @@
       WRITE_FLAG( pcSlice->getApplySingleDepthMode() ? 1 : 0, "slice_enable_single_depth_mode" );
     }
+#endif
 #endif
 #if H_3D_IV_MERGE
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1090)
@@ -715,5 +715,9 @@
 #if H_3D_SINGLE_DEPTH
     rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP  );
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+    if(rpcBestCU->getSlice()->getVPS()->getSingleDepthModeFlag(rpcBestCU->getSlice()->getLayerIdInVps()))
+#else
     if(rpcBestCU->getSlice()->getApplySingleDepthMode())
+#endif
     {
       xCheckRDCostSingleDepth( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncEntropy.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 1090)
@@ -126,9 +126,15 @@
     return;
   }
+#if MTK_SINGLE_DEPTH_VPS_FLAG_J0060
+  if(!pcCU->getSlice()->getVPS()->getSingleDepthModeFlag(pcCU->getSlice()->getLayerIdInVps()))
+  {
+     return;
+  }
+#else
   if(!pcCU->getSlice()->getApplySingleDepthMode())
   {
      return;
   }
-  
+#endif
   if( bRD )
   {
Index: /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncGOP.cpp
===================================================================
--- /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncGOP.cpp	(revision 1089)
+++ /branches/HTM-12.2-dev1-Mediatek/source/Lib/TLibEncoder/TEncGOP.cpp	(revision 1090)
@@ -941,4 +941,5 @@
     pcSlice->setRefPicList ( rcListPic );
 #endif
+#if !MTK_SINGLE_DEPTH_VPS_FLAG_J0060
 #if H_3D_SINGLE_DEPTH
     TEncTop* pcEncTop = (TEncTop*) m_pcCfg;
@@ -953,4 +954,5 @@
     pcSlice->setApplySingleDepthMode(enableSingleDepthMode);
 #endif    
+#endif
 #if H_3D_ARP
     //GT: This seems to be broken when layerId in vps is not equal to layerId in nuh
