Index: /branches/HTM-DEV-2.0-Renderer-Fix/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- /branches/HTM-DEV-2.0-Renderer-Fix/source/App/TAppEncoder/TAppEncTop.cpp	(revision 605)
+++ /branches/HTM-DEV-2.0-Renderer-Fix/source/App/TAppEncoder/TAppEncTop.cpp	(revision 606)
@@ -768,4 +768,13 @@
   printRateSummary();
 
+#if H_3D_REN_MAX_DEV_OUT
+  Double dMaxDispDiff = m_cCameraData.getMaxShiftDeviation(); 
+
+  if ( !(dMaxDispDiff < 0) )
+  {  
+    printf("\n Max. possible shift error: %12.3f samples.\n", dMaxDispDiff );
+  }
+#endif
+
   return;
 }
Index: /branches/HTM-DEV-2.0-Renderer-Fix/source/App/TAppRenderer/TAppRendererTop.cpp
===================================================================
--- /branches/HTM-DEV-2.0-Renderer-Fix/source/App/TAppRenderer/TAppRendererTop.cpp	(revision 605)
+++ /branches/HTM-DEV-2.0-Renderer-Fix/source/App/TAppRenderer/TAppRendererTop.cpp	(revision 606)
@@ -480,4 +480,13 @@
     AOT(true);
   }
+
+#if H_3D_REN_MAX_DEV_OUT
+  Double dMaxDispDiff = m_cCameraData.getMaxShiftDeviation(); 
+
+  if ( !(dMaxDispDiff < 0) )
+  {  
+    printf("\n Max. possible shift error: %12.3f samples.\n", dMaxDispDiff );
+  }
+#endif
 }
 
Index: /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TAppCommon/TAppComCamPara.cpp
===================================================================
--- /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TAppCommon/TAppComCamPara.cpp	(revision 605)
+++ /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TAppCommon/TAppComCamPara.cpp	(revision 606)
@@ -616,5 +616,9 @@
 {
   UInt uiFoundLine = -1;
+#if H_3D_FIX_REN_WARNING
+  if ( !xGetCameraDataRow( iView, uiFrame, uiFoundLine ) && xIsIn( m_aiSortedBaseViews, iView ))
+#else  
   if ( !xGetCameraDataRow( iView, uiFrame, uiFoundLine ) )
+#endif
   {
     AOT( m_aadCameraParameters[ uiFoundLine ].size() < 6 );
@@ -632,10 +636,18 @@
     Int  iDummy;
 
+#if H_3D_FIX_REN_WARNING
+    if( !xGetLeftRightView( iView, m_aiSortedBaseViews, iLeftView, iRightView, iDummy, iDummy ) ||
+#else
     if( !xGetLeftRightView( iView, m_aiViewsInCfgFile, iLeftView, iRightView, iDummy, iDummy ) ||
+#endif
          xGetCameraDataRow( iLeftView,  uiFrame, uiLeftViewLine  )                             ||
          xGetCameraDataRow( iRightView, uiFrame, uiRightViewLine )
       )
     {
+#if H_3D_FIX_REN_WARNING
+      std::cerr << "No left or no right base view next to view " << (Double)iView / m_dViewNumPrec << " for Frame " << uiFrame << " given in CameraParameterFile" << std::endl;
+#else
       std::cerr << "No Left or no Right View next to View " << (Double)iView / m_dViewNumPrec << " for Frame " << uiFrame << " given in CameraParameterFile" << std::endl;
+#endif
       AOT(true);
       exit( EXIT_FAILURE );
@@ -892,4 +904,7 @@
 
         // maximum deviation
+#if H_3D_REN_MAX_DEV_OUT
+        m_dMaxShiftDeviation = std::max( m_dMaxShiftDeviation, fabs( Double( (Int) iShiftLuma   ) - dShiftLuma   ) / Double( 1 << m_iLog2Precision ) );        
+#endif
         dMaxDispDev     = std::max( dMaxDispDev,    fabs( Double( (Int) iTestScale   ) - dShiftLuma * Double( 1 << iLog2DivLuma ) ) / Double( 1 << iLog2DivLuma ) );
         dMaxRndDispDvL  = std::max( dMaxRndDispDvL, fabs( Double( (Int) iShiftLuma   ) - dShiftLuma   ) );
@@ -1026,4 +1041,7 @@
   m_bCamParsCodedPrecSet      = false;
 
+#if H_3D_REN_MAX_DEV_OUT
+  m_dMaxShiftDeviation        = -1; 
+#endif
 
 }
@@ -1334,4 +1352,24 @@
       }
     }
+#if H_3D_FIX_REN_WARNING
+    Bool bIgnoreFirst = true;     
+    for( UInt uiERView = 0; uiERView < m_aiSynthViews.size() && !m_bSetupFromCoded; uiERView++ )
+    {
+      if ( xIsIn(m_aiViewsInCfgFile, m_aiSynthViews[ uiERView ] ) )
+      {
+        if ( bIgnoreFirst )
+        {
+          std::cout << "Ignoring CameraParameterFile entries for virtual view(s): " ;
+          //GT: Integer precision virtual view camera parameters are always interpolated from coded views camera parameters.
+          bIgnoreFirst = false; 
+        }
+        std::cout << (Double)m_aiSynthViews[ uiERView ] / m_dViewNumPrec << " " ; 
+      }
+    }
+    if ( !bIgnoreFirst )
+    {
+      std::cout << std::endl; 
+    }
+#endif
 
     Bool bInterpolateFirst = true; 
@@ -1352,5 +1390,9 @@
         if ( bInterpolateFirst ) 
         {
+#if H_3D_FIX_REN_WARNING                        
+          std::cout << "Interpolating camera parameters      for virtual view(s): " ; 
+#else
           std::cout << "Interpolating Camera Parameters for View(s) " ; 
+#endif
             bInterpolateFirst = false; 
         }          
@@ -1456,4 +1498,17 @@
 }
 
+#if H_3D_FIX_REN_WARNING
+Bool 
+  TAppComCamPara::xIsIn( std::vector<Int>& rVec, Int iElem) 
+{
+  Bool bFound = false; 
+  for (Int idx = 0; idx < rVec.size() && !bFound; idx++)
+  {
+    bFound = bFound || rVec[idx] == iElem; 
+  }
+  return bFound;
+}
+#endif
+
 Int TAppComCamPara::getRelDistLeft( Int iSynthViewIdx, Int iLeftViewIdx, Int iRightViewIdx )
 {
Index: /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TLibCommon/TypeDef.h	(revision 605)
+++ /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TLibCommon/TypeDef.h	(revision 606)
@@ -135,4 +135,7 @@
                                               // FIX_SDC_ENC_RD_WVSO_D0163
                                               // MTK_SAMPLE_BASED_SDC_D0110
+#define H_3D_FIX_REN                      1  // fix of erroneous inpainting for renderer
+#define H_3D_FIX_REN_WARNING              1  // fix of warning related to camera parameter precision
+#define H_3D_REN_MAX_DEV_OUT              0  // Output maximal possible shift deviation 
 
 #endif 
Index: /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TLibRenderer/TRenTop.cpp
===================================================================
--- /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TLibRenderer/TRenTop.cpp	(revision 605)
+++ /branches/HTM-DEV-2.0-Renderer-Fix/source/Lib/TLibRenderer/TRenTop.cpp	(revision 606)
@@ -1033,4 +1033,22 @@
             for ( ; iInterPolPos <= xCeil (iShiftedPos ) -1 ; iInterPolPos++)
             {
+#if H_3D_FIX_REN
+              if ( ( iInterPolPos >= 0 ) && ( iInterPolPos < iOutputWidth ) )
+              {
+                if( pcFilledData[iInterPolPos] == REN_IS_HOLE )
+                {               
+                  Int iNextPos = std::min(iInputWidth-1,iPosX + iStep); 
+                  Int iPosXBG  = ( std::abs( pcDepthData[iNextPos] - pcDepthData[iPosX] ) > 5  ) ? iPosX : iNextPos; 
+                  for( UInt uiCurPlane = 0; uiCurPlane < uiNumberOfPlanes; uiCurPlane++)
+                  {
+                    apcOutputData[uiCurPlane][iInterPolPos]  = apcInputData[uiCurPlane][iPosXBG];
+                  }
+                }
+                else
+                {
+                  pcFilledData[iInterPolPos] = REN_IS_HOLE + 1; 
+                }
+              }
+#else
               for( UInt uiCurPlane = 0; uiCurPlane < uiNumberOfPlanes; uiCurPlane++)
               {
@@ -1040,4 +1058,5 @@
                 }
               }
+#endif
             }
           }
@@ -1285,5 +1304,9 @@
         else
         {
+#if H_3D_FIX_REN
+          pcAlphaData[iXPos] = pcFilledData[iXPos];
+#else
           pcAlphaData[iXPos] = REN_IS_FILLED;
+#endif
         }
       }
