NVIDIA DeepStream SDK API Reference

7.1 Release
miscdatabufmanager.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2019-2024 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 _MISCDATABUFMANAGER_H
14 #define _MISCDATABUFMANAGER_H
15 
16 #include <queue>
17 #include <mutex>
18 #include <vector>
19 #include <condition_variable>
20 #include <chrono>
21 
22 #include <gst/gst.h>
23 
24 #include "nvdstracker.h"
25 
28 {
39 
40 };
41 
44 {
45 public:
49  bool init(uint32_t batchSize, uint32_t gpuId,
50  uint32_t maxTargetsPerStream, uint32_t maxShadowTrackingAge,
51  uint32_t reidFeatureSize, uint32_t maxBufferPoolSize, bool pastFrame,
52  bool outputReidTensor,
53  bool outputTerminatedTracks,
54  bool outputShadowTracks,
55  uint32_t maxTerminatedFrameHistory);
61  void deInit();
62 
63 
64 private:
66  bool m_IntentionallyEmpty;
67  bool m_PastFrame;
68  bool m_OutputReidTensor;
69  bool m_OutputTerminatedTracks;
70  bool m_OutputShadowTracks;
72  std::mutex m_Mutex;
73  std::condition_variable m_Cond;
75  std::queue<NvTrackerMiscDataBuffer *> m_FreeQueue;
77  std::vector<NvTrackerMiscDataBuffer *> m_BufferSet;
79  bool isQueueFull() { return m_BufferSet.size() == m_FreeQueue.size(); }
81  void allocatePastFrame(NvTrackerMiscDataBuffer *pNewBuf,
82  uint32_t batchSize, uint32_t maxTargetsPerStream, uint32_t maxShadowTrackingAge);
84  void releasePastFrame(NvTrackerMiscDataBuffer *pBuffer);
86  void resetPastFrame(NvTrackerMiscDataBuffer *pBuffer);
88  void allocateReid(NvTrackerMiscDataBuffer *pNewBuf,
89  uint32_t batchSize, uint32_t maxTargetsPerStream,
90  uint32_t reidFeatureSize);
92  void releaseReid(NvTrackerMiscDataBuffer *pBuffer);
94  void resetReid(NvTrackerMiscDataBuffer *pBuffer);
96  void allocateTerminatedTracks(NvTrackerMiscDataBuffer *pNewBuf,
97  uint32_t batchSize, uint32_t maxTargetsPerStream, uint32_t maxTermTrackFrameHistory);
99  void releaseTerminatedTracks(NvTrackerMiscDataBuffer *pBuffer);
101  void resetTerminatedTracks(NvTrackerMiscDataBuffer *pBuffer);
103  void allocateShadowTracks(NvTrackerMiscDataBuffer *pNewBuf,
104  uint32_t batchSize, uint32_t maxTargetsPerStream );
106  void releaseShadowTracks(NvTrackerMiscDataBuffer *pBuffer);
108  void resetShadowTracks(NvTrackerMiscDataBuffer *pBuffer);
109 };
110 
113 {
115  GstMiniObject mini_object;
120 };
121 
122 #endif
TrackerMiscDataManager::init
bool init(uint32_t batchSize, uint32_t gpuId, uint32_t maxTargetsPerStream, uint32_t maxShadowTrackingAge, uint32_t reidFeatureSize, uint32_t maxBufferPoolSize, bool pastFrame, bool outputReidTensor, bool outputTerminatedTracks, bool outputShadowTracks, uint32_t maxTerminatedFrameHistory)
Initialize buffer pool based on tracker size information.
GstNvTrackerMiscDataObject::mini_object
GstMiniObject mini_object
GStreamer mini object for refcount.
Definition: miscdatabufmanager.h:115
NvTrackerMiscDataBuffer::terminatedTrackBatch
NvDsTargetMiscDataBatch terminatedTrackBatch
Terminated Objects .
Definition: miscdatabufmanager.h:36
TrackerMiscDataManager::returnBuffer
void returnBuffer(NvTrackerMiscDataBuffer *data)
Return buffer to pool.
TrackerMiscDataManager::deInit
void deInit()
Release buffer pool.
TrackerMiscDataManager
Tracker misc data memory pool.
Definition: miscdatabufmanager.h:43
TrackerMiscDataManager::pop
NvTrackerMiscDataBuffer * pop()
Pop a buffer from pool.
NvTrackerMiscDataBuffer::reidTensorBatch
NvDsReidTensorBatch reidTensorBatch
ReID tensor.
Definition: miscdatabufmanager.h:34
GstNvTrackerMiscDataObject::misc_data_manager
TrackerMiscDataManager * misc_data_manager
Pointer to user misc data buffer pool.
Definition: miscdatabufmanager.h:117
NvTrackerMiscDataBuffer::pastFrameObjBatch
NvDsTargetMiscDataBatch pastFrameObjBatch
Past frame objects.
Definition: miscdatabufmanager.h:30
TrackerMiscDataManager::TrackerMiscDataManager
TrackerMiscDataManager()
GstNvTrackerMiscDataObject::misc_data_buffer
NvTrackerMiscDataBuffer * misc_data_buffer
Pointer to current buffer.
Definition: miscdatabufmanager.h:119
NvTrackerMiscDataBuffer
Tracker misc data buffer for a batch.
Definition: miscdatabufmanager.h:27
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:103
NvTrackerMiscDataBuffer::shadowTracksBatch
NvDsTargetMiscDataBatch shadowTracksBatch
Shadow Objects .
Definition: miscdatabufmanager.h:38
nvdstracker.h
NvTrackerMiscDataBuffer::trajectoryBatch
NvDsTrajectoryBatch trajectoryBatch
Target trajectories.
Definition: miscdatabufmanager.h:32
_NvDsReidTensorBatch
ReID tensor of the batch.
Definition: nvds_tracker_meta.h:118
TrackerMiscDataManager::~TrackerMiscDataManager
~TrackerMiscDataManager()