NVIDIA DeepStream SDK API Reference

9.1 Release
9.1/sources/includes/ds3d/common/abi_obj.h
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_ABI_DATA_OBJ__H
19 #define _DS3D_COMMON_ABI_DATA_OBJ__H
20 
21 #include <ds3d/common/common.h>
22 #include <ds3d/common/idatatype.h>
23 #include <ds3d/common/type_trait.h>
24 
25 namespace ds3d {
26 
27 struct abiRefObj {
28  virtual void destroy() = 0;
29  virtual abiRefObj* refCopy_i() const = 0;
30  virtual ~abiRefObj() = default;
31 };
32 
33 enum class DataMapPolicy : int {
34  kCopyPolicyNone = 0,
40 };
41 
42 template <class T>
43 struct abiRefT : public abiRefObj {
44  virtual T* data() const = 0;
45  abiRefT* refCopy() const { return dynamic_cast<abiRefT*>(refCopy_i()); }
46 };
47 
48 typedef abiRefT<void> abiRefAny;
49 
50 class abiDataMap {
51 public:
52  abiDataMap() = default;
53  virtual ~abiDataMap() = default;
54  virtual ErrCode setBuf_i(const char* key, TIdType tid, abiRefAny* data) = 0;
55  virtual ErrCode getBuf_i(const char* key, TIdType tid, const abiRefAny*& data) const = 0;
56  virtual ErrCode removeBuf_i(const char* key) = 0;
57  virtual bool has_i(const char* key) const = 0;
58  virtual ErrCode clear_i() = 0;
59  // clone input datamap into this datamap
60  // existing keys' values in this datamap will be updated with values from input
61  virtual ErrCode copy_i(abiDataMap* input, DataMapPolicy policy, char* policyData) = 0;
62  // key provided will be used to selectively copy just that entry from input
63  virtual ErrCode copy_i(abiDataMap* input, const char* key, DataMapPolicy policy, char* policyData) = 0;
64  //list all entries in a datamap
65  virtual int32_t getSize_i() = 0;
66  // print list of keys in the map
67  virtual void printDebug_i() const = 0;
69 };
70 
71 typedef abiRefT<abiDataMap> abiRefDataMap;
72 
73 // define Callback abi interfaces
74 template <typename... Args>
75 struct abiCallBackT : public abiRefObj {
76  using CppFunc = std::function<void(Args...)>;
77  virtual void notify(Args... args) = 0;
78  abiCallBackT* refCopy() const { return dynamic_cast<abiCallBackT*>(refCopy_i()); }
79 };
80 
81 typedef abiCallBackT<ErrCode, const char*> abiErrorCB;
82 typedef abiCallBackT<ErrCode, const abiRefDataMap*> abiOnDataCB;
83 typedef abiCallBackT<ErrCode, const struct VideoBridge2dInput*> abiOnBridgeDataCB;
84 
85 } // namespace ds3d
86 
87 #endif // _DS3D_COMMON_ABI_DATA_OBJ__H
ds3d::abiDataMap::DS3D_DISABLE_CLASS_COPY
DS3D_DISABLE_CLASS_COPY(abiDataMap)
ds3d::abiRefT::refCopy
abiRefT * refCopy() const
Definition: 9.1/sources/includes/ds3d/common/abi_obj.h:45
ds3d::abiRefObj::refCopy_i
virtual abiRefObj * refCopy_i() const =0
ds3d::abiDataMap::clear_i
virtual ErrCode clear_i()=0
ds3d::abiOnDataCB
abiCallBackT< ErrCode, const abiRefDataMap * > abiOnDataCB
Definition: sources/includes/ds3d/common/abi_obj.h:82
ds3d::abiDataMap::printDebug_i
virtual void printDebug_i() const =0
ds3d::abiCallBackT::refCopy
abiCallBackT * refCopy() const
Definition: 9.1/sources/includes/ds3d/common/abi_obj.h:78
ds3d::abiDataMap::getSize_i
virtual int32_t getSize_i()=0
ds3d::abiCallBackT::notify
virtual void notify(Args... args)=0
ds3d::abiDataMap::copy_i
virtual ErrCode copy_i(abiDataMap *input, DataMapPolicy policy, char *policyData)=0
ds3d::abiRefT
Definition: sources/includes/ds3d/common/abi_obj.h:43
ds3d::abiDataMap::has_i
virtual bool has_i(const char *key) const =0
ds3d::abiErrorCB
abiCallBackT< ErrCode, const char * > abiErrorCB
Definition: sources/includes/ds3d/common/abi_obj.h:81
ds3d::ErrCode
ErrCode
Definition: sources/includes/ds3d/common/common.h:47
ds3d::DataMapPolicy
DataMapPolicy
Definition: sources/includes/ds3d/common/abi_obj.h:33
ds3d::abiDataMap::removeBuf_i
virtual ErrCode removeBuf_i(const char *key)=0
ds3d::abiRefObj::~abiRefObj
virtual ~abiRefObj()=default
ds3d::abiRefObj::destroy
virtual void destroy()=0
ds3d::abiOnBridgeDataCB
abiCallBackT< ErrCode, const struct VideoBridge2dInput * > abiOnBridgeDataCB
Definition: sources/includes/ds3d/common/abi_obj.h:83
ds3d::abiDataMap::setBuf_i
virtual ErrCode setBuf_i(const char *key, TIdType tid, abiRefAny *data)=0
ds3d::abiRefAny
abiRefT< void > abiRefAny
Definition: sources/includes/ds3d/common/abi_obj.h:48
ds3d::abiDataMap::~abiDataMap
virtual ~abiDataMap()=default
ds3d::abiDataMap::getBuf_i
virtual ErrCode getBuf_i(const char *key, TIdType tid, const abiRefAny *&data) const =0
ds3d::abiDataMap::abiDataMap
abiDataMap()=default
ds3d::abiRefDataMap
abiRefT< abiDataMap > abiRefDataMap
Definition: sources/includes/ds3d/common/abi_obj.h:71
ds3d::abiRefT::data
virtual T * data() const =0
ds3d
Definition: sources/includes/ds3d/common/abi_dataprocess.h:25
ds3d::abiCallBackT< Args... >::CppFunc
std::function< void(Args...)> CppFunc
Definition: sources/includes/ds3d/common/abi_obj.h:76
ds3d::abiCallBackT
Definition: sources/includes/ds3d/common/abi_obj.h:75
ds3d::DataMapPolicy::kCopyPolicyNone
@ kCopyPolicyNone
ds3d::TIdType
uint64_t TIdType
Definition: sources/includes/ds3d/common/common.h:73
ds3d::DataMapPolicy::kCopyWithIntegerId
@ kCopyWithIntegerId
copy from one datamap to another with key_string manipulated with d+key_string+d where d is an intege...