|
|
NVIDIA DeepStream SDK API Reference
|
9.0 Release
|
Go to the documentation of this file.
13 #ifndef _NVTRACKERPROC_H
14 #define _NVTRACKERPROC_H
19 #include <condition_variable>
22 #include <shared_mutex>
28 #include "nvdstracker.h"
41 virtual bool addSource(uint32_t sourceId);
43 virtual bool removeSource(uint32_t sourceId,
bool removeObjectIdMapping=
true);
246 bool initTrackerQuery(
const std::vector<NvMOTContextHandle>& contextHandleList);
272 std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList);
282 std::map<SurfaceStreamId, NvDsFrameMeta *>& frameMap);
289 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
294 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
297 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>> &batchList,
312 float scaleWidth,
float scaleHeight,
NvDsFrameMeta* pFrameMeta);
315 float scaleWidth,
float scaleHeight,
NvDsFrameMeta* pFrameMeta);
318 float scaleWidth,
float scaleHeight,
NvDsFrameMeta* pFrameMeta);
333 {
return ( ((uint64_t)streamId << 32) | surfaceId ); };
346 bool clipBBox(uint32_t frameWidth, uint32_t frameHeight,
float &left,
float &top,
float &width,
float &height);
364 char* pCustomConfigFilePath,
struct NvMOTContext * NvMOTContextHandle
guint64 objectIdMapping(const guint64 &objectId, const SurfaceStreamId &ssId)
Object ID mapper to ensure ID starts from 0 after reset.
std::mutex m_DispatchMapLock
Holds the box parameters of the box to be overlayed.
void updatePastFrameMeta(const std::vector< std::map< SurfaceStreamId, NvDsFrameMeta * >> &batchList, GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
Update past frame data.
std::string displayTextString
virtual bool updateDynamicConfig(const std::string &configStr, uint32_t sourceId)
Update the low-level tracker lib's config dynamically during runtime.
UpdateDynamicConfigInfo updateDynamicConfigInfo
TrackerConfig m_Config
Tracker processing config.
Info corresponding to each sub-batch thread.
std::map< BatchId, bool > m_ConvBufComplete
Stores status of pending batches for buffer conversion.
void updateBatchReidMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
Update batch reid meta.
SourceRemoveInfo sourceRemoveInfo
void allocateProcessMemory(NvMOTProcessParams &procInput, NvMOTTrackedObjBatch &procResult)
Allocate memory for low level library input.
Update dynamic config info.
struct NvBufSurfTransformSyncObj * NvBufSurfTransformSyncObj_t
Holds the information about synchronization objects for asynchronous transform/composite APIs.
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.
virtual bool init(const TrackerConfig &config)
StreamId getStreamId(SurfaceStreamId ssId)
std::map< SurfaceStreamId, NvDsFrameMeta * > subBatchFrameMap
Map for frames present in a sub-batch.
void processBatch()
Function to pop batch from input queue, call low level lib to process and update meta data with track...
NvMOTStatus
Defines generic status codes for tracking operations.
void queueFrames(const NvDsBatchMeta &batchMeta, std::vector< std::map< SurfaceStreamId, NvDsFrameMeta * >> &batchList)
Functions to process a batch.
void releaseProcessMemory(NvMOTProcessParams &procInput, NvMOTTrackedObjBatch &procResult)
Release input memory.
std::mutex m_PendingBatchLock
Holds information about batched buffers.
uint32_t SubBatchId
sub-batch ID.
std::condition_variable m_CompletionQueueCond
std::queue< InputParams > m_CompletionQueue
Completions.
void updateBatchMeta(const NvMOTTrackedObjBatch &procResult, const ProcParams &procParams, std::map< SurfaceStreamId, NvDsFrameMeta * > &frameMap)
Update batch meta with tracking results.
NvBufSurfTransformSyncObj_t bufSetSyncObjs
Holds a batch of lists of tracked objects.
void deInitTrackerLib()
Deinitialize low-level tracker lib.
Tracker misc data memory pool.
std::shared_mutex m_ClassInfoMapLock
void releaseConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
SurfaceStreamId getSurfaceStreamId(StreamId streamId, SurfaceId surfaceId)
Getter.
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...
std::map< SurfaceStreamId, guint64 > m_ObjectIdOffsetMap
Object id mapping: {surface stream ID: object id offset}.
bool dispatchSubBatches(ProcParams procParams)
Function to create sub-batches from a batch and submit to corresponding sub-batch queues.
std::map< BatchId, std::vector< SubBatchId > > m_PendingBatch
Stores batches not finishing tracker proceeding.
std::queue< ProcParams > m_ProcQueue
Input queue waiting for tracker proceeding.
std::map< uint32_t, SeqIndex > m_PadIndexSeqIndexMap
Pad index(Source id) mapping: {Pad index(source id): sequence index in the sub-batch}.
NvOSD_RectParams rectParams
TrackerMiscDataManager m_MiscDataMgr
Buffer manager for misc data (user meta).
NvMOTStatus(* m_TrackerLibQuery)(uint16_t customConfigFilePathSize, char *pCustomConfigFilePath, NvMOTQuery *pQuery)
Low level lib query.
bool initTrackerLib()
Initialize low-level tracker lib.
bool m_SourceRemoved
Variable to check if a source is removed from low level tracker lib.
Holds a frame containing the image and objects to be tracked.
void updateShadowTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
void fillMOTFrame(SurfaceStreamId ssId, const ProcParams &procParams, const NvDsFrameMeta &frameMeta, NvMOTFrame &motFrame, NvMOTTrackedObjList &trackedObjList)
Fill input to low-level tracker lib.
Tracker data submitted for proceeding.
NvMOTStatus(* m_TrackerLibInit)(NvMOTConfig *pConfigIn, NvMOTContextHandle *pContextHandle, NvMOTConfigResponse *pConfigResponse)
Tracker low level library functions.
CompletionStatus
Tracker process completion status.
void allocateMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
Holds information about each tracked object.
std::condition_variable m_BufQueueCond
void updateUserMeta(const std::vector< std::map< SurfaceStreamId, NvDsFrameMeta * >> &batchList, ProcParams &procParams, NvTrackerMiscDataBuffer *pMiscDataBuf)
Update tracker user meta.
uint32_t SurfaceId
Surface type ID.
void * m_TrackerLibHandle
Low-level tracker lib API and support functions.
void updateTerminatedTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
uint32_t BatchId
Current batch ID.
uint32_t StreamId
Source stream ID.
void updateObjectProjectionMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Update each object's model projection meta.
NvDsTargetMiscDataBatch * allocatePastFrameMemory()
Holds a tracker's configuration status.
bool initTrackerQuery(const std::vector< NvMOTContextHandle > &contextHandleList)
Initialize parameter query from low-level tracker lib.
void updateFrameMeta(NvDsFrameMeta *pFrameMeta, const NvMOTTrackedObjList &objList, const ProcParams &procParams)
Update each stream's frame meta with tracking results.
NvOSD_TextParams textParams
std::shared_mutex m_SubBatchMapLock
Lock for critical code for variables m_SubBatchAllocationMap, m_PadIndexSeqIndexMap,...
NvMOTStatus(* m_TrackerLibRemoveStreams)(NvMOTContextHandle contextHandle, NvMOTStreamId streamIdMask)
Low level lib remove streams.
uint32_t m_MaxSubBatchSize
Max sub-batch size.
bool initConvBufPool()
Initialize surface transform buffer pool.
std::thread m_ProcessBatchThread
NvMOTStatus(* m_TrackerLibUpdateParams)(NvMOTContextHandle contextHandle, const std::string &configStr)
Low level lib update parameters.
void deInitConvBufPool()
Deinitialize surface transform buffer pool.
std::map< int, ClassInfo > m_ClassInfoMap
Info mapped per class.
bool clipBBox(uint32_t frameWidth, uint32_t frameHeight, float &left, float &top, float &width, float &height)
Clip the bbox to be within the frame.
std::mutex m_CompletionQueueLock
NvMOTContextHandle initTrackerContext(uint32_t sbId=0)
Internal initializing and release function.
Holds parameters for processing a batch.
Tracker misc data buffer for a batch.
DispatchInfo & operator=(DispatchInfo const &rhs)
Holds a list of tracked objects.
std::mutex m_SourceRemoveLock
virtual bool flushReqs()
Flush the request to send the batch downstream.
NvMOTStatus(* m_TrackerLibRetrieveMiscData)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackerMiscData *pTrackerMiscData)
Low level lib process past frame.
virtual CompletionStatus waitForCompletion(InputParams &inputParams)
Wait until a batch's process is done.
void updateObjMaskMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj)
Update segmentation mask meta.
virtual bool resetSource(uint32_t sourceId)
Tracker actions when a source is reset.
void deInitMiscDataPool()
Deinitialize misc data (user meta) buffer pool.
Virtual base class for tracker plugin processing.
uint32_t SeqIndex
Sequence index in a sub-batch.
ConvBufManager m_ConvBufMgr
Buffer manager for surface transformation.
void addDisplayMetaBbox3D(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Add display metadata for 3D bounding box on image.
Holds parameters of text to be overlayed.
NvMOTContextHandle contextHandle
std::condition_variable m_SourceRemoveCond
std::queue< DispatchReq > reqQueue
Object class information.
std::map< SurfaceStreamId, SubBatchId > m_SsidSubBatchMap
Mapping for SurfaceStreamId => SubBatchId.
bool initMiscDataPool()
Initialize misc data (user meta) buffer pool.
Tracker plugin config params.
GStreamer mini object for GStreamer pipeline to control tracker user meta.
Batch of all streams of a given target misc output.
NvMOTStatus(* m_TrackerLibProcess)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackedObjBatch *pTrackedObjectsBatch)
Low level lib process.
bool m_Running
Tracker lib is running.
void addDisplayMetaFootLocation(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Add display metadata for foot location on image.
NvMOTContextHandle m_BatchContextHandle
Batch dispatch to low-level tracker lib.
std::condition_variable reqQueueCond
virtual bool removeSource(uint32_t sourceId, bool removeObjectIdMapping=true)
Tracker actions when a source is removed to the pipeline.
uint64_t SurfaceStreamId
Composition of unique ID for each surface from each source Some sources (e.g.
Per-sub-batch dispatch to low-level tracker lib.
void allocateConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
void addDisplayMetaConvexHull(NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight, NvDsFrameMeta *pFrameMeta)
Add display metadata for convex hull on image.
void updateObjectReidMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta)
Update each object's reid meta.
std::map< uint32_t, SurfaceStreamId > m_PadIndexSsidMap
Pad index to surface stream ID mapping.
Holds a tracker configuration.
std::mutex m_ObjectIdOffsetMapLock
std::mutex m_ProcQueueLock
std::condition_variable m_ProcQueueCond
std::atomic< bool > m_TrackerLibError
Tracker lib encounters an error.
virtual bool submitInput(const InputParams &inputParams)
Submit an input batch to tracker process queue.
std::map< SubBatchId, DispatchInfo > m_DispatchMap
Mapping from sub-batch id to corresponding thread info.
void removeUntrackedObjects(NvDsFrameMeta *pFrameMeta)
Remove objects that don't need an ID.
void(* m_TrackerLibDeInit)(NvMOTContextHandle contextHandle)
Low level lib deinit.
SurfaceId getSurfaceId(SurfaceStreamId ssId)
virtual bool addSource(uint32_t sourceId)
Tracker actions when a source is added to the pipeline.
void releaseMaskMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
void processSubBatch(DispatchInfo *pDispatchInfo)
Function to pop sub-batch from queue, call low level lib to process and update meta data with trackin...