20 #ifndef __NVDSINFERSERVER_IPROCESS_H__
21 #define __NVDSINFERSERVER_IPROCESS_H__
24 #include <condition_variable>
105 assert(src && (
int)src->getSize() > m_TransformIdx);
111 to->setBufId(src->bufId());
113 src->buf(m_TransformIdx) = to;
116 done(status, std::move(src));
127 const std::vector<int>& devIds) = 0;
152 int m_TransformIdx = 0;
168 : m_UniqueId(uid), m_ProcessType(type) {}
192 return genericPostProcess_(std::move(inBuf), std::move(mainStream),
193 std::move(done), &BasePostprocessor::requestCudaOutBufs,
194 &BasePostprocessor::postCudaImpl);
206 return genericPostProcess_(std::move(inBuf), std::move(mainStream),
207 std::move(done), &BasePostprocessor::requestHostOutBufs,
208 &BasePostprocessor::postHostImpl);
217 const std::vector<int>& devIds) = 0;
263 template <
typename RequestBuf,
typename Impl>
272 outBuf->setBufId(inBuf->bufId());
277 done(status, std::move(outBuf));
297 template <
class BasePreprocessorT>
302 enum { kBuf, kStream, kDone };
305 template <
typename... Args>
307 : BasePreprocessorT(std::forward<Args>(args)...),
309 [this](Item i) -> bool {
311 std::move(std::get<kDone>(i));
313 std::move(std::get<kBuf>(i)),
314 std::move(std::get<kStream>(i)), done);
325 m_Worker.setThreadName(name);
329 Item item = std::make_tuple(
330 std::move(src), std::move(mainStream), std::move(done));
331 if (m_Worker.queueItem(std::move(item))) {
338 QueueThread<std::vector<Item>> m_Worker;
345 template <
class BasePostprocessorT>
349 enum { kBuf, kStream, kDone };
352 template <
typename... Args>
354 : BasePostprocessorT(std::forward<Args>(args)...),
356 [this](ItemCuda i) -> bool {
358 std::move(std::get<kDone>(i));
360 std::move(std::get<kBuf>(i)),
361 std::move(std::get<kStream>(i)), done);
372 ItemCuda item = std::make_tuple(
373 std::move(inBuf), std::move(mainStream), std::move(done));
374 if (m_CudaWorker.queueItem(std::move(item))) {
381 QueueThread<std::vector<ItemCuda>> m_CudaWorker;
388 template <
typename BasePostprocessorT>
392 enum { kBuf, kStream, kDone };
395 template <
typename... Args>
397 : BasePostprocessorT(std::forward<Args>(args)...),
399 [this](ItemHost i) -> bool {
401 std::move(std::get<kDone>(i));
403 std::move(std::get<kBuf>(i)),
404 std::move(std::get<kStream>(i)), done);
418 ItemHost item = std::make_tuple(
419 std::move(inBuf), std::move(mainStream), std::move(done));
420 if (m_HostWorker.queueItem(std::move(item))) {
427 QueueThread<std::vector<ItemHost>> m_HostWorker;