OTB  9.0.0
Orfeo Toolbox
otbRAMDrivenAdaptativeStreamingManager.hxx
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2022 Centre National d'Etudes Spatiales (CNES)
3  *
4  * This file is part of Orfeo Toolbox
5  *
6  * https://www.orfeo-toolbox.org/
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef otbRAMDrivenAdaptativeStreamingManager_hxx
22 #define otbRAMDrivenAdaptativeStreamingManager_hxx
23 
25 #include "otbMacro.h"
27 #include "itkMetaDataObject.h"
28 #include "otbMetaDataKey.h"
29 
30 namespace otb
31 {
32 
33 template <class TImage>
35 {
36 }
37 
38 template <class TImage>
40 {
41 }
42 
43 template <class TImage>
45 {
46  unsigned long nbDivisions = this->EstimateOptimalNumberOfDivisions(input, region, m_AvailableRAMInMB, m_Bias);
47 
48  typename otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::SizeType tileHint;
49 
50  auto inputImage = dynamic_cast<TImage*>(input);
51 
52  tileHint[0] = 0;
53  tileHint[1] = 0;
54 
55  if (inputImage)
56  {
57  const auto & imd = inputImage->GetImageMetadata();
58  if (imd.Has(MDNum::TileHintX))
59  {
60  tileHint[0] = imd[MDNum::TileHintX];
61  }
62  if (imd.Has(MDNum::TileHintY))
63  {
64  tileHint[1] = imd[MDNum::TileHintY];
65  }
66  }
67 
68  typename otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::Pointer splitter =
69  otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::New();
70 
71  splitter->SetTileHint(tileHint);
72 
73  this->m_Splitter = splitter;
74 
75  this->m_ComputedNumberOfSplits = this->m_Splitter->GetNumberOfSplits(region, nbDivisions);
76 
77  this->m_Region = region;
78 }
79 
80 } // End namespace otb
81 
82 #endif
otb::ImageRegionAdaptativeSplitter
Definition: otbImageRegionAdaptativeSplitter.h:65
otb::RAMDrivenAdaptativeStreamingManager::RAMDrivenAdaptativeStreamingManager
RAMDrivenAdaptativeStreamingManager()
Definition: otbRAMDrivenAdaptativeStreamingManager.hxx:34
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otbMacro.h
otb::StreamingManager::SizeType
RegionType::SizeType SizeType
Definition: otbStreamingManager.h:66
otb::RAMDrivenAdaptativeStreamingManager::PrepareStreaming
void PrepareStreaming(itk::DataObject *input, const RegionType &region) override
Definition: otbRAMDrivenAdaptativeStreamingManager.hxx:44
otb::RAMDrivenAdaptativeStreamingManager::~RAMDrivenAdaptativeStreamingManager
~RAMDrivenAdaptativeStreamingManager() override
Definition: otbRAMDrivenAdaptativeStreamingManager.hxx:39
otbImageRegionAdaptativeSplitter.h
otb::RAMDrivenAdaptativeStreamingManager::RegionType
Superclass::RegionType RegionType
Definition: otbRAMDrivenAdaptativeStreamingManager.h:59
otb::RAMDrivenAdaptativeStreamingManager::Pointer
itk::SmartPointer< Self > Pointer
Definition: otbRAMDrivenAdaptativeStreamingManager.h:55
otb::MDNum::TileHintX
@ TileHintX
otbMetaDataKey.h
otbRAMDrivenAdaptativeStreamingManager.h
otb::MDNum::TileHintY
@ TileHintY