|
NVIDIA DeepStream SDK API Reference
|
7.0 Release
|
Go to the documentation of this file.
13 #ifndef _NVTRACKERPROC_H
14 #define _NVTRACKERPROC_H
19 #include <condition_variable>
40 virtual bool addSource(uint32_t sourceId);
42 virtual bool removeSource(uint32_t sourceId,
bool removeObjectIdMapping=
true);
220 bool initTrackerQuery(
const std::vector<NvMOTContextHandle>& contextHandleList);
243 std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList);
253 std::map<SurfaceStreamId, NvDsFrameMeta *>& frameMap);
260 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
265 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>>& batchList,
268 const std::vector<std::map<SurfaceStreamId, NvDsFrameMeta *>> &batchList,
278 NvDsBatchMeta *pBatchMeta,
float scaleWidth,
float scaleHeight);
293 {
return ( ((uint64_t)streamId << 32) | surfaceId ); };
306 bool clipBBox(uint32_t frameWidth, uint32_t frameHeight,
float &left,
float &top,
float &width,
float &height);
324 char* pCustomConfigFilePath,
std::map< SurfaceStreamId, guint64 > m_ObjectIdOffsetMap
Object id mapping: {surface stream ID: object id offset}.
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
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.
void allocateProcessMemory(NvMOTProcessParams &procInput, NvMOTTrackedObjBatch &procResult)
Allocate memory for low level library input.
NvMOTStatus(* m_TrackerLibRetrieveMiscData)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackerMiscData *pTrackerMiscData)
Low level lib process past frame.
std::map< SubBatchId, DispatchInfo > m_DispatchMap
Mapping from sub-batch id to corresponding thread 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)
void processBatch()
Function to pop batch from input queue, call low level lib to process and update meta data with track...
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...
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.
NvMOTStatus(* m_TrackerLibInit)(NvMOTConfig *pConfigIn, NvMOTContextHandle *pContextHandle, NvMOTConfigResponse *pConfigResponse)
Tracker low level library functions.
std::condition_variable m_CompletionQueueCond
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::map< BatchId, std::vector< SubBatchId > > m_PendingBatch
Stores batches not finishing tracker proceeding.
void releaseConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
SurfaceStreamId getSurfaceStreamId(StreamId streamId, SurfaceId surfaceId)
Getter.
bool dispatchSubBatches(ProcParams procParams)
Function to create sub-batches from a batch and submit to corresponding sub-batch queues.
void(* m_TrackerLibDeInit)(NvMOTContextHandle contextHandle)
Low level lib deinit.
NvOSD_RectParams rectParams
TrackerMiscDataManager m_MiscDataMgr
Buffer manager for misc data (user meta).
std::atomic< bool > m_TrackerLibError
Tracker lib encounters an error.
bool initTrackerLib()
Initialize low-level tracker lib.
void * m_TrackerLibHandle
Low-level tracker lib API and support functions.
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.
std::map< SurfaceStreamId, NvDsFrameMeta * > subBatchFrameMap
Map for frames present in a sub-batch.
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 updateObjectProjectionMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta, float scaleWidth, float scaleHeight)
Update each object's model projection meta.
NvMOTStatus(* m_TrackerLibProcess)(NvMOTContextHandle contextHandle, NvMOTProcessParams *pParams, NvMOTTrackedObjBatch *pTrackedObjectsBatch)
Low level lib process.
std::map< uint32_t, SeqIndex > m_PadIndexSeqIndexMap
Pad index(Source id) mapping: {Pad index(source id): sequence index in the sub-batch}.
void updateTerminatedTrackMeta(GstNvTrackerMiscDataObject *pGstObj, ProcParams &procParams)
std::map< int, ClassInfo > m_ClassInfoMap
Info mapped per class.
uint32_t BatchId
Current batch ID.
uint32_t StreamId
Source stream ID.
NvDsTargetMiscDataBatch * allocatePastFrameMemory()
Holds a tracker's configuration status.
bool initTrackerQuery(const std::vector< NvMOTContextHandle > &contextHandleList)
Initialize parameter query from low-level tracker lib.
std::queue< InputParams > m_CompletionQueue
Completions.
void updateFrameMeta(NvDsFrameMeta *pFrameMeta, const NvMOTTrackedObjList &objList, const ProcParams &procParams)
Update each stream's frame meta with tracking results.
NvOSD_TextParams textParams
uint32_t m_MaxSubBatchSize
Max sub-batch size.
bool initConvBufPool()
Initialize surface transform buffer pool.
std::thread m_ProcessBatchThread
SurfaceStreamId ssId
Id of the stream to be removed.
NvMOTStatus
Defines generic status codes for tracking operations.
CompletionStatus
Tracker process completion status.
void deInitConvBufPool()
Deinitialize surface transform buffer pool.
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.
NvMOTStatus(* m_TrackerLibQuery)(uint16_t customConfigFilePathSize, char *pCustomConfigFilePath, NvMOTQuery *pQuery)
Low level lib query.
virtual bool flushReqs()
Flush the request to send the batch downstream.
virtual CompletionStatus waitForCompletion(InputParams &inputParams)
Wait until a batch's process is done.
std::queue< ProcParams > m_ProcQueue
Input queue waiting for tracker proceeding.
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.
NvMOTStatus(* m_TrackerLibRemoveStreams)(NvMOTContextHandle contextHandle, NvMOTStreamId streamIdMask)
Low level lib remove streams.
uint32_t SeqIndex
Sequence index in a sub-batch.
ConvBufManager m_ConvBufMgr
Buffer manager for surface transformation.
Holds parameters of text to be overlayed.
NvMOTContextHandle contextHandle
Object class information.
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.
bool m_Running
Tracker lib is running.
struct NvMOTContext * NvMOTContextHandle
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.
bool removeSource
Information for stream removal.
void allocateConvexHullMemory(NvMOTTrackedObj *list, const uint32_t numAllocated)
std::map< SurfaceStreamId, SubBatchId > m_SsidSubBatchMap
Mapping for SurfaceStreamId => SubBatchId.
void updateObjectReidMeta(NvDsObjectMeta *pObjectMeta, NvMOTTrackedObj *pTrackedObj, NvDsBatchMeta *pBatchMeta)
Update each object's reid meta.
Holds a tracker configuration.
std::mutex m_ProcQueueLock
std::condition_variable m_ProcQueueCond
virtual bool submitInput(const InputParams &inputParams)
Submit an input batch to tracker process queue.
void removeUntrackedObjects(NvDsFrameMeta *pFrameMeta)
Remove objects that don't need an ID.
SurfaceId getSurfaceId(SurfaceStreamId ssId)
virtual bool addSource(uint32_t sourceId)
Tracker actions when a source is added to the pipeline.
std::queue< DispatchReq > reqQueue
void processSubBatch(DispatchInfo *pDispatchInfo)
Function to pop sub-batch from queue, call low level lib to process and update meta data with trackin...