NVIDIA DeepStream SDK API Reference

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