NVIDIA DeepStream SDK API Reference

9.1 Release
sources/gst-plugins/gst-nvtracker/miscdatabufmanager.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 _MISCDATABUFMANAGER_H
19 #define _MISCDATABUFMANAGER_H
20 
21 #include <queue>
22 #include <mutex>
23 #include <vector>
24 #include <condition_variable>
25 #include <chrono>
26 
27 #include <gst/gst.h>
28 
29 #include "nvdstracker.h"
30 
33 {
44 
45 };
46 
49 {
50 public:
54  bool init(uint32_t batchSize, uint32_t gpuId,
55  uint32_t maxTargetsPerStream, uint32_t maxShadowTrackingAge,
56  uint32_t reidFeatureSize, uint32_t maxBufferPoolSize, bool pastFrame,
57  bool outputReidTensor,
58  bool outputTerminatedTracks,
59  bool outputShadowTracks,
60  uint32_t maxTerminatedFrameHistory);
66  void deInit();
67 
68 
69 private:
71  bool m_IntentionallyEmpty;
72  bool m_PastFrame;
73  bool m_OutputReidTensor;
74  bool m_OutputTerminatedTracks;
75  bool m_OutputShadowTracks;
77  std::mutex m_Mutex;
78  std::condition_variable m_Cond;
80  std::queue<NvTrackerMiscDataBuffer *> m_FreeQueue;
82  std::vector<NvTrackerMiscDataBuffer *> m_BufferSet;
84  bool isQueueFull() { return m_BufferSet.size() == m_FreeQueue.size(); }
86  void allocatePastFrame(NvTrackerMiscDataBuffer *pNewBuf,
87  uint32_t batchSize, uint32_t maxTargetsPerStream, uint32_t maxShadowTrackingAge);
89  void releasePastFrame(NvTrackerMiscDataBuffer *pBuffer);
91  void resetPastFrame(NvTrackerMiscDataBuffer *pBuffer);
93  void allocateReid(NvTrackerMiscDataBuffer *pNewBuf,
94  uint32_t batchSize, uint32_t maxTargetsPerStream,
95  uint32_t reidFeatureSize);
97  void releaseReid(NvTrackerMiscDataBuffer *pBuffer);
99  void resetReid(NvTrackerMiscDataBuffer *pBuffer);
101  void allocateTerminatedTracks(NvTrackerMiscDataBuffer *pNewBuf,
102  uint32_t batchSize, uint32_t maxTargetsPerStream, uint32_t maxTermTrackFrameHistory);
104  void releaseTerminatedTracks(NvTrackerMiscDataBuffer *pBuffer);
106  void resetTerminatedTracks(NvTrackerMiscDataBuffer *pBuffer);
108  void allocateShadowTracks(NvTrackerMiscDataBuffer *pNewBuf,
109  uint32_t batchSize, uint32_t maxTargetsPerStream );
111  void releaseShadowTracks(NvTrackerMiscDataBuffer *pBuffer);
113  void resetShadowTracks(NvTrackerMiscDataBuffer *pBuffer);
114 };
115 
118 {
120  GstMiniObject mini_object;
125 };
126 
127 #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: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:120
NvTrackerMiscDataBuffer::terminatedTrackBatch
NvDsTargetMiscDataBatch terminatedTrackBatch
Terminated Objects .
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:41
TrackerMiscDataManager::returnBuffer
void returnBuffer(NvTrackerMiscDataBuffer *data)
Return buffer to pool.
TrackerMiscDataManager::deInit
void deInit()
Release buffer pool.
TrackerMiscDataManager
Tracker misc data memory pool.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:48
TrackerMiscDataManager::pop
NvTrackerMiscDataBuffer * pop()
Pop a buffer from pool.
NvTrackerMiscDataBuffer::reidTensorBatch
NvDsReidTensorBatch reidTensorBatch
ReID tensor.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:39
NvTrackerMiscDataBuffer::pastFrameObjBatch
NvDsTargetMiscDataBatch pastFrameObjBatch
Past frame objects.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:35
TrackerMiscDataManager::TrackerMiscDataManager
TrackerMiscDataManager()
GstNvTrackerMiscDataObject::misc_data_manager
TrackerMiscDataManager * misc_data_manager
Pointer to user misc data buffer pool.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:122
NvTrackerMiscDataBuffer
Tracker misc data buffer for a batch.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:32
GstNvTrackerMiscDataObject::misc_data_buffer
NvTrackerMiscDataBuffer * misc_data_buffer
Pointer to current buffer.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:124
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
NvTrackerMiscDataBuffer::shadowTracksBatch
NvDsTargetMiscDataBatch shadowTracksBatch
Shadow Objects .
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:43
NvTrackerMiscDataBuffer::trajectoryBatch
NvDsTrajectoryBatch trajectoryBatch
Target trajectories.
Definition: sources/gst-plugins/gst-nvtracker/miscdatabufmanager.h:37
_NvDsReidTensorBatch
ReID tensor of the batch.
Definition: sources/includes/nvds_tracker_meta.h:128
TrackerMiscDataManager::~TrackerMiscDataManager
~TrackerMiscDataManager()