NVIDIA DeepStream SDK API Reference

7.0 Release
impl_datafilter.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 BaseImplDataFilter : public BaseImplDataProcessor<abiDataFilter> {
35 public:
37  ~BaseImplDataFilter() override = default;
38 
40  const abiRefDataMap* inputData, const abiOnDataCB* outputDataCb,
41  const abiOnDataCB* inputDataConsumedCb) final
42  {
44  getStateSafe() == State::kRunning, ErrCode::kState, "datafilter is not started");
45 
46  DS_ASSERT(inputData);
47  GuardDataMap inData(*inputData);
48  GuardCB<abiOnDataCB> guardOutputCb(outputDataCb ? outputDataCb->refCopy() : nullptr);
49  OnGuardDataCBImpl outputCbImpl = [gOutputCb = std::move(guardOutputCb), this](
50  ErrCode code, GuardDataMap data) {
51  gOutputCb(code, data.abiRef());
52  };
53 
54  GuardCB<abiOnDataCB> guardConsumedCb(
55  inputDataConsumedCb ? inputDataConsumedCb->refCopy() : nullptr);
56  OnGuardDataCBImpl consumedCbImpl = [gConsumedCb = std::move(guardConsumedCb), this](
57  ErrCode code, GuardDataMap data) {
58  gConsumedCb(code, data.abiRef());
59  };
60  return processImpl(std::move(inData), std::move(outputCbImpl), std::move(consumedCbImpl));
61  }
62 
63 protected:
64  // cplusplus virtual interface, user need to derive from
65  virtual ErrCode processImpl(
66  GuardDataMap datamap, OnGuardDataCBImpl outputDataCb,
67  OnGuardDataCBImpl inputConsumedCb) = 0;
68 };
69 
70 }} // namespace ds3d::impl
71 
72 #endif // DS3D_COMMON_IMPL_BASE_DATA_FILTER_H
DS_ASSERT
#define DS_ASSERT(...)
Definition: defines.h:31
ds3d::impl::BaseImplDataFilter::~BaseImplDataFilter
~BaseImplDataFilter() override=default
ds3d::impl::BaseImplDataFilter::processImpl
virtual ErrCode processImpl(GuardDataMap datamap, OnGuardDataCBImpl outputDataCb, OnGuardDataCBImpl inputConsumedCb)=0
impl_dataprocess.h
ds3d::impl::BaseImplDataFilter::BaseImplDataFilter
BaseImplDataFilter()
Definition: impl_datafilter.h:36
ds3d::impl::BaseImplDataProcessor< abiDataFilter >::OnGuardDataCBImpl
std::function< void(ErrCode, GuardDataMap)> OnGuardDataCBImpl
Definition: impl_dataprocess.h:29
ds3d::abiRefT< abiDataMap >
ds3d::impl::BaseImplDataFilter
Any custom datafilter must derive from BaseImplDataFilter,.
Definition: impl_datafilter.h:34
ds3d::ErrCode
ErrCode
Definition: common.h:43
datamap.hpp
ds3d::impl::BaseImplDataProcessor< abiDataFilter >::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::BaseImplDataFilter::process_i
ErrCode process_i(const abiRefDataMap *inputData, const abiOnDataCB *outputDataCb, const abiOnDataCB *inputDataConsumedCb) final
Definition: impl_datafilter.h:39
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::GuardCB
Definition: obj.hpp:285