NVIDIA DeepStream SDK API Reference

9.0 Release
9.0/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: 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 #ifndef __NVGSTDS_APP_H__
14 #define __NVGSTDS_APP_H__
15 
16 #include <gst/gst.h>
17 #include <stdio.h>
18 
19 #include "deepstream_app_version.h"
20 #include "deepstream_common.h"
21 #include "deepstream_config.h"
22 #include "deepstream_osd.h"
23 #include "deepstream_segvisual.h"
24 #include "deepstream_perf.h"
25 #include "deepstream_preprocess.h"
26 #include "deepstream_primary_gie.h"
27 #include "deepstream_sinks.h"
28 #include "deepstream_sources.h"
29 #include "deepstream_streammux.h"
30 #include "deepstream_tiled_display.h"
31 #include "deepstream_dsanalytics.h"
32 #include "deepstream_dsexample.h"
33 #include "deepstream_tracker.h"
34 #include "deepstream_text_embedder.h"
35 #include "deepstream_visionencoder.h"
36 #include "deepstream_replay.h"
37 #include "deepstream_secondary_gie.h"
38 #include "deepstream_secondary_preprocess.h"
39 #include "deepstream_c2d_msg.h"
40 #include "deepstream_image_save.h"
41 #include "gst-nvdscustommessage.h"
42 #include "gst-nvdscommonconfig.h"
43 
44 #ifdef __cplusplus
45 extern "C"
46 {
47 #endif
48 
49 typedef struct _AppCtx AppCtx;
50 
51 typedef void (*bbox_generated_callback) (AppCtx *appCtx, GstBuffer *buf,
52  NvDsBatchMeta *batch_meta, guint index);
53 typedef gboolean (*overlay_graphics_callback) (AppCtx *appCtx, GstBuffer *buf,
54  NvDsBatchMeta *batch_meta, guint index);
55 
56 typedef struct
57 {
58  guint index;
59  gulong all_bbox_buffer_probe_id;
60  gulong primary_bbox_buffer_probe_id;
61  gulong fps_buffer_probe_id;
62  GstElement *bin;
63  GstElement *tee;
64  GstElement *msg_conv;
65  NvDsPreProcessBin preprocess_bin;
66  NvDsPrimaryGieBin primary_gie_bin;
67  NvDsOSDBin osd_bin;
68  NvDsSegVisualBin segvisual_bin;
69  NvDsSecondaryGieBin secondary_gie_bin;
70  NvDsSecondaryPreProcessBin secondary_preprocess_bin;
71  NvDsTrackerBin tracker_bin;
72  GstElement *text_embedder;
73  NvDsVisionEncoderBin visionencoder_bin;
74  NvDsReplayBin replay_bin;
75  NvDsSinkBin sink_bin;
76  NvDsSinkBin demux_sink_bin;
77  NvDsDsAnalyticsBin dsanalytics_bin;
78  NvDsDsExampleBin dsexample_bin;
79  AppCtx *appCtx;
81 
82 typedef struct
83 {
84  gulong primary_bbox_buffer_probe_id;
85  guint bus_id;
86  GstElement *pipeline;
87  NvDsSrcParentBin multi_src_bin;
88  NvDsInstanceBin instance_bins[MAX_SOURCE_BINS];
89  NvDsInstanceBin demux_instance_bins[MAX_SOURCE_BINS];
90  NvDsInstanceBin common_elements;
91  GstElement *tiler_tee;
92  NvDsTiledDisplayBin tiled_display_bin;
93  GstElement *demuxer;
94  NvDsDsExampleBin dsexample_bin;
95  AppCtx *appCtx;
96 } NvDsPipeline;
97 
98 typedef struct
99 {
100  gboolean enable_perf_measurement;
101  gint file_loop;
102  gint pipeline_recreate_sec;
103  gboolean source_list_enabled;
104  gboolean dummy_payload;
105  gboolean custom_ts_to_rfc;
106  gchar *batched_sensor_name;
107  guint total_num_sources;
108  guint num_source_sub_bins;
109  guint num_secondary_gie_sub_bins;
110  guint num_secondary_preprocess_sub_bins;
111  guint num_sink_sub_bins;
112  guint num_message_consumers;
113  guint perf_measurement_interval_sec;
114  guint sgie_batch_size;
115  gboolean extract_sei_type5_data;
116  gchar *sei_uuid;
117  gboolean low_latency_mode;
118  gchar *bbox_dir_path;
119  gchar *kitti_track_dir_path;
120  gchar *reid_track_dir_path;
121  gchar *terminated_track_output_path;
122  gchar *shadow_track_output_path;
123 
124  gchar **uri_list;
125  gchar **sensor_id_list;
126  gchar **sensor_name_list;
127  NvDsSourceConfig multi_source_config[MAX_SOURCE_BINS];
128  NvDsStreammuxConfig streammux_config;
129  NvDsOSDConfig osd_config;
130  NvDsSegVisualConfig segvisual_config;
131  NvDsPreProcessConfig preprocess_config;
132  NvDsPreProcessConfig secondary_preprocess_sub_bin_config[MAX_SECONDARY_PREPROCESS_BINS];
133  NvDsGieConfig primary_gie_config;
134  NvDsTrackerConfig tracker_config;
135  NvDsTextEmbedderConfig text_embedder_config;
136  NvDsVisionEncoderConfig visionencoder_config;
137  NvDsReplayConfig replay_config;
138  NvDsGieConfig secondary_gie_sub_bin_config[MAX_SECONDARY_GIE_BINS];
139  NvDsSinkSubBinConfig sink_bin_sub_bin_config[MAX_SINK_BINS];
140  NvDsMsgConsumerConfig message_consumer_config[MAX_MESSAGE_CONSUMERS];
141  NvDsTiledDisplayConfig tiled_display_config;
142  NvDsDsAnalyticsConfig dsanalytics_config;
143  NvDsDsExampleConfig dsexample_config;
144  NvDsSinkMsgConvBrokerConfig msg_conv_config;
145  NvDsImageSave image_save_config;
146 
148  gboolean use_nvmultiurisrcbin;
149  gboolean stream_name_display;
150  guint max_batch_size;
151  gchar* http_ip;
152  gchar* http_port;
153  gboolean source_attr_all_parsed;
154  NvDsSourceConfig source_attr_all_config;
155 
157  gboolean enable_error_propagation;
158  gchar* proto_lib;
159  gchar* conn_str;
160  gchar* topic;
161 
165  gint global_gpu_id;
166 } NvDsConfig;
167 
168 typedef struct
169 {
170  gulong frame_num;
172 
173 struct _AppCtx
174 {
175  gboolean version;
176  gboolean cintr;
177  gboolean show_bbox_text;
178  gboolean seeking;
179  gboolean quit;
180  gint person_class_id;
181  gint car_class_id;
182  gint return_value;
183  guint index;
184  gint active_source_index;
185 
186  GMutex app_lock;
187  GCond app_cond;
188 
199  GMutex latency_lock;
200  GThread *ota_handler_thread;
201  guint ota_inotify_fd;
202  guint ota_watch_desc;
203 
207  GHashTable *sensorInfoHash;
208  gboolean eos_received;
209 
211  gpointer msgapi_conn_handle;
212  gpointer msgapi_lib_handle;
213 
215  gchar *last_error;
216 };
217 
233 gboolean create_pipeline (AppCtx * appCtx,
234  bbox_generated_callback bbox_generated_post_analytics_cb,
235  bbox_generated_callback all_bbox_generated_cb,
236  perf_callback perf_cb,
237  overlay_graphics_callback overlay_graphics_cb);
238 
239 gboolean pause_pipeline (AppCtx * appCtx);
240 gboolean resume_pipeline (AppCtx * appCtx);
241 gboolean seek_pipeline (AppCtx * appCtx, glong milliseconds, gboolean seek_is_relative);
242 
243 void toggle_show_bbox_text (AppCtx * appCtx);
244 
245 void destroy_pipeline (AppCtx * appCtx);
246 void restart_pipeline (AppCtx * appCtx);
247 
248 
257 gboolean
258 parse_config_file (NvDsConfig * config, gchar * cfg_file_path);
259 
268 gboolean
269 parse_config_file_yaml (NvDsConfig * config, gchar * cfg_file_path);
270 
285 gboolean msgapi_init_early (AppCtx *appCtx, const gchar *cfg_file_path);
286 
296 void msgapi_report_error_and_cleanup (AppCtx *appCtx, const gchar *error_message);
297 
312 NvDsSensorInfo* get_sensor_info(AppCtx* appCtx, guint source_id);
313 
314 #ifdef __cplusplus
315 }
316 #endif
317 
318 #endif
NvDsPrimaryGieBin
Definition: sources/apps/apps-common/includes/deepstream_primary_gie.h:23
NvDsSegVisualBin
Definition: sources/apps/apps-common/includes/deepstream_segvisual.h:23
NvDsVisionEncoderConfig
Definition: sources/apps/apps-common/includes/deepstream_visionencoder.h:23
_AppCtx::quit
gboolean quit
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:179
destroy_pipeline
void destroy_pipeline(AppCtx *appCtx)
MAX_SECONDARY_GIE_BINS
#define MAX_SECONDARY_GIE_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:88
MAX_SOURCE_BINS
#define MAX_SOURCE_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:86
NvDsC2DContext
Definition: sources/apps/apps-common/includes/deepstream_c2d_msg.h:25
overlay_graphics_callback
gboolean(* overlay_graphics_callback)(AppCtx *appCtx, GstBuffer *buf, NvDsBatchMeta *batch_meta, guint index)
Definition: 9.0/sources/apps/sample_apps/deepstream-app/deepstream_app.h:53
_AppCtx::all_bbox_generated_cb
bbox_generated_callback all_bbox_generated_cb
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:196
AppCtx
REST server application context.
Definition: sources/includes/nvds_appctx_server.h:46
NvDsPreProcessConfig
Definition: sources/apps/apps-common/includes/deepstream_preprocess.h:23
_AppCtx::ota_watch_desc
guint ota_watch_desc
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:202
_AppCtx::eos_received
gboolean eos_received
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:208
_AppCtx::ota_handler_thread
GThread * ota_handler_thread
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:200
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.
NvDsPipeline
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:82
_AppCtx::app_lock
GMutex app_lock
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:186
NvDsSinkSubBinConfig
Definition: sources/apps/apps-common/includes/deepstream_sinks.h:131
_AppCtx::active_source_index
gint active_source_index
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:184
_AppCtx::ota_inotify_fd
guint ota_inotify_fd
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:201
NvDsAppPerfStructInt
Definition: sources/apps/apps-common/includes/deepstream_perf.h:64
NvDsImageSave
Definition: sources/apps/apps-common/includes/deepstream_image_save.h:21
NvDsDsExampleBin
Definition: sources/apps/apps-common/includes/deepstream_dsexample.h:40
NvDsFrameLatencyInfo
Holds information about the latency of a given frame.
Definition: sources/includes/nvds_latency_meta.h:83
_AppCtx::return_value
gint return_value
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:182
toggle_show_bbox_text
void toggle_show_bbox_text(AppCtx *appCtx)
_AppCtx::version
gboolean version
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:175
NvDsSegVisualConfig
Definition: sources/apps/apps-common/includes/deepstream_segvisual.h:33
NvDsDsExampleConfig
Definition: sources/apps/apps-common/includes/deepstream_dsexample.h:23
MAX_MESSAGE_CONSUMERS
#define MAX_MESSAGE_CONSUMERS
Definition: sources/apps/apps-common/includes/deepstream_config.h:90
NvDsTextEmbedderConfig
Definition: sources/apps/apps-common/includes/deepstream_text_embedder.h:23
NvDsPreProcessBin
Definition: sources/apps/apps-common/includes/deepstream_preprocess.h:34
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...
_AppCtx::overlay_graphics_cb
overlay_graphics_callback overlay_graphics_cb
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:197
bbox_generated_callback
void(* bbox_generated_callback)(AppCtx *appCtx, GstBuffer *buf, NvDsBatchMeta *batch_meta, guint index)
Definition: 9.0/sources/apps/sample_apps/deepstream-app/deepstream_app.h:51
NvDsSinkMsgConvBrokerConfig
Definition: sources/apps/apps-common/includes/deepstream_sinks.h:105
perf_callback
void(* perf_callback)(gpointer ctx, NvDsAppPerfStruct *str)
Definition: sources/apps/apps-common/includes/deepstream_perf.h:52
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.
_AppCtx::last_error
gchar * last_error
Last error message for error propagation.
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:215
NvDsTiledDisplayBin
Definition: sources/apps/apps-common/includes/deepstream_tiled_display.h:24
_AppCtx
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:173
NvDsDsAnalyticsBin
Definition: sources/apps/apps-common/includes/deepstream_dsanalytics.h:33
NvDsDsAnalyticsConfig
Definition: sources/apps/apps-common/includes/deepstream_dsanalytics.h:23
_AppCtx::perf_struct
NvDsAppPerfStructInt perf_struct
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:194
_AppCtx::person_class_id
gint person_class_id
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:180
_AppCtx::pipeline
NvDsPipeline pipeline
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:189
_AppCtx::seeking
gboolean seeking
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:178
NvDsSourceConfig
Definition: sources/apps/apps-common/includes/deepstream_sources.h:38
_AppCtx::msgapi_lib_handle
gpointer msgapi_lib_handle
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:212
_AppCtx::bbox_generated_post_analytics_cb
bbox_generated_callback bbox_generated_post_analytics_cb
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:195
_NvDsBatchMeta
Holds information about a formed batch containing frames from different sources.
Definition: sources/includes/nvdsmeta.h:257
MAX_SINK_BINS
#define MAX_SINK_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:87
_AppCtx::msgapi_conn_handle
gpointer msgapi_conn_handle
Error propagation msgapi handles.
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:211
_AppCtx::instance_data
NvDsInstanceData instance_data[MAX_SOURCE_BINS]
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:192
NvDsTiledDisplayConfig
Definition: sources/apps/apps-common/includes/deepstream_tiled_display.h:44
NvDsTrackerBin
Definition: sources/apps/apps-common/includes/deepstream_tracker.h:46
NvDsInstanceBin
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:56
NvDsOSDBin
Definition: sources/apps/apps-common/includes/deepstream_osd.h:25
_AppCtx::app_cond
GCond app_cond
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:187
resume_pipeline
gboolean resume_pipeline(AppCtx *appCtx)
_AppCtx::latency_lock
GMutex latency_lock
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:199
pause_pipeline
gboolean pause_pipeline(AppCtx *appCtx)
_AppCtx::override_config
NvDsConfig override_config
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:191
NvDsStreammuxConfig
Definition: sources/apps/apps-common/includes/deepstream_streammux.h:23
NvDsInstanceData
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:168
seek_pipeline
gboolean seek_pipeline(AppCtx *appCtx, glong milliseconds, gboolean seek_is_relative)
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:98
_NvDsSensorInfo
Definition: sources/includes/gst-nvdscommonconfig.h:83
restart_pipeline
void restart_pipeline(AppCtx *appCtx)
NvDsGieConfig
Definition: sources/apps/apps-common/includes/deepstream_gie.h:35
NvDsVisionEncoderBin
Definition: sources/apps/apps-common/includes/deepstream_visionencoder.h:41
NvDsReplayConfig
Definition: sources/apps/apps-common/includes/deepstream_replay.h:25
MAX_SECONDARY_PREPROCESS_BINS
#define MAX_SECONDARY_PREPROCESS_BINS
Definition: sources/apps/apps-common/includes/deepstream_config.h:89
_AppCtx::show_bbox_text
gboolean show_bbox_text
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:177
_AppCtx::car_class_id
gint car_class_id
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:181
NvDsSecondaryPreProcessBin
Definition: sources/apps/apps-common/includes/deepstream_secondary_preprocess.h:35
_AppCtx::latency_info
NvDsFrameLatencyInfo * latency_info
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:198
NvDsSrcParentBin
Definition: sources/apps/apps-common/includes/deepstream_sources.h:159
NvDsTrackerConfig
Definition: sources/apps/apps-common/includes/deepstream_tracker.h:25
NvDsMsgConsumerConfig
Definition: sources/apps/apps-common/includes/deepstream_c2d_msg.h:36
_AppCtx::c2d_ctx
NvDsC2DContext * c2d_ctx[MAX_MESSAGE_CONSUMERS]
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:193
NvDsSecondaryGieBin
Definition: sources/apps/apps-common/includes/deepstream_secondary_gie.h:34
NvDsSinkBin
Definition: sources/apps/apps-common/includes/deepstream_sinks.h:161
parse_config_file
gboolean parse_config_file(NvDsConfig *config, gchar *cfg_file_path)
Function to read properties from configuration file.
NvDsOSDConfig
Definition: sources/apps/apps-common/includes/deepstream_osd.h:35
parse_config_file_yaml
gboolean parse_config_file_yaml(NvDsConfig *config, gchar *cfg_file_path)
Function to read properties from YML configuration file.
_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:207
_AppCtx::config
NvDsConfig config
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:190
_AppCtx::cintr
gboolean cintr
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:176
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::index
guint index
Definition: sources/apps/sample_apps/deepstream-app/deepstream_app.h:183
NvDsReplayBin
Definition: sources/apps/apps-common/includes/deepstream_replay.h:36
GstBuffer
struct _GstBuffer GstBuffer
Definition: sources/includes/ds3d/common/idatatype.h:19