|
|
NVIDIA DeepStream SDK API Reference
|
9.2 Release
|
Go to the documentation of this file.
18 #ifndef _NVTRACKERPROC_H
19 #define _NVTRACKERPROC_H
24 #include <condition_variable>
27 #include <shared_mutex>
33 #include "nvdstracker.h"
46 virtual bool addSource(uint32_t sourceId);
48 virtual bool removeSource(uint32_t sourceId,
bool removeObjectIdMapping=
true);
111 struct SourceRemoveInfo
138 struct PendingBatchInfo {
258 bool initTrackerQuery(
const std::vector<NvMOTContextHandle>& contextHandleList);
284 std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList);
287 const ProcParams& procParams,
293 const ProcParams& procParams,
294 std::map<SurfaceStreamId, NvDsFrameMeta *>& frameMap);
298 const ProcParams& procParams);
301 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
303 ProcParams& procParams);
306 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
309 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>> &batchList,
318 ProcParams& procParams);
324 float scaleWidth,
float scaleHeight,
NvDsFrameMeta* pFrameMeta);
327 float scaleWidth,
float scaleHeight,
NvDsFrameMeta* pFrameMeta);
330 float scaleWidth,
float scaleHeight,
NvDsFrameMeta* pFrameMeta);
333 ProcParams& procParams);
336 ProcParams& procParams);
345 {
return ( ((uint64_t)streamId << 32) | surfaceId ); };
358 bool clipBBox(uint32_t frameWidth, uint32_t frameHeight,
float &left,
float &top,
float &
width,
float &height);
376 char* pCustomConfigFilePath,
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.
JDIMENSION JDIMENSION * width
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.
NvMOTStatus
Defines generic status codes for tracking operations.
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...
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.
InputParams completedInput
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::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
std::vector< SubBatchId > subBatches
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.
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.
std::map< BatchId, PendingBatchInfo > m_PendingBatch
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.
Context for input video streams.
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.
Holds the capabilities and requirements reported by the tracker library.
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
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.
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...