NVIDIA DeepStream SDK API Reference

9.2 Release
sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/cuDCFFrameTransformTexture.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef cuDCFFrameTransform_HPP_
19 #define cuDCFFrameTransform_HPP_
20 
21 #include "modules/FrameTransform/FrameTransform.hpp"
22 #include "modules/utility/dataTypes.hpp"
23 
26 {
27 public:
30 
33 
47  void initialize(
48  const int debugVerboseLevel, const int maxStreamNum, const int maxBufSurfAddrSize,
49  const int maxTargetNum, const NvMotDataTypes::Size srcImgSize, const uint srcImgPitch,
50  const NvBufSurfaceColorFormat colorFormatType, const NvMotDataTypes::Size dstImgSize,
51  const bool needSecondaryScale = false, const float secondaryScaleFactor = 1.0
52  );
53 
61  const std::map<NvMOTStreamId, std::vector<std::pair<uint, NvMotDataTypes::Rect2f> > > &roisInBatch,
62  const uint lastBboxInd
63  );
64 
73  const std::map<NvMOTStreamId, std::vector<std::pair<uint, NvMotDataTypes::Rect2f> > > &roisInBatch,
74  const uint lastBboxInd, bool doMosaicing
75  );
76 
89  uint8_t* &dataPtr_d, uint &width, uint &height, uint2 &outBatchingGrid,
90  uint &channels, uint &pitch, uint &imgNum, uint multiResInd
91  );
92 
94  int getMultiResScaleNum() const { return m_multiResScaleNum; }
95 
97  uint2 getOutBatchingGrid() const { return m_outBatchingGrid; }
98 
100  bool isInitialized() const { return m_isInit; }
101 
102  #if defined(VIZ_DEBUG)
103 
104  const std::map<NvMOTStreamId, cv::Mat> &getSourceImagesAtHost() const
105  {
106  if(!m_frameInput)
107  {
108  throw std::runtime_error("frameInput is invalid");
109  }
110  const std::map<NvMOTStreamId, cv::Mat> & srcFramesAtHost = m_frameInput->getSrcFramesAtHost();
111  if(srcFramesAtHost.size() == 0)
112  {
113  throw std::runtime_error("srcFramesAtHost is not prepared");
114  }
115  else
116  {
117  return srcFramesAtHost;
118  }
119  }
120 
126  std::map<NvMOTStreamId, std::map<uint, cv::Mat > > getImagePatches2Host_OCV_mosaic(uint multiResInd = 0);
127 
133  std::map<NvMOTStreamId, std::map<uint, cv::Mat > > getImagePatches2Host_OCV_batch(uint multiResInd = 0);
134  #endif
135 
136 private:
141  void initialize4Output(const NvMotDataTypes::Size dstSize);
142 
144  void allocateOutputMemories();
145 
147  void deAllocateOutputMemories();
148 
149  bool m_isInit;
150  bool m_doMosaicing;
151 
152  // [Output configuration specific to cuDCF]
154  uint2 m_outBatchingGrid;
155  int m_multiResScaleNum;
156  float m_multiResScaleFactors[CUDA_TEXTURE_MAX_MULTI_SCALE_NUM];
157 
158  // [Output memory specific to cuDCF]
159  uint8_t* m_odataPL_d[CUDA_TEXTURE_MAX_MULTI_SCALE_NUM];
160  size_t m_odataPL_d_pitch[CUDA_TEXTURE_MAX_MULTI_SCALE_NUM];
161  uint8_t *m_odata_host[CUDA_TEXTURE_MAX_MULTI_SCALE_NUM];
162 };
163 
164 #endif // cuDCFFrameTransform_HPP_
cuDCFFrameTransformTexture::~cuDCFFrameTransformTexture
~cuDCFFrameTransformTexture()
Release CUDA texture frame-transform resources.
width
JDIMENSION JDIMENSION * width
Definition: sources/libs/nvll_batch_jpeg_encode/oss/jpeglib.h:1001
cuDCFFrameTransformTexture
Crops, scales, and converts tracker image patches with CUDA textures.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/cuDCFFrameTransformTexture.hpp:25
cuDCFFrameTransformTexture::cuDCFFrameTransformTexture
cuDCFFrameTransformTexture()
Construct an uninitialized CUDA texture frame transform.
uint
unsigned int uint
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:25
cuDCFFrameTransformTexture::getOutputImagePatchPtrs
void getOutputImagePatchPtrs(uint8_t *&dataPtr_d, uint &width, uint &height, uint2 &outBatchingGrid, uint &channels, uint &pitch, uint &imgNum, uint multiResInd)
Get the pointer to the output image patches on device memory with metadata.
cuDCFFrameTransformTexture::frameTransformInBatch_NV12
bool frameTransformInBatch_NV12(const std::map< NvMOTStreamId, std::vector< std::pair< uint, NvMotDataTypes::Rect2f > > > &roisInBatch, const uint lastBboxInd, bool doMosaicing)
Transform (crop, scale and color conversion) a set of bboxes for the given single frame.
FrameTransformTexture
Provides common CUDA texture state for frame transformations.
Definition: sources/libs/nvmultiobjecttracker/include/modules/FrameTransform/FrameTransform.hpp:210
NvMOTStreamId
uint64_t NvMOTStreamId
Definition: includes/nvdstracker.h:53
FrameTransformTexture::m_frameInput
std::shared_ptr< FrameInputTexture > m_frameInput
Shared input-frame texture manager.
Definition: sources/libs/nvmultiobjecttracker/include/modules/FrameTransform/FrameTransform.hpp:262
cuDCFFrameTransformTexture::initialize
void initialize(const int debugVerboseLevel, const int maxStreamNum, const int maxBufSurfAddrSize, const int maxTargetNum, const NvMotDataTypes::Size srcImgSize, const uint srcImgPitch, const NvBufSurfaceColorFormat colorFormatType, const NvMotDataTypes::Size dstImgSize, const bool needSecondaryScale=false, const float secondaryScaleFactor=1.0)
Initialize for image cropping and scaling.
CUDA_TEXTURE_MAX_MULTI_SCALE_NUM
#define CUDA_TEXTURE_MAX_MULTI_SCALE_NUM
Definition: sources/libs/nvmultiobjecttracker/include/modules/FrameTransform/FrameTransform.hpp:42
cuDCFFrameTransformTexture::frameTransformInBatch
bool frameTransformInBatch(const std::map< NvMOTStreamId, std::vector< std::pair< uint, NvMotDataTypes::Rect2f > > > &roisInBatch, const uint lastBboxInd)
Transform (crop, scale and color conversion) a set of bboxes for the given single frame.
NvMotDataTypes::Size
Represents a two-dimensional integer size.
Definition: sources/libs/nvmultiobjecttracker/include/modules/utility/dataTypes.hpp:52
cuDCFFrameTransformTexture::getOutBatchingGrid
uint2 getOutBatchingGrid() const
Return the two-dimensional output batching grid.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/cuDCFFrameTransformTexture.hpp:97
cuDCFFrameTransformTexture::getMultiResScaleNum
int getMultiResScaleNum() const
Return the number of output scale levels.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/cuDCFFrameTransformTexture.hpp:94
cuDCFFrameTransformTexture::isInitialized
bool isInitialized() const
Report whether frame-transform initialization completed.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/cuDCFFrameTransformTexture.hpp:100
NvBufSurfaceColorFormat
NvBufSurfaceColorFormat
Defines color formats for NvBufSurface.
Definition: includes/nvbufsurface.h:110