NVIDIA DeepStream SDK API Reference

6.4 Release
impl_datarender.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_RENDER_H
15 #define DS3D_COMMON_IMPL_BASE_DATA_RENDER_H
16 
19 
20 namespace ds3d { namespace impl {
21 
34 class BaseImplDataRender : public BaseImplDataProcessor<abiDataRender> {
35 public:
37  ~BaseImplDataRender() override = default;
38 
39  ErrCode preroll_i(const abiRefDataMap* inputData) final
40  {
41  DS_ASSERT(inputData);
43  getStateSafe() == State::kRunning, ErrCode::kState, "datarender is not started");
44  GuardDataMap data(*inputData);
45  return prerollImpl(std::move(data));
46  }
47 
48  const abiRefWindow* getWindow_i() const final {
49  return _window.abiRef();
50  }
51 
52  ErrCode render_i(const abiRefDataMap* inputData, const abiOnDataCB* dataDoneCb) final
53  {
55  getStateSafe() == State::kRunning, ErrCode::kState, "datarender is not started");
56 
57  DS_ASSERT(inputData);
58  GuardDataMap inData(*inputData);
59  GuardCB<abiOnDataCB> guardDoneCb(dataDoneCb ? dataDoneCb->refCopy() : nullptr);
60  OnGuardDataCBImpl consumedCB = [guardCb = std::move(guardDoneCb), this](
61  ErrCode code, GuardDataMap data) {
62  guardCb(code, data.abiRef());
63  };
64  return renderImpl(std::move(inData), std::move(consumedCB));
65  }
66 
67  ErrCode stop_i() final {
68  _window.reset();
70  }
71 
72 protected:
73  // cplusplus virtual interface, user need to derive from
74  virtual ErrCode prerollImpl(GuardDataMap datamap) = 0;
75  virtual ErrCode renderImpl(GuardDataMap datamap, OnGuardDataCBImpl dataDoneCb) = 0;
76  void setWindow(GuardWindow window) {
77  _window = window;
78  }
79 private:
80  GuardWindow _window;
81 };
82 
83 }} // namespace ds3d::impl
84 
85 #endif // DS3D_COMMON_IMPL_BASE_DATA_RENDER_H
DS_ASSERT
#define DS_ASSERT(...)
Definition: defines.h:31
impl_dataprocess.h
ds3d::GuardRef::abiRef
ref * abiRef() const
Definition: obj.hpp:269
ds3d::impl::BaseImplDataRender::renderImpl
virtual ErrCode renderImpl(GuardDataMap datamap, OnGuardDataCBImpl dataDoneCb)=0
ds3d::impl::BaseImplDataProcessor< abiDataRender >::OnGuardDataCBImpl
std::function< void(ErrCode, GuardDataMap)> OnGuardDataCBImpl
Definition: impl_dataprocess.h:29
ds3d::impl::BaseImplDataRender::preroll_i
ErrCode preroll_i(const abiRefDataMap *inputData) final
Definition: impl_datarender.h:39
ds3d::impl::BaseImplDataRender::getWindow_i
const abiRefWindow * getWindow_i() const final
Definition: impl_datarender.h:48
ds3d::abiRefT< abiDataMap >
ds3d::ErrCode
ErrCode
Definition: common.h:43
ds3d::impl::BaseImplDataRender::~BaseImplDataRender
~BaseImplDataRender() override=default
datamap.hpp
ds3d::GuardDataT< abiWindow >
ds3d::impl::BaseImplDataProcessor::stop_i
ErrCode stop_i() override
Definition: impl_dataprocess.h:80
ds3d::impl::BaseImplDataRender
Any custom datarender must derive from BaseImplDataRender,.
Definition: impl_datarender.h:34
ds3d::GuardRef::reset
void reset(ref *abiref=nullptr)
Definition: obj.hpp:260
ds3d::impl::BaseImplDataRender::BaseImplDataRender
BaseImplDataRender()
Definition: impl_datarender.h:36
ds3d::impl::BaseImplDataRender::render_i
ErrCode render_i(const abiRefDataMap *inputData, const abiOnDataCB *dataDoneCb) final
Definition: impl_datarender.h:52
ds3d::impl::BaseImplDataProcessor< abiDataRender >::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::GuardDataMap
Definition: datamap.hpp:21
DS3D_FAILED_RETURN
#define DS3D_FAILED_RETURN(condition, ret, fmt,...)
Definition: defines.h:64
ds3d::impl::BaseImplDataRender::prerollImpl
virtual ErrCode prerollImpl(GuardDataMap datamap)=0
ds3d::impl::BaseImplDataRender::stop_i
ErrCode stop_i() final
Definition: impl_datarender.h:67
ds3d::State::kRunning
@ kRunning
ds3d
Definition: lidar_3d_datatype.h:33
ds3d::abiCallBackT
Definition: abi_obj.h:71
ds3d::ErrCode::kState
@ kState
ds3d::impl::BaseImplDataRender::setWindow
void setWindow(GuardWindow window)
Definition: impl_datarender.h:76
ds3d::GuardCB
Definition: obj.hpp:285