|
|
NVIDIA DeepStream SDK API Reference
|
9.2 Release
|
Go to the documentation of this file.
25 #ifndef __NVDSINFERSERVER_IPROCESS_H__
26 #define __NVDSINFERSERVER_IPROCESS_H__
29 #include <condition_variable>
38 #include "infer_datatypes.h"
110 assert(src && (
int)src->getSize() > m_TransformIdx);
116 to->setBufId(src->bufId());
118 src->buf(m_TransformIdx) = to;
132 const std::vector<int>& devIds) = 0;
157 int m_TransformIdx = 0;
167 class BasePostprocessor :
public IPostprocessor {
173 : m_UniqueId(uid), m_ProcessType(type) {}
198 std::move(done), &BasePostprocessor::requestCudaOutBufs,
199 &BasePostprocessor::postCudaImpl);
212 std::move(done), &BasePostprocessor::requestHostOutBufs,
213 &BasePostprocessor::postHostImpl);
222 const std::vector<int>& devIds) = 0;
268 template <
typename RequestBuf,
typename Impl>
277 outBuf->setBufId(inBuf->bufId());
302 template <
class BasePreprocessorT>
303 class ThreadPreprocessor :
public BasePreprocessorT {
307 enum { kBuf, kStream, kDone };
310 template <
typename... Args>
312 : BasePreprocessorT(
std::
forward<Args>(args)...),
314 [this](Item i) -> bool {
330 m_Worker.setThreadName(name);
334 Item item = std::make_tuple(
336 if (m_Worker.queueItem(
std::move(item))) {
343 QueueThread<std::vector<Item>> m_Worker;
350 template <
class BasePostprocessorT>
351 class ThreadCudaPostprocessor :
public BasePostprocessorT {
354 enum { kBuf, kStream, kDone };
357 template <
typename... Args>
359 : BasePostprocessorT(
std::
forward<Args>(args)...),
361 [this](ItemCuda i) -> bool {
377 ItemCuda item = std::make_tuple(
379 if (m_CudaWorker.queueItem(
std::move(item))) {
386 QueueThread<std::vector<ItemCuda>> m_CudaWorker;
393 template <
typename BasePostprocessorT>
394 class ThreadHostPostprocessor :
public BasePostprocessorT {
397 enum { kBuf, kStream, kDone };
400 template <
typename... Args>
402 : BasePostprocessorT(
std::
forward<Args>(args)...),
404 [this](ItemHost i) -> bool {
423 ItemHost item = std::make_tuple(
425 if (m_HostWorker.queueItem(
std::move(item))) {
432 QueueThread<std::vector<ItemHost>> m_HostWorker;
This is a header file for pre-processing cuda kernels with normalization and mean subtraction require...
virtual NvDsInferStatus allocateResource(const std::vector< int > &devIds)=0
Allocate resource like output buffer pool.
NvDsInferStatus transform(SharedBatchArray src, SharedCuStream mainStream, PreprocessDone done) override
Perform the transformation on the input buffer from the buffer array, indexed using m_TransformIdx.
~BasePostprocessor() override=default
Destructor default.
~ThreadCudaPostprocessor()
NvDsInferStatus postHostProcess(SharedBatchArray inBuf, SharedCuStream mainStream, PostprocessDone done) override
Acquire an output buffer array and call host side processing steps.
virtual NvDsInferStatus postCudaProcess(SharedBatchArray inBuf, SharedCuStream mainStream, PostprocessDone done)=0
Header file of the common declarations for the nvinferserver library.
~ThreadPreprocessor() override
std::function< void(NvDsInferStatus, SharedBatchArray)> PostprocessDone
InferPostprocessType
Inference post processing types.
std::function< void(NvDsInferStatus, SharedBatchArray)> PreprocessDone
NvDsInferStatus transform(SharedBatchArray src, SharedCuStream mainStream, IPreprocessor::PreprocessDone done) final
Post-processor interface class.
std::shared_ptr< BaseBatchBuffer > SharedBatchBuf
Common buffer interfaces (internal).
BasePostprocessor(InferPostprocessType type, int uid)
Constructor, save process type and ID.
virtual ~IPreprocessor()=default
std::shared_ptr< BaseBatchArray > SharedBatchArray
@ NVDSINFER_SUCCESS
NvDsInferContext operation succeeded.
NvDsInferStatus postCudaProcess(SharedBatchArray inBuf, SharedCuStream mainStream, IPostprocessor::PostprocessDone done) final
virtual NvDsInferStatus postHostProcess(SharedBatchArray inBuf, SharedCuStream mainStream, PostprocessDone done)=0
virtual ~IPostprocessor()=default
NvDsInferStatus postCudaProcess(SharedBatchArray inBuf, SharedCuStream mainStream, PostprocessDone done) override
Acquire an output buffer array and call CUDA post processing steps.
@ NVDSINFER_UNKNOWN_ERROR
Unknown error was encountered.
ThreadHostPostprocessor(Args &&... args)
@ kOther
Custom post processing.
Header file containing utility functions and classes used by the nvinferserver low level library.
std::shared_ptr< CudaStream > SharedCuStream
Cuda based pointers.
void setTransformIdx(int idx)
constexpr absl::OTABSL_OPTION_NAMESPACE_NAME::remove_reference_t< T > && move(T &&t) noexcept
ThreadPreprocessor(Args &&... args)
InferPostprocessType networkType() const
void setThreadName(const std::string &name)
~BasePreprocessor() override=default
Destructor default.
Extensions to the C++ standard library.
ThreadCudaPostprocessor(Args &&... args)
virtual NvDsInferStatus allocateResource(const std::vector< int > &devIds)=0
Allocate resource like output buffer pool.
constexpr T && forward(absl::OTABSL_OPTION_NAMESPACE_NAME::remove_reference_t< T > &t) noexcept
Preprocessor interface class.
~ThreadHostPostprocessor()
virtual NvDsInferStatus transform(SharedBatchArray src, SharedCuStream mainStream, PreprocessDone done)=0
@ NVDSINFER_RESOURCE_ERROR
Resource error was encountered.
NvDsInferStatus postHostProcess(SharedBatchArray inBuf, SharedCuStream mainStream, IPostprocessor::PostprocessDone done) final
NvDsInferStatus
Enum for the status codes returned by NvDsInferContext.