From b7c81c6372afa0e5f9aa9934aa523267e44bfd7b Mon Sep 17 00:00:00 2001
From: Julien Malik <julien.malik@c-s.fr>
Date: Fri, 6 May 2011 16:18:27 +0200
Subject: [PATCH] ENH: replace direct use of MemoryPrintEstimator by integrated
 functionnality in StreamingFileWriter

---
 Projections/otbBundleToPerfectSensor.cxx | 57 ++----------------------
 1 file changed, 4 insertions(+), 53 deletions(-)

diff --git a/Projections/otbBundleToPerfectSensor.cxx b/Projections/otbBundleToPerfectSensor.cxx
index b2e51bc865..d0f32dd390 100644
--- a/Projections/otbBundleToPerfectSensor.cxx
+++ b/Projections/otbBundleToPerfectSensor.cxx
@@ -34,9 +34,6 @@
 
 #include "itkFixedArray.h"
 
-#include "otbPipelineMemoryPrintCalculator.h"
-#include "itkExtractImageFilter.h"
-
 namespace otb
 {
 int BundleToPerfectSensor::Describe(ApplicationDescriptor* descriptor)
@@ -142,61 +139,15 @@ int BundleToPerfectSensor::Execute(otb::ApplicationOptionsResult* parseResult)
     writer->SetFileName(parseResult->GetOutputImage());
     writer->SetInput(fusionFilter->GetOutput());
     writer->SetWriteGeomFile(true);
-
-    otb::StandardWriterWatcher w4(writer, resampler,"Perfect sensor fusion");
-
-    // Estimate memory print
-    otb::PipelineMemoryPrintCalculator::Pointer memoryPrintCalculator = otb::PipelineMemoryPrintCalculator::New();
-    const double byteToMegabyte = 1./vcl_pow(2.0, 20);
-    
-    // Trick to avoid having the resampler compute the whole
-    // deformation field
-    ExtractFilterType::Pointer extractFilter = ExtractFilterType::New();
-    extractFilter->SetInput(fusionFilter->GetOutput());
-    XsImageType::RegionType smallRegion;
-    XsImageType::SizeType smallSize;
-    smallSize.Fill(100);
-    XsImageType::IndexType index;
-    index[0] = fusionFilter->GetOutput()->GetLargestPossibleRegion().GetIndex()[0]
-      + fusionFilter->GetOutput()->GetLargestPossibleRegion().GetSize()[0]/2 - 50;
-    index[1] = fusionFilter->GetOutput()->GetLargestPossibleRegion().GetIndex()[1]
-      + fusionFilter->GetOutput()->GetLargestPossibleRegion().GetSize()[1]/2 - 50;
-    smallRegion.SetSize(smallSize);
-    smallRegion.SetIndex(index);
-
-    extractFilter->SetExtractionRegion(smallRegion);
-
-    bool smallRegionSuccess = smallRegion.Crop(fusionFilter->GetOutput()->GetLargestPossibleRegion());
-    
-    if( smallRegionSuccess)
-      {
-      memoryPrintCalculator->SetDataToWrite(extractFilter->GetOutput());
-      double regionTrickFactor = (double)fusionFilter->GetOutput()->GetLargestPossibleRegion().GetNumberOfPixels()
-        /(double)(smallRegion.GetNumberOfPixels());
-      memoryPrintCalculator->SetBiasCorrectionFactor(1.27 * regionTrickFactor);
-      }
-    else
-      {
-      memoryPrintCalculator->SetDataToWrite(fusionFilter->GetOutput());
-      memoryPrintCalculator->SetBiasCorrectionFactor(1.27);
-      }
-
-      memoryPrintCalculator->SetAvailableMemory(256 / byteToMegabyte);
     
+    unsigned int ram = 256;
     if (parseResult->IsOptionPresent("AvailableMemory"))
       {
-      long long int memory = static_cast <long long int> (parseResult->GetParameterUInt("AvailableMemory"));
-      memoryPrintCalculator->SetAvailableMemory(memory / byteToMegabyte);
+      ram = parseResult->GetParameterUInt("AvailableMemory");
       }
+    writer->SetAutomaticTiledStreaming(ram);
 
-    memoryPrintCalculator->Compute();
-
-    std::cout<<"Total memory usage: "<<memoryPrintCalculator->GetMemoryPrint()*byteToMegabyte<<" Mb"<<std::endl;
-    std::cout<<"Optimal stream division: "<<memoryPrintCalculator->GetOptimalNumberOfStreamDivisions()<<std::endl;
-
-
-    writer->SetTilingStreamDivisions(memoryPrintCalculator->GetOptimalNumberOfStreamDivisions());
-   
+    otb::StandardWriterWatcher w4(writer, resampler,"Perfect sensor fusion");
     writer->Update();
     }
   catch ( itk::ExceptionObject & err )
-- 
GitLab