Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1106)
@@ -2425,5 +2425,9 @@
     Bool depthRefineFlag = false;
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    depthRefineFlag = m_pcSlice->getDepthRefinementFlag(  );
+#else
     depthRefineFlag = m_pcSlice->getVPS()->getDepthRefinementFlag( m_pcSlice->getLayerIdInVps() );
+#endif
 #endif // H_3D_NBDV_REF
     
@@ -3336,5 +3340,9 @@
 inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount)
 {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getViewSynthesisPredFlag( ) || m_pcSlice->getIsDepth() || pDInfo->m_aVIdxCan == -1)
+#else
   if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getVPS()->getViewSynthesisPredFlag( m_pcSlice->getLayerIdInVps() ) || m_pcSlice->getIsDepth() || pDInfo->m_aVIdxCan == -1)
+#endif
   {
     return false;
@@ -3950,5 +3958,9 @@
   deriveLeftBottomIdxGeneral  ( uiAbsPartIdx, uiPUIdx, uiPartIdxLB );
 #if H_3D
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool bMPIFlag   = getSlice()->getMpiFlag(); 
+#else
   Bool bMPIFlag   = getSlice()->getVPS()->getMPIFlag( getSlice()->getLayerIdInVps() );
+#endif
   Bool bIsDepth = getSlice()->getIsDepth();
 #endif 
@@ -4429,5 +4441,9 @@
   Int    ivCandDir   [4] = {0, 0, 0, 0};
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool ivMvPredFlag   = getSlice()->getIvMvPredFlag();
+#else
   Bool ivMvPredFlag   = getSlice()->getVPS()->getIvMvPredFlag( getSlice()->getLayerIdInVps() );
+#endif
 
   ivMvPredFlag &= (nPSW + nPSH > 12);
@@ -6000,5 +6016,9 @@
     iScale = xGetDistScaleFactor( iCurrViewId, iCurrRefViewId, iColViewId, iColRefViewId );
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if ( iScale != 4096 && m_pcSlice->getIvMvScalingFlag( ) )
+#else
     if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag(getSlice()->getLayerIdInVps()) ) 
+#endif
     {
       rcMv = cColMv.scaleMv( iScale );
@@ -6188,5 +6208,9 @@
       Int iViewIdx = getSlice()->getDefaultRefViewIdx();
       pDisp->m_aVIdxCan = iViewIdx;
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      Int iDisp     = getSlice()->getDepthToDisparityB( iViewIdx )[ (Int64) (1 << ( getSlice()->getSPS()->getBitDepthY() - 1 )) ];
+#else
       Int iDisp     = getSlice()->getDepthToDisparityB( iViewIdx )[ 1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ];
+#endif
 
       cMv.setHor(iDisp);
@@ -6301,5 +6325,9 @@
   }
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if( !m_pcSlice->getDepthRefinementFlag( ) )
+#else
   if( !m_pcSlice->getVPS()->getDepthRefinementFlag( m_pcSlice->getLayerIdInVps() ) )
+#endif
   {
     bDepthRefine = false;
@@ -6804,5 +6832,9 @@
   Bool depthRefineFlag = false; 
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  depthRefineFlag = m_pcSlice->getDepthRefinementFlag( ); 
+#else
   depthRefineFlag = m_pcSlice->getVPS()->getDepthRefinementFlag( m_pcSlice->getLayerIdInVps() ); 
+#endif
 #endif // H_3D_NBDV_REF
 
@@ -6862,4 +6894,7 @@
 Void TComDataCU::getSPPara(Int iPUWidth, Int iPUHeight, Int& iNumSP, Int& iNumSPInOneLine, Int& iSPWidth, Int& iSPHeight)
 {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Int iSubPUSize = ( getSlice()->getIsDepth() ? getSlice()->getMpiSubPbSize() : getSlice()->getSubPbSize() );
+#else
   Int iSubPUSize = 1<<getSlice()->getVPS()->getSubPULog2Size(getSlice()->getLayerId());
   if( getSlice()->getIsDepth() )
@@ -6867,4 +6902,5 @@
     iSubPUSize = 1<<getSlice()->getVPS()->getSubPUMPILog2Size(getSlice()->getLayerId());
   }
+#endif
 
   iNumSPInOneLine = iPUWidth/iSubPUSize;
@@ -6945,5 +6981,9 @@
   Bool depthRefineFlag = false; 
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  depthRefineFlag = m_pcSlice->getDepthRefinementFlag( ); 
+#else
   depthRefineFlag = m_pcSlice->getVPS()->getDepthRefinementFlag( m_pcSlice->getLayerIdInVps() ); 
+#endif
 #endif // H_3D_NBDV_REF
 
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComSlice.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComSlice.cpp	(revision 1106)
@@ -1959,7 +1959,9 @@
 #if H_3D
     m_viewIndex         [i] = -1; 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
     m_vpsDepthModesFlag [i] = false;
     m_ivMvScalingFlag[i] = true; 
     m_bIVPFlag [i]      = false;
+#endif
 #endif
 
@@ -1985,11 +1987,14 @@
     }
 #if H_3D_ARP
+#if !HHI_TOOL_PARAMETERS_I2_J0107
     m_uiUseAdvResPred[i]  = 0;
     m_uiARPStepNum[i]     = 1;
 #endif
+#endif
   }
   m_vpsVUI = new TComVPSVUI; 
   m_dpbSize = new TComDpbSize; 
 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D
   for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
@@ -2024,4 +2029,6 @@
   }  
 #endif
+#endif
+
 #endif
 }
@@ -3776,5 +3783,9 @@
 {
   Bool tempRefPicInListsFlag = false;
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if( !getIvResPredFlag() || this->isIRAP())
+#else
   if(!getVPS()->getUseAdvRP(getLayerId()) || this->isIRAP())
+#endif
   {
     m_nARPStepNum = 0;
@@ -3809,5 +3820,9 @@
     tempRefPicInListsFlag = getFirstTRefIdx(REF_PIC_LIST_0) >= 0 || getFirstTRefIdx(REF_PIC_LIST_1) >= 0;
 #endif
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    m_nARPStepNum = tempRefPicInListsFlag ?  H_3D_ARP_WFNR : 0;
+#else
     m_nARPStepNum = tempRefPicInListsFlag ? getVPS()->getARPStepNum(getLayerId()) : 0;
+#endif
   }
 
@@ -3994,13 +4009,25 @@
 
 #if H_3D_VSP
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  setupLUT = setupLUT || getViewSynthesisPredFlag( ); 
+#else
   setupLUT = setupLUT || getVPS()->getViewSynthesisPredFlag( layerIdInVPS); 
 #endif
+#endif
 
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  setupLUT = setupLUT || getDepthRefinementFlag( );
+#else
   setupLUT = setupLUT || getVPS()->getDepthRefinementFlag( layerIdInVPS );
+#endif
 #endif 
 
 #if H_3D_IV_MERGE
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  setupLUT = setupLUT || getIvMvPredFlag() && getIsDepth() ;
+#else
   setupLUT = setupLUT || ( getVPS()->getIvMvPredFlag(layerIdInVPS ) && getIsDepth() );
+#endif
 #endif
 
@@ -4183,4 +4210,104 @@
 #endif
 #endif
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+
+Void TComSlice::init3dToolParameters()
+{
+  Bool depthFlag = getIsDepth();
+
+  Bool depthOfRefViewsAvailFlag = false; 
+  Bool textOfCurViewAvailFlag = false; 
+
+  TComVPS* vps = getVPS(); 
+
+  if( !depthFlag )
+  {
+    depthOfRefViewsAvailFlag = true;
+    for( Int i = 0; i <= vps->getNumRefListLayers( getLayerId() ) - 1; i++)
+    {
+      Bool curDepthAvailableFlag = false;    
+      for (Int j = 0; j <= vps->getMaxLayersMinus1(); j++ )
+      {
+        if ( vps->getDirectDependencyFlag( vps->getLayerIdInVps( getLayerId() ), j )
+          && vps->getVpsDepthFlag        ( vps->getLayerIdInNuh( j ) ) == 1
+          && vps->getViewOrderIdx( vps->getLayerIdInNuh( j ) ) == vps->getViewOrderIdx( vps->getIdRefListLayer( getLayerId(), i ) )
+          && vps->getDependencyId( vps->getLayerIdInNuh( j ) ) == 0
+          && vps->getAuxId       ( vps->getLayerIdInNuh( j ) ) == 0
+          )
+        {
+          curDepthAvailableFlag = true; 
+        }
+      }
+      if ( !curDepthAvailableFlag )
+      {
+        depthOfRefViewsAvailFlag = false; 
+      }    
+    }
+  }
+  else
+  {
+    for (Int j = 0; j <= vps->getMaxLayersMinus1(); j++ )
+    {
+      if ( vps->getDirectDependencyFlag( vps->getLayerIdInVps( getLayerId() ), j ) 
+        && vps->getVpsDepthFlag( vps->getLayerIdInNuh( j ) ) == 0
+        && vps->getViewOrderIdx( vps->getLayerIdInNuh( j ) ) == getViewIndex() 
+        && vps->getDependencyId( vps->getLayerIdInNuh( j ) ) == 0
+        && vps->getAuxId       ( vps->getLayerIdInNuh( j ) ) == 0
+        )
+      {        
+        textOfCurViewAvailFlag = true; 
+      }
+    }
+  }
+
+  Bool lidG0  = ( getLayerId() > 0 );
+  Bool nRLLG0 =  ( getVPS()->getNumRefListLayers( getLayerId() ) > 0 );     
+
+  TComSps3dExtension* sps3dExt = getSPS()->getSps3dExtension();
+
+  m_ivMvPredFlag           = sps3dExt->getIvMvPredFlag         ( depthFlag ) && lidG0 && nRLLG0                           ;                             
+  m_ivMvScalingFlag        = sps3dExt->getIvMvScalingFlag      ( depthFlag ) && lidG0                                    ;                             
+  m_ivResPredFlag          = sps3dExt->getIvResPredFlag        ( depthFlag ) && lidG0 && nRLLG0                           ;                               
+  m_depthRefinementFlag    = sps3dExt->getDepthRefinementFlag  ( depthFlag ) && lidG0           && depthOfRefViewsAvailFlag;                            
+  m_viewSynthesisPredFlag  = sps3dExt->getViewSynthesisPredFlag( depthFlag ) && lidG0 && nRLLG0 && depthOfRefViewsAvailFlag;                          
+  m_depthBasedBlkPartFlag  = sps3dExt->getDepthBasedBlkPartFlag( depthFlag ) && lidG0           && depthOfRefViewsAvailFlag;                          
+  m_mpiFlag                = sps3dExt->getMpiFlag              ( depthFlag ) && lidG0           &&   textOfCurViewAvailFlag;
+  m_intraContourFlag       = sps3dExt->getIntraContourFlag     ( depthFlag ) && lidG0           &&   textOfCurViewAvailFlag;
+  m_intraSdcWedgeFlag      = sps3dExt->getIntraSdcWedgeFlag    ( depthFlag ) && lidG0                                     ;                          
+  m_qtPredFlag             = sps3dExt->getQtPredFlag           ( depthFlag ) && lidG0           &&   textOfCurViewAvailFlag;
+  m_interSdcFlag           = sps3dExt->getInterSdcFlag         ( depthFlag ) && lidG0                                    ;                               
+  m_intraSingleFlag        = sps3dExt->getIntraSingleFlag      ( depthFlag ) && lidG0                                    ;                          
+
+  m_subPbSize              = lidG0 ? ( 1 << ( sps3dExt->getLog2SubPbSizeMinus3   ( depthFlag ) + 3 ) ) : getSPS()->getMaxCUWidth();  
+  m_mpiSubPbSize           = 1 << ( sps3dExt->getLog2MpiSubPbSizeMinus3( depthFlag ) + 3 );
+
+#if H_3D_OUTPUT_ACTIVE_TOOLS
+  std::cout << "Layer:                  :" << getLayerId()             << std::endl;
+  std::cout << "DepthFlag:              :" << getIsDepth()             << std::endl;
+  std::cout << "ViewOrderIdx:           :" << getViewIndex()           << std::endl;
+  std::cout << "DepthOfRefViewsAvailFlag:" << depthOfRefViewsAvailFlag << std::endl;
+  std::cout << "TextOfCurViewAvailFlag  :" << textOfCurViewAvailFlag   << std::endl;
+  
+  std::cout << "ivMvPredFlag            :" << m_ivMvPredFlag           << std::endl;
+  std::cout << "ivMvScalingFlag         :" << m_ivMvScalingFlag        << std::endl;
+  std::cout << "ivResPredFlag           :" << m_ivResPredFlag          << std::endl;
+  std::cout << "depthRefinementFlag     :" << m_depthRefinementFlag    << std::endl;
+  std::cout << "viewSynthesisPredFlag   :" << m_viewSynthesisPredFlag  << std::endl;
+  std::cout << "depthBasedBlkPartFlag   :" << m_depthBasedBlkPartFlag  << std::endl;
+  std::cout << "mpiFlag                 :" << m_mpiFlag                << std::endl;
+  std::cout << "intraContourFlag        :" << m_intraContourFlag       << std::endl;
+  std::cout << "intraSdcWedgeFlag       :" << m_intraSdcWedgeFlag      << std::endl;
+  std::cout << "qtPredFlag              :" << m_qtPredFlag             << std::endl;
+  std::cout << "interSdcFlag            :" << m_interSdcFlag           << std::endl;
+  std::cout << "intraSingleFlag         :" << m_intraSingleFlag        << std::endl;    
+  std::cout << "subPbSize               :" << m_subPbSize              << std::endl;
+  std::cout << "mpiSubPbSize            :" << m_mpiSubPbSize           << std::endl;
+#endif
+}
+#endif
+#endif
+
 
 /** get scaling matrix from RefMatrixID
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComSlice.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TComSlice.h	(revision 1106)
@@ -916,4 +916,5 @@
   Void        xSetRefLayerFlags( Int currLayerId );
   // VPS EXTENSION 2 SYNTAX ELEMENTS
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_ARP
   UInt        m_uiUseAdvResPred          [MAX_NUM_LAYERS   ];
@@ -941,4 +942,5 @@
   Bool        m_bIVPFlag                 [MAX_NUM_LAYERS   ];
 #endif
+#endif
 #if H_3D
   UInt        m_uiCamParPrecision;
@@ -948,4 +950,5 @@
   Int         ***m_aaaiCodedOffset;
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_INTER_SDC
   Bool        m_bInterSDCFlag[MAX_NUM_LAYERS   ];
@@ -956,4 +959,5 @@
 #if H_3D_IV_MERGE
   Bool        m_bMPIFlag[MAX_NUM_LAYERS   ];
+#endif
 #endif
 
@@ -1300,6 +1304,11 @@
 #if H_3D  
   Int     getDepthId      ( Int layerIdInNuh)                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPTH_ID ); }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool    getVpsDepthFlag( Int layerIdInNuh)                              { return (getDepthId( layerIdInNuh ) > 0);  }
+  Int     getViewOrderIdx( Int layerIdInNuh)                              { return getViewIndex( layerIdInNuh ); };   
+#endif
   Int     getLayerIdInNuh( Int viewIndex, Bool depthFlag );   
 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_ARP
   UInt    getUseAdvRP  ( Int layerIdInVps )                                { return m_uiUseAdvResPred[layerIdInVps];    }
@@ -1307,4 +1316,5 @@
   Void    setUseAdvRP  ( Int layerIdInVps, UInt val )                      { m_uiUseAdvResPred[layerIdInVps] = val;     }
   Void    setARPStepNum( Int layerIdInVps, UInt val )                      { m_uiARPStepNum[layerIdInVps]    = val;     }
+#endif
 #endif
 
@@ -1322,4 +1332,5 @@
   Int* getInvCodedOffset     ( Int viewIndex )  { return m_aaaiCodedOffset[viewIndex][1]; }
 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_IV_MERGE
   Void    setIvMvPredFlag     ( Int layerIdInVps, Bool val )  { m_ivMvPredFlag[ layerIdInVps ] = val; }
@@ -1366,4 +1377,5 @@
 #endif
 #endif  
+#endif
 #endif
 };
@@ -1631,4 +1643,93 @@
 };
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+class TComSps3dExtension
+{
+public:
+  TComSps3dExtension()
+  {
+    for (Int d = 0; d < 2; d++)
+    {
+      m_ivMvPredFlag          [d] = false; 
+      m_ivMvScalingFlag       [d] = false; 
+      m_log2SubPbSizeMinus3   [d] = 3; 
+      m_ivResPredFlag         [d] = false; 
+      m_depthRefinementFlag   [d] = false; 
+      m_viewSynthesisPredFlag [d] = false; 
+      m_depthBasedBlkPartFlag [d] = false; 
+      m_mpiFlag               [d] = false; 
+      m_log2MpiSubPbSizeMinus3[d] = 3; 
+      m_intraContourFlag      [d] = false; 
+      m_intraSdcWedgeFlag     [d] = false; 
+      m_qtPredFlag            [d] = false; 
+      m_interSdcFlag          [d] = false; 
+      m_intraSingleFlag       [d] = false;   
+    }
+  }
+
+  Void setIvMvPredFlag( Int d, Bool flag ) { m_ivMvPredFlag[d] = flag; } 
+  Bool getIvMvPredFlag( Int d ) { return m_ivMvPredFlag[d]; } 
+
+  Void setIvMvScalingFlag( Int d, Bool flag ) { m_ivMvScalingFlag[d] = flag; } 
+  Bool getIvMvScalingFlag( Int d ) { return m_ivMvScalingFlag[d]; } 
+
+  Void setLog2SubPbSizeMinus3( Int d, Int  val ) { m_log2SubPbSizeMinus3[d] = val; } 
+  Int  getLog2SubPbSizeMinus3( Int d ) { return m_log2SubPbSizeMinus3[d]; } 
+
+  Void setIvResPredFlag( Int d, Bool flag ) { m_ivResPredFlag[d] = flag; } 
+  Bool getIvResPredFlag( Int d ) { return m_ivResPredFlag[d]; } 
+
+  Void setDepthRefinementFlag( Int d, Bool flag ) { m_depthRefinementFlag[d] = flag; } 
+  Bool getDepthRefinementFlag( Int d ) { return m_depthRefinementFlag[d]; } 
+
+  Void setViewSynthesisPredFlag( Int d, Bool flag ) { m_viewSynthesisPredFlag[d] = flag; } 
+  Bool getViewSynthesisPredFlag( Int d ) { return m_viewSynthesisPredFlag[d]; } 
+
+  Void setDepthBasedBlkPartFlag( Int d, Bool flag ) { m_depthBasedBlkPartFlag[d] = flag; } 
+  Bool getDepthBasedBlkPartFlag( Int d ) { return m_depthBasedBlkPartFlag[d]; } 
+
+  Void setMpiFlag( Int d, Bool flag ) { m_mpiFlag[d] = flag; } 
+  Bool getMpiFlag( Int d ) { return m_mpiFlag[d]; } 
+
+  Void setLog2MpiSubPbSizeMinus3( Int d, Int  val ) { m_log2MpiSubPbSizeMinus3[d] = val; } 
+  Int  getLog2MpiSubPbSizeMinus3( Int d ) { return m_log2MpiSubPbSizeMinus3[d]; } 
+
+  Void setIntraContourFlag( Int d, Bool flag ) { m_intraContourFlag[d] = flag; } 
+  Bool getIntraContourFlag( Int d ) { return m_intraContourFlag[d]; } 
+
+  Void setIntraSdcWedgeFlag( Int d, Bool flag ) { m_intraSdcWedgeFlag[d] = flag; } 
+  Bool getIntraSdcWedgeFlag( Int d ) { return m_intraSdcWedgeFlag[d]; } 
+
+  Void setQtPredFlag( Int d, Bool flag ) { m_qtPredFlag[d] = flag; } 
+  Bool getQtPredFlag( Int d ) { return m_qtPredFlag[d]; } 
+
+  Void setInterSdcFlag( Int d, Bool flag ) { m_interSdcFlag[d] = flag; } 
+  Bool getInterSdcFlag( Int d ) { return m_interSdcFlag[d]; } 
+
+  Void setIntraSingleFlag( Int d, Bool flag ) { m_intraSingleFlag[d] = flag; } 
+  Bool getIntraSingleFlag( Int d ) { return m_intraSingleFlag[d]; } 
+
+private:
+
+  Bool        m_ivMvPredFlag          [2];
+  Bool        m_ivMvScalingFlag       [2];
+  Int         m_log2SubPbSizeMinus3   [2];
+  Bool        m_ivResPredFlag         [2];
+  Bool        m_depthRefinementFlag   [2];
+  Bool        m_viewSynthesisPredFlag [2];
+  Bool        m_depthBasedBlkPartFlag [2];
+  Bool        m_mpiFlag               [2];
+  Int         m_log2MpiSubPbSizeMinus3[2];
+  Bool        m_intraContourFlag      [2];
+  Bool        m_intraSdcWedgeFlag     [2];
+  Bool        m_qtPredFlag            [2];
+  Bool        m_interSdcFlag          [2];
+  Bool        m_intraSingleFlag       [2];  
+};
+
+#endif
+#endif
+
 /// SPS class
 class TComSPS
@@ -1730,4 +1831,7 @@
 #endif
 #if H_3D
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  TComSps3dExtension m_sps3dExtension; 
+#endif
   UInt        m_uiCamParPrecision;
   Bool        m_bCamParInSliceHeader;
@@ -1903,7 +2007,15 @@
   Void setSpsRepFormatIdx( Int  val )          { m_spsRepFormatIdx = val; } 
   Int  getSpsRepFormatIdx(  )                  { return m_spsRepFormatIdx; } 
-  // SPS Extension 
+  
+// SPS Extension 
   Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; }
   Bool getInterViewMvVertConstraintFlag()         { return m_interViewMvVertConstraintFlag;}
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  Void setSps3dExtension ( TComSps3dExtension& sps3dExtension ) { m_sps3dExtension = sps3dExtension; }
+  TComSps3dExtension* getSps3dExtension ( )                     { return &m_sps3dExtension; }
+#endif
+#endif
 
   // Inference 
@@ -2378,4 +2490,22 @@
   Int       m_iDefaultRefViewIdx;
   Bool      m_bDefaultRefViewIdxAvailableFlag;
+#endif
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool m_ivMvPredFlag         ;
+  Bool m_ivMvScalingFlag      ;
+  Bool m_ivResPredFlag        ;
+  Bool m_depthRefinementFlag  ;
+  Bool m_viewSynthesisPredFlag;
+  Bool m_depthBasedBlkPartFlag;
+  Bool m_mpiFlag              ;
+  Bool m_intraContourFlag     ;
+  Bool m_intraSdcWedgeFlag    ;
+  Bool m_qtPredFlag           ;
+  Bool m_interSdcFlag         ;
+  Bool m_intraSingleFlag      ;
+
+  Int  m_mpiSubPbSize         ; 
+  Int  m_subPbSize            ; 
 #endif
 public:
@@ -2689,6 +2819,8 @@
   Int* getDepthToDisparityB( Int refViewIdx ) { return m_depthToDisparityB[ refViewIdx ]; }; 
   Int* getDepthToDisparityF( Int refViewIdx ) { return m_depthToDisparityF[ refViewIdx ]; }; 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   Bool getVpsDepthModesFlag  ()  { return getVPS()->getVpsDepthModesFlag( getVPS()->getLayerIdInVps( m_layerId ) ); }
   Bool getIVPFlag       ()  { return getVPS()->getIVPFlag( getVPS()->getLayerIdInVps( m_layerId ) ); }
+#endif
 #endif
 #if H_3D_IC
@@ -2794,4 +2926,28 @@
   TComPic* getPicFromRefPicSetInterLayer( Int setIdc, Int layerId );
 
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  // 3D-HEVC tool parameters
+  Void init3dToolParameters();   
+  Bool getIvMvPredFlag           ( ) { return m_ivMvPredFlag           ; };
+  Bool getIvMvScalingFlag        ( ) { return m_ivMvScalingFlag        ; };
+  Bool getIvResPredFlag          ( ) { return m_ivResPredFlag          ; };
+  Bool getDepthRefinementFlag    ( ) { return m_depthRefinementFlag    ; };
+  Bool getViewSynthesisPredFlag  ( ) { return m_viewSynthesisPredFlag  ; };
+  Bool getDepthBasedBlkPartFlag  ( ) { return m_depthBasedBlkPartFlag  ; };
+  Bool getMpiFlag                ( ) { return m_mpiFlag                ; };
+  Bool getIntraContourFlag       ( ) { return m_intraContourFlag       ; };
+  Bool getIntraSdcWedgeFlag      ( ) { return m_intraSdcWedgeFlag      ; };
+  Bool getQtPredFlag             ( ) { return m_qtPredFlag             ; };
+  Bool getInterSdcFlag           ( ) { return m_interSdcFlag           ; };
+  Bool getIntraSingleFlag        ( ) { return m_intraSingleFlag        ; };
+
+  Int  getMpiSubPbSize           ( ) { return m_mpiSubPbSize           ; }; 
+  Int  getSubPbSize              ( ) { return m_subPbSize              ; }; 
+#endif
+#endif
+
+
   // Inference 
   Bool inferPocMsbValPresentFlag();  
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TypeDef.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibCommon/TypeDef.h	(revision 1106)
@@ -296,7 +296,8 @@
 #if H_3D
 #define HHI_DEPENDENCY_SIGNALLING_I1_J0107     1
+#define HHI_TOOL_PARAMETERS_I2_J0107           1
 #endif
 #define H_MV_FIX_REF_LAYER_PIC_FLAG            1
-
+#define H_3D_OUTPUT_ACTIVE_TOOLS               0
 
 ///// ***** SINGLE DEPTH MODE *********
