NVIDIA DeepStream SDK API Reference

7.0 Release
impl_databridge.h
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_IMPL_BASE_DATA_FILTER_H
15 #define DS3D_COMMON_IMPL_BASE_DATA_FILTER_H
16 
19 
20 namespace ds3d { namespace impl {
21 
34 class BaseImplDataBridge : public BaseImplDataProcessor<abiDataBridge> {
35 public:
37  ~BaseImplDataBridge() override = default;
38 
40  const struct VideoBridge2dInput* inputData, const abiOnDataCB* outputDataCb,
41  const abiOnBridgeDataCB* inputDataConsumedCb) final
42  {
44  getStateSafe() == State::kRunning, ErrCode::kState, "datafilter is not started");
45 
46  DS_ASSERT(inputData);
47  GuardCB<abiOnDataCB> guardOutputCb(outputDataCb ? outputDataCb->refCopy() : nullptr);
48  OnGuardDataCBImpl outputCbImpl = [gOutputCb = std::move(guardOutputCb), this](
49  ErrCode code, GuardDataMap data) {
50  gOutputCb(code, data.abiRef());
51  };
52 
53  GuardCB<abiOnBridgeDataCB> guardConsumedCb(
54  inputDataConsumedCb ? inputDataConsumedCb->refCopy() : nullptr);
55  OnGuardBridgeDataCBImpl consumedCbImpl = [gConsumedCb = std::move(guardConsumedCb), this](
56  ErrCode code, const struct VideoBridge2dInput* data) {
57  gConsumedCb(code, data);
58  };
59  return processImpl(inputData, std::move(outputCbImpl), std::move(consumedCbImpl));
60  }
61 
62 protected:
63  // cplusplus virtual interface, user need to derive from
64  virtual ErrCode processImpl(
65  const struct VideoBridge2dInput* inputData, OnGuardDataCBImpl outputDataCb,
66  OnGuardBridgeDataCBImpl inputConsumedCb) = 0;
67 };
68 
69 }} // namespace ds3d::impl
70 
71 #endif // DS3D_COMMON_IMPL_BASE_DATA_FILTER_H
DS_ASSERT
#define DS_ASSERT(...)
Definition: defines.h:31
ds3d::impl::BaseImplDataProcessor< abiDataBridge >::OnGuardBridgeDataCBImpl
std::function< void(ErrCode, const struct VideoBridge2dInput *)> OnGuardBridgeDataCBImpl
Definition: impl_dataprocess.h:30
ds3d::impl::BaseImplDataBridge::processImpl
virtual ErrCode processImpl(const struct VideoBridge2dInput *inputData, OnGuardDataCBImpl outputDataCb, OnGuardBridgeDataCBImpl inputConsumedCb)=0
ds3d::impl::BaseImplDataBridge::~BaseImplDataBridge
~BaseImplDataBridge() override=default
ds3d::VideoBridge2dInput
Definition: idatatype.h:152
impl_dataprocess.h
ds3d::impl::BaseImplDataBridge::process_i
ErrCode process_i(const struct VideoBridge2dInput *inputData, const abiOnDataCB *outputDataCb, const abiOnBridgeDataCB *inputDataConsumedCb) final
Definition: impl_databridge.h:39
ds3d::impl::BaseImplDataProcessor< abiDataBridge >::OnGuardDataCBImpl
std::function< void(ErrCode, GuardDataMap)> OnGuardDataCBImpl
Definition: impl_dataprocess.h:29
ds3d::ErrCode
ErrCode
Definition: common.h:43
datamap.hpp
ds3d::impl::BaseImplDataProcessor< abiDataBridge >::getStateSafe
State getStateSafe() const
Definition: impl_dataprocess.h:112
ds3d::impl::BaseImplDataProcessor
BaseProcessIF could be abiDataLoader/abiDataRender/abiDataFilter or any others abi interface that der...
Definition: impl_dataprocess.h:27
ds3d::impl::BaseImplDataBridge::BaseImplDataBridge
BaseImplDataBridge()
Definition: impl_databridge.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:35
ds3d::abiCallBackT
Definition: abi_obj.h:71
ds3d::ErrCode::kState
@ kState
ds3d::impl::BaseImplDataBridge
Any custom datafilter must derive from BaseImplDataBridge,.
Definition: impl_databridge.h:34
ds3d::GuardCB
Definition: obj.hpp:285