NVIDIA DeepStream SDK API Reference

6.4 Release
impl_datamixer.h
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_IMPL_BASE_DATA_MIXER_H
15 #define DS3D_COMMON_IMPL_BASE_DATA_MIXER_H
16 
19 
20 namespace ds3d { namespace impl {
21 
34 class BaseImplDataMixer : public BaseImplDataProcessor<abiDataMixer> {
35 public:
37  ~BaseImplDataMixer() override = default;
38 
40  const int portId,
41  const abiRefDataMap* inputData,
42  const abiOnDataCB* inputDataConsumedCb) final
43  {
45  getStateSafe() == State::kRunning, ErrCode::kState, "datamixer is not started");
46 
47  DS_ASSERT(inputData);
48  GuardDataMap inData(*inputData);
49  GuardCB<abiOnDataCB> guardConsumedCb(
50  inputDataConsumedCb ? inputDataConsumedCb->refCopy() : nullptr);
51  OnGuardDataCBImpl consumedCbImpl = [gConsumedCb = std::move(guardConsumedCb), this](
52  ErrCode code, GuardDataMap data) {
53  gConsumedCb(code, data.abiRef());
54  };
55  return processImpl(portId, std::move(inData), std::move(consumedCbImpl));
56  }
57 
59  const abiOnDataCB* outputDataCb) final
60  {
62  getStateSafe() == State::kRunning, ErrCode::kState, "datamixer is not started");
63 
64  DS_ASSERT(outputDataCb);
65  GuardCB<abiOnDataCB> guardOutputCb(outputDataCb ? outputDataCb->refCopy() : nullptr);
66  OnGuardDataCBImpl outputCbImpl = [gOutputCb = std::move(guardOutputCb), this](
67  ErrCode code, GuardDataMap data) {
68  gOutputCb(code, data.abiRef());
69  };
70 
71  return setOutputCbImpl(std::move(outputCbImpl));
72  }
73 
74  ErrCode updateInput_i(int portId, MixerUpdate updateType) { return updateInputImpl(portId, updateType); }
75 
76 protected:
77  // cplusplus virtual interface, user need to derive from
78  virtual ErrCode processImpl(
79  const int portId,
80  GuardDataMap datamap,
81  OnGuardDataCBImpl inputConsumedCb) = 0;
82  virtual ErrCode setOutputCbImpl(
83  OnGuardDataCBImpl outputDataCb) = 0;
84  virtual ErrCode updateInputImpl(int portId, MixerUpdate updateType) = 0;
85 };
86 
87 }} // namespace ds3d::impl
88 
89 #endif // DS3D_COMMON_IMPL_BASE_DATA_MIXER_H
ds3d::impl::BaseImplDataMixer::updateInput_i
ErrCode updateInput_i(int portId, MixerUpdate updateType)
Definition: impl_datamixer.h:74
ds3d::impl::BaseImplDataMixer::setOutputCb_i
ErrCode setOutputCb_i(const abiOnDataCB *outputDataCb) final
Definition: impl_datamixer.h:58
DS_ASSERT
#define DS_ASSERT(...)
Definition: defines.h:31
ds3d::impl::BaseImplDataMixer::process_i
ErrCode process_i(const int portId, const abiRefDataMap *inputData, const abiOnDataCB *inputDataConsumedCb) final
Definition: impl_datamixer.h:39
impl_dataprocess.h
ds3d::MixerUpdate
MixerUpdate
Definition: abi_dataprocess.h:58
ds3d::impl::BaseImplDataMixer::updateInputImpl
virtual ErrCode updateInputImpl(int portId, MixerUpdate updateType)=0
ds3d::impl::BaseImplDataProcessor< abiDataMixer >::OnGuardDataCBImpl
std::function< void(ErrCode, GuardDataMap)> OnGuardDataCBImpl
Definition: impl_dataprocess.h:29
ds3d::impl::BaseImplDataMixer::setOutputCbImpl
virtual ErrCode setOutputCbImpl(OnGuardDataCBImpl outputDataCb)=0
ds3d::abiRefT< abiDataMap >
ds3d::ErrCode
ErrCode
Definition: common.h:43
datamap.hpp
ds3d::impl::BaseImplDataMixer::processImpl
virtual ErrCode processImpl(const int portId, GuardDataMap datamap, OnGuardDataCBImpl inputConsumedCb)=0
ds3d::impl::BaseImplDataMixer
Any custom datamixer must derive from BaseImplDataMixer,.
Definition: impl_datamixer.h:34
ds3d::impl::BaseImplDataProcessor< abiDataMixer >::getStateSafe
State getStateSafe() const
Definition: impl_dataprocess.h:112
ds3d::impl::BaseImplDataMixer::~BaseImplDataMixer
~BaseImplDataMixer() override=default
ds3d::impl::BaseImplDataProcessor
BaseProcessIF could be abiDataLoader/abiDataRender/abiDataFilter or any others abi interface that der...
Definition: impl_dataprocess.h:27
ds3d::impl::BaseImplDataMixer::BaseImplDataMixer
BaseImplDataMixer()
Definition: impl_datamixer.h:36
ds3d::GuardDataMap
Definition: datamap.hpp:21
DS3D_FAILED_RETURN
#define DS3D_FAILED_RETURN(condition, ret, fmt,...)
Definition: defines.h:64
ds3d::State::kRunning
@ kRunning
ds3d
Definition: lidar_3d_datatype.h:33
ds3d::abiCallBackT
Definition: abi_obj.h:71
ds3d::ErrCode::kState
@ kState
ds3d::GuardCB
Definition: obj.hpp:285