Index: trunk/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncTop.cpp	(revision 738)
+++ trunk/source/App/TAppEncoder/TAppEncTop.cpp	(revision 758)
@@ -76,4 +76,12 @@
 #endif
   
+#if CAM_HLS_F0136_F0045_F0082
+  vps.createCamPars(m_iNumberOfViews);
+#endif
+
+#if DLT_DIFF_CODING_IN_PPS
+  TComDLT& dlt = m_dlt;
+#endif
+
 #if H_MV
   Int maxTempLayer = -1; 
@@ -125,5 +133,8 @@
 #if H_3D
   xSetVPSExtension2        ( vps ); 
-  m_ivPicLists.setVPS      ( &vps ); 
+  m_ivPicLists.setVPS      ( &vps );
+#if DLT_DIFF_CODING_IN_PPS
+  xDeriveDltArray          ( vps, dlt );
+#endif
 #endif
 
@@ -218,4 +229,8 @@
   // H_MV
   m_cTEncTop.setVPS(&vps);
+
+#if DLT_DIFF_CODING_IN_PPS
+  m_cTEncTop.setDLT(&dlt);
+#endif
 
   m_cTEncTop.setProfile(m_profile);
@@ -781,4 +796,12 @@
 Void TAppEncTop::xInitLib(Bool isFieldCoding)
 {
+#if CAM_HLS_F0136_F0045_F0082
+  for ( Int viewIndex = 0; viewIndex < m_vps.getNumViews(); viewIndex++ )
+  {
+    m_vps.initCamParaVPS( viewIndex, true, m_cCameraData.getCamParsCodedPrecision(), 
+      m_cCameraData.getVaryingCameraParameters(), m_cCameraData.getCodedScale(), m_cCameraData.getCodedOffset() );
+  }
+#endif
+
 #if H_MV
   for(Int layer=0; layer<m_numberOfLayers; layer++)
@@ -1247,5 +1270,9 @@
 
 #if H_3D_DIM_DLT
+#if DLT_DIFF_CODING_IN_PPS
+Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps, TComDLT* dlt)
+#else
 Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps)
+#endif
 {
   TComPicYuv*       pcDepthPicYuvOrg = new TComPicYuv;
@@ -1307,11 +1334,20 @@
   if( uiNumFrames == 0 || numBitsForValue(iNumDepthValues) == g_bitDepthY )
   {
+#if DLT_DIFF_CODING_IN_PPS
+    dlt->setUseDLTFlag(layer, false);
+#else
     // don't use DLT
     vps->setUseDLTFlag(layer, false);
+#endif
   }
   
   // assign LUT
+#if DLT_DIFF_CODING_IN_PPS
+  if( dlt->getUseDLTFlag(layer) )
+    dlt->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues);
+#else
   if( vps->getUseDLTFlag(layer) )
     vps->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues);
+#endif
   
   // free temporary memory
@@ -1967,4 +2003,5 @@
 #endif
 #if H_3D_DIM_DLT
+#if !DLT_DIFF_CODING_IN_PPS
     vps.setUseDLTFlag( layer , isDepth && m_useDLT );
     if( vps.getUseDLTFlag( layer ) )
@@ -1976,4 +2013,5 @@
 #endif
     }
+#endif
 #endif
 #endif
@@ -2011,4 +2049,35 @@
 }
 #endif
+
+#if DLT_DIFF_CODING_IN_PPS
+Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt )
+{
+  Int  iNumDepthViews  = 0;
+  Bool bDltPresentFlag = false;
+
+  for ( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ )
+  {
+    Bool isDepth = ( vps.getDepthId( layer ) == 1 );
+
+    if ( isDepth )
+    {
+      iNumDepthViews++;
+    }
+
+    dlt.setUseDLTFlag( layer , isDepth && m_useDLT );
+    if( dlt.getUseDLTFlag( layer ) )
+    {
+      xAnalyzeInputBaseDepth(layer, max(m_iIntraPeriod[layer], 24), &vps, &dlt);
+      bDltPresentFlag = bDltPresentFlag || dlt.getUseDLTFlag(layer);
+#if H_3D_DELTA_DLT
+      dlt.setInterViewDltPredEnableFlag(layer, (dlt.getUseDLTFlag(layer) && (layer>1)));
+#endif
+    }
+  }
+
+  dlt.setDltPresentFlag( bDltPresentFlag );
+  dlt.setNumDepthViews ( iNumDepthViews  );
+}
+#endif
 #endif
 //! \}
Index: trunk/source/App/TAppEncoder/TAppEncTop.h
===================================================================
--- trunk/source/App/TAppEncoder/TAppEncTop.h	(revision 738)
+++ trunk/source/App/TAppEncoder/TAppEncTop.h	(revision 758)
@@ -86,4 +86,8 @@
 #endif
 
+#if DLT_DIFF_CODING_IN_PPS
+  TComDLT                    m_dlt;                         ///< dlt
+#endif
+
   UInt m_essentialBytes;
   UInt m_totalBytes;
@@ -135,6 +139,13 @@
   Void xSetVPSExtension2( TComVPS& vps );
 #endif
+#if DLT_DIFF_CODING_IN_PPS
+  Void xDeriveDltArray( TComVPS& vps, TComDLT& dlt );
+#endif
 #if H_3D_DIM_DLT
+#if DLT_DIFF_CODING_IN_PPS
+  Void  xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps, TComDLT* dlt);
+#else
   Void  xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps);
+#endif
 #endif
 public:
