NVIDIA DeepStream SDK API Reference

6.4 Release
convbufmanager.h
Go to the documentation of this file.
1 
13 #ifndef _CONVBUFMANAGER_H
14 #define _CONVBUFMANAGER_H
15 
16 #include <vector>
17 #include <queue>
18 #include <mutex>
19 #include <condition_variable>
20 #include <cuda.h>
21 #include <cuda_runtime.h>
22 
23 #include "nvbufsurface.h"
24 #include "nvbufsurftransform.h"
25 
26 #define MAX_BUFFER_POOL_SIZE 2 // Set surface buffer pool size as a fixed number.
27 
29 {
30 public:
33 
34  bool init(uint32_t batchSize, int32_t gpuId, int32_t compute_hw,
35  NvBufSurfaceCreateParams& bufferParam, const bool empty);
36  void deInit();
37 
41  void returnBuffer(NvBufSurface *pBufferSet);
43  void syncBuffer(NvBufSurface *pBufferSet, NvBufSurfTransformSyncObj_t *bufSetSyncObjs);
45  bool isQueueFull() {
46  return (m_FreeQueue.size() == MAX_BUFFER_POOL_SIZE);
47  }
48  bool isQueueEmpty() {
49  return (m_FreeQueue.empty());
50  }
53  return MAX_BUFFER_POOL_SIZE;
54  }
55 
56 private:
58  std::vector<NvBufSurface *> m_BufferSet;
59 
61  bool m_Running;
63  bool m_Initialized;
65  bool m_IntentionallyEmpty;
67  NvBufSurfTransformParams m_TransformParams;
69  NvBufSurfTransformConfigParams m_TransformConfigParams;
71  std::queue<NvBufSurface *> m_FreeQueue;
72 };
73 
74 #endif
ConvBufManager
Definition: convbufmanager.h:28
NvBufSurfTransformSyncObj_t
struct NvBufSurfTransformSyncObj * NvBufSurfTransformSyncObj_t
Holds the information about synchronization objects for asynchronous transform/composite APIs.
Definition: nvbufsurftransform.h:282
_NvBufSurfaceTransformParams
Holds transform parameters for a transform call.
Definition: nvbufsurftransform.h:185
ConvBufManager::convertBatchAsync
NvBufSurface * convertBatchAsync(NvBufSurface *pBatchIn, NvBufSurfTransformSyncObj_t *bufSetSyncObjs)
Perform surface transform for a batch asynchronously.
NvBufSurface
Holds information about batched buffers.
Definition: nvbufsurface.h:503
ConvBufManager::deInit
void deInit()
ConvBufManager::isQueueEmpty
bool isQueueEmpty()
Definition: convbufmanager.h:48
_NvBufSurfTransformConfigParams
Holds configuration parameters for a transform/composite session.
Definition: nvbufsurftransform.h:167
ConvBufManager::isQueueFull
bool isQueueFull()
Getter.
Definition: convbufmanager.h:45
ConvBufManager::syncBuffer
void syncBuffer(NvBufSurface *pBufferSet, NvBufSurfTransformSyncObj_t *bufSetSyncObjs)
Wait until surface transform is finished.
ConvBufManager::getMaxPoolSize
int getMaxPoolSize()
Definition: convbufmanager.h:51
ConvBufManager::init
bool init(uint32_t batchSize, int32_t gpuId, int32_t compute_hw, NvBufSurfaceCreateParams &bufferParam, const bool empty)
ConvBufManager::returnBuffer
void returnBuffer(NvBufSurface *pBufferSet)
Return unused buffer.
ConvBufManager::~ConvBufManager
~ConvBufManager()
ConvBufManager::ConvBufManager
ConvBufManager()
nvbufsurftransform.h
MAX_BUFFER_POOL_SIZE
#define MAX_BUFFER_POOL_SIZE
Copyright (c) 2019, NVIDIA CORPORATION.
Definition: convbufmanager.h:26
NvBufSurfaceCreateParams
Holds parameters required to allocate an NvBufSurface.
Definition: nvbufsurface.h:387
nvbufsurface.h