NVIDIA DeepStream SDK API Reference

8.0 Release
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 
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;
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  {
102  std::string configStr;
103  };
104 
107  {
110  };
111 
113  struct ProcParams
114  {
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;
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 */
161  };
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;
217  std::condition_variable m_CompletionQueueCond;
218 
220  std::map<SurfaceStreamId, guint64> m_ObjectIdOffsetMap;
223  std::map<uint32_t, SurfaceStreamId> m_PadIndexSsidMap;
224 
225 
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);
310 
312  ProcParams& procParams);
313 
315  ProcParams& procParams);
316 
320  void processBatch();
321 
324  { return ( ((uint64_t)streamId << 32) | surfaceId ); };
325  StreamId getStreamId(SurfaceStreamId ssId) { return (StreamId)( ssId >> 32 ); };
326  SurfaceId getSurfaceId(SurfaceStreamId ssId) { return (SurfaceId)(ssId); };
327 
329  guint64 objectIdMapping(const guint64& objectId, const SurfaceStreamId& ssId);
331  void removeUntrackedObjects(NvDsFrameMeta* pFrameMeta);
337  bool clipBBox(uint32_t frameWidth, uint32_t frameHeight, float &left, float &top, float &width, float &height);
341  NvMOTContextHandle *pContextHandle,
342  NvMOTConfigResponse *pConfigResponse);
344  void (*m_TrackerLibDeInit) (NvMOTContextHandle contextHandle);
347  NvMOTProcessParams *pParams,
348  NvMOTTrackedObjBatch *pTrackedObjectsBatch);
351  NvMOTProcessParams *pParams,
352  NvMOTTrackerMiscData *pTrackerMiscData);
354  NvMOTStatus (*m_TrackerLibQuery) (uint16_t customConfigFilePathSize,
355  char* pCustomConfigFilePath,
356  NvMOTQuery *pQuery);
359  NvMOTStreamId streamIdMask);
361  NvMOTStatus (*m_TrackerLibUpdateParams) (NvMOTContextHandle contextHandle, const std::string &configStr);
362 
364 };
365 
366 #endif
NvTrackerProc::~NvTrackerProc
virtual ~NvTrackerProc()
NvTrackerProc::m_ObjectIdOffsetMap
std::map< SurfaceStreamId, guint64 > m_ObjectIdOffsetMap
Object id mapping: {surface stream ID: object id offset}.
Definition: nvtracker_proc.h:220
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: nvtracker_proc.h:181
InputParams
Input data for tracker plugin.
Definition: invtracker_proc.h:22
NvTrackerProc::ProcParams::pConvBuf
NvBufSurface * pConvBuf
Definition: nvtracker_proc.h:117
ConvBufManager
Definition: convbufmanager.h:28
_NvOSD_RectParams
Holds the box parameters of the box to be overlayed.
Definition: 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: 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: nvtracker_proc.h:121
NvTrackerProc::m_Config
TrackerConfig m_Config
Tracker processing config.
Definition: nvtracker_proc.h:86
NvTrackerProc::DispatchInfo
Info corresponding to each sub-batch thread.
Definition: nvtracker_proc.h:163
NvTrackerProc::m_ConvBufComplete
std::map< BatchId, bool > m_ConvBufComplete
Stores status of pending batches for buffer conversion.
Definition: nvtracker_proc.h:136
NvTrackerProc::updateBatchReidMeta
void updateBatchReidMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
Update batch reid meta.
NvTrackerProc::DispatchReq::procParams
ProcParams procParams
Definition: nvtracker_proc.h:164
NvTrackerProc::ProcParams::sourceRemoveInfo
SourceRemoveInfo sourceRemoveInfo
Definition: 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: nvtracker_proc.h:99
convbufmanager.h
NvTrackerProc::m_TrackerLibRetrieveMiscData
NvMOTStatus(* m_TrackerLibRetrieveMiscData)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackerMiscData *pTrackerMiscData)
Low level lib process past frame.
Definition: nvtracker_proc.h:350
NvTrackerProc::m_DispatchMap
std::map< SubBatchId, DispatchInfo > m_DispatchMap
Mapping from sub-batch id to corresponding thread info.
Definition: nvtracker_proc.h:180
NvBufSurfTransformSyncObj_t
struct NvBufSurfTransformSyncObj * NvBufSurfTransformSyncObj_t
Holds the information about synchronization objects for asynchronous transform/composite APIs.
Definition: 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: nvtracker_proc.h:325
NvTrackerProc::processBatch
void processBatch()
Function to pop batch from input queue, call low level lib to process and update meta data with track...
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: nvtracker_proc.h:196
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: nvtracker_proc.h:109
NvTrackerProc::m_PendingBatchLock
std::mutex m_PendingBatchLock
Definition: nvtracker_proc.h:133
NvBufSurface
Holds information about batched buffers.
Definition: nvbufsurface.h:577
NvTrackerProc::ClassInfo::uniqueComponentId
uint uniqueComponentId
Definition: nvtracker_proc.h:63
NvTrackerProc::SubBatchId
uint32_t SubBatchId
sub-batch ID.
Definition: nvtracker_proc.h:82
NvTrackerProc::m_TrackerLibInit
NvMOTStatus(* m_TrackerLibInit)(NvMOTConfig *pConfigIn, NvMOTContextHandle *pContextHandle, NvMOTConfigResponse *pConfigResponse)
Tracker low level library functions.
Definition: nvtracker_proc.h:340
NvTrackerProc::m_CompletionQueueCond
std::condition_variable m_CompletionQueueCond
Definition: nvtracker_proc.h:217
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: nvtracker_proc.h:115
NvTrackerProc::ProcParams::bufSetSyncObjs
NvBufSurfTransformSyncObj_t bufSetSyncObjs
Definition: nvtracker_proc.h:119
_NvMOTTrackedObjBatch
Holds a batch of lists of tracked objects.
Definition: nvdstracker.h:353
NvTrackerProc::deInitTrackerLib
void deInitTrackerLib()
Deinitialize low-level tracker lib.
TrackerMiscDataManager
Tracker misc data memory pool.
Definition: miscdatabufmanager.h:43
NvTrackerProc::m_ClassInfoMapLock
std::shared_mutex m_ClassInfoMapLock
Definition: nvtracker_proc.h:68
NvTrackerProc::m_PendingBatch
std::map< BatchId, std::vector< SubBatchId > > m_PendingBatch
Stores batches not finishing tracker proceeding.
Definition: nvtracker_proc.h:131
NvTrackerProc::releaseConvexHullMemory
void releaseConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
NvTrackerProc::DispatchInfo::sbThread
std::thread sbThread
Definition: nvtracker_proc.h:166
NvTrackerProc::getSurfaceStreamId
SurfaceStreamId getSurfaceStreamId(StreamId streamId, SurfaceId surfaceId)
Getter.
Definition: nvtracker_proc.h:323
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: nvtracker_proc.h:106
NvTrackerProc::m_TrackerLibDeInit
void(* m_TrackerLibDeInit)(NvMOTContextHandle contextHandle)
Low level lib deinit.
Definition: nvtracker_proc.h:344
NvTrackerProc::ClassInfo::rectParams
NvOSD_RectParams rectParams
Definition: nvtracker_proc.h:59
NvTrackerProc::m_ConvBufLock
std::mutex m_ConvBufLock
Definition: nvtracker_proc.h:137
NvTrackerProc::m_MiscDataMgr
TrackerMiscDataManager m_MiscDataMgr
Buffer manager for misc data (user meta).
Definition: nvtracker_proc.h:96
NvTrackerProc::m_TrackerLibError
std::atomic< bool > m_TrackerLibError
Tracker lib encounters an error.
Definition: nvtracker_proc.h:90
NvTrackerProc::initTrackerLib
bool initTrackerLib()
Initialize low-level tracker lib.
NvTrackerProc::m_TrackerLibHandle
void * m_TrackerLibHandle
Low-level tracker lib API and support functions.
Definition: nvtracker_proc.h:227
NvTrackerProc::m_SourceRemoved
bool m_SourceRemoved
Variable to check if a source is removed from low level tracker lib.
Definition: nvtracker_proc.h:140
_NvMOTFrame
Holds a frame containing the image and objects to be tracked.
Definition: 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::ProcParams
Tracker data submitted for proceeding.
Definition: nvtracker_proc.h:113
NvTrackerProc::ClassInfo::objLabel
std::string objLabel
Definition: nvtracker_proc.h:62
NvTrackerProc::allocateMaskMemory
void allocateMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
NvTrackerProc::DispatchReq::subBatchFrameMap
std::map< SurfaceStreamId, NvDsFrameMeta * > subBatchFrameMap
Map for frames present in a sub-batch.
Definition: nvtracker_proc.h:162
_NvMOTTrackedObj
Holds information about each tracked object.
Definition: nvdstracker.h:296
NvTrackerProc::m_BufQueueCond
std::condition_variable m_BufQueueCond
Definition: 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: nvtracker_proc.h:80
NvTrackerProc::deInit
virtual void deInit()
NvTrackerProc::m_TrackerLibProcess
NvMOTStatus(* m_TrackerLibProcess)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackedObjBatch *pTrackedObjectsBatch)
Low level lib process.
Definition: nvtracker_proc.h:346
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: nvtracker_proc.h:189
NvTrackerProc::updateTerminatedTrackMeta
void updateTerminatedTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
NvTrackerProc::m_ClassInfoMap
std::map< int, ClassInfo > m_ClassInfoMap
Info mapped per class.
Definition: nvtracker_proc.h:67
NvTrackerProc::BatchId
uint32_t BatchId
Current batch ID.
Definition: nvtracker_proc.h:71
NvTrackerProc::StreamId
uint32_t StreamId
Source stream ID.
Definition: 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: 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: nvtracker_proc.h:116
NvTrackerProc::m_CompletionQueue
std::queue< InputParams > m_CompletionQueue
Completions.
Definition: nvtracker_proc.h:215
NvTrackerProc::updateFrameMeta
void updateFrameMeta(NvDsFrameMeta *pFrameMeta, const NvMOTTrackedObjList &objList, const ProcParams &procParams)
Update each stream's frame meta with tracking results.
miscdatabufmanager.h
NvTrackerProc::ClassInfo::textParams
NvOSD_TextParams textParams
Definition: nvtracker_proc.h:60
NvTrackerProc::m_SubBatchMapLock
std::shared_mutex m_SubBatchMapLock
Lock for critical code for variables m_SubBatchAllocationMap, m_PadIndexSeqIndexMap,...
Definition: nvtracker_proc.h:198
NvTrackerProc
Tracker process class.
Definition: nvtracker_proc.h:31
NvTrackerProc::m_MaxSubBatchSize
uint32_t m_MaxSubBatchSize
Max sub-batch size.
Definition: nvtracker_proc.h:200
_NvDsBatchMeta
Holds information about a formed batch containing frames from different sources.
Definition: nvdsmeta.h:257
NvTrackerProc::initConvBufPool
bool initConvBufPool()
Initialize surface transform buffer pool.
NvTrackerProc::SourceRemoveInfo::removeSource
bool removeSource
Definition: nvtracker_proc.h:108
NvTrackerProc::m_ProcessBatchThread
std::thread m_ProcessBatchThread
Definition: nvtracker_proc.h:146
NvMOTStatus
NvMOTStatus
Defines generic status codes for tracking operations.
Definition: nvdstracker.h:177
CompletionStatus
CompletionStatus
Tracker process completion status.
Definition: invtracker_proc.h:31
NvMOTStreamId
uint64_t NvMOTStreamId
Definition: nvdstracker.h:47
NvTrackerProc::deInitConvBufPool
void deInitConvBufPool()
Deinitialize surface transform buffer pool.
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: 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: nvdstracker.h:386
NvTrackerMiscDataBuffer
Tracker misc data buffer for a batch.
Definition: miscdatabufmanager.h:27
NvTrackerProc::DispatchInfo::operator=
DispatchInfo & operator=(DispatchInfo const &rhs)
Definition: nvtracker_proc.h:174
NvTrackerProc::DispatchReq::batchId
BatchId batchId
Definition: nvtracker_proc.h:160
_NvMOTTrackedObjList
Holds a list of tracked objects.
Definition: nvdstracker.h:334
NvTrackerProc::m_SourceRemoveLock
std::mutex m_SourceRemoveLock
Definition: nvtracker_proc.h:141
NvTrackerProc::m_TrackerLibQuery
NvMOTStatus(* m_TrackerLibQuery)(uint16_t customConfigFilePathSize, char *pCustomConfigFilePath, NvMOTQuery *pQuery)
Low level lib query.
Definition: nvtracker_proc.h:354
NvTrackerProc::flushReqs
virtual bool flushReqs()
Flush the request to send the batch downstream.
NvTrackerProc::m_PadIndexSsidMap
std::map< uint32_t, SurfaceStreamId > m_PadIndexSsidMap
Pad index to surface stream ID mapping.
Definition: nvtracker_proc.h:223
_NvMOTQuery
Definition: 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::m_TrackerLibUpdateParams
NvMOTStatus(* m_TrackerLibUpdateParams)(NvMOTContextHandle contextHandle, const std::string &configStr)
Low level lib update parameters.
Definition: nvtracker_proc.h:361
NvTrackerProc::m_ProcQueue
std::queue< ProcParams > m_ProcQueue
Input queue waiting for tracker proceeding.
Definition: nvtracker_proc.h:125
NvTrackerProc::DispatchInfo::running
bool running
Definition: nvtracker_proc.h:167
NvTrackerProc::DispatchInfo::reqQueueLock
std::mutex reqQueueLock
Definition: 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: invtracker_proc.h:108
NvTrackerProc::m_TrackerLibRemoveStreams
NvMOTStatus(* m_TrackerLibRemoveStreams)(NvMOTContextHandle contextHandle, NvMOTStreamId streamIdMask)
Low level lib remove streams.
Definition: nvtracker_proc.h:358
NvTrackerProc::SeqIndex
uint32_t SeqIndex
Sequence index in a sub-batch.
Definition: nvtracker_proc.h:84
NvTrackerProc::m_ConvBufMgr
ConvBufManager m_ConvBufMgr
Buffer manager for surface transformation.
Definition: nvtracker_proc.h:93
NvTrackerProc::UpdateDynamicConfigInfo::configStr
std::string configStr
Definition: nvtracker_proc.h:102
_NvOSD_TextParams
Holds parameters of text to be overlayed.
Definition: nvll_osd_struct.h:115
NvTrackerProc::DispatchInfo::contextHandle
NvMOTContextHandle contextHandle
Definition: nvtracker_proc.h:171
NvTrackerProc::m_SourceRemoveCond
std::condition_variable m_SourceRemoveCond
Definition: nvtracker_proc.h:142
NvTrackerProc::ClassInfo
Object class information.
Definition: nvtracker_proc.h:57
NvTrackerProc::DispatchInfo::sbId
SubBatchId sbId
Definition: nvtracker_proc.h:165
NvTrackerProc::initMiscDataPool
bool initMiscDataPool()
Initialize misc data (user meta) buffer pool.
TrackerConfig
Tracker plugin config params.
Definition: invtracker_proc.h:52
GstNvTrackerMiscDataObject
GStreamer mini object for GStreamer pipeline to control tracker user meta.
Definition: miscdatabufmanager.h:112
_NvDsTargetMiscDataBatch
Batch of all streams of a given target misc output.
Definition: nvds_tracker_meta.h:105
NvTrackerProc::UpdateDynamicConfigInfo::updateDynamicConfig
bool updateDynamicConfig
Definition: nvtracker_proc.h:101
NvTrackerProc::m_Running
bool m_Running
Tracker lib is running.
Definition: nvtracker_proc.h:88
NvMOTContextHandle
struct NvMOTContext * NvMOTContextHandle
Definition: nvdstracker.h:396
NvTrackerProc::m_BatchContextHandle
NvMOTContextHandle m_BatchContextHandle
Batch dispatch to low-level tracker lib.
Definition: nvtracker_proc.h:145
NvTrackerProc::DispatchInfo::reqQueueCond
std::condition_variable reqQueueCond
Definition: nvtracker_proc.h:170
_NvDsFrameMeta
Holds metadata for a frame in a batch.
Definition: nvdsmeta.h:301
NvTrackerProc::m_BatchId
BatchId m_BatchId
Definition: 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.
invtracker_proc.h
nvdsmeta.h
_NvMOTTrackerMiscData
Tracker misc data.
Definition: nvdstracker.h:368
NvTrackerProc::SurfaceStreamId
uint64_t SurfaceStreamId
Composition of unique ID for each surface from each source Some sources (e.g.
Definition: nvtracker_proc.h:76
NvTrackerProc::DispatchReq
Per-sub-batch dispatch to low-level tracker lib.
Definition: nvtracker_proc.h:154
NvTrackerProc::allocateConvexHullMemory
void allocateConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
NvTrackerProc::m_SsidSubBatchMap
std::map< SurfaceStreamId, SubBatchId > m_SsidSubBatchMap
Mapping for SurfaceStreamId => SubBatchId.
Definition: nvtracker_proc.h:185
NvTrackerProc::ProcParams::batchId
BatchId batchId
Definition: nvtracker_proc.h:118
NvTrackerProc::updateObjectReidMeta
void updateObjectReidMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta)
Update each object's reid meta.
NvTrackerProc::NvTrackerProc
NvTrackerProc()
_NvMOTConfig
Holds a tracker configuration.
Definition: nvdstracker.h:107
NvTrackerProc::m_ObjectIdOffsetMapLock
std::mutex m_ObjectIdOffsetMapLock
Definition: nvtracker_proc.h:221
NvTrackerProc::m_ProcQueueLock
std::mutex m_ProcQueueLock
Definition: nvtracker_proc.h:126
NvTrackerProc::m_ProcQueueCond
std::condition_variable m_ProcQueueCond
Definition: nvtracker_proc.h:127
NvTrackerProc::submitInput
virtual bool submitInput(const InputParams &inputParams)
Submit an input batch to tracker process queue.
NvTrackerProc::removeUntrackedObjects
void removeUntrackedObjects(NvDsFrameMeta *pFrameMeta)
Remove objects that don't need an ID.
NvTrackerProc::getSurfaceId
SurfaceId getSurfaceId(SurfaceStreamId ssId)
Definition: nvtracker_proc.h:326
nvdstracker.h
NvTrackerProc::addSource
virtual bool addSource(uint32_t sourceId)
Tracker actions when a source is added to the pipeline.
NvTrackerProc::DispatchInfo::reqQueue
std::queue< DispatchReq > reqQueue
Definition: nvtracker_proc.h:168
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: nvdsmeta.h:360