Index: trunk/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 2)
+++ trunk/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 5)
@@ -1,2 +1,35 @@
+/* The copyright in this software is being made available under the BSD
+ * License, included below. This software may be subject to other third party
+ * and contributor rights, including patent rights, and no such rights are
+ * granted under this license.
+ *
+ * Copyright (c) 2010-2011, ISO/IEC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *  * Neither the name of the ISO/IEC nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 
 
@@ -39,7 +72,7 @@
 {
   m_aidQP = NULL;
-//GT VSO
+#if HHI_VSO
   m_aaiERViewRefLutInd.resize( MAX_INPUT_VIEW_NUM );
-//GT VSO end
+#endif
 }
 
@@ -89,6 +122,8 @@
     free (m_pchBaseViewCameraNumbers);
 
+#if HHI_VSO
   if (  m_pchVSOConfig != NULL)
     free (  m_pchVSOConfig );
+#endif
 
 }
@@ -172,5 +207,5 @@
 
   /* Coding structure paramters */
-  ("CodecPictureStoreSize,cpss",  m_uiCodedPictureStoreSize, 16u, "Size of coded picture Buffer")
+  ("CodedPictureStoreSize,cpss",  m_uiCodedPictureStoreSize, 16u, "Size of coded picture Buffer")
 #if DCM_DECODING_REFRESH
   ("DecodingRefreshType,-dr",m_iDecodingRefreshType, 0, "intra refresh, (0:none 1:CDR 2:IDR)")
@@ -178,5 +213,5 @@
   ("GOPSize,g",      m_iGOPSize,      1, "GOP size of temporal structure")
   ("RateGOPSize,-rg",m_iRateGOPSize, -1, "GOP size of hierarchical QP assignment (-1: implies inherit GOPSize value)")
-#if !SB_NO_LowDelayCoding
+#if !HHI_NO_LowDelayCoding
   ("LowDelayCoding",         m_bUseLDC,             false, "low-delay mode")
 #endif
@@ -221,18 +256,19 @@
   ("LoopFilterBetaOffset", m_iLoopFilterBetaOffset, 0 )
 
-//GT campara
+  /* Camera Paremetes */
   ("CameraParameterFile,cpf", m_pchCameraParameterFile,    (Char *) 0, "Camera Parameter File Name")
   ("BaseViewCameraNumbers" ,  m_pchBaseViewCameraNumbers,  (Char *) 0, "Numbers of base views")
-//GT campara end
+
 
     /* View Synthesis Optimization */
-//GT VSO
+
+#if HHI_VSO
   ("VSOConfig",                       m_pchVSOConfig            , (Char *) 0    , "VSO configuration")
     ("VSO",                             m_bUseVSO                 , false         , "Use VSO" )
     // GT: For development, will be removed later
   ("VSOMode",                         m_uiVSOMode               , (UInt)   4    , "VSO Mode")
-  ("LambdaScaleVSO",                  m_dLambdaScaleVSO         , (Double) 0.6  , "Lambda Scaling for VSO")
+  ("LambdaScaleVSO",                  m_dLambdaScaleVSO         , (Double) 0.5  , "Lambda Scaling for VSO")
     ("ForceLambdaScaleVSO",             m_bForceLambdaScaleVSO    , false         , "Force using Lambda Scale VSO also in non-VSO-Mode")
-#if RDO_DIST_INT
+#if HHI_VSO_DIST_INT
   ("AllowNegDist",                    m_bAllowNegDist           , true         , "Allow negative Distortion in VSO")
 #endif
@@ -242,5 +278,5 @@
     ("VSERViewReferences_%d,evr_%d"  ,  m_aaiERViewRefInd         , vector<Int>() , MAX_INPUT_VIEW_NUM, "Numbers of external virtual reference views to be used for this view")
     ("VSBaseViewReferences_%d,bvr_%d",  m_aaiBaseViewRefInd       , vector<Int>() , MAX_INPUT_VIEW_NUM, "Numbers of external virtual reference views to be used for this view")
-//GT VSO end
+#endif
 
   /* Coding tools */
@@ -281,24 +317,30 @@
   ("FEN", m_bUseFastEnc, false, "fast encoder setting")
 
-#if HHI_DMM_INTRA
-  ("DMM", m_bUseDepthModelModes, false, "add depth modes intra")
-#endif
+#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
+  ("DMM", m_bUseDMM, false, "add depth modes intra")
+#endif
+#if HHI_MPI
   ("MVI", m_bUseMVI, false, "use motion vector inheritance for depth map coding")
+#endif
 
   /* Multiview tools */
+#if DEPTH_MAP_GENERATION
   ("PredDepthMapGen",  m_uiPredDepthMapGeneration, (UInt)0, "generation of prediction depth maps for motion data prediction" )
+#endif
+#if HHI_INTER_VIEW_MOTION_PRED
   ("MultiviewMvPred",  m_uiMultiviewMvPredMode,    (UInt)0, "usage of predicted depth maps" )
   ("MultiviewMvRegMode",        m_uiMultiviewMvRegMode,         (UInt)0, "regularization mode for multiview motion vectors" )
   ("MultiviewMvRegLambdaScale", m_dMultiviewMvRegLambdaScale, (Double)0, "lambda scale for multiview motion vector regularization" )
+#endif
+#if HHI_INTER_VIEW_RESIDUAL_PRED
   ("MultiviewResPred", m_uiMultiviewResPredMode,   (UInt)0, "usage of inter-view residual prediction" )
-
-  ("OmitUnusedBlocks", m_bOmitUnusedBlocks, false, "omit blocks not used for rendering")
+#endif
 
   ("QpChangeFrame", m_iQpChangeFrame, PicOrderCnt(0), "start frame for QP change")
   ("QpChangeOffsetVideo", m_iQpChangeOffsetVideo, 0, "QP change offset for video")
   ("QpChangeOffsetDepth", m_iQpChangeOffsetDepth, 0, "QP change offset for depth")
-#if SB_INTERVIEW_SKIP
+#if HHI_INTERVIEW_SKIP
   ("InterViewSkip",  m_uiInterViewSkip,    (UInt)0, "usage of interview skip" )
-#if SB_INTERVIEW_SKIP_LAMBDA_SCALE
+#if HHI_INTERVIEW_SKIP_LAMBDA_SCALE
   ("InterViewSkipLambdaScale",  m_dInterViewSkipLambdaScale,    (Double)8, "lambda scale for interview skip" )
 #endif
@@ -387,15 +429,16 @@
 //GT QP Depth end
 
-//GT VSO
+#if HHI_VSO
   m_bUseVSO = m_bUseVSO && m_bUsingDepthMaps && (m_uiVSOMode != 0);
-//GT VSO end
+#endif
 
   xCleanUpVectors();
 
+#if HHI_VSO
   if ( m_abUseALF .size() < 2)
     m_abUseALF .push_back( m_bUseVSO ? false : m_abUseALF[0]  );
 
   if ( m_abUseRDOQ.size() < 2)
-    m_abUseRDOQ.push_back( m_bUseVSO ? false : m_abUseRDOQ[0] );
+    m_abUseRDOQ.push_back( m_bUseVSO ? true : m_abUseRDOQ[0] );
 
   if ( m_abLoopFilterDisable.size() < 2)
@@ -404,6 +447,19 @@
   if (m_abUseSAO.size() < 2)
     m_abUseSAO.push_back            ( m_bUseVSO ? false : m_abUseSAO[0] );
-
-//GT VSO
+#else
+  if ( m_abUseALF .size() < 2)
+    m_abUseALF .push_back( m_abUseALF[0]  );
+
+  if ( m_abUseRDOQ.size() < 2)
+    m_abUseRDOQ.push_back( m_abUseRDOQ[0] );
+
+  if ( m_abLoopFilterDisable.size() < 2)
+    m_abLoopFilterDisable.push_back( m_abLoopFilterDisable[0]  );
+
+  if (m_abUseSAO.size() < 2)
+    m_abUseSAO.push_back            ( m_abUseSAO[0] );
+#endif
+
+#if HHI_VSO
   if ( m_bUseVSO )
   {
@@ -423,5 +479,5 @@
     }
   }
-//GT VSO end
+#endif
 
   // set global variables
@@ -429,4 +485,5 @@
 
   // read and check camera parameters
+#if HHI_VSO
 if ( m_bUseVSO && m_uiVSOMode == 4)
 {
@@ -468,6 +525,19 @@
     NULL,
     LOG2_DISP_PREC_LUT );
-
-}
+}
+#else
+  m_cCameraData     .init     ( (UInt)m_iNumberOfViews,
+    m_uiInputBitDepth,
+    (UInt)m_iCodedCamParPrecision,
+    m_FrameSkip,
+    (UInt)m_iFrameToBeEncoded,
+    m_pchCameraParameterFile,
+    m_pchBaseViewCameraNumbers,
+    NULL,
+    NULL,
+    LOG2_DISP_PREC_LUT );
+#endif
+
+
   // check validity of input parameters
   xCheckParameter();
@@ -558,6 +628,9 @@
 
   xConfirmPara    ( m_iCodedCamParPrecision < 0 || m_iCodedCamParPrecision > 5,       "CodedCamParsPrecision must be in range of 0..5" );
+#if DEPTH_MAP_GENERATION
   xConfirmPara    ( m_uiPredDepthMapGeneration > 3,                                   "PredDepthMapGen must be less than or equal to 3" );
   xConfirmPara    ( m_uiPredDepthMapGeneration >= 2 && !m_bUsingDepthMaps,            "PredDepthMapGen >= 2 requires CodeDepthMaps = 1" );
+#endif
+#if HHI_INTER_VIEW_MOTION_PRED
   xConfirmPara    ( m_uiMultiviewMvPredMode > 7,                                      "MultiviewMvPred must be less than or equal to 7" );
   xConfirmPara    ( m_uiMultiviewMvPredMode > 0 && m_uiPredDepthMapGeneration == 0 ,  "MultiviewMvPred > 0 requires PredDepthMapGen > 0" );
@@ -568,11 +641,13 @@
     xConfirmPara  ( Int( m_pchDepthInputFileList.size() ) < m_iNumberOfViews,         "MultiviewMvRegMode > 0 requires the presence of input depth maps" );
   }
+#endif
+#if HHI_INTER_VIEW_RESIDUAL_PRED
   xConfirmPara    ( m_uiMultiviewResPredMode > 1,                                     "MultiviewResPred must be less than or equal to 1" );
   xConfirmPara    ( m_uiMultiviewResPredMode > 0 && m_uiPredDepthMapGeneration == 0 , "MultiviewResPred > 0 requires PredDepthMapGen > 0" );
-
-#if SB_INTERVIEW_SKIP
+#endif
+
+#if HHI_INTERVIEW_SKIP
   xConfirmPara    ( m_uiInterViewSkip > 1,                                        "RenderingSkipMode > 1 not supported" );
   xConfirmPara    ( m_uiInterViewSkip > 0 && !m_bUsingDepthMaps,                  "RenderingSkipMode > 0 requires CodeDepthMaps = 1" );
-  xConfirmPara    ( m_uiInterViewSkip > 0 && !m_bOmitUnusedBlocks,                "RenderingSkipMode > 0 requires OmitUnusedBlocks = 1" );
 #endif
   if( m_bUsingDepthMaps )
@@ -581,5 +656,5 @@
     xConfirmPara  ( Int( m_pchDepthReconFileList.size() ) < m_iNumberOfViews,         "Number of DepthReconFiles must be greater than or equal to NumberOfViews" );
 
-//GT VSO
+#if HHI_VSO
     if( m_bUseVSO )
     {
@@ -592,9 +667,9 @@
       xConfirmPara( Int( m_pchERRefFileList .size() ) < m_iNumberOfExternalRefs,     "Number of ERRefFileFiles  must be greater than or equal to NumberOfExternalRefs" );
     }
-//GT VSO end
+#endif
   }
 
 #if DCM_COMB_LIST
-#if !SB_NO_LowDelayCoding
+#if !HHI_NO_LowDelayCoding
   xConfirmPara( m_bUseLComb==false && m_bUseLDC==false,         "LComb can only be 0 if LowDelayCoding is 1" );
 #else
@@ -659,10 +734,10 @@
   xCleanUpVector( m_pchDepthReconFileList,  (char*)0 );
 
-//GT VSO
+#if HHI_VSO
   if ( m_bUseVSO)
   {
     xCleanUpVector( m_pchERRefFileList,       (char*)0 );
   }
-//GT VSO end
+#endif
 }
 
@@ -784,5 +859,5 @@
   printf("Coded Camera Param. Precision: %d\n", m_iCodedCamParPrecision);
 
-//GT VSO
+#if HHI_VSO
   printf("Force use of Lambda Scale    : %d\n", m_bForceLambdaScaleVSO );
 
@@ -792,11 +867,10 @@
     printf("VSO Mode                     : %d\n",    m_uiVSOMode       );
     printf("VSO Config                   : %s\n",    m_pchVSOConfig    );
-#if RDO_DIST_INT
+#if HHI_VSO_DIST_INT
     printf("VSO Negative Distortion      : %d\n",    m_bAllowNegDist ? 1 : 0);
 #endif
   }
-//GT VSO end
-
-  printf("Omit unused blocks           : %d\n",    (m_bOmitUnusedBlocks )?(1):(0));
+#endif
+
 
   printf("\n");
@@ -849,9 +923,13 @@
   printf("SAO:%d ", (m_abUseSAO [1] ? 1 : 0));
   printf("RDQ:%d ", (m_abUseRDOQ[1] ? 1 : 0));
+#if HHI_VSO
   printf("VSO:%d ", m_bUseVSO             );
-#if HHI_DMM_INTRA
-  printf("DMM:%d ", m_bUseDepthModelModes );
-#endif
+#endif
+#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
+  printf("DMM:%d ", m_bUseDMM );
+#endif
+#if HHI_MPI
   printf("MVI:%d ", m_bUseMVI ? 1 : 0 );
+#endif
   printf("\n");
 
Index: trunk/source/App/TAppEncoder/TAppEncCfg.h
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncCfg.h	(revision 2)
+++ trunk/source/App/TAppEncoder/TAppEncCfg.h	(revision 5)
@@ -1,2 +1,35 @@
+/* The copyright in this software is being made available under the BSD
+ * License, included below. This software may be subject to other third party
+ * and contributor rights, including patent rights, and no such rights are
+ * granted under this license.
+ *
+ * Copyright (c) 2010-2011, ISO/IEC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *  * Neither the name of the ISO/IEC nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 
 
@@ -35,5 +68,5 @@
 
   std::vector<char*>     m_pchERRefFileList;                  ///< virtual external reference view files names
-  
+
   // source specification
   Int       m_iFrameRate;                                     ///< source frame-rates (Hz)
@@ -44,5 +77,5 @@
   Bool      m_bUsePAD;                                        ///< flag for using source padding
   Int       m_aiPad[2];                                       ///< number of padded pixels for width and height
-  
+
   Int       m_iNumberOfViews;                                ///< number Views to Encode
   Bool      m_bUsingDepthMaps ;
@@ -56,5 +89,5 @@
   Int       m_iGOPSize;                                       ///< GOP size of hierarchical structure
   Int       m_iRateGOPSize;                                   ///< GOP size for QP variance
-#if !SB_NO_LowDelayCoding
+#if !HHI_NO_LowDelayCoding
   Bool      m_bUseLDC;                                        ///< flag for using low-delay coding mode
 #endif
@@ -63,11 +96,10 @@
   Bool      m_bLCMod;                                         ///< flag for specifying whether the combined reference list for uni-prediction in B-slices is uploaded explicitly
 #endif
-  // SB
   std::string     m_cInputFormatString ;                            // GOP string
   // coding quality
-//GT QP Depth
+
   std::vector<Double>  m_adQP;                                ///< QP value of key-picture (floating point) [0] video, [1] depth
   std::vector<Int>     m_aiQP;                                ///< QP value of key-picture (integer)
-//GT QP Depth end
+
   Int       m_aiTLayerQPOffset[MAX_TLAYER];                   ///< QP offset corresponding to temporal layer depth
   char*     m_pchdQPFile;                                     ///< QP offset for each slice (initialized from external file)
@@ -75,17 +107,17 @@
   Int       m_iMaxDeltaQP;                                    ///< max. |delta QP|
   UInt      m_uiDeltaQpRD;                                    ///< dQP range for multi-pass slice QP optimization
-  
+
   // coding unit (CU) definition
   UInt      m_uiMaxCUWidth;                                   ///< max. CU width in pixel
   UInt      m_uiMaxCUHeight;                                  ///< max. CU height in pixel
   UInt      m_uiMaxCUDepth;                                   ///< max. CU depth
-  
+
   // transfom unit (TU) definition
   UInt      m_uiQuadtreeTULog2MaxSize;
   UInt      m_uiQuadtreeTULog2MinSize;
-  
+
   UInt      m_uiQuadtreeTUMaxDepthInter;
   UInt      m_uiQuadtreeTUMaxDepthIntra;
-  
+
   // coding tools (bit-depth)
   UInt      m_uiInputBitDepth;                                ///< bit-depth of input file
@@ -95,7 +127,7 @@
 #endif
   UInt      m_uiInternalBitDepth;                             ///< Internal bit-depth (BitDepth+BitIncrement)
-  
+
 #if MTK_SAO
-  vector<Bool> m_abUseSAO; 
+  vector<Bool> m_abUseSAO;
 #endif
 
@@ -105,16 +137,16 @@
   Int       m_iALFEncodePassReduction;                        ///< ALF encoding pass, 0 = original 16-pass, 1 = 1-pass, 2 = 2-pass
 #endif
-  
+
   vector<Bool> m_abLoopFilterDisable;                         ///< flag for using deblocking filter filter [0] - video, [1] - depth
   Int       m_iLoopFilterAlphaC0Offset;                       ///< alpha offset for deblocking filter
   Int       m_iLoopFilterBetaOffset;                          ///< beta offset for deblocking filter
-  
+
   // coding tools (entropy coder)
   Int       m_iSymbolMode;                                    ///< entropy coder mode, 0 = VLC, 1 = CABAC
-  
+
   // coding tools (inter - merge motion partitions)
   Bool      m_bUseMRG;                                        ///< SOPH: flag for using motion partition Merge Mode
-  
-#if LM_CHROMA 
+
+#if LM_CHROMA
   Bool      m_bUseLMChroma;                                  ///< JL: Chroma intra prediction based on luma signal
 #endif
@@ -123,5 +155,5 @@
   Bool      m_bUseRMP;
 #endif
-  
+
   // coding tools (encoder-only parameters)
   Bool      m_bUseSBACRD;                                     ///< flag for using RD optimization based on SBAC
@@ -134,44 +166,51 @@
   Bool      m_bUseFastEnc;                                    ///< flag for using fast encoder setting
 
+#if DEPTH_MAP_GENERATION
   UInt      m_uiPredDepthMapGeneration;                       ///< using of (virtual) depth maps for texture coding
+#endif
+#if HHI_INTER_VIEW_MOTION_PRED
   UInt      m_uiMultiviewMvPredMode;                          ///< usage of predictors for multi-view mv prediction
   UInt      m_uiMultiviewMvRegMode;                           ///< regularization for multiview motion vectors
   Double    m_dMultiviewMvRegLambdaScale;                     ///< lambda scale for multiview motion vectors regularization
+#endif
+#if HHI_INTER_VIEW_RESIDUAL_PRED
   UInt      m_uiMultiviewResPredMode;                         ///< using multiview residual prediction
-
-#if SB_INTERVIEW_SKIP
+#endif
+
+#if HHI_INTERVIEW_SKIP
   UInt      m_uiInterViewSkip;                            ///< usage of interview skip mode ( do not transmit residual)
-#if SB_INTERVIEW_SKIP_LAMBDA_SCALE
+#if HHI_INTERVIEW_SKIP_LAMBDA_SCALE
   Double    m_dInterViewSkipLambdaScale;                 ///< lambda scale for interview skip
 #endif
 #endif
-//GT campara
+
   // camera parameter
   Char*     m_pchCameraParameterFile;                         ///< camera parameter file
   Char*     m_pchBaseViewCameraNumbers;
-  TAppComCamPara m_cCameraData;           
-//GT campara end
+  TAppComCamPara m_cCameraData;
+
   Int       m_iCodedCamParPrecision;                          ///< precision for coding of camera parameters
 
+#if HHI_INTERVIEW_SKIP
   TRenTop  m_cUsedPelsRenderer;                               ///< renderer for used pels map
-
-//GT VSO
-  Char*     m_pchVSOConfig;  
-  Bool      m_bUseVSO;                                    ///< flag for using View Synthesis Optimization  
-
-  //// Used for development by GT, might be removed later  
+#endif
+
+#if HHI_VSO
+  Char*     m_pchVSOConfig;
+  Bool      m_bUseVSO;                                    ///< flag for using View Synthesis Optimization
+
+  //// Used for development by GT, might be removed later
   Double    m_dLambdaScaleVSO;                            ///< Scaling factor for Lambda in VSO mode
   Bool      m_bForceLambdaScaleVSO;                       ///< Use Lambda Scale for depth even if VSO is turned off
-#if RDO_DIST_INT
-  Bool      m_bAllowNegDist;                              ///< Allow negative distortion in VSO 
-#endif  
-  UInt      m_uiVSOMode;                                  ///< Number of VSO Mode, 1 = , 2 = simple, org vs. ren, 3 = simple, ren vs. ren, 4 = full  
+#if HHI_VSO_DIST_INT
+  Bool      m_bAllowNegDist;                              ///< Allow negative distortion in VSO
+#endif
+  UInt      m_uiVSOMode;                                  ///< Number of VSO Mode, 1 = , 2 = simple, org vs. ren, 3 = simple, ren vs. ren, 4 = full
   Int       m_iNumberOfExternalRefs;                      ///< number Virtual External Reference Views
   std::vector< std::vector<Int> > m_aaiBaseViewRefInd;    ///< View numbers of Base View References
   std::vector< std::vector<Int> > m_aaiERViewRefInd;      ///< View numbers of External ViewReferences
   std::vector< std::vector<Int> > m_aaiERViewRefLutInd;   ///< Indices of LUTs used for External View References
-
-//GT VSO end
-  
+#endif
+
   Int       m_iSliceMode;           ///< 0: Disable all Recon slice limits, 1 : Maximum number of largest coding units per slice, 2: Maximum number of bytes in a slice
   Int       m_iSliceArgument;       ///< If m_iSliceMode==1, m_iSliceArgument=max. # of largest coding units. If m_iSliceMode==2, m_iSliceArgument=max. # of bytes.
@@ -188,9 +227,10 @@
   Bool      m_bUseConstrainedIntraPred;                       ///< flag for using constrained intra prediction
 #endif
-#if HHI_DMM_INTRA
-  Bool      m_bUseDepthModelModes;
-#endif
+#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
+  Bool      m_bUseDMM;
+#endif
+#if HHI_MPI
   Bool      m_bUseMVI;  ///< flag for using Motion Vector Inheritance for depth map coding
-  Bool      m_bOmitUnusedBlocks;  ///< flag for not coding blocks not used for rendering
+#endif
 
   PicOrderCnt m_iQpChangeFrame;
@@ -211,5 +251,5 @@
   Void  xPrintParameter ();                                   ///< print configuration values
   Void  xPrintUsage     ();                                   ///< print usage
-  
+
   Void  xCleanUpVectors ();                                   ///< clean up vector sizes
   Void  xInitCameraPars ();                                   ///< init camera parameters
@@ -221,5 +261,5 @@
 
   // util
-  Void  xAppendToFileNameEnd( Char* pchInputFileName, const Char* pchStringToAppend, Char* & rpchOutputFileName); 
+  Void  xAppendToFileNameEnd( Char* pchInputFileName, const Char* pchStringToAppend, Char* & rpchOutputFileName);
   Bool  xConfirmParameter(Bool bflag, const char* message);
 
@@ -227,16 +267,18 @@
   template <class T> Void xCleanUpVector( std::vector<T>& rcVec, const T& rcInvalid );
 
+#if HHI_VSO
   // Ren Model String
-  TRenModSetupStrParser       m_cRenModStrParser; 
+  TRenModSetupStrParser       m_cRenModStrParser;
+#endif
 public:
 
   TAppEncCfg();
   virtual ~TAppEncCfg();
-  
+
 public:
   Void  create    ();                                         ///< create option handling class
   Void  destroy   ();                                         ///< destroy option handling class
   Bool  parseCfg  ( Int argc, Char* argv[] );                 ///< parse configuration file to fill member variables
-  
+
 };// END CLASS DEFINITION TAppEncCfg
 
Index: trunk/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncTop.cpp	(revision 2)
+++ trunk/source/App/TAppEncoder/TAppEncTop.cpp	(revision 5)
@@ -1,2 +1,35 @@
+/* The copyright in this software is being made available under the BSD
+ * License, included below. This software may be subject to other third party
+ * and contributor rights, including patent rights, and no such rights are
+ * granted under this license.
+ *
+ * Copyright (c) 2010-2011, ISO/IEC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *  * Neither the name of the ISO/IEC nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 
 
@@ -18,7 +51,7 @@
 TAppEncTop::TAppEncTop()
 {
-//GT VSO
+#if HHI_VSO
   m_iLastFramePutInERViewBuffer = -1;
-//GT VSO end
+#endif
 }
 
@@ -55,5 +88,4 @@
     m_acTEncTopList[iViewIdx]->setRateGOPSize                  ( m_iRateGOPSize );
 
-//  // SB
     m_acTEncTopList[iViewIdx]->setSeqStructure                              ( m_cInputFormatString );
 
@@ -79,10 +111,10 @@
     m_acTEncTopList[iViewIdx]->setMaxDeltaQP                   ( m_iMaxDeltaQP  );
 
+#if HHI_VSO
     //====== VSO =========
-//GT VSO
     m_acTEncTopList[iViewIdx]->setForceLambdaScaleVSO          ( false );
     m_acTEncTopList[iViewIdx]->setLambdaScaleVSO               ( 1     );
     m_acTEncTopList[iViewIdx]->setVSOMode                      ( 0     );
-//GT VSO end
+#endif
 
     //====== Tool list ========
@@ -109,7 +141,7 @@
     m_acTEncTopList[iViewIdx]->setUseFastEnc                   ( m_bUseFastEnc  );
 
-//GT VSO
+#if HHI_VSO
     m_acTEncTopList[iViewIdx]->setUseVSO                       ( false ); //GT: might be enabled later for VSO Mode 4
-//GT VSO end
+#endif
 
     m_acTEncTopList[iViewIdx]->setViewId                       ( (UInt)iViewIdx );
@@ -120,17 +152,24 @@
     m_acTEncTopList[iViewIdx]->setCodedScale                   ( m_cCameraData.getCodedScale             () );
     m_acTEncTopList[iViewIdx]->setCodedOffset                  ( m_cCameraData.getCodedOffset            () );
+#if DEPTH_MAP_GENERATION
     m_acTEncTopList[iViewIdx]->setPredDepthMapGeneration       ( m_uiPredDepthMapGeneration );
+    m_acTEncTopList[iViewIdx]->setPdmPrecision                 ( (UInt)m_cCameraData.getPdmPrecision     () );
+    m_acTEncTopList[iViewIdx]->setPdmScaleNomDelta             (       m_cCameraData.getPdmScaleNomDelta () );
+    m_acTEncTopList[iViewIdx]->setPdmOffset                    (       m_cCameraData.getPdmOffset        () );
+#endif
+#if HHI_INTER_VIEW_MOTION_PRED
     m_acTEncTopList[iViewIdx]->setMultiviewMvPredMode          ( m_uiMultiviewMvPredMode );
     m_acTEncTopList[iViewIdx]->setMultiviewMvRegMode           ( iViewIdx ? m_uiMultiviewMvRegMode       : 0   );
     m_acTEncTopList[iViewIdx]->setMultiviewMvRegLambdaScale    ( iViewIdx ? m_dMultiviewMvRegLambdaScale : 0.0 );
-    m_acTEncTopList[iViewIdx]->setPdmPrecision                 ( (UInt)m_cCameraData.getPdmPrecision     () );
-    m_acTEncTopList[iViewIdx]->setPdmScaleNomDelta             (       m_cCameraData.getPdmScaleNomDelta () );
-    m_acTEncTopList[iViewIdx]->setPdmOffset                    (       m_cCameraData.getPdmOffset        () );
+#endif
+#if HHI_INTER_VIEW_RESIDUAL_PRED
     m_acTEncTopList[iViewIdx]->setMultiviewResPredMode         ( m_uiMultiviewResPredMode );
-
-#if SB_INTERVIEW_SKIP
+#endif
+
+
+#if HHI_INTERVIEW_SKIP
     m_acTEncTopList[iViewIdx]->setInterViewSkip            ( iViewIdx ? m_uiInterViewSkip : 0 );
-#if SB_INTERVIEW_SKIP_LAMBDA_SCALE
-    m_acTEncTopList[iViewIdx]->setInterViewSkipLambdaScale ( iViewIdx ? m_dInterViewSkipLambdaScale : 1 );
+#if HHI_INTERVIEW_SKIP_LAMBDA_SCALE
+    m_acTEncTopList[iViewIdx]->setInterViewSkipLambdaScale ( iViewIdx ? (Int)m_dInterViewSkipLambdaScale : 1 );
 #endif
 #endif
@@ -147,6 +186,6 @@
     m_acTEncTopList[iViewIdx]->setUseRoundingControlBipred(m_useRoundingControlBipred);
 #endif
-#if HHI_DMM_INTRA
-    m_acTEncTopList[iViewIdx]->setUseDepthModelModes( false );
+#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
+    m_acTEncTopList[iViewIdx]->setUseDMM( false );
 #endif
 #if CONSTRAINED_INTRA_PRED
@@ -175,9 +214,9 @@
     m_acTEncTopList[iViewIdx]->setUseSAO               ( m_abUseSAO[0]     );
 #endif
+#if HHI_MPI
     m_acTEncTopList[iViewIdx]->setUseMVI( false );
+#endif
 
     m_acTEncTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled);
-    m_acTEncTopList[iViewIdx]->setOmitUnusedBlocks          ( m_bOmitUnusedBlocks && (iViewIdx != 0) );
-
     m_acTEncTopList[iViewIdx]->setQpChangeFrame( m_iQpChangeFrame );
     m_acTEncTopList[iViewIdx]->setQpChangeOffsetVideo( m_iQpChangeOffsetVideo );
@@ -187,10 +226,10 @@
   {
 
-//GT VSO
+#if HHI_VSO
     for (Int iViewIdx=0; iViewIdx<m_iNumberOfExternalRefs; iViewIdx++)
     {
         m_acTVideoIOYuvERFileList.push_back(new TVideoIOYuv);
     }
-//GT VSO end
+#endif
 
     for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++)
@@ -219,5 +258,4 @@
       m_acTEncDepthTopList[iViewIdx]->setRateGOPSize                  ( m_iRateGOPSize );
 
-//  // SB
       m_acTEncDepthTopList[iViewIdx]->setSeqStructure                              ( m_cInputFormatString );
 
@@ -266,13 +304,13 @@
       m_acTEncDepthTopList[iViewIdx]->setUseFastEnc                   ( m_bUseFastEnc  );
 
-//GT VSO
+#if HHI_VSO
       m_acTEncDepthTopList[iViewIdx]->setUseVSO                       ( m_bUseVSO      ); //GT: might be enabled/disabled later for VSO Mode 4
       m_acTEncDepthTopList[iViewIdx]->setForceLambdaScaleVSO          ( m_bForceLambdaScaleVSO );
       m_acTEncDepthTopList[iViewIdx]->setLambdaScaleVSO               ( m_dLambdaScaleVSO );
-#if RDO_DIST_INT
+#if HHI_VSO_DIST_INT
       m_acTEncDepthTopList[iViewIdx]->setAllowNegDist                 ( m_bAllowNegDist );
 #endif
       m_acTEncDepthTopList[iViewIdx]->setVSOMode                      ( m_uiVSOMode );
-//GT VSO end
+#endif
 
       m_acTEncDepthTopList[iViewIdx]->setViewId                       ( (UInt)iViewIdx );
@@ -283,13 +321,19 @@
       m_acTEncDepthTopList[iViewIdx]->setCodedScale                   ( 0 );
       m_acTEncDepthTopList[iViewIdx]->setCodedOffset                  ( 0 );
+#if DEPTH_MAP_GENERATION
       m_acTEncDepthTopList[iViewIdx]->setPredDepthMapGeneration       ( 0 );
+#endif
+#if HHI_INTER_VIEW_MOTION_PRED
       m_acTEncDepthTopList[iViewIdx]->setMultiviewMvPredMode          ( 0 );
       m_acTEncDepthTopList[iViewIdx]->setMultiviewMvRegMode           ( 0 );
       m_acTEncDepthTopList[iViewIdx]->setMultiviewMvRegLambdaScale    ( 0.0 );
+#endif
+#if HHI_INTER_VIEW_RESIDUAL_PRED
       m_acTEncDepthTopList[iViewIdx]->setMultiviewResPredMode         ( 0 );
-
-#if SB_INTERVIEW_SKIP
+#endif
+
+#if HHI_INTERVIEW_SKIP
       m_acTEncDepthTopList[iViewIdx]->setInterViewSkip            ( 0 );
-#if SB_INTERVIEW_SKIP_LAMBDA_SCALE
+#if HHI_INTERVIEW_SKIP_LAMBDA_SCALE
       m_acTEncDepthTopList[iViewIdx]->setInterViewSkipLambdaScale ( 1 );
 #endif
@@ -307,6 +351,6 @@
       m_acTEncDepthTopList[iViewIdx]->setUseRoundingControlBipred(m_useRoundingControlBipred);
 #endif
-#if HHI_DMM_INTRA
-      m_acTEncDepthTopList[iViewIdx]->setUseDepthModelModes( m_bUseDepthModelModes );
+#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
+      m_acTEncDepthTopList[iViewIdx]->setUseDMM( m_bUseDMM );
 #endif
 #if CONSTRAINED_INTRA_PRED
@@ -335,8 +379,9 @@
       m_acTEncDepthTopList[iViewIdx]->setUseSAO               ( m_abUseSAO[1]     );
 #endif
+#if HHI_MPI
       m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
+#endif
 
       m_acTEncDepthTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled);
-      m_acTEncDepthTopList[iViewIdx]->setOmitUnusedBlocks        ( m_bOmitUnusedBlocks && (iViewIdx != 0) ); 
 
       m_acTEncDepthTopList[iViewIdx]->setQpChangeFrame( m_iQpChangeFrame );
@@ -345,4 +390,5 @@
     }
   }
+#if HHI_INTER_VIEW_MOTION_PRED
   else if( m_uiMultiviewMvRegMode )
   {
@@ -352,13 +398,11 @@
     }
   }
-
-//GT VSO
+#endif
+
+#if HHI_VSO
   if ( m_bUseVSO )
   {
     if ( m_uiVSOMode == 4 )
-    {      
-#if GERHARD_RM_DEBUG_MM
-      m_cMMCheckModel .create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, m_iSourceHeight, LOG2_DISP_PREC_LUT, 0 );
-#endif
+    {
       m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, m_iSourceHeight, LOG2_DISP_PREC_LUT, 0 );
 
@@ -367,20 +411,17 @@
         for (Int iContent = 0; iContent < 2; iContent++ )
         {
-          Int iNumOfModels   = m_cRenModStrParser.getNumOfModelsForView(iViewNum, iContent); 
-          Bool bUseVSO = (iNumOfModels != 0); 
-
-          TEncTop* pcEncTop = ( iContent == 0 ) ? m_acTEncTopList[iViewNum] : m_acTEncDepthTopList[iViewNum]; 
-          pcEncTop->setUseVSO( bUseVSO ); 
-          pcEncTop->getRdCost()->setRenModel( bUseVSO ? &m_cRendererModel : NULL ); 
-          
+          Int iNumOfModels   = m_cRenModStrParser.getNumOfModelsForView(iViewNum, iContent);
+          Bool bUseVSO = (iNumOfModels != 0);
+
+          TEncTop* pcEncTop = ( iContent == 0 ) ? m_acTEncTopList[iViewNum] : m_acTEncDepthTopList[iViewNum];
+          pcEncTop->setUseVSO( bUseVSO );
+          pcEncTop->getRdCost()->setRenModel( bUseVSO ? &m_cRendererModel : NULL );
+
           for (Int iCurModel = 0; iCurModel < iNumOfModels; iCurModel++ )
           {
-            Int iModelNum; Int iLeftViewNum; Int iRightViewNum; Int iDump; Int iOrgRefNum; Int iBlendMode; 
-
-            m_cRenModStrParser.getSingleModelData  ( iViewNum, iContent, iCurModel, iModelNum, iBlendMode, iLeftViewNum, iRightViewNum, iOrgRefNum, iDump ) ; 
-            m_cRendererModel  .createSingleModel   ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode ); 
-#if GERHARD_RM_DEBUG_MM
-            m_cMMCheckModel   .createSingleModel   ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode ); 
-#endif
+            Int iModelNum; Int iLeftViewNum; Int iRightViewNum; Int iDump; Int iOrgRefNum; Int iBlendMode;
+
+            m_cRenModStrParser.getSingleModelData  ( iViewNum, iContent, iCurModel, iModelNum, iBlendMode, iLeftViewNum, iRightViewNum, iOrgRefNum, iDump ) ;
+            m_cRendererModel  .createSingleModel   ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode );
           }
         }
@@ -391,8 +432,10 @@
       m_cRendererTop.init(m_iSourceWidth, m_iSourceHeight,true,0,0,true, 0,0,0,0,0,0,0,1,0,0 );  //GT: simplest configuration
     }
-
-  }
-//GT VSO end
-  m_cUsedPelsRenderer.init(m_iSourceWidth, m_iSourceHeight, true, 0, LOG2_DISP_PREC_LUT, true, 0, 0, 0, 0, 0, 6, 4, 1, 0, 6 ); 
+  }
+#endif
+
+#if HHI_INTERVIEW_SKIP
+  m_cUsedPelsRenderer.init(m_iSourceWidth, m_iSourceHeight, true, 0, LOG2_DISP_PREC_LUT, true, 0, 0, 0, 0, 0, 6, 4, 1, 0, 6 );
+#endif
 }
 
@@ -421,4 +464,5 @@
       m_acTEncDepthTopList[iViewIdx]->create();
     }
+#if HHI_INTER_VIEW_MOTION_PRED
     else if( m_uiMultiviewMvRegMode )
     {
@@ -426,12 +470,13 @@
       m_acTVideoIOYuvDepthInputFileList[iViewIdx]->skipFrames(m_FrameSkip, m_iSourceWidth, m_iSourceHeight);
     }
-  }
-
-//GT VSO
+#endif
+  }
+
+#if HHI_VSO
   for(Int iViewIdx=0; iViewIdx < m_iNumberOfExternalRefs; iViewIdx++)
   {
     m_acTVideoIOYuvERFileList[iViewIdx]->open( m_pchERRefFileList[iViewIdx], false, m_uiInputBitDepth, m_uiInternalBitDepth ); // read mode
   }
-//GT VSO end
+#endif
 }
 
@@ -441,5 +486,5 @@
   m_cTVideoIOBitsFile.closeBits();
 
-//GT VSO
+#if HHI_VSO
   for ( Int iViewIdx = 0; iViewIdx < m_iNumberOfExternalRefs; iViewIdx++ )
   {
@@ -448,5 +493,5 @@
     m_acTVideoIOYuvERFileList[iViewIdx] = 0;
   };
-//GT VSO end
+#endif
 
   for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++)
@@ -563,8 +608,10 @@
     pcDepthPicYuvOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth );
   }
+#if HHI_INTER_VIEW_MOTION_PRED
   if( m_uiMultiviewMvRegMode )
   {
     pcPdmDepthOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth );
   }
+#endif
 
   TComBitstream*    pcBitstream = new TComBitstream;
@@ -589,8 +636,10 @@
         bAllEos = bAllEos|bEos[iViewIdx] ;
 
+#if HHI_INTER_VIEW_MOTION_PRED
         if( m_uiMultiviewMvRegMode && iViewIdx )
         {
           m_acTVideoIOYuvDepthInputFileList[iViewIdx]->read( pcPdmDepthOrg, m_aiPad, m_bUsingDepthMaps );
         }
+#endif
 
         // increase number of received frames
@@ -598,5 +647,9 @@
       }
 
+#if HHI_INTER_VIEW_MOTION_PRED
       m_acTEncTopList[iViewIdx]->receivePic( bEos[iViewIdx],  pcPicYuvOrg, m_cListPicYuvRecList[iViewIdx]->back(), ( m_uiMultiviewMvRegMode && iViewIdx ? pcPdmDepthOrg : 0 ) );
+#else
+      m_acTEncTopList[iViewIdx]->receivePic( bEos[iViewIdx],  pcPicYuvOrg, m_cListPicYuvRecList[iViewIdx]->back(), 0 );
+#endif
 
       if( m_bUsingDepthMaps )
@@ -628,5 +681,5 @@
     }
 
-//GT VSO
+#if HHI_VSO    
     if ( m_bUseVSO && ( m_uiVSOMode != 4) )
     {
@@ -634,5 +687,5 @@
       xStoreVSORefPicsInBuffer();       //GT;
     }
-//GT VSO end
+#endif
 
     //GT: Encode
@@ -688,5 +741,5 @@
 
 #if AMVP_BUFFERCOMPRESS
-    // compress motion for entire access 
+    // compress motion for entire access
     if( bCurrPocCoded )
     {
@@ -729,5 +782,4 @@
   pcDepthPicYuvOrg = NULL ;
 
-  // SB valgrid
   pcBitstream->destroy();
   delete pcBitstream;
@@ -751,7 +803,7 @@
   if ( pcPdmDepthOrg )
   {
-    pcPdmDepthOrg->destroy(); 
-    delete pcPdmDepthOrg; 
-    pcPdmDepthOrg = NULL; 
+    pcPdmDepthOrg->destroy();
+    delete pcPdmDepthOrg;
+    pcPdmDepthOrg = NULL;
   }
 
@@ -847,5 +899,5 @@
   // Delete ERFiles
 
-//GT VSO
+#if HHI_VSO
   std::map< Int,vector<TComPicYuv*> >::iterator iterMapPicExtRefView = m_cMapPicExtRefView.begin();
   while ( iterMapPicExtRefView != m_cMapPicExtRefView.end() )
@@ -861,5 +913,5 @@
     iterMapPicExtRefView++;
   }
-//GT VSO end
+#endif
 }
 
@@ -920,6 +972,6 @@
 TComPicYuv* TAppEncTop::xGetPicYuvFromView( Int iViewIdx, Int iPoc, Bool bDepth, Bool bRecon )
 {
-  TComPic*    pcPic = xGetPicFromView( iViewIdx, iPoc, bDepth); 
-  TComPicYuv* pcPicYuv = NULL; 
+  TComPic*    pcPic = xGetPicFromView( iViewIdx, iPoc, bDepth);
+  TComPicYuv* pcPicYuv = NULL;
 
   if (pcPic != NULL)
@@ -929,16 +981,17 @@
       if ( pcPic->getReconMark() )
       {
-        pcPicYuv = pcPic->getPicYuvRec(); 
+        pcPicYuv = pcPic->getPicYuvRec();
       }
     }
     else
     {
-      pcPicYuv = pcPic->getPicYuvOrg(); 
-    }    
+      pcPicYuv = pcPic->getPicYuvOrg();
+    }
   };
 
-  return pcPicYuv; 
-}; 
-
+  return pcPicYuv;
+};
+
+#if HHI_VSO
 Void TAppEncTop::xSetBasePicYuv( Int iViewIdx, Int iPoc, TComMVDRefData* pcRefInfo, InterViewReference eView, bool bDepth )
 {
@@ -975,10 +1028,9 @@
   }
 
-//GT campara
+
   xSetBaseLUT       (iViewIdx, iViewIdx-1  , pcMVDRefData, PREVVIEW );
   xSetBaseLUT       (iViewIdx, iViewIdx+1  , pcMVDRefData, NEXTVIEW );
-//GT campara end
-
-//GT VSO
+
+
   if ( m_bUseVSO && m_uiVSOMode != 4)
   {
@@ -987,9 +1039,7 @@
     pcMVDRefData->setRefViewInd     (m_aaiBaseViewRefInd[iViewIdx], m_aaiERViewRefInd[iViewIdx], m_aaiERViewRefLutInd[iViewIdx]);
   }
-//GT VSO end
-
 };
 
-//GT campara
+
 Void TAppEncTop::xSetBaseLUT( Int iViewIdxSource, Int iViewIdxTarget, TComMVDRefData* pcRefInfo, InterViewReference eView )
 {
@@ -999,8 +1049,5 @@
   pcRefInfo->setShiftLUTsBaseView(eView, m_cCameraData.getBaseViewShiftLUTD()[iViewIdxSource][iViewIdxTarget],m_cCameraData.getBaseViewShiftLUTI()[iViewIdxSource][iViewIdxTarget] );
 };
-//GT campara end
-
-
-//GT VSO
+
 Void TAppEncTop::xSetERPicYuvs( Int iViewIdx, Int iPoc, TComMVDRefData* pcReferenceInfo )
 {
@@ -1014,6 +1061,4 @@
   pcReferenceInfo->setPicYuvERViews( cMapIt->second );
 }
-
-
 
 Void TAppEncTop::xStoreVSORefPicsInBuffer()
@@ -1130,19 +1175,20 @@
   }
 }
-// GT VSO end
-
+#endif
+
+#if HHI_INTERVIEW_SKIP
 Void TAppEncTop::getUsedPelsMap( Int iViewIdx, Int iPoc, TComPicYuv* pcPicYuvUsedSplsMap )
 {
-  AOT( iViewIdx <= 0); 
-  AOT( iViewIdx >= m_iNumberOfViews ); 
-  AOF( m_bOmitUnusedBlocks );
-  AOF( m_cCameraData.getCurFrameId() == iPoc ); 
-
-  Int iViewSIdx      = m_cCameraData.getBaseId2SortedId()[iViewIdx]; 
-  Int iFirstViewSIdx = m_cCameraData.getBaseId2SortedId()[0]; 
+  AOT( iViewIdx <= 0);
+  AOT( iViewIdx >= m_iNumberOfViews );
+  AOF( m_uiInterViewSkip != 0 );
+  AOF( m_cCameraData.getCurFrameId() == iPoc );
+
+  Int iViewSIdx      = m_cCameraData.getBaseId2SortedId()[iViewIdx];
+  Int iFirstViewSIdx = m_cCameraData.getBaseId2SortedId()[0];
 
   AOT( iViewSIdx == iFirstViewSIdx );
 
-  Bool bFirstIsLeft = (iFirstViewSIdx < iViewSIdx); 
+  Bool bFirstIsLeft = (iFirstViewSIdx < iViewSIdx);
 
     m_cUsedPelsRenderer.setShiftLUTs(
@@ -1154,89 +1200,84 @@
       m_cCameraData.getBaseViewShiftLUTI()[0][iViewIdx],
       -1
-      ); 
-  
+      );
+
 
   TComPicYuv* pcPicYuvDepth = xGetPicYuvFromView(0, iPoc, true, true );
-  AOF( pcPicYuvDepth); 
-
-  m_cUsedPelsRenderer.getUsedSamplesMap( pcPicYuvDepth, pcPicYuvUsedSplsMap, bFirstIsLeft ); 
-
-}
-
+  AOF( pcPicYuvDepth);
+
+  m_cUsedPelsRenderer.getUsedSamplesMap( pcPicYuvDepth, pcPicYuvUsedSplsMap, bFirstIsLeft );
+
+}
+#endif
+
+#if HHI_VSO
 Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent )
 {
-  Int iEncViewSIdx = m_cCameraData.getBaseId2SortedId()[ iEncViewIdx ]; 
+  Int iEncViewSIdx = m_cCameraData.getBaseId2SortedId()[ iEncViewIdx ];
 
   // setup base views
-  Int iNumOfBV = m_cRenModStrParser.getNumOfBaseViewsForView( iEncViewSIdx, iEncContent );         
+  Int iNumOfBV = m_cRenModStrParser.getNumOfBaseViewsForView( iEncViewSIdx, iEncContent );
 
   for (Int iCurView = 0; iCurView < iNumOfBV; iCurView++ )
-  {       
-    Int iBaseViewSIdx; 
-    Int iVideoDistMode; 
-    Int iDepthDistMode; 
-
-    m_cRenModStrParser.getBaseViewData( iEncViewSIdx, iEncContent, iCurView, iBaseViewSIdx, iVideoDistMode, iDepthDistMode ); 
-
-    AOT( iVideoDistMode < 0 || iVideoDistMode > 2 ); 
-
-    Int iBaseViewIdx = m_cCameraData.getBaseSortedId2Id()[ iBaseViewSIdx ]; 
-
-    TComPicYuv* pcPicYuvVideoRec  = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, true  ); 
-    TComPicYuv* pcPicYuvDepthRec  = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , true  );  
-    TComPicYuv* pcPicYuvVideoOrg  = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, false ); 
-    TComPicYuv* pcPicYuvDepthOrg  = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , false );  
-                                
-    TComPicYuv* pcPicYuvVideoRef  = ( iVideoDistMode == 2 ) ? pcPicYuvVideoOrg  : NULL;       
-    TComPicYuv* pcPicYuvDepthRef  = ( iDepthDistMode == 2 ) ? pcPicYuvDepthOrg  : NULL;   
-          
-    TComPicYuv* pcPicYuvVideoTest = ( iVideoDistMode == 0 ) ? pcPicYuvVideoOrg  : pcPicYuvVideoRec; 
-    TComPicYuv* pcPicYuvDepthTest = ( iDepthDistMode == 0 ) ? pcPicYuvDepthOrg  : pcPicYuvDepthRec; 
-
-    AOT( (iVideoDistMode == 2) != (pcPicYuvVideoRef != NULL) ); 
-    AOT( (iDepthDistMode == 2) != (pcPicYuvDepthRef != NULL) );     
-    AOT( pcPicYuvDepthTest == NULL ); 
-    AOT( pcPicYuvVideoTest == NULL ); 
-
-    m_cRendererModel.setBaseView( iBaseViewSIdx, pcPicYuvVideoTest, pcPicYuvDepthTest, pcPicYuvVideoRef, pcPicYuvDepthRef ); 
-#if GERHARD_RM_DEBUG_MM
-    m_cMMCheckModel .setBaseView( iBaseViewSIdx, pcPicYuvVideoTest, pcPicYuvDepthTest, pcPicYuvVideoRef, pcPicYuvDepthRef ); 
-#endif
-  }
-
-  m_cRendererModel.setErrorMode( iEncViewSIdx, iEncContent, 0 ); 
-#if GERHARD_RM_DEBUG_MM
-  m_cMMCheckModel .setErrorMode( iEncViewSIdx, iEncContent, 0 ); 
-#endif
-
+  {
+    Int iBaseViewSIdx;
+    Int iVideoDistMode;
+    Int iDepthDistMode;
+
+    m_cRenModStrParser.getBaseViewData( iEncViewSIdx, iEncContent, iCurView, iBaseViewSIdx, iVideoDistMode, iDepthDistMode );
+
+    AOT( iVideoDistMode < 0 || iVideoDistMode > 2 );
+
+    Int iBaseViewIdx = m_cCameraData.getBaseSortedId2Id()[ iBaseViewSIdx ];
+
+    TComPicYuv* pcPicYuvVideoRec  = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, true  );
+    TComPicYuv* pcPicYuvDepthRec  = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , true  );
+    TComPicYuv* pcPicYuvVideoOrg  = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, false );
+    TComPicYuv* pcPicYuvDepthOrg  = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , false );
+
+    TComPicYuv* pcPicYuvVideoRef  = ( iVideoDistMode == 2 ) ? pcPicYuvVideoOrg  : NULL;
+    TComPicYuv* pcPicYuvDepthRef  = ( iDepthDistMode == 2 ) ? pcPicYuvDepthOrg  : NULL;
+
+    TComPicYuv* pcPicYuvVideoTest = ( iVideoDistMode == 0 ) ? pcPicYuvVideoOrg  : pcPicYuvVideoRec;
+    TComPicYuv* pcPicYuvDepthTest = ( iDepthDistMode == 0 ) ? pcPicYuvDepthOrg  : pcPicYuvDepthRec;
+
+    AOT( (iVideoDistMode == 2) != (pcPicYuvVideoRef != NULL) );
+    AOT( (iDepthDistMode == 2) != (pcPicYuvDepthRef != NULL) );
+    AOT( pcPicYuvDepthTest == NULL );
+    AOT( pcPicYuvVideoTest == NULL );
+
+    m_cRendererModel.setBaseView( iBaseViewSIdx, pcPicYuvVideoTest, pcPicYuvDepthTest, pcPicYuvVideoRef, pcPicYuvDepthRef );
+  }
+
+  m_cRendererModel.setErrorMode( iEncViewSIdx, iEncContent, 0 );
   // setup virtual views
-  Int iNumOfSV  = m_cRenModStrParser.getNumOfModelsForView( iEncViewSIdx, iEncContent );     
+  Int iNumOfSV  = m_cRenModStrParser.getNumOfModelsForView( iEncViewSIdx, iEncContent );
   for (Int iCurView = 0; iCurView < iNumOfSV; iCurView++ )
-  { 
-    Int iOrgRefBaseViewSIdx; 
-    Int iLeftBaseViewSIdx; 
-    Int iRightBaseViewSIdx; 
-    Int iSynthViewRelNum; 
-    Int iModelNum; 
-    Int iBlendMode; 
-    m_cRenModStrParser.getSingleModelData(iEncViewSIdx, iEncContent, iCurView, iModelNum, iBlendMode,iLeftBaseViewSIdx, iRightBaseViewSIdx, iOrgRefBaseViewSIdx, iSynthViewRelNum ); 
-
-    Int iLeftBaseViewIdx    = -1;   
-    Int iRightBaseViewIdx   = -1;        
-
-    TComPicYuv* pcPicYuvOrgRef  = NULL; 
-    Int**      ppiShiftLUTLeft  = NULL; 
-    Int**      ppiShiftLUTRight = NULL;       
-    Int**      ppiBaseShiftLUTLeft  = NULL; 
-    Int**      ppiBaseShiftLUTRight = NULL;       
-
-
-    Int        iDistToLeft      = -1; 
-
-    Int iSynthViewIdx = m_cCameraData.synthRelNum2Idx( iSynthViewRelNum ); 
+  {
+    Int iOrgRefBaseViewSIdx;
+    Int iLeftBaseViewSIdx;
+    Int iRightBaseViewSIdx;
+    Int iSynthViewRelNum;
+    Int iModelNum;
+    Int iBlendMode;
+    m_cRenModStrParser.getSingleModelData(iEncViewSIdx, iEncContent, iCurView, iModelNum, iBlendMode,iLeftBaseViewSIdx, iRightBaseViewSIdx, iOrgRefBaseViewSIdx, iSynthViewRelNum );
+
+    Int iLeftBaseViewIdx    = -1;
+    Int iRightBaseViewIdx   = -1;
+
+    TComPicYuv* pcPicYuvOrgRef  = NULL;
+    Int**      ppiShiftLUTLeft  = NULL;
+    Int**      ppiShiftLUTRight = NULL;
+    Int**      ppiBaseShiftLUTLeft  = NULL;
+    Int**      ppiBaseShiftLUTRight = NULL;
+
+
+    Int        iDistToLeft      = -1;
+
+    Int iSynthViewIdx = m_cCameraData.synthRelNum2Idx( iSynthViewRelNum );
 
     if ( iLeftBaseViewSIdx != -1 )
     {
-      iLeftBaseViewIdx   = m_cCameraData.getBaseSortedId2Id()   [ iLeftBaseViewSIdx ]; 
+      iLeftBaseViewIdx   = m_cCameraData.getBaseSortedId2Id()   [ iLeftBaseViewSIdx ];
       ppiShiftLUTLeft    = m_cCameraData.getSynthViewShiftLUTI()[ iLeftBaseViewIdx  ][ iSynthViewIdx  ];
     }
@@ -1244,11 +1285,11 @@
     if ( iRightBaseViewSIdx != -1 )
     {
-      iRightBaseViewIdx  = m_cCameraData.getBaseSortedId2Id()   [iRightBaseViewSIdx ]; 
+      iRightBaseViewIdx  = m_cCameraData.getBaseSortedId2Id()   [iRightBaseViewSIdx ];
       ppiShiftLUTRight   = m_cCameraData.getSynthViewShiftLUTI()[ iRightBaseViewIdx ][ iSynthViewIdx ];
     }
 
     if ( iRightBaseViewSIdx != -1 && iLeftBaseViewSIdx != -1 )
-    { 
-      iDistToLeft    = m_cCameraData.getRelDistLeft(  iSynthViewIdx , iLeftBaseViewIdx, iRightBaseViewIdx); 
+    {
+      iDistToLeft    = m_cCameraData.getRelDistLeft(  iSynthViewIdx , iLeftBaseViewIdx, iRightBaseViewIdx);
       ppiBaseShiftLUTLeft  = m_cCameraData.getBaseViewShiftLUTI() [ iLeftBaseViewIdx  ][ iRightBaseViewIdx ];
       ppiBaseShiftLUTRight = m_cCameraData.getBaseViewShiftLUTI() [ iRightBaseViewIdx ][ iLeftBaseViewIdx  ];
@@ -1258,14 +1299,11 @@
     if ( iOrgRefBaseViewSIdx != -1 )
     {
-      pcPicYuvOrgRef = xGetPicYuvFromView( m_cCameraData.getBaseSortedId2Id()[ iOrgRefBaseViewSIdx ] , iPoc, false, false ); 
-      AOF ( pcPicYuvOrgRef ); 
-    }      
-
-    m_cRendererModel.setSingleModel( iModelNum, ppiShiftLUTLeft, ppiBaseShiftLUTLeft, ppiShiftLUTRight, ppiBaseShiftLUTRight, iDistToLeft, pcPicYuvOrgRef ); 
-#if GERHARD_RM_DEBUG_MM
-    m_cMMCheckModel .setSingleModel( iModelNum, ppiShiftLUTLeft, ppiBaseShiftLUTLeft, ppiShiftLUTRight, ppiBaseShiftLUTRight, iDistToLeft, pcPicYuvOrgRef ); 
-#endif
-  }
-}
-
-// GT VSO end
+      pcPicYuvOrgRef = xGetPicYuvFromView( m_cCameraData.getBaseSortedId2Id()[ iOrgRefBaseViewSIdx ] , iPoc, false, false );
+      AOF ( pcPicYuvOrgRef );
+    }
+
+    m_cRendererModel.setSingleModel( iModelNum, ppiShiftLUTLeft, ppiBaseShiftLUTLeft, ppiShiftLUTRight, ppiBaseShiftLUTRight, iDistToLeft, pcPicYuvOrgRef );
+  }
+}
+#endif
+
Index: trunk/source/App/TAppEncoder/TAppEncTop.h
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncTop.h	(revision 2)
+++ trunk/source/App/TAppEncoder/TAppEncTop.h	(revision 5)
@@ -1,2 +1,35 @@
+/* The copyright in this software is being made available under the BSD
+ * License, included below. This software may be subject to other third party
+ * and contributor rights, including patent rights, and no such rights are
+ * granted under this license.
+ *
+ * Copyright (c) 2010-2011, ISO/IEC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *  * Neither the name of the ISO/IEC nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 
 
@@ -49,12 +82,13 @@
   std::vector<Int>            m_iDepthFrameRcvdVector;             ///< number of received frames
 
+#if DEPTH_MAP_GENERATION
   TComSPSAccess               m_cSPSAccess;
   TComAUPicAccess             m_cAUPicAccess;
+#endif
   
+#if HHI_VSO
   TRenTop                     m_cRendererTop; 
-#if GERHARD_RM_DEBUG_MM
-  TRenModel                   m_cMMCheckModel; 
+  TRenModel                   m_cRendererModel;   
 #endif
-  TRenModel                   m_cRendererModel;   
 
 protected:
@@ -84,7 +118,8 @@
 
   // Ref Data
+#if HHI_VSO
   Void  xSetBaseLUT   ( Int iViewIdxSource, Int iViewIdxTarget, TComMVDRefData* pcRefInfo, InterViewReference eView );
   Void  xSetBasePicYuv( Int iViewIdx, Int iPoc, TComMVDRefData* pcRefInfo, InterViewReference eView, bool bDepth ); ///< store pics from buffers in pcRefInfo
-
+#endif
   
 public:
@@ -93,19 +128,22 @@
   
   Void        encode      ();                               ///< main encoding function
+#if HHI_VSO
   Void                  setupRenModel    ( Int iPoc, Int iEncViewIdx, Int iEncContent );
   Void                  setMVDPic        ( Int iViewIdx, Int iPoc, TComMVDRefData* pcReferenceInfo ); // set MultiView References
+#endif
   Void                  getUsedPelsMap   ( Int iViewIdx, Int iPoc, TComPicYuv* pcPicYuvUsedPelsMap );
   std::vector<TComPic*> getSpatialRefPics( Int iViewIdx, Int iPoc, Bool bIsDepthCoder );              // only for mvc functionality yet 
   TComPic*              getPicFromView   ( Int iViewIdx, Int iPoc, Bool bDepth ) { return xGetPicFromView( iViewIdx, iPoc, bDepth ); }
 
-#if GERHARD_RM_DEBUG_MM
-  TRenModel* getMMCheckModel() { return  &m_cMMCheckModel  ; };   
+#if HHI_VSO
+  TRenModel* getRenModel    () { return  &m_cRendererModel ; }; 
 #endif
-  TRenModel* getRenModel    () { return  &m_cRendererModel ; }; 
 
+#if DEPTH_MAP_GENERATION
   TComSPSAccess*    getSPSAccess  () { return &m_cSPSAccess;   }
   TComAUPicAccess*  getAUPicAccess() { return &m_cAUPicAccess; }
+#endif
 
-//GT VSO
+#if HHI_VSO
 private:
   std::vector<TVideoIOYuv*>		               m_acTVideoIOYuvERFileList;
@@ -115,6 +153,5 @@
   Void  xSetERPicYuvs(  Int iViewIdx, Int iPoc, TComMVDRefData* pcReferenceInfo );    ///< store pic from buffer in pcReferenceInfo    
   Void  xStoreVSORefPicsInBuffer();                                                   ///< read in External Ref pic from file and store in buffer
-//GT VSO end
-
+#endif
   
 };// END CLASS DEFINITION TAppEncTop
Index: trunk/source/App/TAppEncoder/encmain.cpp
===================================================================
--- trunk/source/App/TAppEncoder/encmain.cpp	(revision 2)
+++ trunk/source/App/TAppEncoder/encmain.cpp	(revision 5)
@@ -1,2 +1,35 @@
+/* The copyright in this software is being made available under the BSD
+ * License, included below. This software may be subject to other third party
+ * and contributor rights, including patent rights, and no such rights are
+ * granted under this license.
+ *
+ * Copyright (c) 2010-2011, ISO/IEC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *  * Neither the name of the ISO/IEC nor the names of its contributors may
+ *    be used to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 
 
