NVIDIA DeepStream SDK API Reference

6.4 Release
deepstream_sources.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20  * DEALINGS IN THE SOFTWARE.
21  */
22 
23 #ifndef __NVGSTDS_SOURCES_H__
24 #define __NVGSTDS_SOURCES_H__
25 
26 #include <gst/gst.h>
27 #include "deepstream_dewarper.h"
28 #include <sys/time.h>
29 
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #endif
34 
35 typedef enum
36 {
46 
47 typedef struct
48 {
50  gboolean enable;
51  gboolean loop;
52  gboolean live_source;
53  gboolean Intra_decode;
54  gboolean low_latency_mode;
55  guint smart_record;
62  gchar *uri;
63  gchar *dir_path;
64  gchar *file_prefix;
65  gint latency;
72  guint num_sources;
73  guint gpu_id;
74  guint camera_id;
75  guint source_id;
91  gchar* alsa_device;
93  gchar* video_format;
95 
97 
98 typedef struct
99 {
100  GstElement *bin;
101  GstElement *src_elem;
102  GstElement *cap_filter;
103  GstElement *cap_filter1;
104  GstElement *depay;
105  GstElement *parser;
106  GstElement *enc_que;
107  GstElement *dec_que;
108  GstElement *decodebin;
109  GstElement *enc_filter;
110  GstElement *encbin_que;
111  GstElement *tee;
112  GstElement *tee_rtsp_pre_decode;
113  GstElement *tee_rtsp_post_decode;
114  GstElement *fakesink_queue;
115  GstElement *fakesink;
116  GstElement *nvvidconv;
117  GstElement *audio_converter;
118  GstElement *audio_resample;
119 
120  gboolean do_record;
121  guint64 pre_event_rec;
122  GMutex bin_lock;
123  guint bin_id;
127  gboolean have_eos;
128  struct timeval last_buffer_time;
129  struct timeval last_reconnect_time;
132  gpointer bbox_meta;
134  gchar *location;
135  gchar *file;
136  gchar *direction;
137  gint latency;
139  gboolean got_key_frame;
140  gboolean eos_done;
141  gboolean reset_done;
142  gboolean live_source;
143  gboolean reconfiguring;
146  gulong probe_id;
149  guint source_id;
152  gpointer recordCtx;
153 } NvDsSrcBin;
154 
156 {
157  GstElement *bin;
158  GstElement *streammux;
159  GstElement *nvmultiurisrcbin;
160  GThread *reset_thread;
162  guint num_bins;
163  guint num_fr_on;
164  gboolean live_source;
166 };
167 
168 
169 gboolean create_source_bin (NvDsSourceConfig *config, NvDsSrcBin *bin);
170 gboolean create_audio_source_bin (NvDsSourceConfig *config, NvDsSrcBin *bin);
171 
185 gboolean
186 create_multi_source_bin (guint num_sub_bins, NvDsSourceConfig *configs,
187  NvDsSrcParentBin *bin);
188 
202 gboolean
203 create_nvmultiurisrcbin_bin (guint num_sub_bins, NvDsSourceConfig *configs,
204  NvDsSrcParentBin *bin);
205 
206 gboolean reset_source_pipeline (gpointer data);
207 gboolean set_source_to_playing (gpointer data);
208 gpointer reset_encodebin (gpointer data);
209 void destroy_smart_record_bin (gpointer data);
210 #ifdef __cplusplus
211 }
212 #endif
213 
214 #endif
NV_DS_SOURCE_RTSP
@ NV_DS_SOURCE_RTSP
Definition: deepstream_sources.h:40
NvDsSourceConfig::num_decode_surfaces
guint num_decode_surfaces
Definition: deepstream_sources.h:77
NvDsSrcBin::location
gchar * location
Definition: deepstream_sources.h:134
NvDsSrcBin::rtsp_reconnect_attempts
gint rtsp_reconnect_attempts
Definition: deepstream_sources.h:125
NvDsSourceConfig::cuda_memory_type
guint cuda_memory_type
Definition: deepstream_sources.h:80
NvDsSrcParentBin::nvstreammux_eosmonitor_probe
gulong nvstreammux_eosmonitor_probe
Definition: deepstream_sources.h:165
NvDsSrcBin::live_source
gboolean live_source
Definition: deepstream_sources.h:142
create_multi_source_bin
gboolean create_multi_source_bin(guint num_sub_bins, NvDsSourceConfig *configs, NvDsSrcParentBin *bin)
Initialize NvDsSrcParentBin.
NvDsSrcBin::src_elem
GstElement * src_elem
Definition: deepstream_sources.h:101
NvDsSrcBin::eos_done
gboolean eos_done
Definition: deepstream_sources.h:140
NvDsSourceConfig::low_latency_mode
gboolean low_latency_mode
Definition: deepstream_sources.h:54
NvDsSourceConfig::camera_csi_sensor_id
gint camera_csi_sensor_id
Definition: deepstream_sources.h:60
NvDsSourceConfig::camera_v4l2_dev_node
gint camera_v4l2_dev_node
Definition: deepstream_sources.h:61
NvDsSrcBin::bin_id
guint bin_id
Definition: deepstream_sources.h:123
NvDsSourceConfig::smart_rec_def_duration
guint smart_rec_def_duration
Definition: deepstream_sources.h:68
deepstream_dewarper.h
NvDsSourceConfig::video_format
gchar * video_format
Video format to be applied at nvvideoconvert source pad.
Definition: deepstream_sources.h:93
NvDsSourceConfig::alsa_device
gchar * alsa_device
ALSA device, as defined in an asound configuration file.
Definition: deepstream_sources.h:91
NvDsSrcBin::src_buffer_probe
gulong src_buffer_probe
Definition: deepstream_sources.h:130
NvDsSrcParentBin::live_source
gboolean live_source
Definition: deepstream_sources.h:164
NvDsDewarperBin
Definition: deepstream_dewarper.h:33
create_audio_source_bin
gboolean create_audio_source_bin(NvDsSourceConfig *config, NvDsSrcBin *bin)
NvDsSrcParentBin::streammux
GstElement * streammux
Definition: deepstream_sources.h:158
NvDsSourceConfig::dewarper_config
NvDsDewarperConfig dewarper_config
Definition: deepstream_sources.h:81
reset_source_pipeline
gboolean reset_source_pipeline(gpointer data)
NvDsSrcBin::nvvidconv
GstElement * nvvidconv
Definition: deepstream_sources.h:116
NvDsSrcBin::audio_converter
GstElement * audio_converter
Definition: deepstream_sources.h:117
NvDsSrcBin::fakesink_queue
GstElement * fakesink_queue
Definition: deepstream_sources.h:114
NvDsSourceConfig::smart_rec_cache_size
guint smart_rec_cache_size
Definition: deepstream_sources.h:66
NvDsSourceConfig::type
NvDsSourceType type
Definition: deepstream_sources.h:49
NvDsSourceConfig::num_extra_surfaces
guint num_extra_surfaces
Definition: deepstream_sources.h:78
NvDsSrcBin::tee_rtsp_post_decode
GstElement * tee_rtsp_post_decode
Definition: deepstream_sources.h:113
NvDsSrcBin::dec_que
GstElement * dec_que
Definition: deepstream_sources.h:107
NvDsSourceConfig::num_sources
guint num_sources
Definition: deepstream_sources.h:72
NvDsSrcBin::source_id
guint source_id
Definition: deepstream_sources.h:149
destroy_smart_record_bin
void destroy_smart_record_bin(gpointer data)
NvDsSrcBin::probe_id
gulong probe_id
Definition: deepstream_sources.h:146
NvDsSrcBin::fakesink
GstElement * fakesink
Definition: deepstream_sources.h:115
NvDsSourceConfig::rtsp_reconnect_attempts
guint rtsp_reconnect_attempts
Definition: deepstream_sources.h:84
NvDsSourceConfig::dir_path
gchar * dir_path
Definition: deepstream_sources.h:63
NvDsSourceConfig::rtsp_reconnect_interval_sec
gint rtsp_reconnect_interval_sec
Definition: deepstream_sources.h:83
NvDsSrcBin::parent_bin
NvDsSrcParentBin * parent_bin
Definition: deepstream_sources.h:151
NvDsSrcBin::prev_accumulated_base
guint64 prev_accumulated_base
Definition: deepstream_sources.h:148
NvDsSourceConfig::latency
gint latency
Definition: deepstream_sources.h:65
NvDsSrcBin::bin
GstElement * bin
Definition: deepstream_sources.h:100
NV_DS_SOURCE_URI
@ NV_DS_SOURCE_URI
Definition: deepstream_sources.h:38
NV_DS_SOURCE_ALSA_SRC
@ NV_DS_SOURCE_ALSA_SRC
Definition: deepstream_sources.h:44
NvDsSourceConfig::smart_rec_container
guint smart_rec_container
Definition: deepstream_sources.h:67
NV_DS_SOURCE_URI_MULTIPLE
@ NV_DS_SOURCE_URI_MULTIPLE
Definition: deepstream_sources.h:39
NvDsSrcBin::enc_filter
GstElement * enc_filter
Definition: deepstream_sources.h:109
NvDsSourceConfig::live_source
gboolean live_source
Definition: deepstream_sources.h:52
NvDsSrcBin::depay
GstElement * depay
Definition: deepstream_sources.h:104
NvDsSourceConfig
Definition: deepstream_sources.h:47
NvDsSrcBin::bin_lock
GMutex bin_lock
Definition: deepstream_sources.h:122
NvDsSrcBin::reconfiguring
gboolean reconfiguring
Definition: deepstream_sources.h:143
reset_encodebin
gpointer reset_encodebin(gpointer data)
NvDsSourceConfig::nvbuf_memory_type
guint nvbuf_memory_type
Definition: deepstream_sources.h:79
NvDsSrcParentBin::num_fr_on
guint num_fr_on
Definition: deepstream_sources.h:163
NvDsSrcBin::audio_resample
GstElement * audio_resample
Definition: deepstream_sources.h:118
NvDsSrcBin::tee
GstElement * tee
Definition: deepstream_sources.h:111
NvDsSrcBin::encbin_que
GstElement * encbin_que
Definition: deepstream_sources.h:110
NvDsSrcParentBin::reset_thread
GThread * reset_thread
Definition: deepstream_sources.h:160
NvDsSourceConfig::select_rtp_protocol
guint select_rtp_protocol
Definition: deepstream_sources.h:76
NvDsSrcBin::cap_filter1
GstElement * cap_filter1
Definition: deepstream_sources.h:103
NvDsSrcBin::rtspsrc_monitor_probe
gulong rtspsrc_monitor_probe
Definition: deepstream_sources.h:131
NvDsSrcBin::bbox_meta
gpointer bbox_meta
Definition: deepstream_sources.h:132
NvDsSrcBin::inbuf
GstBuffer * inbuf
Definition: deepstream_sources.h:133
NvDsSourceConfig::source_height
gint source_height
Definition: deepstream_sources.h:57
NvDsSourceConfig::smart_rec_duration
guint smart_rec_duration
Definition: deepstream_sources.h:69
NvDsSrcBin
Definition: deepstream_sources.h:98
NvDsSrcParentBin::nvmultiurisrcbin
GstElement * nvmultiurisrcbin
Definition: deepstream_sources.h:159
NvDsSourceType
NvDsSourceType
Definition: deepstream_sources.h:35
NV_DS_SOURCE_CAMERA_V4L2
@ NV_DS_SOURCE_CAMERA_V4L2
Definition: deepstream_sources.h:37
NvDsSrcBin::enc_que
GstElement * enc_que
Definition: deepstream_sources.h:106
NvDsSrcBin::do_record
gboolean do_record
Definition: deepstream_sources.h:120
NvDsSrcBin::parser
GstElement * parser
Definition: deepstream_sources.h:105
NvDsSrcBin::tee_rtsp_pre_decode
GstElement * tee_rtsp_pre_decode
Definition: deepstream_sources.h:112
NvDsSrcParentBin::num_bins
guint num_bins
Definition: deepstream_sources.h:162
create_source_bin
gboolean create_source_bin(NvDsSourceConfig *config, NvDsSrcBin *bin)
NvDsSourceConfig::smart_rec_start_time
guint smart_rec_start_time
Definition: deepstream_sources.h:70
NvDsSrcBin::file
gchar * file
Definition: deepstream_sources.h:135
NvDsSourceConfig::source_width
gint source_width
Definition: deepstream_sources.h:56
NvDsSourceConfig::loop
gboolean loop
Definition: deepstream_sources.h:51
create_nvmultiurisrcbin_bin
gboolean create_nvmultiurisrcbin_bin(guint num_sub_bins, NvDsSourceConfig *configs, NvDsSrcParentBin *bin)
Initialize NvDsSrcParentBin.
NvDsSourceConfig::enable
gboolean enable
Definition: deepstream_sources.h:50
NvDsSrcBin::accumulated_base
guint64 accumulated_base
Definition: deepstream_sources.h:147
NvDsSourceConfig::smart_rec_interval
guint smart_rec_interval
Definition: deepstream_sources.h:71
NvDsSrcParentBin::sub_bins
NvDsSrcBin sub_bins[MAX_SOURCE_BINS]
Definition: deepstream_sources.h:161
NvDsSrcBin::num_rtsp_reconnects
gint num_rtsp_reconnects
Definition: deepstream_sources.h:126
NvDsSrcBin::direction
gchar * direction
Definition: deepstream_sources.h:136
NvDsSrcBin::recordCtx
gpointer recordCtx
Definition: deepstream_sources.h:152
NvDsSrcParentBin
Definition: deepstream_sources.h:155
GstBuffer
struct _GstBuffer GstBuffer
Definition: idatatype.h:19
NV_DS_SOURCE_AUDIO_WAV
@ NV_DS_SOURCE_AUDIO_WAV
Definition: deepstream_sources.h:42
NvDsSourceConfig::camera_id
guint camera_id
Definition: deepstream_sources.h:74
NvDsSourceConfig::smart_record
guint smart_record
Definition: deepstream_sources.h:55
NvDsSrcBin::async_state_watch_running
gboolean async_state_watch_running
Definition: deepstream_sources.h:144
NvDsSourceConfig::file_prefix
gchar * file_prefix
Definition: deepstream_sources.h:64
NvDsSrcBin::have_eos
gboolean have_eos
Definition: deepstream_sources.h:127
NvDsSourceConfig::gpu_id
guint gpu_id
Definition: deepstream_sources.h:73
NvDsSourceConfig::source_fps_d
gint source_fps_d
Definition: deepstream_sources.h:59
NvDsSourceConfig::uri
gchar * uri
Definition: deepstream_sources.h:62
MAX_SOURCE_BINS
#define MAX_SOURCE_BINS
Definition: deepstream_config.h:94
NvDsSrcBin::reset_done
gboolean reset_done
Definition: deepstream_sources.h:141
NvDsSourceConfig::Intra_decode
gboolean Intra_decode
Definition: deepstream_sources.h:53
NvDsSourceConfig::source_id
guint source_id
Definition: deepstream_sources.h:75
NvDsSourceConfig::input_audio_rate
guint input_audio_rate
Desired input audio rate to nvinferaudio from PGIE config; This config shall be copied over from NvDs...
Definition: deepstream_sources.h:89
NvDsSrcParentBin::bin
GstElement * bin
Definition: deepstream_sources.h:157
NvDsDewarperConfig
Definition: deepstream_dewarper.h:45
NvDsSourceConfig::udp_buffer_size
guint udp_buffer_size
Definition: deepstream_sources.h:85
NV_DS_SOURCE_AUDIO_URI
@ NV_DS_SOURCE_AUDIO_URI
Definition: deepstream_sources.h:43
NvDsSourceConfig::drop_frame_interval
guint drop_frame_interval
Definition: deepstream_sources.h:82
NvDsSrcBin::got_key_frame
gboolean got_key_frame
Definition: deepstream_sources.h:139
NvDsSrcBin::pre_event_rec
guint64 pre_event_rec
Definition: deepstream_sources.h:121
NvDsSrcBin::cap_filter
GstElement * cap_filter
Definition: deepstream_sources.h:102
NvDsSrcBin::latency
gint latency
Definition: deepstream_sources.h:137
NvDsSrcBin::decodebin
GstElement * decodebin
Definition: deepstream_sources.h:108
NvDsSrcBin::config
NvDsSourceConfig * config
Definition: deepstream_sources.h:150
NvDsSrcBin::rtsp_reconnect_interval_sec
gint rtsp_reconnect_interval_sec
Definition: deepstream_sources.h:124
NvDsSrcBin::udp_buffer_size
guint udp_buffer_size
Definition: deepstream_sources.h:138
NvDsSourceConfig::source_fps_n
gint source_fps_n
Definition: deepstream_sources.h:58
set_source_to_playing
gboolean set_source_to_playing(gpointer data)
NV_DS_SOURCE_CAMERA_CSI
@ NV_DS_SOURCE_CAMERA_CSI
Definition: deepstream_sources.h:41
NvDsSrcBin::dewarper_bin
NvDsDewarperBin dewarper_bin
Definition: deepstream_sources.h:145