NVIDIA DeepStream SDK API Reference

9.0 Release
9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2019-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
13 #ifndef _NVTRACKERPROC_H
14 #define _NVTRACKERPROC_H
15 
16 #include <queue>
17 #include <map>
18 #include <mutex>
19 #include <condition_variable>
20 #include <thread>
21 #include <atomic>
22 #include <shared_mutex>
23 
24 #include "nvdsmeta.h"
25 #include "invtracker_proc.h"
26 #include "convbufmanager.h"
27 #include "miscdatabufmanager.h"
28 #include "nvdstracker.h"
29 
31 class NvTrackerProc : public INvTrackerProc
32 {
33 public:
34  NvTrackerProc();
35  virtual ~NvTrackerProc();
36 
37  virtual bool init(const TrackerConfig& config);
38  virtual void deInit();
39 
41  virtual bool addSource(uint32_t sourceId);
43  virtual bool removeSource(uint32_t sourceId, bool removeObjectIdMapping=true);
45  virtual bool resetSource(uint32_t sourceId);
47  virtual bool submitInput(const InputParams& inputParams);
49  virtual CompletionStatus waitForCompletion(InputParams& inputParams);
51  virtual bool flushReqs();
53  virtual bool updateDynamicConfig(const std::string& configStr, uint32_t sourceId);
54 
55 protected:
57  struct ClassInfo
58  {
61  std::string displayTextString;
62  std::string objLabel;
63  uint uniqueComponentId;
64  };
65 
67  std::map<int, ClassInfo> m_ClassInfoMap;
68  std::shared_mutex m_ClassInfoMapLock;
69 
71  typedef uint32_t BatchId;
72 
76  typedef uint64_t SurfaceStreamId;
78  typedef uint32_t StreamId;
80  typedef uint32_t SurfaceId;
82  typedef uint32_t SubBatchId;
84  typedef uint32_t SeqIndex;
88  bool m_Running = false;
90  std::atomic<bool> m_TrackerLibError;
91 
94 
97 
100  {
101  bool updateDynamicConfig;
102  std::string configStr;
103  };
104 
106  struct SourceRemoveInfo
107  {
108  bool removeSource;
110  };
111 
113  struct ProcParams
114  {
116  bool useConvBuf;
120  SourceRemoveInfo sourceRemoveInfo;
121  UpdateDynamicConfigInfo updateDynamicConfigInfo;
122  };
123 
125  std::queue<ProcParams> m_ProcQueue;
126  std::mutex m_ProcQueueLock;
127  std::condition_variable m_ProcQueueCond;
128  std::condition_variable m_BufQueueCond;
129 
131  std::map< BatchId, std::vector<SubBatchId> > m_PendingBatch;
132  BatchId m_BatchId = 0;
133  std::mutex m_PendingBatchLock;
134 
136  std::map< BatchId, bool > m_ConvBufComplete;
137  std::mutex m_ConvBufLock;
138 
140  bool m_SourceRemoved = false;
141  std::mutex m_SourceRemoveLock;
142  std::condition_variable m_SourceRemoveCond;
143 
146  std::thread m_ProcessBatchThread;
147  /******************************************************************************************************
148  * NOTE : Data structures and variables declared below are used for sub-batch processing.
149  * To get more insights into sub-batches feature implementation, please refer to the
150  * detailed documentation and examples elaborated at the end of nvtracker_proc.cpp
151  * ******************************************************************************************************/
152 
154  struct DispatchReq
155  {
158  std::map<SurfaceStreamId, NvDsFrameMeta *> subBatchFrameMap;
159  /* Tracker data for processing */
160  ProcParams procParams;
161  };
163  struct DispatchInfo
164  {
166  std::thread sbThread;
167  bool running;
168  std::queue<DispatchReq> reqQueue;
169  std::mutex reqQueueLock;
170  std::condition_variable reqQueueCond;
172 
173  // FIXME: operator= needed but not used in meaningful way
175  {
176  return *this;
177  }
178  };
180  std::map<SubBatchId, DispatchInfo> m_DispatchMap;
181  std::mutex m_DispatchMapLock;
185  std::map<SurfaceStreamId, SubBatchId> m_SsidSubBatchMap;
189  std::map<uint32_t, SeqIndex> m_PadIndexSeqIndexMap;
196  std::map<SubBatchId, std::map<SeqIndex, std::pair<SurfaceStreamId, uint32_t>>> m_SubBatchAllocationMap;
198  std::shared_mutex m_SubBatchMapLock;
200  uint32_t m_MaxSubBatchSize = 0;
204  void processSubBatch(DispatchInfo *pDispatchInfo);
207  bool dispatchSubBatches(ProcParams procParams);
210  bool mapStreamToSubBatch(SurfaceStreamId ssId, uint32_t pad_index, bool dynamicSubBatching);
211 
212  /******************************************************************************************************/
213 
215  std::queue<InputParams> m_CompletionQueue;
216  std::mutex m_CompletionQueueLock;
217  std::condition_variable m_CompletionQueueCond;
218 
220  std::map<SurfaceStreamId, guint64> m_ObjectIdOffsetMap;
221  std::mutex m_ObjectIdOffsetMapLock;
223  std::map<uint32_t, SurfaceStreamId> m_PadIndexSsidMap;
224 
225 
227  void *m_TrackerLibHandle;
228 
232  NvMOTContextHandle initTrackerContext(uint32_t sbId = 0);
234  bool initConvBufPool();
236  void deInitConvBufPool();
238  bool initMiscDataPool();
240  void deInitMiscDataPool();
242  bool initTrackerLib();
244  void deInitTrackerLib();
246  bool initTrackerQuery(const std::vector<NvMOTContextHandle>& contextHandleList);
249  bool initTrackerQuery(const NvMOTContextHandle& contextHandleList, uint32_t sbId);
252  NvMOTTrackedObjBatch &procResult);
254  NvMOTTrackedObjBatch &procResult, uint32_t batchSize);
257  NvMOTTrackedObjBatch &procResult);
259  NvMOTTrackedObjBatch &procResult, uint32_t batchSize);
260 
261  void allocateConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
262  void releaseConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
263 
264  void allocateMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
265  void releaseMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated);
266 
271  void queueFrames(const NvDsBatchMeta& batchMeta,
272  std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList);
274  void fillMOTFrame(SurfaceStreamId ssId,
275  const ProcParams& procParams,
276  const NvDsFrameMeta& frameMeta,
277  NvMOTFrame& motFrame,
278  NvMOTTrackedObjList& trackedObjList);
280  void updateBatchMeta(const NvMOTTrackedObjBatch& procResult,
281  const ProcParams& procParams,
282  std::map<SurfaceStreamId, NvDsFrameMeta *>& frameMap);
284  void updateFrameMeta(NvDsFrameMeta* pFrameMeta,
285  const NvMOTTrackedObjList& objList,
286  const ProcParams& procParams);
288  void updatePastFrameMeta(
289  const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
291  ProcParams& procParams);
293  void updateUserMeta(
294  const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
295  ProcParams& procParams, NvTrackerMiscDataBuffer *pMiscDataBuf);
296  void updateUserMeta(
297  const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>> &batchList,
298  ProcParams &procParams, NvTrackerMiscDataBuffer *pMiscDataBuf, TrackerMiscDataManager &miscDataMgr);
300  void updateObjMaskMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj);
302  void updateObjectReidMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj,
303  NvDsBatchMeta *pBatchMeta);
306  ProcParams& procParams);
308  void updateObjectProjectionMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj,
309  NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
311  void addDisplayMetaFootLocation(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta,
312  float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
314  void addDisplayMetaBbox3D(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta,
315  float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
317  void addDisplayMetaConvexHull(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta,
318  float scaleWidth, float scaleHeight, NvDsFrameMeta* pFrameMeta);
319 
321  ProcParams& procParams);
322 
324  ProcParams& procParams);
325 
329  void processBatch();
330 
333  { return ( ((uint64_t)streamId << 32) | surfaceId ); };
334  StreamId getStreamId(SurfaceStreamId ssId) { return (StreamId)( ssId >> 32 ); };
335  SurfaceId getSurfaceId(SurfaceStreamId ssId) { return (SurfaceId)(ssId); };
336 
338  guint64 objectIdMapping(const guint64& objectId, const SurfaceStreamId& ssId);
340  void removeUntrackedObjects(NvDsFrameMeta* pFrameMeta);
346  bool clipBBox(uint32_t frameWidth, uint32_t frameHeight, float &left, float &top, float &width, float &height);
350  NvMOTContextHandle *pContextHandle,
351  NvMOTConfigResponse *pConfigResponse);
353  void (*m_TrackerLibDeInit) (NvMOTContextHandle contextHandle);
356  NvMOTProcessParams *pParams,
357  NvMOTTrackedObjBatch *pTrackedObjectsBatch);
360  NvMOTProcessParams *pParams,
361  NvMOTTrackerMiscData *pTrackerMiscData);
363  NvMOTStatus (*m_TrackerLibQuery) (uint16_t customConfigFilePathSize,
364  char* pCustomConfigFilePath,
365  NvMOTQuery *pQuery);
368  NvMOTStreamId streamIdMask);
370  NvMOTStatus (*m_TrackerLibUpdateParams) (NvMOTContextHandle contextHandle, const std::string &configStr);
371 
373 };
374 
375 #endif
NvTrackerProc::~NvTrackerProc
virtual ~NvTrackerProc()
NvMOTContextHandle
struct NvMOTContext * NvMOTContextHandle
Definition: sources/includes/nvdstracker.h:396
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:181
InputParams
Input data for tracker plugin.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:22
ConvBufManager
Definition: sources/gst-plugins/gst-nvtracker/convbufmanager.h:28
_NvOSD_RectParams
Holds the box parameters of the box to be overlayed.
Definition: sources/includes/nvll_osd_struct.h:140
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:61
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:121
NvTrackerProc::m_Config
TrackerConfig m_Config
Tracker processing config.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:86
NvTrackerProc::DispatchInfo
Info corresponding to each sub-batch thread.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:163
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:136
NvTrackerProc::updateBatchReidMeta
void updateBatchReidMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
Update batch reid meta.
NvTrackerProc::DispatchReq::procParams
ProcParams procParams
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:164
NvTrackerProc::ProcParams::sourceRemoveInfo
SourceRemoveInfo sourceRemoveInfo
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:120
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:99
NvBufSurfTransformSyncObj_t
struct NvBufSurfTransformSyncObj * NvBufSurfTransformSyncObj_t
Holds the information about synchronization objects for asynchronous transform/composite APIs.
Definition: sources/includes/nvbufsurftransform.h:301
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: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:334
NvTrackerProc::ProcParams::pConvBuf
NvBufSurface * pConvBuf
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:117
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:162
NvTrackerProc::processBatch
void processBatch()
Function to pop batch from input queue, call low level lib to process and update meta data with track...
NvMOTStatus
NvMOTStatus
Defines generic status codes for tracking operations.
Definition: sources/includes/nvdstracker.h:177
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:109
NvTrackerProc::m_PendingBatchLock
std::mutex m_PendingBatchLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:133
NvBufSurface
Holds information about batched buffers.
Definition: sources/includes/nvbufsurface.h:597
NvTrackerProc::ClassInfo::uniqueComponentId
uint uniqueComponentId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:63
NvTrackerProc::SubBatchId
uint32_t SubBatchId
sub-batch ID.
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:82
NvTrackerProc::m_CompletionQueueCond
std::condition_variable m_CompletionQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:217
NvTrackerProc::m_CompletionQueue
std::queue< InputParams > m_CompletionQueue
Completions.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:215
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:115
NvTrackerProc::ProcParams::bufSetSyncObjs
NvBufSurfTransformSyncObj_t bufSetSyncObjs
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:119
_NvMOTTrackedObjBatch
Holds a batch of lists of tracked objects.
Definition: sources/includes/nvdstracker.h:353
NvTrackerProc::deInitTrackerLib
void deInitTrackerLib()
Deinitialize low-level tracker lib.
TrackerMiscDataManager
Tracker misc data memory pool.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:43
NvTrackerProc::m_ClassInfoMapLock
std::shared_mutex m_ClassInfoMapLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:68
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:166
NvTrackerProc::getSurfaceStreamId
SurfaceStreamId getSurfaceStreamId(StreamId streamId, SurfaceId surfaceId)
Getter.
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:332
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:196
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:220
NvTrackerProc::dispatchSubBatches
bool dispatchSubBatches(ProcParams procParams)
Function to create sub-batches from a batch and submit to corresponding sub-batch queues.
NvTrackerProc::m_PendingBatch
std::map< BatchId, std::vector< SubBatchId > > m_PendingBatch
Stores batches not finishing tracker proceeding.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:131
NvTrackerProc::m_ProcQueue
std::queue< ProcParams > m_ProcQueue
Input queue waiting for tracker proceeding.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:125
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:189
miscdatabufmanager.h
NvTrackerProc::ClassInfo::rectParams
NvOSD_RectParams rectParams
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:59
NvTrackerProc::m_ConvBufLock
std::mutex m_ConvBufLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:137
NvTrackerProc::m_MiscDataMgr
TrackerMiscDataManager m_MiscDataMgr
Buffer manager for misc data (user meta).
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:96
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:363
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:140
_NvMOTFrame
Holds a frame containing the image and objects to be tracked.
Definition: sources/includes/nvdstracker.h:258
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::ClassInfo::objLabel
std::string objLabel
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:62
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:349
CompletionStatus
CompletionStatus
Tracker process completion status.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:31
NvTrackerProc::allocateMaskMemory
void allocateMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
_NvMOTTrackedObj
Holds information about each tracked object.
Definition: sources/includes/nvdstracker.h:296
NvTrackerProc::m_BufQueueCond
std::condition_variable m_BufQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:128
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: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:80
NvTrackerProc::deInit
virtual void deInit()
NvTrackerProc::m_TrackerLibHandle
void * m_TrackerLibHandle
Low-level tracker lib API and support functions.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:227
NvTrackerProc::updateTerminatedTrackMeta
void updateTerminatedTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
NvTrackerProc::BatchId
uint32_t BatchId
Current batch ID.
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:71
NvTrackerProc::StreamId
uint32_t StreamId
Source stream ID.
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:78
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: sources/includes/nvdstracker.h:159
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:116
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:60
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:198
NvTrackerProc::m_TrackerLibRemoveStreams
NvMOTStatus(* m_TrackerLibRemoveStreams)(NvMOTContextHandle contextHandle, NvMOTStreamId streamIdMask)
Low level lib remove streams.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:367
NvTrackerProc
Tracker process class.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:31
NvTrackerProc::m_MaxSubBatchSize
uint32_t m_MaxSubBatchSize
Max sub-batch size.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:200
_NvDsBatchMeta
Holds information about a formed batch containing frames from different sources.
Definition: sources/includes/nvdsmeta.h:257
NvTrackerProc::initConvBufPool
bool initConvBufPool()
Initialize surface transform buffer pool.
invtracker_proc.h
NvTrackerProc::SourceRemoveInfo::removeSource
bool removeSource
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:108
NvTrackerProc::m_ProcessBatchThread
std::thread m_ProcessBatchThread
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:146
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:370
NvMOTStreamId
uint64_t NvMOTStreamId
Definition: sources/includes/nvdstracker.h:47
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:67
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.
NvTrackerProc::m_CompletionQueueLock
std::mutex m_CompletionQueueLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:216
NvTrackerProc::initTrackerContext
NvMOTContextHandle initTrackerContext(uint32_t sbId=0)
Internal initializing and release function.
_NvMOTProcessParams
Holds parameters for processing a batch.
Definition: sources/includes/nvdstracker.h:386
NvTrackerMiscDataBuffer
Tracker misc data buffer for a batch.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:27
NvTrackerProc::DispatchInfo::operator=
DispatchInfo & operator=(DispatchInfo const &rhs)
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:174
NvTrackerProc::DispatchReq::batchId
BatchId batchId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:160
_NvMOTTrackedObjList
Holds a list of tracked objects.
Definition: sources/includes/nvdstracker.h:334
NvTrackerProc::m_SourceRemoveLock
std::mutex m_SourceRemoveLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:141
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:359
_NvMOTQuery
Definition: sources/includes/nvdstracker.h:398
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:167
NvTrackerProc::DispatchInfo::reqQueueLock
std::mutex reqQueueLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:169
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:111
NvTrackerProc::SeqIndex
uint32_t SeqIndex
Sequence index in a sub-batch.
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:84
NvTrackerProc::m_ConvBufMgr
ConvBufManager m_ConvBufMgr
Buffer manager for surface transformation.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:93
NvTrackerProc::UpdateDynamicConfigInfo::configStr
std::string configStr
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:102
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: sources/includes/nvll_osd_struct.h:115
NvTrackerProc::DispatchInfo::contextHandle
NvMOTContextHandle contextHandle
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:171
convbufmanager.h
NvTrackerProc::m_SourceRemoveCond
std::condition_variable m_SourceRemoveCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:142
NvTrackerProc::DispatchInfo::reqQueue
std::queue< DispatchReq > reqQueue
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:168
NvTrackerProc::m_SsidSubBatchMap
std::map< SurfaceStreamId, SubBatchId > m_SsidSubBatchMap
Mapping for SurfaceStreamId => SubBatchId.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:185
NvTrackerProc::DispatchInfo::sbId
SubBatchId sbId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:165
NvTrackerProc::initMiscDataPool
bool initMiscDataPool()
Initialize misc data (user meta) buffer pool.
TrackerConfig
Tracker plugin config params.
Definition: sources/gst-plugins/gst-nvtracker/invtracker_proc.h:52
GstNvTrackerMiscDataObject
GStreamer mini object for GStreamer pipeline to control tracker user meta.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:112
_NvDsTargetMiscDataBatch
Batch of all streams of a given target misc output.
Definition: sources/includes/nvds_tracker_meta.h:107
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:355
NvTrackerProc::UpdateDynamicConfigInfo::updateDynamicConfig
bool updateDynamicConfig
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:101
NvTrackerProc::m_Running
bool m_Running
Tracker lib is running.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:88
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:145
NvTrackerProc::DispatchInfo::reqQueueCond
std::condition_variable reqQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:170
_NvDsFrameMeta
Holds metadata for a frame in a batch.
Definition: sources/includes/nvdsmeta.h:301
NvTrackerProc::m_BatchId
BatchId m_BatchId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:132
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: sources/includes/nvdstracker.h:368
NvTrackerProc::SurfaceStreamId
uint64_t SurfaceStreamId
Composition of unique ID for each surface from each source Some sources (e.g.
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:76
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:118
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:223
NvTrackerProc::NvTrackerProc
NvTrackerProc()
_NvMOTConfig
Holds a tracker configuration.
Definition: sources/includes/nvdstracker.h:107
NvTrackerProc::m_ObjectIdOffsetMapLock
std::mutex m_ObjectIdOffsetMapLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:221
NvTrackerProc::m_ProcQueueLock
std::mutex m_ProcQueueLock
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:126
NvTrackerProc::m_ProcQueueCond
std::condition_variable m_ProcQueueCond
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:127
NvTrackerProc::m_TrackerLibError
std::atomic< bool > m_TrackerLibError
Tracker lib encounters an error.
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:90
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:180
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:353
NvTrackerProc::getSurfaceId
SurfaceId getSurfaceId(SurfaceStreamId ssId)
Definition: 9.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:335
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: sources/includes/nvdsmeta.h:360