NVIDIA DeepStream SDK API Reference

9.1 Release
9.1/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 
36 class NvTrackerProc : public INvTrackerProc
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;
68  uint uniqueComponentId;
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  {
106  bool updateDynamicConfig;
107  std::string configStr;
108  };
109 
111  struct SourceRemoveInfo
112  {
113  bool removeSource;
115  };
116 
118  struct ProcParams
119  {
121  bool useConvBuf;
125  SourceRemoveInfo sourceRemoveInfo;
126  UpdateDynamicConfigInfo updateDynamicConfigInfo;
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 
138  struct PendingBatchInfo {
139  std::vector<SubBatchId> subBatches;
140  bool completed = false;
142  };
143  std::map<BatchId, PendingBatchInfo> m_PendingBatch;
144  BatchId m_BatchId = 0;
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 */
172  ProcParams procParams;
173  };
175  struct DispatchInfo
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;
228  std::mutex m_CompletionQueueLock;
229  std::condition_variable m_CompletionQueueCond;
230 
232  std::map<SurfaceStreamId, guint64> m_ObjectIdOffsetMap;
233  std::mutex m_ObjectIdOffsetMapLock;
235  std::map<uint32_t, SurfaceStreamId> m_PadIndexSsidMap;
236 
237 
239  void *m_TrackerLibHandle;
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()
NvMOTContextHandle
struct NvMOTContext * NvMOTContextHandle
Definition: sources/includes/nvdstracker.h:418
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: sources/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.
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
miscdatabufmanager.h
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: 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)
invtracker_proc.h
NvTrackerProc::getStreamId
StreamId getStreamId(SurfaceStreamId ssId)
Definition: 9.1/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...
NvMOTStatus
NvMOTStatus
Defines generic status codes for tracking operations.
Definition: sources/includes/nvdstracker.h:200
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: sources/includes/nvbufsurface.h:597
NvTrackerProc::ClassInfo::uniqueComponentId
uint uniqueComponentId
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:68
NvTrackerProc::SubBatchId
uint32_t SubBatchId
sub-batch ID.
Definition: 9.1/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: sources/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: 9.1/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::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: sources/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::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: sources/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: 9.1/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:85
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:239
NvTrackerProc::updateTerminatedTrackMeta
void updateTerminatedTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
NvTrackerProc::BatchId
uint32_t BatchId
Current batch ID.
Definition: 9.1/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:76
NvTrackerProc::StreamId
uint32_t StreamId
Source stream ID.
Definition: 9.1/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: sources/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::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: sources/includes/nvdsmeta.h:262
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: sources/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.
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: sources/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: 9.1/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: sources/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
Definition: sources/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
NvTrackerProc::SeqIndex
uint32_t SeqIndex
Sequence index in a sub-batch.
Definition: 9.1/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: sources/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
convbufmanager.h
NvTrackerProc::DispatchInfo::reqQueue
std::queue< DispatchReq > reqQueue
Definition: sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:180
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: sources/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: sources/includes/nvdsmeta.h:306
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: sources/includes/nvdstracker.h:390
NvTrackerProc::SurfaceStreamId
uint64_t SurfaceStreamId
Composition of unique ID for each surface from each source Some sources (e.g.
Definition: 9.1/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:81
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: sources/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: 9.1/sources/gst-plugins/gst-nvtracker/nvtracker_proc.h:347
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:365