Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg	(revision 1106)
@@ -173,26 +173,26 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1 1              # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1 1              # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3	               # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 3	               # Log2 of sub-PU size for MPI (3...6)
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
 VSO                       : 1                                      # use of view synthesis optimization for depth coding
-DMM                                : 1
-IVP                                : 1                 # use of intra-view prediction mode
-SDC                                : 1
-DLT                                : 1
-QTL                                : 1
-LimQtPredFlag                      : 1
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
-SingleDepthMode                    : 1                 # use of single depth mode
+IntraWedgeFlag                      : 1
+IntraContourFlag                    : 1                 # use of intra-view prediction mode
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 1
+QtPredFlag                          : 1
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
+IntraSingleFlag                     : 1                 # use of single depth mode
 #========== view synthesis optimization (VSO) ==========
 
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg	(revision 1106)
@@ -66,5 +66,5 @@
 DirectRefLayers_3             : 1 2         # Indices in VPS of direct reference layers 
 DirectRefLayers_4             : 0 1         # Indices in VPS of direct reference layers 
-DirectRefLayers_5             : 1 2         # Indices in VPS of direct reference layers 
+DirectRefLayers_5             : 1 4         # Indices in VPS of direct reference layers 
 
 DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
@@ -191,26 +191,26 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1 1              # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1 1              # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
 VSO                       : 1                                      # use of view synthesis optimization for depth coding
-DMM                                : 1
-IVP                                : 1                 # use of intra-view prediction mode
-SDC                                : 1
-DLT                                : 1
-QTL                                : 1
-LimQtPredFlag                      : 1
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
-SingleDepthMode                    : 1                 # use of single depth mode
+IntraWedgeFlag                      : 1
+IntraContourFlag                    : 1                 # use of intra-view prediction mode
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 1
+QtPredFlag                          : 1
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
+IntraSingleFlag                     : 1                 # use of single depth mode
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg	(revision 1106)
@@ -240,24 +240,24 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1                # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1                # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred ( MinCbLog2SizeY - 3 ) ... ( CtbLog2SizeY - 3 )
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
-VSO                                : 1                 # use of view synthesis optimization for depth coding
-DMM                                : 1
-SDC                                : 1
-DLT                                : 1
-QTL                                : 0
-LimQtPredFlag                      : 0
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
+VSO                                 : 1                 # use of view synthesis optimization for depth coding
+IntraWedgeFlag                      : 1
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 0
+QtPredFlag                          : 0
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
 
 #========== view synthesis optimization (VSO) ==========
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg	(revision 1106)
@@ -62,15 +62,15 @@
 
 #======== VPS / Dependencies ================
-DirectRefLayers_1             :             # Indices in VPS of direct reference layers 
-DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers 
-DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers 
-DirectRefLayers_4             : 0           # Indices in VPS of direct reference layers 
-DirectRefLayers_5             : 1           # Indices in VPS of direct reference layers 
-
-DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
-DependencyTypes_2             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
-DependencyTypes_3             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
-DependencyTypes_4             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
-DependencyTypes_5             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
+DirectRefLayers_1             : 0            # Indices in VPS of direct reference layers 
+DirectRefLayers_2             : 0 1          # Indices in VPS of direct reference layers 
+DirectRefLayers_3             : 1 2          # Indices in VPS of direct reference layers 
+DirectRefLayers_4             : 0 1          # Indices in VPS of direct reference layers 
+DirectRefLayers_5             : 1 4          # Indices in VPS of direct reference layers 
+
+DependencyTypes_1             : 2            # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
+DependencyTypes_2             : 2 2          # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
+DependencyTypes_3             : 2 2          # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
+DependencyTypes_4             : 2 2          # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
+DependencyTypes_5             : 2 2          # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
 
 #========== Camera parameters ==========
@@ -252,26 +252,26 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1 1              # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1 1              # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
 VSO                       : 1                                      # use of view synthesis optimization for depth coding
-DMM                                : 1
-IVP                                : 1                 # use of intra-view prediction mode
-SDC                                : 1
-DLT                                : 1
-QTL                                : 1
-LimQtPredFlag                      : 1
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
-SingleDepthMode                    : 1                 # use of single depth mode
+IntraWedgeFlag                      : 1
+IntraContourFlag                    : 1                 # use of intra-view prediction mode
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 1
+QtPredFlag                          : 1
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
+IntraSingleFlag                     : 1                 # use of single depth mode
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_2view+depth.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_2view+depth.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_2view+depth.cfg	(revision 1106)
@@ -207,26 +207,26 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1 1              # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1 1              # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )   (v/d) 
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3	               # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 3	               # Log2 of sub-PU size for MPI (3...6)
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
-VSO                                : 1                 # use of view synthesis optimization for depth coding
-DMM                                : 1
-IVP                                : 1                 # use of intra-view prediction mode
-SDC                                : 1
-DLT                                : 1
-QTL                                : 1
-LimQtPredFlag                      : 1
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
-SingleDepthMode                    : 1                 # use of single depth mode
+VSO                                 : 1                 # use of view synthesis optimization for depth coding
+IntraWedgeFlag                      : 1
+IntraContourFlag                    : 1                 # use of intra-view prediction mode
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 1
+QtPredFlag                          : 1
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
+IntraSingleFlag                     : 1                 # use of single depth mode
 #========== view synthesis optimization (VSO) ==========
 
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_2view.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_2view.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_2view.cfg	(revision 1106)
@@ -178,14 +178,14 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1                # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1                # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 0                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 0                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 0                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 0                # Depth-based Block Partitioning
 
 ### DO NOT ADD ANYTHING BELOW THIS LINE ###
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_3view+depth.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_3view+depth.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_3view+depth.cfg	(revision 1106)
@@ -66,5 +66,5 @@
 DirectRefLayers_3             : 1 2         # Indices in VPS of direct reference layers 
 DirectRefLayers_4             : 0 1         # Indices in VPS of direct reference layers 
-DirectRefLayers_5             : 1 2         # Indices in VPS of direct reference layers 
+DirectRefLayers_5             : 1 4         # Indices in VPS of direct reference layers 
 
 DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
@@ -240,26 +240,26 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1 1              # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1 1              # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
-VSO                                : 1                 # use of view synthesis optimization for depth coding
-DMM                                : 1
-IVP                                : 1                 # use of intra-view prediction mode
-SDC                                : 1
-DLT                                : 1
-QTL                                : 1
-LimQtPredFlag                      : 1
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
-SingleDepthMode                    : 1                 # use of single depth mode
+VSO                                 : 1                 # use of view synthesis optimization for depth coding
+IntraWedgeFlag                      : 1
+IntraContourFlag                    : 1                 # use of intra-view prediction mode
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 1
+QtPredFlag                          : 1
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
+IntraSingleFlag                     : 1                 # use of single depth mode
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_3view.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_3view.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/baseCfg_3view.cfg	(revision 1106)
@@ -198,14 +198,14 @@
 
 #========== multiview coding tools ==========
-IvMvPred                            : 1                # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1                # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )   (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 0                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3                # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 0                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 0                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 0                # Log2 of sub-PU size minus 3 for IvMvPred (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 0                # Depth-based Block Partitioning
 
 ### DO NOT ADD ANYTHING BELOW THIS LINE ###
Index: branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/fullCfg.cfg
===================================================================
--- branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/fullCfg.cfg	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/cfg/3D-HEVC/fullCfg.cfg	(revision 1106)
@@ -129,5 +129,5 @@
 DirectRefLayers_3             : 1 2         # Indices in VPS of direct reference layers 
 DirectRefLayers_4             : 0 1         # Indices in VPS of direct reference layers 
-DirectRefLayers_5             : 1 2         # Indices in VPS of direct reference layers 
+DirectRefLayers_5             : 1 4         # Indices in VPS of direct reference layers 
 
 DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
@@ -316,26 +316,26 @@
 #NumLCUInUnit                       : 1                # Number of LCU in an Unit. Fraction is not allowed
 #========== multiview coding tools ==========
-IvMvPred                            : 1 1              # Inter-view motion prediction
-AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
+IvMvPredFlag                        : 1 1              # Inter-view motion prediction
+IvResPredFlag                       : 1                # Advanced inter-view residual prediction (0:off, 1:on)
 IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
 IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
-ViewSynthesisPred                   : 1                # View synthesis prediction 
-DepthRefinement                     : 1                # Disparity refined by depth DoNBDV
-IvMvScaling                         : 1                # Interview motion vector scaling
-SubPULog2Size                       : 3				   # Log2 of sub-PU size for IvMvPred (2...6)
-SubPUMPILog2Size                    : 3                # Log2 of sub-PU size for MPI (3...6)
-DBBP                                : 1                # Depth-based Block Partitioning
+ViewSynthesisPredFlag               : 1                # View synthesis prediction 
+DepthRefinementFlag                 : 1                # Disparity refined by depth DoNBDV
+IvMvScalingFlag                     : 1                # Interview motion vector scaling
+Log2SubPbSizeMinus3                 : 3				   # Log2 of sub-PU size for IvMvPred (2...6)
+Log2MpiSubPbSizeMinus3              : 0                # Log2 of sub-PU size minus 3 for MPI (0 ... 3) and smaller than or equal to log2(maxCUSize)-3
+DepthBasedBlkPartFlag               : 1                # Depth-based Block Partitioning
 
 #========== depth coding tools ==========
 VSO                       : 1                          # use of view synthesis optimization for depth coding
-DMM                                : 1
-IVP                                : 1                 # use of intra-view prediction mode
-SDC                                : 1
-DLT                                : 1
-QTL                                : 1
-LimQtPredFlag                      : 1
-InterSDC                           : 1                             # use of inter sdc
-MPI                                : 1
-SingleDepthMode                    : 1                 # use of single depth mode
+IntraWedgeFlag                      : 1
+IntraContourFlag                    : 1                 # use of intra-view prediction mode
+IntraSdcFlag                        : 1
+DLT                                 : 1
+QTL                                 : 1
+QtPredFlag                          : 1
+InterSdcFlag                        : 1                             # use of inter sdc
+MpiFlag                             : 1
+IntraSingleFlag                     : 1                 # use of single depth mode
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1106)
@@ -377,11 +377,15 @@
   ("DepthFlag",             m_depthFlag          , std::vector<Int>(1,0), "Depth Flag")
 #if H_3D_DIM
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   ("DMM",                   m_useDMM,           true,  "Depth intra model modes")
   ("IVP",                   m_useIVP,           true,  "intra-view prediction")
   ("SDC",                   m_useSDC,           true,  "Simplified depth coding")
+#endif
   ("DLT",                   m_useDLT,           true,  "Depth lookup table")
 #endif
 #if H_3D
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   ("SingleDepthMode",    m_useSingleDepthMode, true, "Single depth mode")                         
+#endif
 #endif
 #endif
@@ -534,4 +538,5 @@
   ("DeblockingFilterMetric",         m_DeblockingFilterMetric,         false )
 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_ARP
   ("AdvMultiviewResPred",      m_uiUseAdvResPred,           (UInt)1, "Usage of Advanced Residual Prediction" )
@@ -541,8 +546,10 @@
   ("SubPUMPILog2Size", m_iSubPUMPILog2Size, (Int)3, "Sub-PU MPI size index: 2^n")
 #endif
+#endif
 #if H_3D_IC
   ("IlluCompEnable",           m_abUseIC, true, "Enable illumination compensation")
   ("IlluCompLowLatencyEnc",    m_bUseLowLatencyICEnc, false, "Enable low-latency illumination compensation encoding")
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_INTER_SDC
   ("InterSDC",                 m_bDepthInterSDCFlag,        true, "Enable depth inter SDC")
@@ -553,4 +560,5 @@
 #if H_3D_IV_MERGE
   ("MPI",                      m_bMPIFlag,        true, "Enable MPI")
+#endif
 #endif
   // Coding tools
@@ -793,4 +801,7 @@
 
 #endif //HHI_VSO
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  ("QTL",                             m_bUseQTL                 , true          , "Use depth quad tree limitation (encoder only)" )
+#else
 #if H_3D_QTLPC
   ("LimQtPredFlag",                   m_bLimQtPredFlag          , true          , "Use Predictive Coding with QTL" )
@@ -808,4 +819,23 @@
 #if H_3D
   ("IvMvScaling",                     m_ivMvScalingFlag      ,  true            , "inter view motion vector scaling" )    
+#endif
+#endif
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  ("IvMvPredFlag"          , m_ivMvPredFlag          , std::vector< Bool >(2,true)                    , "Inter-view motion prediction"              )
+  ("IvMvScalingFlag"       , m_ivMvScalingFlag       , std::vector< Bool >(2,true)                    , "Inter-view motion vector scaling"          )
+  ("Log2SubPbSizeMinus3"   , m_log2SubPbSizeMinus3   , 0                                              , "Log2 minus 3 of sub Pb size"               )
+  ("IvResPredFlag"         , m_ivResPredFlag         , true                                           , "Inter-view residual prediction"            )
+  ("DepthRefinementFlag"   , m_depthRefinementFlag   , true                                           , "Depth to refine disparity"                 )
+  ("ViewSynthesisPredFlag" , m_viewSynthesisPredFlag , true                                           , "View synthesis prediction"                 )
+  ("DepthBasedBlkPartFlag" , m_depthBasedBlkPartFlag , true                                           , "Depth base block partitioning"             )
+  ("MpiFlag"               , m_mpiFlag               , true                                           , "Motion inheritance from texture to depth"  )
+  ("Log2MpiSubPbSizeMinus3", m_log2MpiSubPbSizeMinus3, 0                                              , "Log2 minus 3 of sub Pb size for MPI"       )
+  ("IntraContourFlag"      , m_intraContourFlag      , true                                           , "Intra contour mode"                        )
+  ("IntraWedgeFlag"        , m_intraWedgeFlag        , true                                           , "Intra wedge mode and segmental depth DCs"  )
+  ("IntraSdcFlag"          , m_intraSdcFlag          , true                                           , "Intra depth DCs"                           )
+  ("QtPredFlag"            , m_qtPredFlag            , true                                           , "Quad tree prediction from texture to depth")
+  ("InterSdcFlag"          , m_interSdcFlag          , true                                           , "Inter depth DCs"                           )
+  ("IntraSingleFlag"       , m_intraSingleFlag       , true                                           , "Intra single mode"                         )
 #endif
 #endif //H_3D
@@ -1650,7 +1680,18 @@
 
 #if H_3D_ARP
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   xConfirmPara( ( 0 != m_uiUseAdvResPred ) &&  ( 1 != m_uiUseAdvResPred ), "UseAdvResPred must be 0 or 1." );
 #endif
+#endif
 #if H_3D_SPIVMP
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  xConfirmPara( m_log2SubPbSizeMinus3 < 0,                                        "Log2SubPbSizeMinus3 must be equal to 0 or greater.");
+  xConfirmPara( m_log2SubPbSizeMinus3 > 3,                                        "Log2SubPbSizeMinus3 must be equal to 3 or smaller.");
+  xConfirmPara( (1<< ( m_log2SubPbSizeMinus3 + 3) ) > m_uiMaxCUWidth,              "Log2SubPbSizeMinus3 must be  equal to log2(maxCUSize)-3 or smaller.");
+ 
+  xConfirmPara( m_log2MpiSubPbSizeMinus3 < 0,                                        "Log2MpiSubPbSizeMinus3 must be equal to 0 or greater.");
+  xConfirmPara( m_log2MpiSubPbSizeMinus3 > 3,                                        "Log2MpiSubPbSizeMinus3 must be equal to 3 or smaller.");
+  xConfirmPara( (1<< (m_log2MpiSubPbSizeMinus3 + 3)) > m_uiMaxCUWidth,               "Log2MpiSubPbSizeMinus3 must be equal to log2(maxCUSize)-3 or smaller.");
+#else
   xConfirmPara( m_iSubPULog2Size < 3,                                        "SubPULog2Size must be 3 or greater.");
   xConfirmPara( m_iSubPULog2Size > 6,                                        "SubPULog2Size must be 6 or smaller.");
@@ -1660,4 +1701,5 @@
   xConfirmPara( m_iSubPUMPILog2Size > 6,                                        "SubPUMPILog2Size must be 6 or smaller.");
   xConfirmPara( ( 1 << m_iSubPUMPILog2Size ) > m_uiMaxCUWidth,                  "SubPUMPILog2Size must be log2(maxCUSize) or smaller.");
+#endif
 #endif
 #if ADAPTIVE_QP_SELECTION
@@ -2606,9 +2648,35 @@
   printf("WVSO:%d ", m_bUseWVSO );  
 #endif
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  printf( "QTL:%d "                  , m_bUseQTL);
+  printf( "IlluCompEnable:%d "       , m_abUseIC);
+  printf( "IlluCompLowLatencyEnc:%d ",  m_bUseLowLatencyICEnc);
+  printf( "DLT:%d ", m_useDLT );
+
+
+  printf( "IvMvPred:%d %d "    , m_ivMvPredFlag[0], m_ivMvPredFlag[1] );
+  printf( "IvMvScaling:%d %d "    , m_ivMvScalingFlag[0], m_ivMvScalingFlag[1] );
+
+  printf( "Log2SubPbSizeMinus3:%d "    , m_log2SubPbSizeMinus3            );
+  printf( "IvResPred:%d "              , m_ivResPredFlag          ? 1 : 0 );
+  printf( "DepthRefinement:%d "        , m_depthRefinementFlag    ? 1 : 0 );
+  printf( "ViewSynthesisPred:%d "      , m_viewSynthesisPredFlag  ? 1 : 0 );
+  printf( "DepthBasedBlkPart:%d "      , m_depthBasedBlkPartFlag  ? 1 : 0 );
+  printf( "Mpi:%d "                    , m_mpiFlag                ? 1 : 0 );
+  printf( "Log2MpiSubPbSizeMinus3:%d " , m_log2MpiSubPbSizeMinus3         );
+  printf( "IntraContour:%d "           , m_intraContourFlag       ? 1 : 0 );
+  printf( "IntraWedge:%d "             , m_intraWedgeFlag         ? 1 : 0 );
+  printf( "IntraSdc:%d "               , m_intraSdcFlag           ? 1 : 0 );
+  printf( "QtPred:%d "                 , m_qtPredFlag             ? 1 : 0 );
+  printf( "InterSdc:%d "               , m_interSdcFlag           ? 1 : 0 );
+  printf( "IntraSingle:%d "            , m_intraSingleFlag        ? 1 : 0 );
+
+#else
 #if H_3D_QTLPC
   printf("LimQtPredFlag:%d ", m_bLimQtPredFlag ? 1 : 0);
   printf("QTL:%d ", m_bUseQTL);
 #endif
-#if H_3D_IV_MERGE
+#if H_3D_IV_MERGE  
   printf("IvMvPred:%d %d", m_ivMvPredFlag[0] ? 1 : 0, m_ivMvPredFlag[1] ? 1 : 0);
 #if H_3D_SPIVMP
@@ -2651,4 +2719,6 @@
   printf( "MPI:%d ", m_bMPIFlag ? 1 : 0 );
 #endif
+#endif
+
   printf("\n\n");  
 
Index: branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncCfg.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncCfg.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncCfg.h	(revision 1106)
@@ -132,7 +132,8 @@
   Bool m_higherLayerIrapSkipFlag;
 
-
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_IV_MERGE
   vector<Bool>           m_ivMvPredFlag;                      ///< Interview motion vector prediction 
+
 #if H_3D_SPIVMP
   Int                    m_iSubPULog2Size;                    
@@ -147,8 +148,12 @@
   UInt                   m_uiARPStepNum;
 #endif
+#endif
+
 #if H_3D_IC
   Bool   m_abUseIC;
   Bool   m_bUseLowLatencyICEnc;
 #endif
+
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_NBDV_REF
   Bool m_depthRefinementFlag;  
@@ -159,4 +164,5 @@
 #if H_3D
   Bool m_ivMvScalingFlag; 
+#endif
 #endif
 #endif
@@ -486,15 +492,20 @@
 #endif
 #if H_3D_DIM
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   Bool      m_useDMM;                                        ///< flag for using DMM
   Bool      m_useIVP;
   Bool      m_useSDC;                                        ///< flag for using SDC
+#endif
   Bool      m_useDLT;                                        ///< flag for using DLT
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_SINGLE_DEPTH
   Bool     m_useSingleDepthMode;                          ///< flag for using single depth mode
 #endif
+#endif
 #if H_3D_QTLPC
   Bool      m_bUseQTL;                                        ///< flag for using depth QuadTree Limitation
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_INTER_SDC
   Bool m_bDepthInterSDCFlag;                                ///< flag for inter SDC of depth map coding
@@ -506,4 +517,24 @@
   Bool m_bMPIFlag;                                           ///< flag for MPI of depth map coding
 #endif
+#endif
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  std::vector< Bool >    m_ivMvPredFlag;
+  std::vector< Bool >    m_ivMvScalingFlag;
+  Int                    m_log2SubPbSizeMinus3;
+  Bool                   m_ivResPredFlag;
+  Bool                   m_depthRefinementFlag;
+  Bool                   m_viewSynthesisPredFlag;
+  Bool                   m_depthBasedBlkPartFlag;
+  Bool                   m_mpiFlag;
+  Int                    m_log2MpiSubPbSizeMinus3;
+  Bool                   m_intraContourFlag;
+  Bool                   m_intraWedgeFlag;
+  Bool                   m_intraSdcFlag;
+  Bool                   m_qtPredFlag;
+  Bool                   m_interSdcFlag;
+  Bool                   m_intraSingleFlag;
+#endif
+
 #endif
   // internal member functions
Index: branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1106)
@@ -140,5 +140,7 @@
   xSetVPSVUI               ( vps ); 
 #if H_3D
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   xSetVPSExtension2        ( vps ); 
+#endif
   m_ivPicLists.setVPS      ( &vps );
   xDeriveDltArray          ( vps, dlt );
@@ -173,4 +175,34 @@
     vps.printPTL(); 
   }
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  // Set 3d tool parameters
+
+  for (Int d = 0; d < 2; d++)
+  {  
+    m_sps3dExtension.setIvMvPredFlag          ( d, m_ivMvPredFlag[d]       );
+    m_sps3dExtension.setIvMvScalingFlag       ( d, m_ivMvScalingFlag[d]    );
+    if (d == 0 )
+    {    
+      m_sps3dExtension.setLog2SubPbSizeMinus3   ( d, m_log2SubPbSizeMinus3   );
+      m_sps3dExtension.setIvResPredFlag         ( d, m_ivResPredFlag         );
+      m_sps3dExtension.setDepthRefinementFlag   ( d, m_depthRefinementFlag   );
+      m_sps3dExtension.setViewSynthesisPredFlag ( d, m_viewSynthesisPredFlag );
+      m_sps3dExtension.setDepthBasedBlkPartFlag ( d, m_depthBasedBlkPartFlag );
+    }
+    else
+    {    
+      m_sps3dExtension.setMpiFlag               ( d, m_mpiFlag               );
+      m_sps3dExtension.setLog2MpiSubPbSizeMinus3( d, m_log2MpiSubPbSizeMinus3);
+      m_sps3dExtension.setIntraContourFlag      ( d, m_intraContourFlag      );
+      m_sps3dExtension.setIntraSdcWedgeFlag     ( d, m_intraSdcFlag || m_intraWedgeFlag     );
+      m_sps3dExtension.setQtPredFlag            ( d, m_qtPredFlag            );
+      m_sps3dExtension.setInterSdcFlag          ( d, m_interSdcFlag          );
+      m_sps3dExtension.setIntraSingleFlag       ( d, m_intraSingleFlag       );  
+    }
+  }
+#endif
+#endif
 
   for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++)
@@ -216,15 +248,26 @@
     m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
 #endif // H_3D_VSO
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_SPIVMP
     m_cTEncTop.setSubPULog2Size                 (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size   );
     m_cTEncTop.setSubPUMPILog2Size              ( !isDepth ? 0 : m_iSubPUMPILog2Size   );
 #endif
+#endif
 #if H_3D_IC
     m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC );
     m_cTEncTop.setUseICLowLatencyEnc           ( m_bUseLowLatencyICEnc );
 #endif
-  //========== Depth intra modes ==========
+
+    
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    m_cTEncTop.setUseDMM                       ( isDepth ? m_intraWedgeFlag   : false );
+    m_cTEncTop.setUseSDC                       ( isDepth ? m_intraSdcFlag     : false );
+    m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT   : false );
+    m_cTEncTop.setUseQTL                       ( isDepth ? m_bUseQTL  : false );
+#else
+//========== Depth intra modes ==========
 #if H_3D_DIM
     m_cTEncTop.setUseDMM                       ( isDepth ? m_useDMM               : false );
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_FCO
     m_cTEncTop.setUseIVP                       ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_useIVP               : false );
@@ -232,7 +275,10 @@
     m_cTEncTop.setUseIVP                       ( isDepth ? m_useIVP               : false );
 #endif
+#endif
     m_cTEncTop.setUseSDC                       ( isDepth ? m_useSDC               : false );
+#endif
+
     m_cTEncTop.setUseDLT                       ( isDepth ? m_useDLT               : false );
-#endif
+
 #if H_3D_SINGLE_DEPTH
     m_cTEncTop.setUseSingleDepthMode           ( isDepth ? m_useSingleDepthMode   : false );
@@ -254,4 +300,10 @@
     m_cTEncTop.setUseMPI                       ( isDepth ? m_bMPIFlag    : false );
 #endif
+#endif
+#endif
+
+
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  m_cTEncTop.setSps3dExtension                 ( m_sps3dExtension );
 #endif
 #endif // H_3D
@@ -1436,5 +1488,9 @@
         else
         {        
+#if HHI_TOOL_PARAMETERS_I2_J0107
+          if( m_depthFlag[ curLayerIdInVps ] && ( m_mpiFlag|| m_qtPredFlag || m_intraContourFlag ) ) 
+#else
           if( m_depthFlag[ curLayerIdInVps ] && ( m_bMPIFlag || m_bLimQtPredFlag || m_useIVP  ) ) 
+#endif
           {          
             Int nuhLayerIdTex = vps.getLayerIdInNuh( vps.getViewIndex( curLayerIdInNuh ), false ); 
@@ -1444,6 +1500,9 @@
             }
           }
-
+#if HHI_TOOL_PARAMETERS_I2_J0107
+          if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0  && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_depthBasedBlkPartFlag ) ) 
+#else
           if( !m_depthFlag[ curLayerIdInVps ] && vps.getNumRefListLayers( curLayerIdInNuh) > 0  && ( m_depthRefinementFlag || m_viewSynthesisPredFlag || m_bUseDBBP) ) 
+#endif
           {  
             Int maxPresentTid =-1; 
@@ -2148,4 +2207,6 @@
 
 #if H_3D
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#else
 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps )
 {
@@ -2230,4 +2291,5 @@
   }  
 }
+#endif
 
 Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt )
Index: branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncTop.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncTop.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/App/TAppEncoder/TAppEncTop.h	(revision 1106)
@@ -92,4 +92,7 @@
 #if H_3D
   TComDLT                    m_dlt;                         ///< dlt
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  TComSps3dExtension         m_sps3dExtension;              ///< Currently all layers share the same sps 3D Extension  
+#endif
 #endif
 
@@ -146,5 +149,7 @@
 #endif
 #if H_3D
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   Void xSetVPSExtension2( TComVPS& vps );
+#endif
   Void xDeriveDltArray( TComVPS& vps, TComDLT& dlt );
 #endif
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TAppCommon/TAppComCamPara.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TAppCommon/TAppComCamPara.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TAppCommon/TAppComCamPara.cpp	(revision 1106)
@@ -1203,6 +1203,8 @@
   m_uiCamParsCodedPrecision = uiCodedCamParsPrecision;
   m_iLog2Precision          = iLog2Precision;
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if HHI_INTERVIEW_SKIP
   m_iCurrentFrameId         = 0 ;
+#endif
 #endif
 
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 *********
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1106)
@@ -721,8 +721,12 @@
 }
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+Void TDecCavlc::parseSPS(TComSPS* pcSPS)
+#else
 #if H_3D
 Void TDecCavlc::parseSPS(TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
 #else
 Void TDecCavlc::parseSPS(TComSPS* pcSPS)
+#endif
 #endif
 {
@@ -993,5 +997,9 @@
   if ( pcSPS->getSps3dExtensionFlag() )
   {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    parseSPS3dExtension( pcSPS ); 
+#else
     parseSPSExtension2( pcSPS, viewIndex, depthFlag  ); 
+#endif
   }
 
@@ -1020,8 +1028,39 @@
 
 #if H_3D
+#if HHI_TOOL_PARAMETERS_I2_J0107
+Void TDecCavlc::parseSPS3dExtension( TComSPS* pcSPS )
+{ 
+  TComSps3dExtension* sps3dExt = pcSPS->getSps3dExtension(); 
+  UInt uiCode; 
+  for( Int d = 0; d  <=  1; d++ )
+  {
+    READ_FLAG( uiCode, "iv_mv_pred_flag" ); sps3dExt->setIvMvPredFlag( d, uiCode == 1 );
+    READ_FLAG( uiCode, "iv_mv_scaling_flag" ); sps3dExt->setIvMvScalingFlag( d, uiCode == 1 );
+    if( d  ==  0 )
+    {
+      READ_UVLC( uiCode, "log2_sub_pb_size_minus3" ); sps3dExt->setLog2SubPbSizeMinus3( d, uiCode );
+      READ_FLAG( uiCode, "iv_res_pred_flag" ); sps3dExt->setIvResPredFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "depth_refinement_flag" ); sps3dExt->setDepthRefinementFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "view_synthesis_pred_flag" ); sps3dExt->setViewSynthesisPredFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "depth_based_blk_part_flag" ); sps3dExt->setDepthBasedBlkPartFlag( d, uiCode == 1 );
+    }
+    else 
+    {
+      READ_FLAG( uiCode, "mpi_flag" ); sps3dExt->setMpiFlag( d, uiCode == 1 );
+      READ_UVLC( uiCode, "log2_mpi_sub_pb_size_minus3" ); sps3dExt->setLog2MpiSubPbSizeMinus3( d, uiCode );
+      READ_FLAG( uiCode, "intra_contour_flag" ); sps3dExt->setIntraContourFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "intra_sdc_wedge_flag" ); sps3dExt->setIntraSdcWedgeFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "qt_pred_flag" ); sps3dExt->setQtPredFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "inter_sdc_flag" ); sps3dExt->setInterSdcFlag( d, uiCode == 1 );
+      READ_FLAG( uiCode, "intra_single_flag" ); sps3dExt->setIntraSingleFlag( d, uiCode == 1 );
+    }
+  }
+}
+#else
 Void TDecCavlc::parseSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
 { 
 
 }
+#endif
 #endif
 
@@ -1841,4 +1880,6 @@
 {
   UInt uiCode; 
+
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )
   {
@@ -1906,4 +1947,5 @@
     }
   }
+#endif
 
   UInt uiCamParPrecision = 0; 
@@ -1994,4 +2036,9 @@
 #endif
   rpcSlice->setSPS(sps);
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  rpcSlice->init3dToolParameters();
+#endif
+#endif
   rpcSlice->setPPS(pps);
   if( pps->getDependentSliceSegmentsEnabledFlag() && ( !firstSliceSegmentInPic ))
@@ -2599,4 +2646,7 @@
       READ_UVLC( uiCode, "five_minus_max_num_merge_cand");
 #if H_3D_IV_MERGE
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      rpcSlice->setMaxNumMergeCand(( ( rpcSlice->getMpiFlag() || rpcSlice->getIvMvPredFlag() ) ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode);
+#else
       if(rpcSlice->getIsDepth())
       {
@@ -2610,4 +2660,5 @@
         rpcSlice->setMaxNumMergeCand(( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode);
       }
+#endif
 
 #else
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCAVLC.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCAVLC.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCAVLC.h	(revision 1106)
@@ -91,6 +91,11 @@
 #if H_3D
   Void  parseVPSExtension2  ( TComVPS* pcVPS ); 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Void  parseSPS3dExtension ( TComSPS* pcSPS );
+  Void  parseSPS            ( TComSPS* pcSPS );
+#else
   Void  parseSPSExtension2  ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag );
   Void  parseSPS            ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag );
+#endif  
 #else
   Void  parseSPS            ( TComSPS* pcSPS );
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1106)
@@ -315,5 +315,9 @@
   {
 #if H_3D_ARP && H_3D_IV_MERGE
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( pcCU->getSlice()->getIvResPredFlag() || pcCU->getSlice()->getIvMvPredFlag() )
+#else
     if( pcCU->getSlice()->getVPS()->getUseAdvRP( pcCU->getSlice()->getLayerId() ) || pcCU->getSlice()->getVPS()->getIvMvPredFlag( pcCU->getSlice()->getLayerId() ))
+#endif
 #else 
 #if H_3D_ARP
@@ -345,5 +349,9 @@
 #endif
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      if( pcCU->getSlice()->getDepthBasedBlkPartFlag() )  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
+#else
       if(pcCU->getSlice()->getVPS()->getDepthRefinementFlag( pcCU->getSlice()->getLayerIdInVps() ))  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
+#endif
       {
         DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true);
@@ -1064,5 +1072,5 @@
     }
   }
-  
+
   TextType  eText             = ( uiChromaId > 0 ? TEXT_CHROMA_V : TEXT_CHROMA_U );
   UInt      uiWidth           = pcCU     ->getWidth   ( 0 ) >> ( uiTrDepth + 1 );
@@ -1072,10 +1080,10 @@
   Pel*      piPred            = ( uiChromaId > 0 ? pcPredYuv->getCrAddr( uiAbsPartIdx ) : pcPredYuv->getCbAddr( uiAbsPartIdx ) );
   Pel*      piResi            = ( uiChromaId > 0 ? pcResiYuv->getCrAddr( uiAbsPartIdx ) : pcResiYuv->getCbAddr( uiAbsPartIdx ) );
-  
+
   UInt      uiNumCoeffInc     = ( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() * pcCU->getSlice()->getSPS()->getMaxCUHeight() ) >> ( pcCU->getSlice()->getSPS()->getMaxCUDepth() << 1 ) ) >> 2;
   TCoeff*   pcCoeff           = ( uiChromaId > 0 ? pcCU->getCoeffCr() : pcCU->getCoeffCb() ) + ( uiNumCoeffInc * uiAbsPartIdx );
-  
+
   UInt      uiChromaPredMode  = pcCU->getChromaIntraDir( 0 );
-  
+
   UInt      uiZOrder          = pcCU->getZorderIdxInCU() + uiAbsPartIdx;
   Pel*      piRecIPred        = ( uiChromaId > 0 ? pcCU->getPic()->getPicYuvRec()->getCrAddr( pcCU->getAddr(), uiZOrder ) : pcCU->getPic()->getPicYuvRec()->getCbAddr( pcCU->getAddr(), uiZOrder ) );
@@ -1088,10 +1096,10 @@
 
   pcCU->getPattern()->initAdiPatternChroma( pcCU, uiAbsPartIdx, uiTrDepth,
-                                           m_pcPrediction->getPredicBuf       (),
-                                           m_pcPrediction->getPredicBufWidth  (),
-                                           m_pcPrediction->getPredicBufHeight (),
-                                           bAboveAvail, bLeftAvail );
+    m_pcPrediction->getPredicBuf       (),
+    m_pcPrediction->getPredicBufWidth  (),
+    m_pcPrediction->getPredicBufHeight (),
+    bAboveAvail, bLeftAvail );
   Int* pPatChroma   = ( uiChromaId > 0 ? pcCU->getPattern()->getAdiCrBuf( uiWidth, uiHeight, m_pcPrediction->getPredicBuf() ) : pcCU->getPattern()->getAdiCbBuf( uiWidth, uiHeight, m_pcPrediction->getPredicBuf() ) );
-  
+
   //===== get prediction signal =====
   {
@@ -1108,38 +1116,38 @@
   if ( pcCU->getCbf( uiAbsPartIdx, eText, uiTrDepth ) )
   {
-  //===== inverse transform =====
-  Int curChromaQpOffset;
-  if(eText == TEXT_CHROMA_U)
-  {
-    curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCbQpOffset() + pcCU->getSlice()->getSliceQpDeltaCb();
-  }
-  else
-  {
-    curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
-  }
-  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset );
-
-  Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)eText];
+    //===== inverse transform =====
+    Int curChromaQpOffset;
+    if(eText == TEXT_CHROMA_U)
+    {
+      curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCbQpOffset() + pcCU->getSlice()->getSliceQpDeltaCb();
+    }
+    else
+    {
+      curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
+    }
+    m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset );
+
+    Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)eText];
     assert(scalingListType < SCALING_LIST_NUM);
-  m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma );
-
-  //===== reconstruction =====
-  Pel* pPred      = piPred;
-  Pel* pResi      = piResi;
-  Pel* pReco      = piReco;
-  Pel* pRecIPred  = piRecIPred;
-  for( UInt uiY = 0; uiY < uiHeight; uiY++ )
-  {
-    for( UInt uiX = 0; uiX < uiWidth; uiX++ )
-    {
-      pReco    [ uiX ] = ClipC( pPred[ uiX ] + pResi[ uiX ] );
-      pRecIPred[ uiX ] = pReco[ uiX ];
-    }
-    pPred     += uiStride;
-    pResi     += uiStride;
-    pReco     += uiStride;
-    pRecIPred += uiRecIPredStride;
-  }
-}
+    m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma );
+
+    //===== reconstruction =====
+    Pel* pPred      = piPred;
+    Pel* pResi      = piResi;
+    Pel* pReco      = piReco;
+    Pel* pRecIPred  = piRecIPred;
+    for( UInt uiY = 0; uiY < uiHeight; uiY++ )
+    {
+      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
+      {
+        pReco    [ uiX ] = ClipC( pPred[ uiX ] + pResi[ uiX ] );
+        pRecIPred[ uiX ] = pReco[ uiX ];
+      }
+      pPred     += uiStride;
+      pResi     += uiStride;
+      pReco     += uiStride;
+      pRecIPred += uiRecIPredStride;
+    }
+  }
   else
   {
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecEntropy.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 1106)
@@ -153,5 +153,9 @@
 #if H_3D_DBBP
 #if SEC_DBBP_VIEW_REF_CHECK_J0037
-  if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+  #if HHI_TOOL_PARAMETERS_I2_J0107
+if( pcCU->getSlice()->getDepthBasedBlkPartFlag() && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+#else
+if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+#endif
 #else
   if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 )
@@ -833,6 +837,11 @@
   pcCU->setSDCFlagSubParts( false, uiAbsPartIdx, uiDepth );
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getInterSdcFlag() ) || 
+    ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getIntraSdcWedgeFlag() ) )
+#else
   if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) || 
     ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getVpsDepthModesFlag( pcCU->getSlice()->getLayerIdInVps() ) ) )
+#endif
   {
     return;
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecEntropy.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecEntropy.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecEntropy.h	(revision 1106)
@@ -66,8 +66,12 @@
 
   virtual Void  parseVPS                  ( TComVPS* pcVPS )                       = 0;
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  virtual Void  parseSPS                  ( TComSPS* pcSPS )                                      = 0;
+#else
 #if H_3D
   virtual Void  parseSPS                  ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag  )                    = 0;
 #else
   virtual Void  parseSPS                  ( TComSPS* pcSPS )                                      = 0;
+#endif
 #endif
 #if H_3D
@@ -157,8 +161,12 @@
   Void    resetEntropy                ( TComSlice* p)           { m_pcEntropyDecoderIf->resetEntropy(p);                    }
   Void    decodeVPS                   ( TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parseVPS(pcVPS); }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Void    decodeSPS                   ( TComSPS* pcSPS     )    { m_pcEntropyDecoderIf->parseSPS(pcSPS);                    }
+#else
 #if H_3D
   Void    decodeSPS                   ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )    { m_pcEntropyDecoderIf->parseSPS(pcSPS, viewIndex, depthFlag );                    }
 #else
   Void    decodeSPS                   ( TComSPS* pcSPS     )    { m_pcEntropyDecoderIf->parseSPS(pcSPS);                    }
+#endif
 #endif
 #if H_3D
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1106)
@@ -703,5 +703,9 @@
 
   TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool    bLimQtPredFlag = pcCU->getPic()->getSlice(0)->getQtPredFlag();
+#else
   Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
+#endif
   TComPic *pcTexture      = pcCU->getSlice()->getTexturePic();
   Bool bDepthMapDetect    = (pcTexture != NULL);
@@ -757,5 +761,9 @@
   Bool bParsePartSize    = true;
   TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool    bLimQtPredFlag = pcCU->getPic()->getSlice(0)->getQtPredFlag();
+#else
   Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
+#endif
   TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
   Bool bDepthMapDetect   = (pcTexture != NULL);
@@ -982,5 +990,9 @@
   {
 #if H_3D_DIM
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( pcCU->getSlice()->getIntraSdcWedgeFlag() || pcCU->getSlice()->getIntraContourFlag() )
+#else
     if( pcCU->getSlice()->getVpsDepthModesFlag() || pcCU->getSlice()->getIVPFlag() )
+#endif
     {
       parseIntraDepth( pcCU, absPartIdx+partOffset*j, depth );
@@ -1124,5 +1136,9 @@
   if( uiIsDimMode )
   {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( pcCU->getSlice()->getIntraSdcWedgeFlag() && pcCU->getSlice()->getIntraContourFlag() )
+#else
     if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag() )
+#endif
     {
       m_pcTDecBinIf->decodeBin( uiSymbol, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );
@@ -1136,9 +1152,17 @@
       }
     }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    else if ( pcCU->getSlice()->getIntraSdcWedgeFlag() )
+#else
     else if ( pcCU->getSlice()->getVpsDepthModesFlag() )
+#endif
     {
       pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth );
     }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    else if( pcCU->getSlice()->getIntraContourFlag() )
+#else
     else if( pcCU->getSlice()->getIVPFlag() )
+#endif
     {
       pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth );
@@ -2120,5 +2144,9 @@
 Void TDecSbac::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
 {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  AOF( pcCU->getSlice()->getDepthBasedBlkPartFlag() );
+#else
   AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );
+#endif
   AOF( !pcCU->getSlice()->getIsDepth() );
   
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecSbac.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecSbac.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecSbac.h	(revision 1106)
@@ -76,8 +76,12 @@
   Void  setBitstream              ( TComInputBitstream* p  ) { m_pcBitstream = p; m_pcTDecBinIf->init( p ); }
   Void  parseVPS                  ( TComVPS* /*pcVPS*/ ) {}
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Void  parseSPS                  ( TComSPS* /*pcSPS*/ ) {}
+#else
 #if H_3D
   Void  parseSPS                  ( TComSPS* /*pcSPS*/ , Int /*viewIndex*/, Bool /*depthFlag*/ ) {}
 #else
   Void  parseSPS                  ( TComSPS* /*pcSPS*/ ) {}
+#endif
 #endif
 #if H_3D
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecTop.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1106)
@@ -726,4 +726,9 @@
 
 #endif
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  m_apcSlicePilot->init3dToolParameters();
+#endif
+#endif
   pps->setSPS(sps);
   pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1);
@@ -1239,5 +1244,9 @@
   TComVPS* vps = m_parameterSetManagerDecoder.getPrefetchedVPS( 0 ); 
   assert( vps != 0 );
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  m_cEntropyDecoder.decodeSPS( sps );
+#else
   m_cEntropyDecoder.decodeSPS( sps, vps->getViewIndex( m_layerId ), ( vps->getDepthId( m_layerId ) == 1 ) );
+#endif
 #else
   m_cEntropyDecoder.decodeSPS( sps );
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1106)
@@ -638,8 +638,12 @@
 }
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+Void TEncCavlc::codeSPS( TComSPS* pcSPS )
+#else
 #if H_3D
 Void TEncCavlc::codeSPS( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
 #else
 Void TEncCavlc::codeSPS( TComSPS* pcSPS )
+#endif
 #endif
 {
@@ -842,5 +846,9 @@
   if ( pcSPS->getSps3dExtensionFlag() )
   {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    codeSPS3dExtension( pcSPS ); 
+#else
     codeSPSExtension2( pcSPS, viewIndex, depthFlag  ); 
+#endif
   }
 
@@ -868,8 +876,38 @@
 
 #if H_3D
+#if HHI_TOOL_PARAMETERS_I2_J0107
+Void TEncCavlc::codeSPS3dExtension( TComSPS* pcSPS )
+{
+  TComSps3dExtension* sps3dExt = pcSPS->getSps3dExtension();
+  for( Int d = 0; d  <=  1; d++ )
+  {
+    WRITE_FLAG( sps3dExt->getIvMvPredFlag( d ) ? 1 : 0 , "iv_mv_pred_flag" );
+    WRITE_FLAG( sps3dExt->getIvMvScalingFlag( d ) ? 1 : 0 , "iv_mv_scaling_flag" );
+    if( d  ==  0 )
+    {
+      WRITE_UVLC( sps3dExt->getLog2SubPbSizeMinus3( d ), "log2_sub_pb_size_minus3" );
+      WRITE_FLAG( sps3dExt->getIvResPredFlag( d ) ? 1 : 0 , "iv_res_pred_flag" );
+      WRITE_FLAG( sps3dExt->getDepthRefinementFlag( d ) ? 1 : 0 , "depth_refinement_flag" );
+      WRITE_FLAG( sps3dExt->getViewSynthesisPredFlag( d ) ? 1 : 0 , "view_synthesis_pred_flag" );
+      WRITE_FLAG( sps3dExt->getDepthBasedBlkPartFlag( d ) ? 1 : 0 , "depth_based_blk_part_flag" );
+    }
+    else 
+    {
+      WRITE_FLAG( sps3dExt->getMpiFlag( d ) ? 1 : 0 , "mpi_flag" );
+      WRITE_UVLC( sps3dExt->getLog2MpiSubPbSizeMinus3( d ), "log2_mpi_sub_pb_size_minus3" );
+      WRITE_FLAG( sps3dExt->getIntraContourFlag( d ) ? 1 : 0 , "intra_contour_flag" );
+      WRITE_FLAG( sps3dExt->getIntraSdcWedgeFlag( d ) ? 1 : 0 , "intra_sdc_wedge_flag" );
+      WRITE_FLAG( sps3dExt->getQtPredFlag( d ) ? 1 : 0 , "qt_pred_flag" );
+      WRITE_FLAG( sps3dExt->getInterSdcFlag( d ) ? 1 : 0 , "inter_sdc_flag" );
+      WRITE_FLAG( sps3dExt->getIntraSingleFlag( d ) ? 1 : 0 , "intra_single_flag" );
+    }
+  }
+}
+#else
 Void TEncCavlc::codeSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
 {
 
 }
+#endif
 #endif
 
@@ -1577,4 +1615,5 @@
 Void TEncCavlc::codeVPSExtension2( TComVPS* pcVPS )
 { 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )
   {
@@ -1622,4 +1661,5 @@
     }  
   }
+#endif
   WRITE_UVLC( pcVPS->getCamParPrecision(), "cp_precision" );
   for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++)
@@ -2088,4 +2128,7 @@
     {
 #if H_3D_IV_MERGE
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      WRITE_UVLC( ( ( pcSlice->getMpiFlag( ) || pcSlice->getIvMvPredFlag( ) ) ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS ) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
+#else
       if(pcSlice->getIsDepth())
       {
@@ -2099,4 +2142,5 @@
         WRITE_UVLC( ( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS ) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
       }
+#endif
 #else
       WRITE_UVLC(MRG_MAX_NUM_CANDS - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCavlc.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCavlc.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCavlc.h	(revision 1106)
@@ -100,6 +100,11 @@
 #if H_3D
   Void  codeVPSExtension2       ( TComVPS* pcVPS ); 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Void  codeSPS3dExtension      ( TComSPS* pcSPS );
+  Void  codeSPS                 ( TComSPS* pcSPS );
+#else
   Void  codeSPSExtension2       ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag  ); 
   Void  codeSPS                 ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag );
+#endif
 #else
   Void  codeSPS                 ( TComSPS* pcSPS );
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCfg.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCfg.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCfg.h	(revision 1106)
@@ -392,4 +392,5 @@
   Double    m_dDispCoeff;
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_ARP
   UInt      m_uiUseAdvResPred;
@@ -400,8 +401,10 @@
   Int      m_iSubPUMPILog2Size;
 #endif
+#endif
 #if H_3D_IC
   Bool      m_bUseIC;
   Bool      m_bUseICLowLatencyEnc;
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_INTER_SDC
   bool      m_bInterSDC;
@@ -409,17 +412,23 @@
 #if H_3D_DBBP
   Bool      m_bUseDBBP;
+#endif
 #endif
   //====== Depth Intra Modes ======
 #if H_3D_DIM
   Bool      m_useDMM;
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   Bool      m_useIVP;
+#endif
   Bool      m_useSDC;
   Bool      m_useDLT;
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_SINGLE_DEPTH
   Bool      m_useSingleDepthMode;
 #endif
+
 #if H_3D_IV_MERGE
   Bool      m_useMPI;
+#endif
 #endif
 #if H_3D_QTLPC
@@ -497,4 +506,5 @@
   Void      setMaxTempLayer                 ( Int maxTempLayer )            { m_maxTempLayer = maxTempLayer;      }
 
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_ARP
   UInt       getUseAdvRP                    ( )              { return m_uiUseAdvResPred; }
@@ -510,4 +520,5 @@
   Void       setSubPUMPILog2Size            (Int u)          { m_iSubPUMPILog2Size = u;   }     
 #endif
+#endif
 #if H_3D_IC
   Void       setUseIC                       ( Bool bVal )    { m_bUseIC = bVal; }
@@ -516,4 +527,5 @@
   Bool       getUseICLowLatencyEnc          ()               { return m_bUseICLowLatencyEnc; }
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_INTER_SDC
   Void       setInterSDCEnable              ( Bool bVal )    { m_bInterSDC = bVal; }
@@ -523,4 +535,5 @@
   Void       setUseDBBP                     ( Bool  b )      { m_bUseDBBP   = b; }
   Bool       getUseDBBP()                                    { return m_bUseDBBP;     }
+#endif
 #endif
   //======== Transform =============
@@ -932,4 +945,6 @@
   Void setFrameOnlyConstraintFlag(Bool b) { m_frameOnlyConstraintFlag = b; }
 #if H_3D
+
+  // Only flags that are not in the SPS3dExtension should go here. 
   /// 3D Tools 
 
@@ -976,23 +991,30 @@
   Bool      getUseDMM                       ()        { return m_useDMM; }
   Void      setUseDMM                       ( Bool b) { m_useDMM = b;    }
+#if !HHI_TOOL_PARAMETERS_I2_J0107
   Bool      getUseIVP                       ()        { return m_useIVP; }
   Void      setUseIVP                       ( Bool b) { m_useIVP = b;    }
+#endif
   Bool      getUseSDC                       ()        { return m_useSDC; }
   Void      setUseSDC                       ( Bool b) { m_useSDC = b;    }
+
   Bool      getUseDLT                       ()        { return m_useDLT; }
   Void      setUseDLT                       ( Bool b) { m_useDLT = b;    }
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_SINGLE_DEPTH
   Void       setUseSingleDepthMode          ( Bool bVal )    { m_useSingleDepthMode = bVal; }
   Bool       getUseSingleDepthMode          ()               { return m_useSingleDepthMode; }
 #endif
+#endif
 #if H_3D_QTLPC
   Void      setUseQTL                       ( Bool b ) { m_bUseQTL = b;    }
   Bool      getUseQTL                       ()         { return m_bUseQTL; }
 #endif
+#if !HHI_TOOL_PARAMETERS_I2_J0107
 #if H_3D_IV_MERGE
   Void      setUseMPI                       ( Bool b ) { m_useMPI = b;    }
   Bool      getUseMPI                       ()         { return m_useMPI; }
 #endif
+#endif
 #endif // H_3D
 };
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1106)
@@ -410,5 +410,9 @@
 #if H_3D_QTLPC
   TComVPS *vps            = pcPic->getSlice(0)->getVPS();
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool  bLimQtPredFalg    = pcPic->getSlice(0)->getQtPredFlag(); 
+#else
   Bool  bLimQtPredFalg    = vps->getLimQtPredFlag(pcPic->getSlice(0)->getLayerId()); 
+#endif
   TComPic *pcTexture      = rpcBestCU->getSlice()->getTexturePic();
 
@@ -566,5 +570,9 @@
       {
 #if H_3D_ARP && H_3D_IV_MERGE
+#if HHI_TOOL_PARAMETERS_I2_J0107
+        if( rpcTempCU->getSlice()->getIvResPredFlag() || rpcTempCU->getSlice()->getIvMvPredFlag() )
+#else
         if( rpcTempCU->getSlice()->getVPS()->getUseAdvRP(rpcTempCU->getSlice()->getLayerId()) || rpcTempCU->getSlice()->getVPS()->getIvMvPredFlag(rpcTempCU->getSlice()->getLayerId()) )
+#endif
 #else 
 #if H_3D_ARP
@@ -590,5 +598,9 @@
 #endif 
 #if H_3D_NBDV_REF
+#if HHI_TOOL_PARAMETERS_I2_J0107
+          if( rpcTempCU->getSlice()->getDepthRefinementFlag() )
+#else
           if(rpcTempCU->getSlice()->getVPS()->getDepthRefinementFlag( rpcTempCU->getSlice()->getLayerIdInVps()))
+#endif
             DvInfo.bDV = rpcTempCU->getDisMvpCandNBDV(&DvInfo, true);
           else
@@ -673,5 +685,9 @@
 #if H_3D_DBBP
 #if SEC_DBBP_VIEW_REF_CHECK_J0037
+#if HHI_TOOL_PARAMETERS_I2_J0107
+          if( rpcTempCU->getSlice()->getDepthBasedBlkPartFlag() && rpcTempCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+#else
           if( m_pcEncCfg->getUseDBBP() && rpcTempCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+#endif
 #else
           if( m_pcEncCfg->getUseDBBP() )
@@ -2032,5 +2048,9 @@
           xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
 #if H_3D_INTER_SDC
+#if HHI_TOOL_PARAMETERS_I2_J0107
+          if( rpcTempCU->getSlice()->getInterSdcFlag() && !uiNoResidual )
+#else
           if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && !uiNoResidual )
+#endif
           {
             Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE};
@@ -2104,5 +2124,9 @@
       {
 #if H_3D_INTER_SDC
+#if HHI_TOOL_PARAMETERS_I2_J0107
+        if( rpcTempCU->getSlice()->getInterSdcFlag() )
+#else
         if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) )
+#endif
         {
           bestIsSkip = !rpcBestCU->getSDCFlag( 0 ) && ( rpcBestCU->getQtRootCbf(0) == 0 );
@@ -2191,5 +2215,9 @@
   for( Int nARPW = 0; nARPW <= nARPWMax; nARPW++ )
   {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( !bFirstTime && rpcTempCU->getSlice()->getIvResPredFlag() )
+#else
     if( bFirstTime == false && rpcTempCU->getSlice()->getVPS()->getUseAdvRP( iLayerId ) )
+#endif
     {
       rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0),bTransquantBypassFlag );      
@@ -2297,5 +2325,9 @@
   xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
 #if H_3D_INTER_SDC
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if( rpcTempCU->getSlice()->getInterSdcFlag() && ePartSize == SIZE_2Nx2N)
+#else
   if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && ePartSize == SIZE_2Nx2N)
+#endif
   {
     Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE};
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncEntropy.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 1106)
@@ -78,4 +78,11 @@
 }
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+Void TEncEntropy::encodeSPS( TComSPS* pcSPS )
+{
+  m_pcEntropyCoderIf->codeSPS( pcSPS );
+  return;
+}
+#else
 #if H_3D
 Void TEncEntropy::encodeSPS( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
@@ -90,4 +97,5 @@
   return;
 }
+#endif
 #endif
 
@@ -269,5 +277,9 @@
 #if H_3D_DBBP
 #if SEC_DBBP_VIEW_REF_CHECK_J0037
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if( pcCU->getSlice()->getDepthBasedBlkPartFlag() && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+#else
   if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
+#endif
 #else
   if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 )
@@ -784,6 +796,11 @@
 Void TEncEntropy::encodeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
 {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getInterSdcFlag() ) || 
+    ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getIntraSdcWedgeFlag() ) )
+#else
   if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) || 
     ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getVpsDepthModesFlag( pcCU->getSlice()->getLayerIdInVps() ) ) )
+#endif
   {
     return;
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncEntropy.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncEntropy.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncEntropy.h	(revision 1106)
@@ -69,8 +69,12 @@
 
   virtual Void  codeVPS                 ( TComVPS* pcVPS )                                      = 0;
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  virtual Void  codeSPS                 ( TComSPS* pcSPS )                                      = 0;
+#else
 #if !H_3D
   virtual Void  codeSPS                 ( TComSPS* pcSPS )                                      = 0;
 #else
   virtual Void  codeSPS                 ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )       = 0;
+#endif
 #endif
   virtual Void  codePPS                 ( TComPPS* pcPPS )                                      = 0;
@@ -165,8 +169,12 @@
   Void encodeVPS               ( TComVPS* pcVPS);
   // SPS
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Void encodeSPS               ( TComSPS* pcSPS );
+#else
 #if H_3D
   Void encodeSPS               ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag );
 #else
   Void encodeSPS               ( TComSPS* pcSPS );
+#endif
 #endif
   Void encodePPS               ( TComPPS* pcPPS );
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncGOP.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncGOP.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncGOP.cpp	(revision 1106)
@@ -958,4 +958,7 @@
 #endif
 #if H_3D_SINGLE_DEPTH
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    pcSlice->setApplySingleDepthMode( pcSlice->getIntraSingleFlag() );
+#else
     TEncTop* pcEncTop = (TEncTop*) m_pcCfg;
     bool enableSingleDepthMode=false;
@@ -968,4 +971,5 @@
     }
     pcSlice->setApplySingleDepthMode(enableSingleDepthMode);
+#endif
 #endif    
 #if SEC_ARP_VIEW_REF_CHECK_J0037 || SEC_DBBP_VIEW_REF_CHECK_J0037
@@ -1433,8 +1437,12 @@
         pcSlice->getSPS()->getVuiParameters()->setHrdParametersPresentFlag( true );
       }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      m_pcEntropyCoder->encodeSPS(pcSlice->getSPS());
+#else
 #if !H_3D
       m_pcEntropyCoder->encodeSPS(pcSlice->getSPS());
 #else
       m_pcEntropyCoder->encodeSPS(pcSlice->getSPS(), pcSlice->getViewIndex(), pcSlice->getIsDepth() );
+#endif
 #endif
       writeRBSPTrailingBits(nalu.m_Bitstream);
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1106)
@@ -255,5 +255,9 @@
       curCost += m_CUTransquantBypassFlagSCModel.calcCost( curSliceType, qp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG );
 #if H_3D_DIM
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( m_pcSlice->getIntraSdcWedgeFlag() || m_pcSlice->getIntraContourFlag() )
+#else
     if( m_pcSlice->getVpsDepthModesFlag() || m_pcSlice->getIVPFlag() )
+#endif
     {
       curCost += m_cDepthIntraModeSCModel.calcCost    ( curSliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE );
@@ -346,8 +350,12 @@
 }
 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+Void TEncSbac::codeSPS( TComSPS* pcSPS )
+#else
 #if H_3D
 Void TEncSbac::codeSPS( TComSPS* pcSPS, Int viewIndex, Bool depthFlag )
 #else
 Void TEncSbac::codeSPS( TComSPS* pcSPS )
+#endif
 #endif
 {
@@ -626,5 +634,9 @@
 #if H_3D_QTLPC
   TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool    bLimQtPredFlag = pcCU->getPic()->getSlice(0)->getQtPredFlag();
+#else
   Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
+#endif
   TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
   Bool bDepthMapDetect   = (pcTexture != NULL);
@@ -999,5 +1011,9 @@
 
   TComVPS *vps           = pcCU->getPic()->getSlice(0)->getVPS();
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Bool    bLimQtPredFlag = pcCU->getPic()->getSlice(0)->getQtPredFlag(); 
+#else
   Bool    bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId());
+#endif
   TComPic *pcTexture     = pcCU->getSlice()->getTexturePic();
   Bool bDepthMapDetect   = (pcTexture != NULL);
@@ -1060,5 +1076,9 @@
     dir[j] = pcCU->getLumaIntraDir( absPartIdx+partOffset*j );
 #if H_3D_DIM
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( pcCU->getSlice()->getIntraSdcWedgeFlag() ||  pcCU->getSlice()->getIntraContourFlag() )
+#else
     if( pcCU->getSlice()->getVpsDepthModesFlag() ||  pcCU->getSlice()->getIVPFlag() )
+#endif
     {
       codeIntraDepth( pcCU, absPartIdx+partOffset*j );
@@ -1206,5 +1226,9 @@
     }
     //mode coding
+#if HHI_TOOL_PARAMETERS_I2_J0107
+    if( pcCU->getSlice()->getIntraSdcWedgeFlag() && pcCU->getSlice()->getIntraContourFlag())
+#else
     if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag())
+#endif
     {
       m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );
@@ -2305,5 +2329,9 @@
   PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx );
   AOF( ePartSize == SIZE_2NxN || ePartSize == SIZE_Nx2N );
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  AOF( pcCU->getSlice()->getDepthBasedBlkPartFlag() ); 
+#else
   AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );
+#endif
   AOF( !pcCU->getSlice()->getIsDepth() );
   
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSbac.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSbac.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSbac.h	(revision 1106)
@@ -94,8 +94,12 @@
 
   Void  codeVPS                 ( TComVPS* pcVPS );
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  Void  codeSPS                 ( TComSPS* pcSPS     );
+#else
 #if !H_3D
   Void  codeSPS                 ( TComSPS* pcSPS     );
 #else
   Void  codeSPS                 ( TComSPS* pcSPS, Int viewIndex, Bool depthFlag );
+#endif
 #endif
   Void  codePPS                 ( TComPPS* pcPPS     );
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1106)
@@ -3117,10 +3117,14 @@
     }
 #endif
-
+    
 #if H_3D_DIM
     //===== determine set of depth intra modes to be tested =====
     if( m_pcEncCfg->getIsDepth() && uiWidth >= DIM_MIN_SIZE && uiWidth <= DIM_MAX_SIZE && uiWidth == uiHeight )
     {
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      if( bOnlyIVP && pcCU->getSlice()->getIntraContourFlag() )
+#else
       if( bOnlyIVP && m_pcEncCfg->getUseIVP() )
+#endif
       {
         TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
@@ -3144,5 +3148,9 @@
 
 #if H_3D_DIM_DMM
+#if HHI_TOOL_PARAMETERS_I2_J0107
+      if( ( ( m_pcEncCfg->getUseDMM() &&  pcCU->getSlice()->getIntraSdcWedgeFlag() )  || pcCU->getSlice()->getIntraContourFlag() )
+#else
       if( ( m_pcEncCfg->getUseDMM() || m_pcEncCfg->getUseIVP() )
+#endif
 #if H_3D_FAST_DEPTH_INTRA
          && (uiRdModeList[0] != PLANAR_IDX || varCU >= varThreshold)
@@ -3151,15 +3159,27 @@
       {
         UInt uiStart, uiEnd;
+#if HHI_TOOL_PARAMETERS_I2_J0107
+        if( ( m_pcEncCfg->getUseDMM() &&  pcCU->getSlice()->getIntraSdcWedgeFlag() ) &&  pcCU->getSlice()->getIntraContourFlag() )
+#else
         if( m_pcEncCfg->getUseDMM() &&  m_pcEncCfg->getUseIVP() )
+#endif
         {
           uiStart = 0;
           uiEnd   = 2;
         }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+        else if( ( m_pcEncCfg->getUseDMM() &&  pcCU->getSlice()->getIntraSdcWedgeFlag() ) )
+#else
         else if( m_pcEncCfg->getUseDMM() )
+#endif
         {
           uiStart = 0;
           uiEnd   = 1;
         }
+#if HHI_TOOL_PARAMETERS_I2_J0107
+        else if( pcCU->getSlice()->getIntraContourFlag() )
+#else
         else if( m_pcEncCfg->getUseIVP() )
+#endif
         {
           uiStart = 1;
@@ -3299,5 +3319,5 @@
 #if H_3D_DIM_SDC
 #if H_3D_FAST_INTRA_SDC
-      Bool bTestSDC = ( m_pcEncCfg->getUseSDC() && pcCU->getSDCAvailable(uiPartOffset) && uiMode >= numModesForFullRD);
+      Bool bTestSDC = ( ( m_pcEncCfg->getUseSDC() &&  pcCU->getSlice()->getIntraSdcWedgeFlag() ) && pcCU->getSDCAvailable(uiPartOffset) && uiMode >= numModesForFullRD);
 #else
       Bool bTestSDC = ( m_pcEncCfg->getUseSDC() && pcCU->getSDCAvailable(uiPartOffset) );
@@ -5319,4 +5339,7 @@
 #endif
 #if H_3D_INTER_SDC
+#if HHI_TOOL_PARAMETERS_I2_J0107  
+   pcPatternKey->setSDCMRSADFlag( pcCU->getSlice()->getInterSdcFlag() );
+#else
   if ( pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) )
   {
@@ -5327,4 +5350,5 @@
     pcPatternKey->setSDCMRSADFlag( false );
   }
+#endif
 #endif
 
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSlice.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 1106)
@@ -215,4 +215,9 @@
   rpcSlice->setPicOutputFlag( true );
   rpcSlice->setPOC( pocCurr );
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  rpcSlice->init3dToolParameters(); 
+#endif
+#endif
 #if H_3D_IC
   rpcSlice->setApplyIC( false );
@@ -608,4 +613,7 @@
   rpcSlice->setSliceSegmentArgument ( m_pcCfg->getSliceSegmentArgument() );
 #if H_3D_IV_MERGE
+#if HHI_TOOL_PARAMETERS_I2_J0107
+  rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( ( rpcSlice->getMpiFlag( ) || rpcSlice->getIvMvPredFlag( ) ) ? 1 : 0 ));
+#else
   if(rpcSlice->getIsDepth())
   {
@@ -616,4 +624,5 @@
     rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ? 1 : 0 ) );
   }
+#endif
 #else
   rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()        );
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncTop.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncTop.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncTop.cpp	(revision 1106)
@@ -534,5 +534,5 @@
 Void TEncTop::encode(Bool flush, TComPicYuv* pcPicYuvOrg, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsOut, Int& iNumEncoded, bool isTff, Int gopId )
 {
-  assert( 0 ); // Field coding and multiview need to be furhter harmonized. 
+  assert( 0 ); // Field coding and multiview need to be further harmonized. 
 }
 #else
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncTop.h
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncTop.h	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibEncoder/TEncTop.h	(revision 1106)
@@ -270,4 +270,9 @@
   Void                    setIvPicLists         ( TComPicLists* picLists) { m_ivPicLists = picLists; }
 #endif
+#if HHI_TOOL_PARAMETERS_I2_J0107
+#if H_3D
+  Void                    setSps3dExtension     ( TComSps3dExtension sps3dExtension ) { m_cSPS.setSps3dExtension( sps3dExtension );  };
+#endif
+#endif
 #if H_3D_IC
   Void                    setICEnableCandidate         ( Int* ICEnableCandidate) { m_aICEnableCandidate = ICEnableCandidate; }
Index: branches/HTM-12.2-dev2-HHI/source/Lib/TLibExtractor/TExtrTop.cpp
===================================================================
--- branches/HTM-12.2-dev2-HHI/source/Lib/TLibExtractor/TExtrTop.cpp	(revision 1104)
+++ branches/HTM-12.2-dev2-HHI/source/Lib/TLibExtractor/TExtrTop.cpp	(revision 1106)
@@ -74,5 +74,9 @@
 #if H_3D
      Int layerIdInVPS = m_cVPS.getLayerIdInVps( uiLayerId ); 
+#if HHI_TOOL_PARAMETERS_I2_J0107
+     m_cEntropyDecoder   .decodeSPS( &cSPS );
+#else
      m_cEntropyDecoder   .decodeSPS( &cSPS, m_cVPS.getViewIndex( layerIdInVPS ), ( m_cVPS.getDepthId( layerIdInVPS ) == 1 ) );
+#endif
 #else
      m_cEntropyDecoder   .decodeSPS( &cSPS );
