NVIDIA DeepStream SDK API Reference

7.0 Release
datamixer.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2023 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_MIXER_HPP
15 #define DS3D_COMMON_HPP_DATA_MIXER_HPP
16 
17 #include <ds3d/common/common.h>
18 #include <ds3d/common/func_utils.h>
20 
21 namespace ds3d {
22 
55 class GuardDataMixer : public GuardDataProcess<abiDataMixer> {
57 
58 public:
59  template <typename... Args>
60  GuardDataMixer(Args&&... args) : _Base(std::forward<Args>(args)...)
61  {
62  }
63  ~GuardDataMixer() = default;
64 
66  const int portId,
67  GuardDataMap datamap,
68  abiOnDataCB::CppFunc inputConsumedCB)
69  {
70  GuardCB<abiOnDataCB> guardConsumedCb;
71  guardConsumedCb.setFn<ErrCode, const abiRefDataMap*>(std::move(inputConsumedCB));
72 
73  DS_ASSERT(ptr());
74  ErrCode code =
75  ptr()->process_i(portId, datamap.abiRef(), guardConsumedCb.abiRef());
76  return code;
77  }
78 
80  abiOnDataCB::CppFunc outputDataCB)
81  {
82  GuardCB<abiOnDataCB> guardOutputCb;
83  guardOutputCb.setFn<ErrCode, const abiRefDataMap*>(std::move(outputDataCB));
84 
85  DS_ASSERT(ptr());
86  ErrCode code =
87  ptr()->setOutputCb_i(guardOutputCb.abiRef());
88  return code;
89  }
90 
91  ErrCode updateInput(int portId, MixerUpdate updateType) { return ptr()->updateInput_i(portId, updateType); }
92 };
93 
94 } // namespace ds3d
95 
96 #endif // DS3D_COMMON_HPP_DATA_MIXER_HPP
ds3d::abiDataMixer::process_i
virtual ErrCode process_i(const int portId, const abiRefDataMap *inputData, const abiOnDataCB *dataConsumedCb)=0
DS_ASSERT
#define DS_ASSERT(...)
Definition: defines.h:31
ds3d::abiDataMixer::setOutputCb_i
virtual ErrCode setOutputCb_i(const abiOnDataCB *outputDataCb)=0
to configure mixer framerate and output callback
ds3d::GuardDataProcess
Definition: dataprocess.hpp:29
ds3d::GuardDataMixer::setOutputCb
ErrCode setOutputCb(abiOnDataCB::CppFunc outputDataCB)
Definition: datamixer.hpp:79
dataprocess.hpp
ds3d::MixerUpdate
MixerUpdate
Definition: abi_dataprocess.h:58
ds3d::GuardRef::abiRef
ref * abiRef() const
Definition: obj.hpp:269
ds3d::abiDataMixer::updateInput_i
virtual ErrCode updateInput_i(int portId, MixerUpdate updateType)=0
ds3d::abiRefT< abiDataMap >
ds3d::ErrCode
ErrCode
Definition: common.h:43
ds3d::GuardDataMixer::process
ErrCode process(const int portId, GuardDataMap datamap, abiOnDataCB::CppFunc inputConsumedCB)
Definition: datamixer.hpp:65
ds3d::GuardDataMixer::GuardDataMixer
GuardDataMixer(Args &&... args)
Definition: datamixer.hpp:60
ds3d::GuardCB::setFn
void setFn(F f)
Definition: obj.hpp:297
ds3d::GuardDataMixer::updateInput
ErrCode updateInput(int portId, MixerUpdate updateType)
Definition: datamixer.hpp:91
ds3d::GuardDataMixer::~GuardDataMixer
~GuardDataMixer()=default
common.h
ds3d::GuardDataT< abiDataMixer >::ptr
abiDataMixer * ptr() const
Definition: obj.hpp:361
ds3d::GuardDataMixer
GuardDataMixer is the safe access entry for abiDataMixer.
Definition: datamixer.hpp:55
func_utils.h
ds3d::GuardDataMap
Definition: datamap.hpp:21
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