NVIDIA DeepStream SDK API Reference

9.1 Release
9.1/service-maker/includes/data_feeder.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 
23 #ifndef NVIDIA_DEEPSTREAM_DATA_FEEDER
24 #define NVIDIA_DEEPSTREAM_DATA_FEEDER
25 
26 #include <thread>
27 #include <mutex>
28 #include <condition_variable>
29 
30 #include "signal_handler.hpp"
31 #include "buffer.hpp"
32 
33 namespace deepstream {
34 
44 class DataFeeder : public SignalHandler {
45  public:
52  class IDataProvider {
53  public:
65  virtual Buffer read(DataFeeder& feeder, unsigned int size, bool& eos) = 0;
66  virtual ~IDataProvider() {}
67  };
68 
77  DataFeeder(const std::string &name, IDataProvider* provider);
78 
88  DataFeeder(const std::string &name, const char* factory, IDataProvider* provider);
89 
91  virtual ~DataFeeder();
92 
94  void startFeed(void* appsrc, unsigned int size);
96  void stopFeed();
98  bool doFeed(void* appsrc, unsigned int size);
99 
100  protected:
101  std::unique_ptr<IDataProvider> data_provider_;
102  std::thread worker_;
103  std::mutex mutex_;
104  std::condition_variable cv_data_;
105  unsigned int data_size_;
106  bool data_ready_;
107  void* appsrc_;
108  bool eos_;
109 
110 };
111 }
112 
113 #endif
deepstream::DataFeeder::worker_
std::thread worker_
Definition: service-maker/includes/data_feeder.hpp:102
deepstream::DataFeeder::DataFeeder
DataFeeder(const std::string &name, IDataProvider *provider)
Constructor.
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: service-maker/includes/data_feeder.hpp:106
deepstream::DataFeeder::IDataProvider::read
virtual Buffer read(DataFeeder &feeder, unsigned int size, bool &eos)=0
Read a data block.
deepstream::DataFeeder::startFeed
void startFeed(void *appsrc, unsigned int size)
Start feeding, called by the pipeline.
deepstream::DataFeeder::eos_
bool eos_
Definition: service-maker/includes/data_feeder.hpp:108
deepstream::DataFeeder::IDataProvider::~IDataProvider
virtual ~IDataProvider()
Definition: 9.1/service-maker/includes/data_feeder.hpp:66
deepstream
Definition: service-maker/includes/buffer.hpp:38
deepstream::DataFeeder::mutex_
std::mutex mutex_
Definition: service-maker/includes/data_feeder.hpp:103
deepstream::DataFeeder::~DataFeeder
virtual ~DataFeeder()
Destructor.
deepstream::DataFeeder::cv_data_
std::condition_variable cv_data_
Definition: service-maker/includes/data_feeder.hpp:104
signal_handler.hpp
buffer.hpp
deepstream::DataFeeder::stopFeed
void stopFeed()
Stop feeding, called by the pipeline.
deepstream::DataFeeder::data_provider_
std::unique_ptr< IDataProvider > data_provider_
Definition: service-maker/includes/data_feeder.hpp:101
deepstream::DataFeeder::data_size_
unsigned int data_size_
Definition: service-maker/includes/data_feeder.hpp:105
deepstream::DataFeeder::appsrc_
void * appsrc_
Definition: service-maker/includes/data_feeder.hpp:107