NVIDIA DeepStream SDK API Reference

9.1 Release
service-maker/includes/buffer_probe.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
31 #ifndef NVIDIA_DEEPSTREAM_BUFFER_PROBE
32 #define NVIDIA_DEEPSTREAM_BUFFER_PROBE
33 
34 #include "custom_object.hpp"
35 #include "factory_metadata.h"
36 #include "metadata.hpp"
37 #include "buffer.hpp"
38 #include "pad.hpp"
39 
40 namespace deepstream {
41 
42 class Element;
43 
47 enum class probeReturn {
49  Probe_Ok,
52 };
53 
63 class BufferProbe : public CustomObject {
64 public:
68  class IHandler {
69  public:
70  virtual ~IHandler() {}
71  };
72 
76  class IMetadataHandler : public IHandler {
77  public:
78  virtual ~IMetadataHandler() {}
79  };
80 
84  class IBufferHandler : public IHandler {
85  public:
86  virtual ~IBufferHandler() {}
87  };
88 
93  public:
94  virtual probeReturn handleBuffer(BufferProbe& probe, const Buffer&) = 0;
95  };
96 
101  public:
102  virtual probeReturn handleBuffer(BufferProbe& probe, Buffer&) = 0;
103  };
104 
109  public:
110  virtual probeReturn handleData(BufferProbe& probe, const BatchMetadata& data) = 0;
111  };
112 
117  public:
118  virtual probeReturn handleData(BufferProbe& probe, BatchMetadata& data) = 0;
119  };
120 
129  BufferProbe(const std::string& name, IHandler* handler);
130 
139  BufferProbe(const std::string& name, const char* factory, IHandler* handler);
140 
144  virtual ~BufferProbe();
145 
152  static unsigned long type();
153 
162  BufferProbe& attach(Element* target, Pad pad);
163 
168  Element* getTarget() { return target_; }
169 
174  const Pad& getPad() { return pad_; }
175 
180  template<typename T>
181  bool query(T*& interface) const {
182  auto ptr = metadata_handler_.get();
183  interface = dynamic_cast<T*>(ptr);
184  return interface != nullptr;
185  }
186 
187 protected:
192  std::unique_ptr<IHandler> metadata_handler_;
200 };
201 
202 }
203 
204 
205 #endif
deepstream::probeReturn::Probe_Ok
@ Probe_Ok
Nothing abnormal, the buffer will be treated as usual.
deepstream::BufferProbe::IBufferOperator
Read/write interface for handling buffer.
Definition: service-maker/includes/buffer_probe.hpp:100
deepstream::BufferProbe::IBufferHandler::~IBufferHandler
virtual ~IBufferHandler()
Definition: service-maker/includes/buffer_probe.hpp:86
deepstream::Pad
Pad is an abstraction of the I/O with an Element,.
Definition: service-maker/includes/pad.hpp:38
deepstream::BufferProbe::getPad
const Pad & getPad()
Return the pad from which the probe takes buffers.
Definition: service-maker/includes/buffer_probe.hpp:174
deepstream::CustomObject
Base class for all the custom objects.
Definition: service-maker/includes/custom_object.hpp:39
deepstream::BufferProbe::IBufferHandler
Derived interface for handling buffer itself.
Definition: service-maker/includes/buffer_probe.hpp:84
deepstream::Element
Element class definition.
Definition: service-maker/includes/element.hpp:54
deepstream::BufferProbe
Represent a custom object for the purpose of probing output buffers.
Definition: service-maker/includes/buffer_probe.hpp:63
deepstream::BufferProbe::IBatchMetadataOperator
Read/write interface for handling batch metadata.
Definition: service-maker/includes/buffer_probe.hpp:116
deepstream::BufferProbe::IBatchMetadataObserver
Readonly interface for handling batch metadata.
Definition: service-maker/includes/buffer_probe.hpp:108
deepstream::BufferProbe::attach
BufferProbe & attach(Element *target, Pad pad)
Attach the BufferProbe instance to an Element instance.
buffer.hpp
metadata.hpp
deepstream::BufferProbe::IHandler
Root interface required by a BufferProbe instance.
Definition: service-maker/includes/buffer_probe.hpp:68
deepstream::BufferProbe::~BufferProbe
virtual ~BufferProbe()
Destructor.
factory_metadata.h
deepstream::probeReturn
probeReturn
Return values from user implemented probe interfaces.
Definition: service-maker/includes/buffer_probe.hpp:47
deepstream
Definition: service-maker/includes/buffer.hpp:38
pad.hpp
deepstream::BufferProbe::IBufferOperator::handleBuffer
virtual probeReturn handleBuffer(BufferProbe &probe, Buffer &)=0
deepstream::BufferProbe::IBufferObserver
Readonly interface for handling buffer.
Definition: service-maker/includes/buffer_probe.hpp:92
deepstream::BufferProbe::IMetadataHandler
Derived interface for handling metadata.
Definition: service-maker/includes/buffer_probe.hpp:76
deepstream::BatchMetadata
Holds information about a formed batch containingframes from different sources.
Definition: service-maker/includes/metadata.hpp:797
deepstream::BufferProbe::getTarget
Element * getTarget()
Return the pointer to the element where the probe is attached.
Definition: service-maker/includes/buffer_probe.hpp:168
deepstream::Buffer
Base class of a buffer.
Definition: service-maker/includes/buffer.hpp:51
deepstream::BufferProbe::type
static unsigned long type()
Get the unique id associated with this type of BufferProbe.
deepstream::BufferProbe::pad_
Pad pad_
the Pad from which the probe takes buffers,
Definition: service-maker/includes/buffer_probe.hpp:194
deepstream::BufferProbe::BufferProbe
BufferProbe(const std::string &name, IHandler *handler)
Constructor.
deepstream::BufferProbe::IMetadataHandler::~IMetadataHandler
virtual ~IMetadataHandler()
Definition: service-maker/includes/buffer_probe.hpp:78
deepstream::probeReturn::Probe_Drop
@ Probe_Drop
Something wrong, indicating the pipeline to drop the buffer.
custom_object.hpp
deepstream::BufferProbe::IBatchMetadataOperator::handleData
virtual probeReturn handleData(BufferProbe &probe, BatchMetadata &data)=0
deepstream::BufferProbe::IBufferObserver::handleBuffer
virtual probeReturn handleBuffer(BufferProbe &probe, const Buffer &)=0
deepstream::BufferProbe::metadata_handler_
std::unique_ptr< IHandler > metadata_handler_
Buffer probe takes the ownership of the handler instance assigned to it during construction.
Definition: service-maker/includes/buffer_probe.hpp:192
deepstream::BufferProbe::target_
Element * target_
weak reference to the target element to which it is attached,
Definition: service-maker/includes/buffer_probe.hpp:199
deepstream::BufferProbe::IHandler::~IHandler
virtual ~IHandler()
Definition: service-maker/includes/buffer_probe.hpp:70
deepstream::BufferProbe::IBatchMetadataObserver::handleData
virtual probeReturn handleData(BufferProbe &probe, const BatchMetadata &data)=0
deepstream::BufferProbe::query
bool query(T *&interface) const
Template class to query the type of the handler inteface.
Definition: service-maker/includes/buffer_probe.hpp:181