NVIDIA DeepStream SDK API Reference

9.2 Release
sources/gst-plugins/gst-nvtracker/nvtracker_proc.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2019-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 _NVTRACKERPROC_H
19 #define _NVTRACKERPROC_H
20 
21 #include <queue>
22 #include <map>
23 #include <mutex>
24 #include <condition_variable>
25 #include <thread>
26 #include <atomic>
27 #include <shared_mutex>
28 
29 #include "nvdsmeta.h"
30 #include "invtracker_proc.h"
31 #include "convbufmanager.h"
32 #include "miscdatabufmanager.h"
33 #include "nvdstracker.h"
34 
37 {
38 public:
39  NvTrackerProc();
40  virtual ~NvTrackerProc();
41 
42  virtual bool init(const TrackerConfig& config);
43  virtual void deInit();
44 
46  virtual bool addSource(uint32_t sourceId);
48  virtual bool removeSource(uint32_t sourceId, bool removeObjectIdMapping=true);
50  virtual bool resetSource(uint32_t sourceId);
52  virtual bool submitInput(const InputParams& inputParams);
54  virtual CompletionStatus waitForCompletion(InputParams& inputParams);
56  virtual bool flushReqs();
58  virtual bool updateDynamicConfig(const std::string& configStr, uint32_t sourceId);
59 
60 protected:
62  struct ClassInfo
63  {
66  std::string displayTextString;
67  std::string objLabel;
69  };
70 
72  std::map<int, ClassInfo> m_ClassInfoMap;
73  std::shared_mutex m_ClassInfoMapLock;
74 
76  typedef uint32_t BatchId;
77 
81  typedef uint64_t SurfaceStreamId;
83  typedef uint32_t StreamId;
85  typedef uint32_t SurfaceId;
87  typedef uint32_t SubBatchId;
89  typedef uint32_t SeqIndex;
93  bool m_Running = false;
95  std::atomic<bool> m_TrackerLibError;
96 
99 
102 
105  {
107  std::string configStr;
108  };
109 
112  {
115  };
116 
118  struct ProcParams
119  {
127  };
128 
130  std::queue<ProcParams> m_ProcQueue;
131  std::mutex m_ProcQueueLock;
132  std::condition_variable m_ProcQueueCond;
133  std::condition_variable m_BufQueueCond;
134 
139  std::vector<SubBatchId> subBatches;
140  bool completed = false;
142  };
143  std::map<BatchId, PendingBatchInfo> m_PendingBatch;
145  std::mutex m_PendingBatchLock;
146 
148  std::map< BatchId, bool > m_ConvBufComplete;
149  std::mutex m_ConvBufLock;
150 
152  bool m_SourceRemoved = false;
153  std::mutex m_SourceRemoveLock;
154  std::condition_variable m_SourceRemoveCond;
155 
158  std::thread m_ProcessBatchThread;
159  /******************************************************************************************************
160  * NOTE : Data structures and variables declared below are used for sub-batch processing.
161  * To get more insights into sub-batches feature implementation, please refer to the
162  * detailed documentation and examples elaborated at the end of nvtracker_proc.cpp
163  * ******************************************************************************************************/
164 
166  struct DispatchReq
167  {
170  std::map<SurfaceStreamId, NvDsFrameMeta *> subBatchFrameMap;
171  /* Tracker data for processing */
173  };
176  {
178  std::thread sbThread;
179  bool running;
180  std::queue<DispatchReq> reqQueue;
181  std::mutex reqQueueLock;
182  std::condition_variable reqQueueCond;
184 
185  // FIXME: operator= needed but not used in meaningful way
187  {
188  return *this;
189  }
190  };
192  std::map<SubBatchId, DispatchInfo> m_DispatchMap;
193  std::mutex m_DispatchMapLock;
197  std::map<SurfaceStreamId, SubBatchId> m_SsidSubBatchMap;
201  std::map<uint32_t, SeqIndex> m_PadIndexSeqIndexMap;
208  std::map<SubBatchId, std::map<SeqIndex, std::pair<SurfaceStreamId, uint32_t>>> m_SubBatchAllocationMap;
210  std::shared_mutex m_SubBatchMapLock;
212  uint32_t m_MaxSubBatchSize = 0;
216  void processSubBatch(DispatchInfo *pDispatchInfo);
219  bool dispatchSubBatches(ProcParams procParams);
222  bool mapStreamToSubBatch(SurfaceStreamId ssId, uint32_t pad_index, bool dynamicSubBatching);
223 
224  /******************************************************************************************************/
225 
227  std::queue<InputParams> m_CompletionQueue;
229  std::condition_variable m_CompletionQueueCond;
230 
232  std::map<SurfaceStreamId, guint64> m_ObjectIdOffsetMap;
235  std::map<uint32_t, SurfaceStreamId> m_PadIndexSsidMap;
236 
237 
240 
244  NvMOTContextHandle initTrackerContext(uint32_t sbId = 0);
246  bool initConvBufPool();
248  void deInitConvBufPool();
250  bool initMiscDataPool();
252  void deInitMiscDataPool();
254  bool initTrackerLib();
256  void deInitTrackerLib();
258  bool initTrackerQuery(const std::vector<NvMOTContextHandle>& contextHandleList);
261  bool initTrackerQuery(const NvMOTContextHandle& contextHandleList, uint32_t sbId);
264  NvMOTTrackedObjBatch &procResult);
266  NvMOTTrackedObjBatch &procResult, uint32_t batchSize);
269  NvMOTTrackedObjBatch &procResult);
271  NvMOTTrackedObjBatch &procResult, uint32_t batchSize);
272 
273  void allocateConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
274  void releaseConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
275 
276  void allocateMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
277  void releaseMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
278 
283  void queueFrames(const NvDsBatchMeta& batchMeta,
284  std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList);
286  void fillMOTFrame(SurfaceStreamId ssId,
287  const ProcParams& procParams,
288  const NvDsFrameMeta& frameMeta,
289  NvMOTFrame& motFrame,
290  NvMOTTrackedObjList& trackedObjList);
292  void updateBatchMeta(const NvMOTTrackedObjBatch& procResult,
293  const ProcParams& procParams,
294  std::map<SurfaceStreamId, NvDsFrameMeta *>& frameMap);
296  void updateFrameMeta(NvDsFrameMeta* pFrameMeta,
297  const NvMOTTrackedObjList& objList,
298  const ProcParams& procParams);
300  void updatePastFrameMeta(
301  const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
303  ProcParams& procParams);
305  void updateUserMeta(
306  const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
307  ProcParams& procParams, NvTrackerMiscDataBuffer *pMiscDataBuf);
308  void updateUserMeta(
309  const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>> &batchList,
310  ProcParams &procParams, NvTrackerMiscDataBuffer *pMiscDataBuf, TrackerMiscDataManager &miscDataMgr);
312  void updateObjMaskMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj);
314  void updateObjectReidMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj,
315  NvDsBatchMeta *pBatchMeta);
318  ProcParams& procParams);
320  void updateObjectProjectionMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj,
321  NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
323  void addDisplayMetaFootLocation(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta,
324  float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
326  void addDisplayMetaBbox3D(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta,
327  float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
329  void addDisplayMetaConvexHull(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta,
330  float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
331 
333  ProcParams& procParams);
334 
336  ProcParams& procParams);
337 
341  void processBatch();
342 
345  { return ( ((uint64_t)streamId << 32) | surfaceId ); };
346  StreamId getStreamId(SurfaceStreamId ssId) { return (StreamId)( ssId >> 32 ); };
347  SurfaceId getSurfaceId(SurfaceStreamId ssId) { return (SurfaceId)(ssId); };
348 
350  guint64 objectIdMapping(const guint64& objectId, const SurfaceStreamId& ssId);
352  void removeUntrackedObjects(NvDsFrameMeta* pFrameMeta);
358  bool clipBBox(uint32_t frameWidth, uint32_t frameHeight, float &left, float &top, float &width, float &height);
362  NvMOTContextHandle *pContextHandle,
363  NvMOTConfigResponse *pConfigResponse);
365  void (*m_TrackerLibDeInit) (NvMOTContextHandle contextHandle);
368  NvMOTProcessParams *pParams,
369  NvMOTTrackedObjBatch *pTrackedObjectsBatch);
372  NvMOTProcessParams *pParams,
373  NvMOTTrackerMiscData *pTrackerMiscData);
375  NvMOTStatus (*m_TrackerLibQuery) (uint16_t customConfigFilePathSize,
376  char* pCustomConfigFilePath,
377  NvMOTQuery *pQuery);
380  NvMOTStreamId streamIdMask);
382  NvMOTStatus (*m_TrackerLibUpdateParams) (NvMOTContextHandle contextHandle, const std::string &configStr);
383 
385 };
386 
387 #endif
NvTrackerProc::~NvTrackerProc
virtual ~NvTrackerProc()
NvTrackerProc::objectIdMapping
guint64 objectIdMapping(const guint64 &objectId, const SurfaceStreamId &ssId)
Object ID mapper to ensure ID starts from 0 after reset.
NvTrackerProc::m_DispatchMapLock
std::mutex m_DispatchMapLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:193
InputParams
Input data for tracker plugin.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:27
ConvBufManager
Definition: sources/gst-plugins/gst-nvtracker/convbufmanager.h:33
_NvOSD_RectParams
Holds the box parameters of the box to be overlayed.
Definition: includes/nvll_osd_struct.h:145
NvTrackerProc::updatePastFrameMeta
void updatePastFrameMeta(const std::vector< std::map< SurfaceStreamId, NvDsFrameMeta * >> &batchList, GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
Update past frame data.
NvTrackerProc::ClassInfo::displayTextString
std::string displayTextString
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:66
NvTrackerProc::updateDynamicConfig
virtual bool updateDynamicConfig(const std::string &configStr, uint32_t sourceId)
Update the low-level tracker lib's config dynamically during runtime.
NvTrackerProc::ProcParams::updateDynamicConfigInfo
UpdateDynamicConfigInfo updateDynamicConfigInfo
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:126
NvTrackerProc::m_Config
TrackerConfig m_Config
Tracker processing config.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:91
NvTrackerProc::DispatchInfo
Info corresponding to each sub-batch thread.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:175
NvTrackerProc::m_ConvBufComplete
std::map< BatchId, bool > m_ConvBufComplete
Stores status of pending batches for buffer conversion.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:148
NvTrackerProc::updateBatchReidMeta
void updateBatchReidMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
Update batch reid meta.
width
JDIMENSION JDIMENSION * width
Definition: sources/libs/nvll_batch_jpeg_encode/oss/jpeglib.h:1001
NvTrackerProc::DispatchReq::procParams
ProcParams procParams
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:176
NvTrackerProc::ProcParams::sourceRemoveInfo
SourceRemoveInfo sourceRemoveInfo
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:125
NvTrackerProc::allocateProcessMemory
void allocateProcessMemory(NvMOTProcessParams &procInput, NvMOTTrackedObjBatch &procResult)
Allocate memory for low level library input.
NvTrackerProc::UpdateDynamicConfigInfo
Update dynamic config info.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:104
NvBufSurfTransformSyncObj_t
struct NvBufSurfTransformSyncObj * NvBufSurfTransformSyncObj_t
Holds the information about synchronization objects for asynchronous transform/composite APIs.
Definition: includes/nvbufsurftransform.h:306
NvMOTStatus
NvMOTStatus
Defines generic status codes for tracking operations.
Definition: includes/nvdstracker.h:200
NvTrackerProc::mapStreamToSubBatch
bool mapStreamToSubBatch(SurfaceStreamId ssId, uint32_t pad_index, bool dynamicSubBatching)
Fuction to map a stream with a specific (SurfaceStreamId, pad_index) to a sub-batch.
NvTrackerProc::init
virtual bool init(const TrackerConfig &config)
NvTrackerProc::getStreamId
StreamId getStreamId(SurfaceStreamId ssId)
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:346
NvTrackerProc::ProcParams::pConvBuf
NvBufSurface * pConvBuf
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:122
NvTrackerProc::DispatchReq::subBatchFrameMap
std::map< SurfaceStreamId, NvDsFrameMeta * > subBatchFrameMap
Map for frames present in a sub-batch.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:174
NvTrackerProc::processBatch
void processBatch()
Function to pop batch from input queue, call low level lib to process and update meta data with track...
NvTrackerProc::queueFrames
void queueFrames(const NvDsBatchMeta &batchMeta, std::vector< std::map< SurfaceStreamId, NvDsFrameMeta * >> &batchList)
Functions to process a batch.
NvTrackerProc::releaseProcessMemory
void releaseProcessMemory(NvMOTProcessParams &procInput, NvMOTTrackedObjBatch &procResult)
Release input memory.
NvTrackerProc::SourceRemoveInfo::ssId
SurfaceStreamId ssId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:114
NvTrackerProc::m_PendingBatchLock
std::mutex m_PendingBatchLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:145
NvBufSurface
Holds information about batched buffers.
Definition: includes/nvbufsurface.h:602
NvTrackerProc::ClassInfo::uniqueComponentId
uint uniqueComponentId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:68
NvTrackerProc::SubBatchId
uint32_t SubBatchId
sub-batch ID.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:87
NvTrackerProc::m_CompletionQueueCond
std::condition_variable m_CompletionQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:229
NvTrackerProc::m_CompletionQueue
std::queue< InputParams > m_CompletionQueue
Completions.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:227
NvTrackerProc::PendingBatchInfo::completedInput
InputParams completedInput
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:141
NvTrackerProc::updateBatchMeta
void updateBatchMeta(const NvMOTTrackedObjBatch &procResult, const ProcParams &procParams, std::map< SurfaceStreamId, NvDsFrameMeta * > &frameMap)
Update batch meta with tracking results.
NvTrackerProc::ProcParams::input
InputParams input
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:120
NvTrackerProc::ProcParams::bufSetSyncObjs
NvBufSurfTransformSyncObj_t bufSetSyncObjs
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:124
_NvMOTTrackedObjBatch
Holds a batch of lists of tracked objects.
Definition: includes/nvdstracker.h:375
NvTrackerProc::deInitTrackerLib
void deInitTrackerLib()
Deinitialize low-level tracker lib.
TrackerMiscDataManager
Tracker misc data memory pool.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:48
NvTrackerProc::m_ClassInfoMapLock
std::shared_mutex m_ClassInfoMapLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:73
NvTrackerProc::releaseConvexHullMemory
void releaseConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
NvTrackerProc::DispatchInfo::sbThread
std::thread sbThread
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:178
NvTrackerProc::getSurfaceStreamId
SurfaceStreamId getSurfaceStreamId(StreamId streamId, SurfaceId surfaceId)
Getter.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:344
NvTrackerProc::m_SubBatchAllocationMap
std::map< SubBatchId, std::map< SeqIndex, std::pair< SurfaceStreamId, uint32_t > > > m_SubBatchAllocationMap
For dynamic/run-time mapping of source id(pad index) to sub-batches; maintain and update a map of all...
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:208
NvTrackerProc::m_ObjectIdOffsetMap
std::map< SurfaceStreamId, guint64 > m_ObjectIdOffsetMap
Object id mapping: {surface stream ID: object id offset}.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:232
NvTrackerProc::dispatchSubBatches
bool dispatchSubBatches(ProcParams procParams)
Function to create sub-batches from a batch and submit to corresponding sub-batch queues.
NvTrackerProc::SourceRemoveInfo
Source remove info.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:111
NvTrackerProc::m_ProcQueue
std::queue< ProcParams > m_ProcQueue
Input queue waiting for tracker proceeding.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:130
NvTrackerProc::m_PadIndexSeqIndexMap
std::map< uint32_t, SeqIndex > m_PadIndexSeqIndexMap
Pad index(Source id) mapping: {Pad index(source id): sequence index in the sub-batch}.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:201
NvTrackerProc::ClassInfo::rectParams
NvOSD_RectParams rectParams
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:64
NvTrackerProc::m_ConvBufLock
std::mutex m_ConvBufLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:149
NvTrackerProc::PendingBatchInfo::subBatches
std::vector< SubBatchId > subBatches
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:139
NvTrackerProc::m_MiscDataMgr
TrackerMiscDataManager m_MiscDataMgr
Buffer manager for misc data (user meta).
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:101
NvTrackerProc::m_TrackerLibQuery
NvMOTStatus(* m_TrackerLibQuery)(uint16_t customConfigFilePathSize, char *pCustomConfigFilePath, NvMOTQuery *pQuery)
Low level lib query.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:375
NvTrackerProc::initTrackerLib
bool initTrackerLib()
Initialize low-level tracker lib.
NvTrackerProc::m_SourceRemoved
bool m_SourceRemoved
Variable to check if a source is removed from low level tracker lib.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:152
_NvMOTFrame
Holds a frame containing the image and objects to be tracked.
Definition: includes/nvdstracker.h:281
NvTrackerProc::updateShadowTrackMeta
void updateShadowTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
NvTrackerProc::fillMOTFrame
void fillMOTFrame(SurfaceStreamId ssId, const ProcParams &procParams, const NvDsFrameMeta &frameMeta, NvMOTFrame &motFrame, NvMOTTrackedObjList &trackedObjList)
Fill input to low-level tracker lib.
NvTrackerProc::ProcParams
Tracker data submitted for proceeding.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:118
uint
unsigned int uint
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:25
NvTrackerProc::ClassInfo::objLabel
std::string objLabel
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:67
NvTrackerProc::m_TrackerLibInit
NvMOTStatus(* m_TrackerLibInit)(NvMOTConfig *pConfigIn, NvMOTContextHandle *pContextHandle, NvMOTConfigResponse *pConfigResponse)
Tracker low level library functions.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:361
CompletionStatus
CompletionStatus
Tracker process completion status.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:36
NvTrackerProc::allocateMaskMemory
void allocateMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
_NvMOTTrackedObj
Holds information about each tracked object.
Definition: includes/nvdstracker.h:318
NvTrackerProc::m_BufQueueCond
std::condition_variable m_BufQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:133
NvTrackerProc::updateUserMeta
void updateUserMeta(const std::vector< std::map< SurfaceStreamId, NvDsFrameMeta * >> &batchList, ProcParams &procParams, NvTrackerMiscDataBuffer *pMiscDataBuf)
Update tracker user meta.
NvTrackerProc::SurfaceId
uint32_t SurfaceId
Surface type ID.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:85
NvTrackerProc::deInit
virtual void deInit()
miscdatabufmanager.h
NvTrackerProc::m_TrackerLibHandle
void * m_TrackerLibHandle
Low-level tracker lib API and support functions.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:239
NvTrackerProc::updateTerminatedTrackMeta
void updateTerminatedTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
NvTrackerProc::BatchId
uint32_t BatchId
Current batch ID.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:76
NvTrackerProc::StreamId
uint32_t StreamId
Source stream ID.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:83
NvTrackerProc::updateObjectProjectionMeta
void updateObjectProjectionMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Update each object's model projection meta.
NvTrackerProc::allocatePastFrameMemory
NvDsTargetMiscDataBatch * allocatePastFrameMemory()
_NvMOTConfigResponse
Holds a tracker's configuration status.
Definition: includes/nvdstracker.h:182
NvTrackerProc::initTrackerQuery
bool initTrackerQuery(const std::vector< NvMOTContextHandle > &contextHandleList)
Initialize parameter query from low-level tracker lib.
NvTrackerProc::ProcParams::useConvBuf
bool useConvBuf
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:121
NvTrackerProc::updateFrameMeta
void updateFrameMeta(NvDsFrameMeta *pFrameMeta, const NvMOTTrackedObjList &objList, const ProcParams &procParams)
Update each stream's frame meta with tracking results.
NvTrackerProc::ClassInfo::textParams
NvOSD_TextParams textParams
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:65
NvTrackerProc::m_SubBatchMapLock
std::shared_mutex m_SubBatchMapLock
Lock for critical code for variables m_SubBatchAllocationMap, m_PadIndexSeqIndexMap,...
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:210
NvTrackerProc::PendingBatchInfo
Per-batch tracking: pending sub-batches and in-order completion state.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:138
NvTrackerProc::m_TrackerLibRemoveStreams
NvMOTStatus(* m_TrackerLibRemoveStreams)(NvMOTContextHandle contextHandle, NvMOTStreamId streamIdMask)
Low level lib remove streams.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:379
NvTrackerProc
Tracker process class.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:36
NvTrackerProc::m_MaxSubBatchSize
uint32_t m_MaxSubBatchSize
Max sub-batch size.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:212
NvTrackerProc::m_PendingBatch
std::map< BatchId, PendingBatchInfo > m_PendingBatch
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:143
_NvDsBatchMeta
Holds information about a formed batch containing frames from different sources.
Definition: includes/nvdsmeta.h:264
NvTrackerProc::initConvBufPool
bool initConvBufPool()
Initialize surface transform buffer pool.
NvTrackerProc::SourceRemoveInfo::removeSource
bool removeSource
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:113
NvTrackerProc::m_ProcessBatchThread
std::thread m_ProcessBatchThread
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:158
NvTrackerProc::m_TrackerLibUpdateParams
NvMOTStatus(* m_TrackerLibUpdateParams)(NvMOTContextHandle contextHandle, const std::string &configStr)
Low level lib update parameters.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:382
NvMOTStreamId
uint64_t NvMOTStreamId
Definition: includes/nvdstracker.h:53
NvTrackerProc::deInitConvBufPool
void deInitConvBufPool()
Deinitialize surface transform buffer pool.
NvTrackerProc::m_ClassInfoMap
std::map< int, ClassInfo > m_ClassInfoMap
Info mapped per class.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:72
NvTrackerProc::clipBBox
bool clipBBox(uint32_t frameWidth, uint32_t frameHeight, float &left, float &top, float &width, float &height)
Clip the bbox to be within the frame.
NvMOTContext
Context for input video streams.
Definition: sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/context.hpp:23
NvTrackerProc::m_CompletionQueueLock
std::mutex m_CompletionQueueLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:228
NvTrackerProc::initTrackerContext
NvMOTContextHandle initTrackerContext(uint32_t sbId=0)
Internal initializing and release function.
_NvMOTProcessParams
Holds parameters for processing a batch.
Definition: includes/nvdstracker.h:408
NvTrackerMiscDataBuffer
Tracker misc data buffer for a batch.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:32
NvTrackerProc::DispatchInfo::operator=
DispatchInfo & operator=(DispatchInfo const &rhs)
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:186
NvTrackerProc::DispatchReq::batchId
BatchId batchId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:172
_NvMOTTrackedObjList
Holds a list of tracked objects.
Definition: includes/nvdstracker.h:356
NvTrackerProc::m_SourceRemoveLock
std::mutex m_SourceRemoveLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:153
NvTrackerProc::flushReqs
virtual bool flushReqs()
Flush the request to send the batch downstream.
NvTrackerProc::m_TrackerLibRetrieveMiscData
NvMOTStatus(* m_TrackerLibRetrieveMiscData)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackerMiscData *pTrackerMiscData)
Low level lib process past frame.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:371
_NvMOTQuery
Holds the capabilities and requirements reported by the tracker library.
Definition: includes/nvdstracker.h:420
NvTrackerProc::waitForCompletion
virtual CompletionStatus waitForCompletion(InputParams &inputParams)
Wait until a batch's process is done.
NvTrackerProc::updateObjMaskMeta
void updateObjMaskMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj)
Update segmentation mask meta.
NvTrackerProc::DispatchInfo::running
bool running
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:179
NvTrackerProc::DispatchInfo::reqQueueLock
std::mutex reqQueueLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:181
NvTrackerProc::resetSource
virtual bool resetSource(uint32_t sourceId)
Tracker actions when a source is reset.
NvTrackerProc::deInitMiscDataPool
void deInitMiscDataPool()
Deinitialize misc data (user meta) buffer pool.
INvTrackerProc
Virtual base class for tracker plugin processing.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:116
convbufmanager.h
NvTrackerProc::SeqIndex
uint32_t SeqIndex
Sequence index in a sub-batch.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:89
NvTrackerProc::m_ConvBufMgr
ConvBufManager m_ConvBufMgr
Buffer manager for surface transformation.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:98
NvTrackerProc::UpdateDynamicConfigInfo::configStr
std::string configStr
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:107
NvTrackerProc::addDisplayMetaBbox3D
void addDisplayMetaBbox3D(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Add display metadata for 3D bounding box on image.
_NvOSD_TextParams
Holds parameters of text to be overlayed.
Definition: includes/nvll_osd_struct.h:120
NvTrackerProc::DispatchInfo::contextHandle
NvMOTContextHandle contextHandle
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:183
NvTrackerProc::m_SourceRemoveCond
std::condition_variable m_SourceRemoveCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:154
NvTrackerProc::DispatchInfo::reqQueue
std::queue< DispatchReq > reqQueue
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:180
NvTrackerProc::ClassInfo
Object class information.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:62
NvTrackerProc::m_SsidSubBatchMap
std::map< SurfaceStreamId, SubBatchId > m_SsidSubBatchMap
Mapping for SurfaceStreamId => SubBatchId.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:197
NvTrackerProc::DispatchInfo::sbId
SubBatchId sbId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:177
NvTrackerProc::initMiscDataPool
bool initMiscDataPool()
Initialize misc data (user meta) buffer pool.
NvTrackerProc::PendingBatchInfo::completed
bool completed
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:140
TrackerConfig
Tracker plugin config params.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:57
GstNvTrackerMiscDataObject
GStreamer mini object for GStreamer pipeline to control tracker user meta.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:117
_NvDsTargetMiscDataBatch
Batch of all streams of a given target misc output.
Definition: includes/nvds_tracker_meta.h:113
NvTrackerProc::m_TrackerLibProcess
NvMOTStatus(* m_TrackerLibProcess)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackedObjBatch *pTrackedObjectsBatch)
Low level lib process.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:367
NvTrackerProc::UpdateDynamicConfigInfo::updateDynamicConfig
bool updateDynamicConfig
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:106
NvTrackerProc::m_Running
bool m_Running
Tracker lib is running.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:93
NvTrackerProc::addDisplayMetaFootLocation
void addDisplayMetaFootLocation(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Add display metadata for foot location on image.
NvTrackerProc::m_BatchContextHandle
NvMOTContextHandle m_BatchContextHandle
Batch dispatch to low-level tracker lib.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:157
NvTrackerProc::DispatchInfo::reqQueueCond
std::condition_variable reqQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:182
_NvDsFrameMeta
Holds metadata for a frame in a batch.
Definition: includes/nvdsmeta.h:308
NvTrackerProc::m_BatchId
BatchId m_BatchId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:144
NvTrackerProc::removeSource
virtual bool removeSource(uint32_t sourceId, bool removeObjectIdMapping=true)
Tracker actions when a source is removed to the pipeline.
_NvMOTTrackerMiscData
Tracker misc data.
Definition: includes/nvdstracker.h:390
NvTrackerProc::SurfaceStreamId
uint64_t SurfaceStreamId
Composition of unique ID for each surface from each source Some sources (e.g.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:81
NvTrackerProc::DispatchReq
Per-sub-batch dispatch to low-level tracker lib.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:166
NvTrackerProc::allocateConvexHullMemory
void allocateConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
NvTrackerProc::addDisplayMetaConvexHull
void addDisplayMetaConvexHull(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Add display metadata for convex hull on image.
NvTrackerProc::ProcParams::batchId
BatchId batchId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:123
NvTrackerProc::updateObjectReidMeta
void updateObjectReidMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta)
Update each object's reid meta.
NvTrackerProc::m_PadIndexSsidMap
std::map< uint32_t, SurfaceStreamId > m_PadIndexSsidMap
Pad index to surface stream ID mapping.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:235
NvTrackerProc::NvTrackerProc
NvTrackerProc()
_NvMOTConfig
Holds a tracker configuration.
Definition: includes/nvdstracker.h:130
NvTrackerProc::m_ObjectIdOffsetMapLock
std::mutex m_ObjectIdOffsetMapLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:233
NvTrackerProc::m_ProcQueueLock
std::mutex m_ProcQueueLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:131
NvTrackerProc::m_ProcQueueCond
std::condition_variable m_ProcQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:132
NvTrackerProc::m_TrackerLibError
std::atomic< bool > m_TrackerLibError
Tracker lib encounters an error.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:95
NvTrackerProc::submitInput
virtual bool submitInput(const InputParams &inputParams)
Submit an input batch to tracker process queue.
NvTrackerProc::m_DispatchMap
std::map< SubBatchId, DispatchInfo > m_DispatchMap
Mapping from sub-batch id to corresponding thread info.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:192
NvTrackerProc::removeUntrackedObjects
void removeUntrackedObjects(NvDsFrameMeta *pFrameMeta)
Remove objects that don't need an ID.
NvTrackerProc::m_TrackerLibDeInit
void(* m_TrackerLibDeInit)(NvMOTContextHandle contextHandle)
Low level lib deinit.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:365
NvTrackerProc::getSurfaceId
SurfaceId getSurfaceId(SurfaceStreamId ssId)
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:347
invtracker_proc.h
NvTrackerProc::addSource
virtual bool addSource(uint32_t sourceId)
Tracker actions when a source is added to the pipeline.
NvTrackerProc::releaseMaskMemory
void releaseMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
NvTrackerProc::processSubBatch
void processSubBatch(DispatchInfo *pDispatchInfo)
Function to pop sub-batch from queue, call low level lib to process and update meta data with trackin...
_NvDsObjectMeta
Holds metadata for an object in the frame.
Definition: includes/nvdsmeta.h:367