Index: branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.cpp
===================================================================
--- branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.cpp	(revision 478)
+++ branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.cpp	(revision 479)
@@ -641,9 +641,5 @@
     m_tDecTop[ decIdx ] =  new TDecTop;
     m_tDecTop[ decIdx ]->create();
-#if H_3D_IV_MERGE
-    m_tDecTop[ decIdx ]->init(this );
-#else
     m_tDecTop[ decIdx ]->init( );
-#endif
     m_tDecTop[ decIdx ]->setLayerId( layerId );
     m_tDecTop[ decIdx ]->setDecodedPictureHashSEIEnabled(m_decodedPictureHashSEIEnabled);
@@ -682,23 +678,3 @@
 }
 #endif
-#if H_3D_IV_MERGE
-// GT: This function is not necessary anymore m_ivPicLists should be used instead
-TComPic* TAppDecTop::xGetPicFromView( Int viewIdx, Int poc, Bool isDepth )
-{
-  assert( ( viewIdx >= 0 ) );
-
-  TComList<TComPic*>* apcListPic = m_tDecTop[ (isDepth ? 1 : 0) + viewIdx * 2 ]->getListPic();
-
-  TComPic* pcPic = NULL;
-  for( TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++ )
-  {
-    if( (*it)->getPOC() == poc )
-    {
-      pcPic = *it;
-      break;
-    }
-  }
-  return pcPic;
-}
-#endif
 //! \}
Index: branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.h
===================================================================
--- branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.h	(revision 478)
+++ branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.h	(revision 479)
@@ -49,7 +49,4 @@
 #include "TAppDecCfg.h"
 
-#if H_3D_IV_MERGE
-#include "TLibCommon/TComDepthMapGenerator.h"
-#endif
 //! \ingroup TAppDecoder
 //! \{
@@ -76,8 +73,4 @@
     // for output control
   Bool                            m_abDecFlag[ MAX_GOP ];         ///< decoded flag in one GOP
-#if H_3D_IV_MERGE
-  Int  m_fcoViewDepthId;
-  Char m_fcoOrder[MAX_VIEW_NUM*2];
-#endif
 #if H_MV
   Int                             m_pocLastDisplay      [ MAX_NUM_LAYERS ]; ///< last POC in display order
@@ -89,9 +82,4 @@
   FILE*                           m_pScaleOffsetFile;
   CamParsCollector                m_cCamParsCollector;
-#if H_3D_IV_MERGE
-  TComVPSAccess                   m_cVPSAccess;
-  TComSPSAccess                   m_cSPSAccess;
-  TComAUPicAccess                 m_cAUPicAccess;
-#endif
 #endif
 public:
@@ -103,13 +91,4 @@
   Void  decode            (); ///< main decoding function
 
-#if H_3D_IV_MERGE 
-  TDecTop* getTDecTop     ( Int viewIdx, Bool isDepth );
-  TComPic*              getPicFromView     ( Int viewIdx, Int poc, bool isDepth ) { return xGetPicFromView( viewIdx, poc, isDepth ); }
-  TComVPSAccess*    getVPSAccess  () { return &m_cVPSAccess;   }
-  TComSPSAccess*    getSPSAccess  () { return &m_cSPSAccess;   }
-  TComAUPicAccess*  getAUPicAccess() { return &m_cAUPicAccess; }
-  TDecTop*          getDecTop0    () { return m_tDecTop[0]; }
-#endif
-
 protected:
   Void  xCreateDecLib     (); ///< create internal classes
@@ -117,7 +96,4 @@
   Void  xInitDecLib       (); ///< initialize decoder class
 
-#if H_3D_IV_MERGE 
-  TComPic* xGetPicFromView( Int viewIdx, Int poc, Bool isDepth );
-#endif
 #if H_MV
   Void  xWriteOutput      ( TComList<TComPic*>* pcListPic, Int layerId, Int tId ); ///< write YUV to file
Index: branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 478)
+++ branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 479)
@@ -718,6 +718,5 @@
 #endif //HHI_VSO
 #if H_3D_IV_MERGE
-  ("PredDepthMapGen",  m_uiPredDepthMapGeneration, (UInt)0, "generation of prediction depth maps for motion data prediction" )
-  ("MultiviewMvPred",  m_uiMultiviewMvPredMode,    (UInt)0, "usage of predicted depth maps" )
+  ("IvMvPred",                       m_ivMvPredFlag,           false           , "inter view motion prediction " )  
 #endif
 #endif //H_3D
@@ -1443,9 +1442,4 @@
   xConfirmPara( ((UInt) m_numberOfLayers >> 1 ) != m_cCameraData.getBaseViewNumbers().size(),   "Number of Views in BaseViewCameraNumbers must be equal to NumberOfViews" );
   xConfirmPara    ( m_iCodedCamParPrecision < 0 || m_iCodedCamParPrecision > 5,       "CodedCamParsPrecision must be in range of 0..5" );
-#if H_3D_IV_MERGE
-  xConfirmPara    ( m_uiPredDepthMapGeneration > 2,                                   "PredDepthMapGen must be less than or equal to 2" );
-  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" );
-#endif
 #if H_3D_VSO
     if( m_bUseVSO )
@@ -2288,5 +2282,5 @@
 #endif
 #if H_3D_IV_MERGE
-  printf("MultiviewMvPred:%d", m_uiMultiviewMvPredMode);
+  printf("IvMvPred:%d", m_ivMvPredFlag );
 #endif
   printf("\n\n");  
Index: branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h
===================================================================
--- branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h	(revision 478)
+++ branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h	(revision 479)
@@ -85,5 +85,8 @@
   Bool                   m_splittingFlag;                     ///< Splitting Flag
   Int                    m_scalabilityMask;                   ///< Mask indicating scalabilities, 1: texture; 3: texture + depth                                                                
-  std::vector<Int>       m_dimensionIdLen;                   ///< Length of scalability dimension s 
+  std::vector<Int>       m_dimensionIdLen;                    ///< Length of scalability dimension s 
+#if H_3D_IV_MERGE
+  Bool                   m_ivMvPredFlag;                      ///< Interview motion vector prediction 
+#endif
 #endif
   Double    m_adLambdaModifier[ MAX_TLAYER ];                 ///< Lambda modifier array for each temporal layer
@@ -381,8 +384,4 @@
   TAppComCamPara m_cCameraData;
   Int       m_iCodedCamParPrecision;                          ///< precision for coding of camera parameters
-#if H_3D_IV_MERGE
-  UInt      m_uiMultiviewMvPredMode;   
-  UInt      m_uiPredDepthMapGeneration;
-#endif
 #if H_3D_VSO
   Char*     m_pchVSOConfig;
Index: branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp	(revision 478)
+++ branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp	(revision 479)
@@ -121,4 +121,7 @@
 #if H_3D
   vps.initViewIndex(); 
+#if H_3D_GEN
+  xSetVPSExtension2        ( vps ); 
+#endif
   m_ivPicLists.setVPS      ( &vps ); 
 #endif
@@ -166,8 +169,4 @@
     m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
 #endif // H_3D_VSO
-#if H_3D_IV_MERGE
-    m_cTEncTop.setMultiviewMvPredMode          ( m_uiMultiviewMvPredMode     );
-    m_cTEncTop.setPredDepthMapGeneration       ( m_uiPredDepthMapGeneration );
-#endif
 #endif // H_3D
 
@@ -211,22 +210,5 @@
     m_cTEncTop.setNumReorderPics             ( m_numReorderPics[i], i );
     m_cTEncTop.setMaxDecPicBuffering         ( m_maxDecPicBuffering[i], i );
-#if H_3D_IV_MERGE
-        m_acTEncDepthTopList[iViewIdx]->setNumReorderPics             ( m_numReorderPics[iViewIdx][i], i );
-        m_acTEncDepthTopList[iViewIdx]->setMaxDecPicBuffering         ( m_maxDecPicBuffering[iViewIdx][i], i );
-#endif
-  }
-#if H_3D_IV_MERGE
-      m_acTEncDepthTopList[iViewIdx]->setQP                           ( m_aiQP[1] );
-
-      m_acTEncDepthTopList[iViewIdx]->setTemporalLayerQPOffset        ( m_aiTLayerQPOffset );
-      m_acTEncDepthTopList[iViewIdx]->setPad                          ( m_aiPad );
-
-      m_acTEncDepthTopList[iViewIdx]->setMaxTempLayer                 ( m_maxTempLayer[iViewIdx] );
-
-      m_acTEncDepthTopList[iViewIdx]->setDisInter4x4                  ( m_bDisInter4x4);
-
-      m_acTEncDepthTopList[iViewIdx]->setUseNSQT( m_enableNSQT );
-      m_acTEncDepthTopList[iViewIdx]->setUseAMP( m_enableAMP );
-#endif
+  }
 #endif
   for( UInt uiLoop = 0; uiLoop < MAX_TLAYER; ++uiLoop )
@@ -625,9 +607,5 @@
   for(Int layer=0; layer<m_numberOfLayers; layer++)
   {
-#if H_3D_IV_MERGE
-    m_acTEncTopList[layer]->init(this );
-#else
     m_acTEncTopList[layer]->init( );
-#endif
   }
 #else
@@ -1057,26 +1035,20 @@
 }
 #endif
+#if H_3D_GEN
+Void TAppEncTop::xSetVPSExtension2( TComVPS& vps )
+{
+  for ( Int layer = 0; layer < vps.getMaxLayers(); layer++ )
+  {
+    if ( layer != 0 ) 
+    {    
+      if( ( vps.getDepthId( layer ) == 0 ) )
+      {
 #if H_3D_IV_MERGE
- // GT: This function is not necessary anymore m_ivPicLists should be used instead
-TComPic* TAppEncTop::xGetPicFromView( Int viewIdx, Int poc, Bool isDepth )
-{
-  assert( ( viewIdx >= 0 ) && ( viewIdx < m_iNumberOfViews ) );
-
-  TComList<TComPic*>* apcListPic =  m_acTEncTopList[(isDepth ? 1 : 0) + viewIdx * 2]->getListPic() ;
-
-  
-
-  TComPic* pcPic = NULL;
-  for(TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++)
-  {
-    if( (*it)->getPOC() == poc )
-    {
-      pcPic = *it ;
-      break ;
-    }
-  }
-
-  return pcPic;
-};
+        vps.setIvMvPredFlag( layer, m_ivMvPredFlag ); 
+#endif
+      }
+    }
+  }
+}
 #endif
 //! \}
Index: branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.h
===================================================================
--- branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.h	(revision 478)
+++ branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.h	(revision 479)
@@ -48,7 +48,4 @@
 #if H_3D
 #include "../../Lib/TLibRenderer/TRenTop.h"
-#if H_3D_IV_MERGE
-#include "TLibCommon/TComDepthMapGenerator.h"
-#endif
 #endif
 
@@ -92,9 +89,4 @@
   TRenModel                   m_cRendererModel;   
 #endif
-#if H_3D_IV_MERGE
-  TComVPSAccess               m_cVPSAccess;
-  TComSPSAccess               m_cSPSAccess;
-  TComAUPicAccess             m_cAUPicAccess;
-#endif
 protected:
   // initialization
@@ -122,7 +114,5 @@
   void rateStatsAccum(const AccessUnit& au, const std::vector<UInt>& stats);
   void printRateSummary();
-#if H_3D_IV_MERGE
-  TComPic* xGetPicFromView( Int viewIdx, Int iPoc, Bool isDepth );
-#endif
+
 #if H_MV
   Void xSetLayerIds               ( TComVPS& vps );  
@@ -131,4 +121,7 @@
   Int  xGetMax( std::vector<Int>& vec);
 #endif
+#if H_3D_GEN
+  Void xSetVPSExtension2( TComVPS& vps );
+#endif
 public:
   TAppEncTop();
@@ -136,16 +129,8 @@
   
   Void        encode      ();                               ///< main encoding function
-#if H_3D_IV_MERGE
-  TComPic*              getPicFromView     ( Int viewIdx, Int poc, Bool isDepth ) { return xGetPicFromView( viewIdx, poc, isDepth ); }
-#endif
 #if H_MV
   TEncTop*    getTEncTop( UInt layer ) { return  m_acTEncTopList[layer]; }  ///< return pointer to encoder class for specific layer
 #else
   TEncTop&    getTEncTop  ()   { return  m_cTEncTop; }      ///< return encoder class pointer reference
-#endif
-#if H_3D_IV_MERGE
-  TComVPSAccess*    getVPSAccess  () { return &m_cVPSAccess;   }
-  TComSPSAccess*    getSPSAccess  () { return &m_cSPSAccess;   }
-  TComAUPicAccess*  getAUPicAccess() { return &m_cAUPicAccess; }
 #endif
 };// END CLASS DEFINITION TAppEncTop
