NVIDIA DeepStream SDK API Reference

9.1 Release
9.1/sources/apps/sample_apps/deepstream-app/deepstream_app.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2018-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 
18 #ifndef __NVGSTDS_APP_H__
19 #define __NVGSTDS_APP_H__
20 
21 #include <gst/gst.h>
22 #include <stdio.h>
23 
24 #include "deepstream_app_version.h"
25 #include "deepstream_common.h"
26 #include "deepstream_config.h"
27 #include "deepstream_osd.h"
28 #include "deepstream_segvisual.h"
29 #include "deepstream_perf.h"
30 #include "deepstream_preprocess.h"
31 #include "deepstream_primary_gie.h"
32 #include "deepstream_sinks.h"
33 #include "deepstream_sources.h"
34 #include "deepstream_streammux.h"
35 #include "deepstream_tiled_display.h"
36 #include "deepstream_dsanalytics.h"
37 #include "deepstream_dsexample.h"
38 #include "deepstream_tracker.h"
39 #include "deepstream_text_embedder.h"
40 #include "deepstream_visionencoder.h"
41 #include "deepstream_replay.h"
42 #include "deepstream_secondary_gie.h"
43 #include "deepstream_secondary_preprocess.h"
44 #include "deepstream_c2d_msg.h"
45 #include "deepstream_image_save.h"
46 #include "gst-nvdscustommessage.h"
47 #include "gst-nvdscommonconfig.h"
48 
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 typedef struct _AppCtx AppCtx;
55 
56 typedef void (*bbox_generated_callback) (AppCtx *appCtx, GstBuffer *buf,
57  NvDsBatchMeta *batch_meta, guint index);
58 typedef gboolean (*overlay_graphics_callback) (AppCtx *appCtx, GstBuffer *buf,
59  NvDsBatchMeta *batch_meta, guint index);
60 
61 typedef struct
62 {
63  guint index;
64  gulong all_bbox_buffer_probe_id;
65  gulong primary_bbox_buffer_probe_id;
66  gulong fps_buffer_probe_id;
67  GstElement *bin;
68  GstElement *tee;
69  GstElement *msg_conv;
70  NvDsPreProcessBin preprocess_bin;
71  NvDsPrimaryGieBin primary_gie_bin;
72  NvDsOSDBin osd_bin;
73  NvDsSegVisualBin segvisual_bin;
74  NvDsSecondaryGieBin secondary_gie_bin;
75  NvDsSecondaryPreProcessBin secondary_preprocess_bin;
76  NvDsTrackerBin tracker_bin;
77  GstElement *text_embedder;
78  NvDsVisionEncoderBin visionencoder_bin;
79  NvDsReplayBin replay_bin;
80  NvDsSinkBin sink_bin;
81  NvDsSinkBin demux_sink_bin;
82  NvDsDsAnalyticsBin dsanalytics_bin;
83  NvDsDsExampleBin dsexample_bin;
84  AppCtx *appCtx;
86 
87 typedef struct
88 {
89  gulong primary_bbox_buffer_probe_id;
90  guint bus_id;
91  GstElement *pipeline;
92  NvDsSrcParentBin multi_src_bin;
93  NvDsInstanceBin instance_bins[MAX_SOURCE_BINS];
94  NvDsInstanceBin demux_instance_bins[MAX_SOURCE_BINS];
95  NvDsInstanceBin common_elements;
96  GstElement *tiler_tee;
97  NvDsTiledDisplayBin tiled_display_bin;
98  GstElement *demuxer;
99  NvDsDsExampleBin dsexample_bin;
100  AppCtx *appCtx;
101 } NvDsPipeline;
102 
103 typedef struct
104 {
105  gboolean enable_perf_measurement;
106  gint file_loop;
107  gint pipeline_recreate_sec;
108  gboolean source_list_enabled;
109  gboolean dummy_payload;
110  gboolean custom_ts_to_rfc;
111  gchar *batched_sensor_name;
112  guint total_num_sources;
113  guint num_source_sub_bins;
114  guint num_secondary_gie_sub_bins;
115  guint num_secondary_preprocess_sub_bins;
116  guint num_sink_sub_bins;
117  guint num_message_consumers;
118  guint perf_measurement_interval_sec;
119  guint sgie_batch_size;
120  gboolean extract_sei_type5_data;
121  gchar *sei_uuid;
122  gboolean low_latency_mode;
123  gchar *bbox_dir_path;
124  gchar *kitti_track_dir_path;
125  gchar *reid_track_dir_path;
126  gchar *terminated_track_output_path;
127  gchar *shadow_track_output_path;
128 
129  gchar **uri_list;
130  gchar **sensor_id_list;
131  gchar **sensor_name_list;
132  NvDsSourceConfig multi_source_config[MAX_SOURCE_BINS];
133  NvDsStreammuxConfig streammux_config;
134  NvDsOSDConfig osd_config;
135  NvDsSegVisualConfig segvisual_config;
136  NvDsPreProcessConfig preprocess_config;
137  NvDsPreProcessConfig secondary_preprocess_sub_bin_config[MAX_SECONDARY_PREPROCESS_BINS];
138  NvDsGieConfig primary_gie_config;
139  NvDsTrackerConfig tracker_config;
140  NvDsTextEmbedderConfig text_embedder_config;
141  NvDsVisionEncoderConfig visionencoder_config;
142  NvDsReplayConfig replay_config;
143  NvDsGieConfig secondary_gie_sub_bin_config[MAX_SECONDARY_GIE_BINS];
144  NvDsSinkSubBinConfig sink_bin_sub_bin_config[MAX_SINK_BINS];
145  NvDsMsgConsumerConfig message_consumer_config[MAX_MESSAGE_CONSUMERS];
146  NvDsTiledDisplayConfig tiled_display_config;
147  NvDsDsAnalyticsConfig dsanalytics_config;
148  NvDsDsExampleConfig dsexample_config;
149  NvDsSinkMsgConvBrokerConfig msg_conv_config;
150  NvDsImageSave image_save_config;
151 
153  gboolean use_nvmultiurisrcbin;
154  gboolean stream_name_display;
155  guint max_batch_size;
156  gchar* http_ip;
157  gchar* http_port;
158  gboolean source_attr_all_parsed;
159  NvDsSourceConfig source_attr_all_config;
160 
162  gboolean enable_error_propagation;
163  gchar* proto_lib;
164  gchar* conn_str;
165  gchar* topic;
166 
170  gint global_gpu_id;
171 } NvDsConfig;
172 
173 typedef struct
174 {
175  gulong frame_num;
177 
178 struct _AppCtx
179 {
180  gboolean version;
181  gboolean cintr;
182  gboolean show_bbox_text;
183  gboolean seeking;
184  gboolean quit;
185  gint person_class_id;
186  gint car_class_id;
187  gint return_value;
188  guint index;
189  gint active_source_index;
190 
191  GMutex app_lock;
192  GCond app_cond;
193 
204  GMutex latency_lock;
205  GThread *ota_handler_thread;
206  guint ota_inotify_fd;
207  guint ota_watch_desc;
208 
212  GHashTable *sensorInfoHash;
213  gboolean eos_received;
214 
216  gpointer msgapi_conn_handle;
217  gpointer msgapi_lib_handle;
218 
220  gchar *last_error;
221 };
222 
238 gboolean create_pipeline (AppCtx * appCtx,
239  bbox_generated_callback bbox_generated_post_analytics_cb,
240  bbox_generated_callback all_bbox_generated_cb,
241  perf_callback perf_cb,
242  overlay_graphics_callback overlay_graphics_cb);
243 
244 gboolean pause_pipeline (AppCtx * appCtx);
245 gboolean resume_pipeline (AppCtx * appCtx);
246 gboolean seek_pipeline (AppCtx * appCtx, glong milliseconds, gboolean seek_is_relative);
247 
248 void toggle_show_bbox_text (AppCtx * appCtx);
249 
250 void destroy_pipeline (AppCtx * appCtx);
251 void restart_pipeline (AppCtx * appCtx);
252 
253 
262 gboolean
263 parse_config_file (NvDsConfig * config, gchar * cfg_file_path);
264 
273 gboolean
274 parse_config_file_yaml (NvDsConfig * config, gchar * cfg_file_path);
275 
290 gboolean msgapi_init_early (AppCtx *appCtx, const gchar *cfg_file_path);
291 
301 void msgapi_report_error_and_cleanup (AppCtx *appCtx, const gchar *error_message);
302 
317 NvDsSensorInfo* get_sensor_info(AppCtx* appCtx, guint source_id);
318 
319 #ifdef __cplusplus
320 }
321 #endif
322 
323 #endif
NvDsPrimaryGieBin
Definition: sources/apps/apps-common/includes/deepstream_primary_gie.h:28
NvDsSegVisualBin
Definition: sources/apps/apps-common/includes/deepstream_segvisual.h:28
parse_config_file
gboolean parse_config_file(NvDsConfig *config, gchar *cfg_file_path)
Function to read properties from configuration file.
NvDsVisionEncoderConfig
Definition: sources/apps/apps-common/includes/deepstream_visionencoder.h:28
_AppCtx::quit
gboolean quit
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:184
MAX_SECONDARY_GIE_BINS
#define MAX_SECONDARY_GIE_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:93
MAX_SOURCE_BINS
#define MAX_SOURCE_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:91
NvDsC2DContext
Definition: sources/apps/apps-common/includes/deepstream_c2d_msg.h:29
msgapi_init_early
gboolean msgapi_init_early(AppCtx *appCtx, const gchar *cfg_file_path)
Generic msgapi helper functions for error propagation These work with ANY DeepStream app (test1-5,...
_AppCtx::all_bbox_generated_cb
bbox_generated_callback all_bbox_generated_cb
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:201
AppCtx
REST server application context.
Definition: sources/includes/nvds_appctx_server.h:51
destroy_pipeline
void destroy_pipeline(AppCtx *appCtx)
NvDsPreProcessConfig
Definition: sources/apps/apps-common/includes/deepstream_preprocess.h:28
_AppCtx::ota_watch_desc
guint ota_watch_desc
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:207
create_pipeline
gboolean create_pipeline(AppCtx *appCtx, bbox_generated_callback bbox_generated_post_analytics_cb, bbox_generated_callback all_bbox_generated_cb, perf_callback perf_cb, overlay_graphics_callback overlay_graphics_cb)
Create DS Anyalytics Pipeline per the appCtx configurations.
_AppCtx::eos_received
gboolean eos_received
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:213
_AppCtx::ota_handler_thread
GThread * ota_handler_thread
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:205
NvDsPipeline
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:87
toggle_show_bbox_text
void toggle_show_bbox_text(AppCtx *appCtx)
_AppCtx::app_lock
GMutex app_lock
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:191
bbox_generated_callback
void(* bbox_generated_callback)(AppCtx *appCtx, GstBuffer *buf, NvDsBatchMeta *batch_meta, guint index)
Definition: 9.1/sources/apps/sample_apps/deepstream-app/deepstream_app.h:56
NvDsSinkSubBinConfig
Definition: sources/apps/apps-common/includes/deepstream_sinks.h:136
_AppCtx::active_source_index
gint active_source_index
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:189
_AppCtx::ota_inotify_fd
guint ota_inotify_fd
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:206
NvDsAppPerfStructInt
Definition: sources/apps/apps-common/includes/deepstream_perf.h:69
NvDsImageSave
Definition: sources/apps/apps-common/includes/deepstream_image_save.h:26
NvDsDsExampleBin
Definition: sources/apps/apps-common/includes/deepstream_dsexample.h:45
NvDsFrameLatencyInfo
Holds information about the latency of a given frame.
Definition: sources/includes/nvds_latency_meta.h:88
_AppCtx::return_value
gint return_value
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:187
_AppCtx::version
gboolean version
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:180
NvDsSegVisualConfig
Definition: sources/apps/apps-common/includes/deepstream_segvisual.h:38
NvDsDsExampleConfig
Definition: sources/apps/apps-common/includes/deepstream_dsexample.h:28
MAX_MESSAGE_CONSUMERS
#define MAX_MESSAGE_CONSUMERS
Definition: sources/apps/apps-common/includes/deepstream_config.h:95
get_sensor_info
NvDsSensorInfo * get_sensor_info(AppCtx *appCtx, guint source_id)
Function to procure the NvDsSensorInfo for the source_id that was added using the nvmultiurisrcbin RE...
NvDsTextEmbedderConfig
Definition: sources/apps/apps-common/includes/deepstream_text_embedder.h:28
NvDsPreProcessBin
Definition: sources/apps/apps-common/includes/deepstream_preprocess.h:39
_AppCtx::overlay_graphics_cb
overlay_graphics_callback overlay_graphics_cb
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:202
NvDsSinkMsgConvBrokerConfig
Definition: sources/apps/apps-common/includes/deepstream_sinks.h:110
perf_callback
void(* perf_callback)(gpointer ctx, NvDsAppPerfStruct *str)
Definition: sources/apps/apps-common/includes/deepstream_perf.h:57
_AppCtx::last_error
gchar * last_error
Last error message for error propagation.
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:220
NvDsTiledDisplayBin
Definition: sources/apps/apps-common/includes/deepstream_tiled_display.h:29
_AppCtx
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:178
msgapi_report_error_and_cleanup
void msgapi_report_error_and_cleanup(AppCtx *appCtx, const gchar *error_message)
msgapi_report_error_and_cleanup: Generic error reporting function called before application exit.
NvDsDsAnalyticsBin
Definition: sources/apps/apps-common/includes/deepstream_dsanalytics.h:38
NvDsDsAnalyticsConfig
Definition: sources/apps/apps-common/includes/deepstream_dsanalytics.h:28
_AppCtx::perf_struct
NvDsAppPerfStructInt perf_struct
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:199
_AppCtx::person_class_id
gint person_class_id
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:185
_AppCtx::pipeline
NvDsPipeline pipeline
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:194
_AppCtx::seeking
gboolean seeking
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:183
NvDsSourceConfig
Definition: sources/apps/apps-common/includes/deepstream_sources.h:43
_AppCtx::msgapi_lib_handle
gpointer msgapi_lib_handle
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:217
_AppCtx::bbox_generated_post_analytics_cb
bbox_generated_callback bbox_generated_post_analytics_cb
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:200
_NvDsBatchMeta
Holds information about a formed batch containing frames from different sources.
Definition: sources/includes/nvdsmeta.h:262
MAX_SINK_BINS
#define MAX_SINK_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:92
_AppCtx::msgapi_conn_handle
gpointer msgapi_conn_handle
Error propagation msgapi handles.
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:216
_AppCtx::instance_data
NvDsInstanceData instance_data[MAX_SOURCE_BINS]
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:197
NvDsTiledDisplayConfig
Definition: sources/apps/apps-common/includes/deepstream_tiled_display.h:49
NvDsTrackerBin
Definition: sources/apps/apps-common/includes/deepstream_tracker.h:51
NvDsInstanceBin
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:61
NvDsOSDBin
Definition: sources/apps/apps-common/includes/deepstream_osd.h:30
restart_pipeline
void restart_pipeline(AppCtx *appCtx)
_AppCtx::app_cond
GCond app_cond
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:192
_AppCtx::latency_lock
GMutex latency_lock
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:204
seek_pipeline
gboolean seek_pipeline(AppCtx *appCtx, glong milliseconds, gboolean seek_is_relative)
_AppCtx::override_config
NvDsConfig override_config
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:196
NvDsStreammuxConfig
Definition: sources/apps/apps-common/includes/deepstream_streammux.h:28
NvDsInstanceData
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:173
enable_perf_measurement
gboolean enable_perf_measurement(NvDsAppPerfStructInt *str, GstPad *sink_bin_pad, guint num_sources, gulong interval_sec, guint num_surfaces_per_frame, perf_callback callback)
NvDsConfig
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:103
_NvDsSensorInfo
Definition: sources/includes/gst-nvdscommonconfig.h:88
NvDsGieConfig
Definition: sources/apps/apps-common/includes/deepstream_gie.h:40
NvDsVisionEncoderBin
Definition: sources/apps/apps-common/includes/deepstream_visionencoder.h:53
NvDsReplayConfig
Definition: sources/apps/apps-common/includes/deepstream_replay.h:30
MAX_SECONDARY_PREPROCESS_BINS
#define MAX_SECONDARY_PREPROCESS_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:94
_AppCtx::show_bbox_text
gboolean show_bbox_text
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:182
pause_pipeline
gboolean pause_pipeline(AppCtx *appCtx)
_AppCtx::car_class_id
gint car_class_id
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:186
NvDsSecondaryPreProcessBin
Definition: sources/apps/apps-common/includes/deepstream_secondary_preprocess.h:40
_AppCtx::latency_info
NvDsFrameLatencyInfo * latency_info
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:203
NvDsSrcParentBin
Definition: sources/apps/apps-common/includes/deepstream_sources.h:164
parse_config_file_yaml
gboolean parse_config_file_yaml(NvDsConfig *config, gchar *cfg_file_path)
Function to read properties from YML configuration file.
NvDsTrackerConfig
Definition: sources/apps/apps-common/includes/deepstream_tracker.h:30
NvDsMsgConsumerConfig
Definition: sources/apps/apps-common/includes/deepstream_c2d_msg.h:40
_AppCtx::c2d_ctx
NvDsC2DContext * c2d_ctx[MAX_MESSAGE_CONSUMERS]
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:198
resume_pipeline
gboolean resume_pipeline(AppCtx *appCtx)
NvDsSecondaryGieBin
Definition: sources/apps/apps-common/includes/deepstream_secondary_gie.h:39
NvDsSinkBin
Definition: sources/apps/apps-common/includes/deepstream_sinks.h:166
NvDsOSDConfig
Definition: sources/apps/apps-common/includes/deepstream_osd.h:40
_AppCtx::sensorInfoHash
GHashTable * sensorInfoHash
Hash table to save NvDsSensorInfo obtained with REST API stream/add, remove operations The key is sou...
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:212
_AppCtx::config
NvDsConfig config
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:195
_AppCtx::cintr
gboolean cintr
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:181
overlay_graphics_callback
gboolean(* overlay_graphics_callback)(AppCtx *appCtx, GstBuffer *buf, NvDsBatchMeta *batch_meta, guint index)
Definition: 9.1/sources/apps/sample_apps/deepstream-app/deepstream_app.h:58
_AppCtx::index
guint index
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:188
NvDsReplayBin
Definition: sources/apps/apps-common/includes/deepstream_replay.h:41
GstBuffer
struct _GstBuffer GstBuffer
Definition: sources/includes/ds3d/common/idatatype.h:24