NVIDIA DeepStream SDK API Reference

8.0 Release
data_feeder.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2024 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 
18 #ifndef NVIDIA_DEEPSTREAM_DATA_FEEDER
19 #define NVIDIA_DEEPSTREAM_DATA_FEEDER
20 
21 #include <thread>
22 #include <mutex>
23 #include <condition_variable>
24 
25 #include "signal_handler.hpp"
26 #include "buffer.hpp"
27 
28 namespace deepstream {
29 
39 class DataFeeder : public SignalHandler {
40  public:
47  class IDataProvider {
48  public:
60  virtual Buffer read(DataFeeder& feeder, unsigned int size, bool& eos) = 0;
61  virtual ~IDataProvider() {}
62  };
63 
72  DataFeeder(const std::string &name, IDataProvider* provider);
73 
83  DataFeeder(const std::string &name, const char* factory, IDataProvider* provider);
84 
86  virtual ~DataFeeder();
87 
89  void startFeed(void* appsrc, unsigned int size);
91  void stopFeed();
93  bool doFeed(void* appsrc, unsigned int size);
94 
95  protected:
96  std::unique_ptr<IDataProvider> data_provider_;
97  std::thread worker_;
98  std::mutex mutex_;
99  std::condition_variable cv_data_;
100  unsigned int data_size_;
102  void* appsrc_;
103  bool eos_;
104 
105 };
106 }
107 
108 #endif
deepstream::DataFeeder::IDataProvider
required interface for a data feeder
Definition: data_feeder.hpp:47
deepstream::DataFeeder::worker_
std::thread worker_
Definition: data_feeder.hpp:97
deepstream::DataFeeder::DataFeeder
DataFeeder(const std::string &name, IDataProvider *provider)
Constructor.
deepstream::DataFeeder
A specific signal handler for feeding data.
Definition: data_feeder.hpp:39
deepstream::DataFeeder::doFeed
bool doFeed(void *appsrc, unsigned int size)
Complete the feeding, called by the feeding thread.
deepstream::DataFeeder::data_ready_
bool data_ready_
Definition: data_feeder.hpp:101
signal_handler.hpp
deepstream::DataFeeder::IDataProvider::read
virtual Buffer read(DataFeeder &feeder, unsigned int size, bool &eos)=0
Read a data block.
deepstream::DataFeeder::data_provider_
std::unique_ptr< IDataProvider > data_provider_
Definition: data_feeder.hpp:96
deepstream::DataFeeder::startFeed
void startFeed(void *appsrc, unsigned int size)
Start feeding, called by the pipeline.
deepstream::DataFeeder::appsrc_
void * appsrc_
Definition: data_feeder.hpp:102
deepstream::DataFeeder::eos_
bool eos_
Definition: data_feeder.hpp:103
deepstream::DataFeeder::IDataProvider::~IDataProvider
virtual ~IDataProvider()
Definition: data_feeder.hpp:61
deepstream
Definition: buffer.hpp:33
deepstream::DataFeeder::mutex_
std::mutex mutex_
Definition: data_feeder.hpp:98
deepstream::DataFeeder::~DataFeeder
virtual ~DataFeeder()
Destructor.
deepstream::Buffer
Base class of a buffer.
Definition: buffer.hpp:46
deepstream::DataFeeder::cv_data_
std::condition_variable cv_data_
Definition: data_feeder.hpp:99
deepstream::DataFeeder::stopFeed
void stopFeed()
Stop feeding, called by the pipeline.
deepstream::DataFeeder::data_size_
unsigned int data_size_
Definition: data_feeder.hpp:100
buffer.hpp
deepstream::SignalHandler
SignalHandler class.
Definition: signal_handler.hpp:40