OTB  9.0.0
Orfeo Toolbox
otbNumberOfLinesStrippedStreamingManager.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 otbNumberOfLinesStrippedStreamingManager_hxx
22 #define otbNumberOfLinesStrippedStreamingManager_hxx
23 
25 #include "otbMacro.h"
26 
27 namespace otb
28 {
29 
30 template <class TImage>
32 {
33 }
34 
35 template <class TImage>
37 {
38 }
39 
40 template <class TImage>
41 void NumberOfLinesStrippedStreamingManager<TImage>::PrepareStreaming(itk::DataObject* /*input*/, const RegionType& region)
42 {
43  otbMsgDevMacro(<< "Activating STRIPPED_SET_NUMBEROFLINES streaming mode") if (m_NumberOfLinesPerStrip < 1)
44  {
45  itkWarningMacro(<< "DesiredNumberOfLines set to 0 : streaming disabled")
46  }
47 
48  // Calculate number of splits
49  unsigned long numberLinesOfRegion = region.GetSize()[1]; // Y dimension
50  unsigned long nbSplit;
51  if (numberLinesOfRegion > m_NumberOfLinesPerStrip && m_NumberOfLinesPerStrip > 0)
52  {
53  nbSplit = static_cast<unsigned long>(std::ceil(static_cast<double>(numberLinesOfRegion) / static_cast<double>(m_NumberOfLinesPerStrip)));
54  }
55  else
56  {
57  // Don't stream
58  nbSplit = 1;
59  }
60 
61  this->m_Splitter = itk::ImageRegionSplitter<itkGetStaticConstMacro(ImageDimension)>::New();
62  this->m_ComputedNumberOfSplits = this->m_Splitter->GetNumberOfSplits(region, nbSplit);
63  otbMsgDevMacro(<< "Computed number of split : " << this->m_ComputedNumberOfSplits)
64 
65  // Save the region to generate the splits later
66  this->m_Region = region;
67 }
68 
69 } // End namespace otb
70 
71 #endif
otbNumberOfLinesStrippedStreamingManager.h
otb::NumberOfLinesStrippedStreamingManager::RegionType
Superclass::RegionType RegionType
Definition: otbNumberOfLinesStrippedStreamingManager.h:53
otb::NumberOfLinesStrippedStreamingManager::PrepareStreaming
void PrepareStreaming(itk::DataObject *, const RegionType &region) override
Definition: otbNumberOfLinesStrippedStreamingManager.hxx:41
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otbMacro.h
otb::NumberOfLinesStrippedStreamingManager::NumberOfLinesStrippedStreamingManager
NumberOfLinesStrippedStreamingManager()
Definition: otbNumberOfLinesStrippedStreamingManager.hxx:31
otb::NumberOfLinesStrippedStreamingManager::~NumberOfLinesStrippedStreamingManager
~NumberOfLinesStrippedStreamingManager() override
Definition: otbNumberOfLinesStrippedStreamingManager.hxx:36
otbMsgDevMacro
#define otbMsgDevMacro(x)
Definition: otbMacro.h:64