NVIDIA DeepStream SDK API Reference

7.0 Release
dataprocess.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2022 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 
14 #ifndef DS3D_COMMON_HPP_DATA_PROCESS_HPP
15 #define DS3D_COMMON_HPP_DATA_PROCESS_HPP
16 
18 #include <ds3d/common/abi_frame.h>
19 #include <ds3d/common/abi_obj.h>
20 #include <ds3d/common/common.h>
21 #include <ds3d/common/func_utils.h>
22 
24 #include <ds3d/common/hpp/obj.hpp>
25 
26 namespace ds3d {
27 
28 template <class abiDataProcessorT, _EnableIfBaseOf<abiProcess, abiDataProcessorT> = true>
29 class GuardDataProcess : public GuardDataT<abiDataProcessorT> {
31 
32 protected:
33  GuardDataProcess() = default;
34  template <typename... Args /*, _EnableIfConstructible<_Base, Args...> = true*/>
35  GuardDataProcess(Args&&... args) : _Base(std::forward<Args>(args)...)
36  {
37  }
39 
40 public:
41  ~GuardDataProcess() = default;
42 
43  template <typename DelF>
44  void setUserData(void* data, DelF delF)
45  {
46  DS_ASSERT(ptr());
47  if (!data) {
48  ptr()->setUserData_i(nullptr);
49  return;
50  }
51  SharedRefObj<void> uData(data, std::move(delF));
52  ptr()->setUserData_i(&uData);
53  }
54 
55  virtual void* getUserData() const
56  {
57  DS_ASSERT(ptr());
58  const abiRefAny* udata = ptr()->getUserData_i();
59  return (udata ? udata->data() : nullptr);
60  }
61 
63  {
64  DS_ASSERT(ptr());
65  GuardCB<abiErrorCB> guardErrCb;
66  guardErrCb.setFn<ErrCode, const char*>(std::move(errCb));
67  ptr()->setErrorCallback_i(*guardErrCb.abiRef());
68  }
69 
70  ErrCode start(const std::string& content, const std::string& path = "")
71  {
72  DS_ASSERT(ptr());
73  return ptr()->start_i(content.c_str(), content.size(), path.c_str());
74  }
75 
77  {
78  DS_ASSERT(ptr());
79  return ptr()->flush_i();
80  }
81 
83  {
84  DS_ASSERT(ptr());
85  return ptr()->stop_i();
86  }
87 
88  State state() const
89  {
90  DS_ASSERT(ptr());
91  return ptr()->state_i();
92  }
93 
94  std::string getCaps(CapsPort port)
95  {
96  DS_ASSERT(ptr());
97  return cppString(ptr()->getCaps_i(port));
98  }
99 
100  std::string getOutputCaps() { return getCaps(CapsPort::kOutput); }
101  std::string getInputCaps() { return getCaps(CapsPort::kInput); }
102 };
103 
104 } // namespace ds3d
105 
106 #endif // DS3D_COMMON_HPP_DATA_PROCESS_HPP
ds3d::CapsPort
CapsPort
Definition: abi_dataprocess.h:61
DS_ASSERT
#define DS_ASSERT(...)
Definition: defines.h:31
ds3d::GuardDataProcess
Definition: dataprocess.hpp:29
ds3d::GuardDataProcess::getOutputCaps
std::string getOutputCaps()
Definition: dataprocess.hpp:100
ds3d::GuardDataProcess::getInputCaps
std::string getInputCaps()
Definition: dataprocess.hpp:101
ds3d::CapsPort::kInput
@ kInput
ds3d::GuardRef< abiCB >::abiRef
abiCB * abiRef() const
Definition: obj.hpp:269
ds3d::GuardDataProcess::stop
ErrCode stop()
Definition: dataprocess.hpp:82
ds3d::GuardDataProcess::flush
ErrCode flush()
Definition: dataprocess.hpp:76
ds3d::GuardDataProcess::state
State state() const
Definition: dataprocess.hpp:88
ds3d::abiRefT< void >
ds3d::GuardDataProcess::getUserData
virtual void * getUserData() const
Definition: dataprocess.hpp:55
ds3d::GuardDataProcess::GuardDataProcess
GuardDataProcess(Args &&... args)
Definition: dataprocess.hpp:35
ds3d::ErrCode
ErrCode
Definition: common.h:43
ds3d::GuardDataProcess::setErrorCallback
void setErrorCallback(abiErrorCB::CppFunc errCb)
Definition: dataprocess.hpp:62
datamap.hpp
obj.hpp
ds3d::GuardDataT
Definition: obj.hpp:331
ds3d::GuardDataProcess::~GuardDataProcess
~GuardDataProcess()=default
ds3d::GuardCB::setFn
void setFn(F f)
Definition: obj.hpp:297
ds3d::GuardDataProcess::getCaps
std::string getCaps(CapsPort port)
Definition: dataprocess.hpp:94
abi_frame.h
abi_dataprocess.h
ds3d::State
State
All custom-libs need create the abi reference for DataLoader, DataRender, and DataFilter.
Definition: abi_dataprocess.h:51
common.h
ds3d::GuardDataT< abiDataProcessorT >::ptr
abiDataProcessorT * ptr() const
Definition: obj.hpp:361
ds3d::GuardDataProcess::setUserData
void setUserData(void *data, DelF delF)
Definition: dataprocess.hpp:44
ds3d::CapsPort::kOutput
@ kOutput
func_utils.h
ds3d::GuardDataProcess::start
ErrCode start(const std::string &content, const std::string &path="")
Definition: dataprocess.hpp:70
abi_obj.h
ds3d::cppString
std::string cppString(const char *str, size_t len=0)
Definition: func_utils.h:108
ds3d::abiRefT::data
virtual T * data() const =0
ds3d::SharedRefObj
Definition: obj.hpp:133
ds3d
Definition: lidar_3d_datatype.h:35
ds3d::abiCallBackT::CppFunc
std::function< void(Args...)> CppFunc
Definition: abi_obj.h:72
ds3d::GuardCB
Definition: obj.hpp:285
ds3d::GuardDataProcess::GuardDataProcess
GuardDataProcess()=default