22 #ifndef __NVDSINFERSERVER_SURFACE_BUFS_H__
23 #define __NVDSINFERSERVER_SURFACE_BUFS_H__
26 #include <condition_variable>
37 #include <nvbufsurface.h>
38 #include <nvbufsurftransform.h>
42 #include "infer_datatypes.h"
70 return m_BufPtrs[batchIdx];
83 return (
char*)m_BufPtrs[batchIdx] - (
char*)m_BufPtrs[0];
100 uint32_t m_ReservedSize{0};
102 std::vector<void*> m_BufPtrs;
109 std::vector<CUgraphicsResource> m_CudaResources;
110 std::vector<CUeglFrame> m_EglFrames;
121 mutableBufDesc().devId = devId;
124 mutableBufDesc().elementSize = 1;
125 m_BufSurface.gpuId = devId;
126 m_BufSurface.batchSize = maxBatchSize;
127 m_BufSurface.memType = memType;
130 assert(batchIdx < m_BufSurface.numFilled);
131 if (batchIdx >= m_BufSurface.numFilled)
133 return m_BufSurface.surfaceList[batchIdx].dataPtr;
142 assert(batchIdx < m_BufSurface.numFilled);
143 if (batchIdx >= m_BufSurface.numFilled)
145 if (m_BufSurface.isContiguous) {
146 return (
char *)m_BufSurface.surfaceList[batchIdx].dataPtr -
147 (
char *)m_BufSurface.surfaceList[0].dataPtr;
155 m_Params.push_back(params);
156 m_CropRects.push_back(crop);
157 m_ScaleRatios.emplace_back(0, 0);
158 m_Offsets.emplace_back(0, 0);
159 m_BufSurface.surfaceList = &m_Params[0];
160 m_BufSurface.numFilled = (uint32_t)m_Params.size();
161 assert(m_BufSurface.numFilled <= m_BufSurface.batchSize);
162 setBatchSize(m_BufSurface.numFilled);
165 assert(batchIdx < (
int)m_Params.size());
166 return m_Params.at(batchIdx);
169 assert(batchIdx < (
int)m_CropRects.size());
170 return m_CropRects.at(batchIdx);
175 assert(batchIdx < (uint32_t)m_ScaleRatios.size());
176 std::tie(ratioX, ratioY) = m_ScaleRatios.at(batchIdx);
180 assert(batchIdx < (uint32_t)m_ScaleRatios.size());
181 m_ScaleRatios.at(batchIdx) = std::tie(ratioX, ratioY);
185 uint32_t& offsetTop) {
186 assert(batchIdx < (uint32_t)m_Offsets.size());
187 std::tie(offsetLeft, offsetTop) = m_Offsets.at(batchIdx);
190 void setOffsets(uint32_t batchIdx, uint32_t offsetLeft, uint32_t offsetTop) {
191 assert(batchIdx < (uint32_t)m_Offsets.size());
192 m_Offsets.at(batchIdx) = std::tie(offsetLeft, offsetTop);
197 std::vector<NvBufSurfaceParams> m_Params;
198 std::vector<NvBufSurfTransformRect> m_CropRects;
199 std::vector<std::tuple<double, double>> m_ScaleRatios;
200 std::vector<std::tuple<uint32_t, uint32_t>> m_Offsets;