|
NVIDIA DeepStream SDK API Reference
|
7.1 Release
|
Go to the documentation of this file.
13 #ifndef __NVGSTDS_COMMON_H__
14 #define __NVGSTDS_COMMON_H__
25 #define NVGSTDS_ERR_MSG_V(msg, ...) \
26 g_print("** ERROR: <%s:%d>: " msg "\n", __func__, __LINE__, ##__VA_ARGS__)
28 #define NVGSTDS_INFO_MSG_V(msg, ...) \
29 g_print("** INFO: <%s:%d>: " msg "\n", __func__, __LINE__, ##__VA_ARGS__)
31 #define NVGSTDS_WARN_MSG_V(msg, ...) \
32 g_print("** WARN: <%s:%d>: " msg "\n", __func__, __LINE__, ##__VA_ARGS__)
34 #define NVGSTDS_LINK_ELEMENT(elem1, elem2) \
36 if (!gst_element_link (elem1,elem2)) { \
37 GstCaps *src_caps, *sink_caps; \
38 src_caps = gst_pad_query_caps ((GstPad *) (elem1)->srcpads->data, NULL); \
39 sink_caps = gst_pad_query_caps ((GstPad *) (elem2)->sinkpads->data, NULL); \
40 NVGSTDS_ERR_MSG_V ("Failed to link '%s' (%s) and '%s' (%s)", \
41 GST_ELEMENT_NAME (elem1), \
42 gst_caps_to_string (src_caps), \
43 GST_ELEMENT_NAME (elem2), \
44 gst_caps_to_string (sink_caps)); \
49 #define NVGSTDS_LINK_ELEMENT_FULL(elem1, elem1_pad_name, elem2, elem2_pad_name) \
51 GstPad *elem1_pad = gst_element_get_static_pad(elem1, elem1_pad_name); \
52 GstPad *elem2_pad = gst_element_get_static_pad(elem2, elem2_pad_name); \
53 GstPadLinkReturn ret = gst_pad_link (elem1_pad,elem2_pad); \
54 if (ret != GST_PAD_LINK_OK) { \
55 gchar *n1 = gst_pad_get_name (elem1_pad); \
56 gchar *n2 = gst_pad_get_name (elem2_pad); \
57 NVGSTDS_ERR_MSG_V ("Failed to link '%s' and '%s': %d", \
61 gst_object_unref (elem1_pad); \
62 gst_object_unref (elem2_pad); \
65 gst_object_unref (elem1_pad); \
66 gst_object_unref (elem2_pad); \
69 #define NVGSTDS_BIN_ADD_GHOST_PAD_NAMED(bin, elem, pad, ghost_pad_name) \
71 GstPad *gstpad = gst_element_get_static_pad (elem, pad); \
73 NVGSTDS_ERR_MSG_V ("Could not find '%s' in '%s'", pad, \
74 GST_ELEMENT_NAME(elem)); \
77 gst_element_add_pad (bin, gst_ghost_pad_new (ghost_pad_name, gstpad)); \
78 gst_object_unref (gstpad); \
81 #define NVGSTDS_BIN_ADD_GHOST_PAD(bin, elem, pad) \
82 NVGSTDS_BIN_ADD_GHOST_PAD_NAMED (bin, elem, pad, pad)
84 #define NVGSTDS_ELEM_ADD_PROBE(probe_id, elem, pad, probe_func, probe_type, probe_data) \
86 GstPad *gstpad = gst_element_get_static_pad (elem, pad); \
88 NVGSTDS_ERR_MSG_V ("Could not find '%s' in '%s'", pad, \
89 GST_ELEMENT_NAME(elem)); \
92 probe_id = gst_pad_add_probe(gstpad, (probe_type), probe_func, probe_data, NULL); \
93 gst_object_unref (gstpad); \
96 #define NVGSTDS_ELEM_REMOVE_PROBE(probe_id, elem, pad) \
98 if (probe_id == 0 || !elem) { \
101 GstPad *gstpad = gst_element_get_static_pad (elem, pad); \
103 NVGSTDS_ERR_MSG_V ("Could not find '%s' in '%s'", pad, \
104 GST_ELEMENT_NAME(elem)); \
107 gst_pad_remove_probe(gstpad, probe_id); \
108 gst_object_unref (gstpad); \
111 #define GET_FILE_PATH(path) ((path) + (((path) && strstr ((path), "file://")) ? 7 : 0))
171 str_replace (gchar * str,
const gchar * replace,
const gchar * replace_with);
void str_replace(gchar *str, const gchar *replace, const gchar *replace_with)
gboolean link_element_to_streammux_sink_pad(GstElement *streammux, GstElement *elem, gint index)
Function to link source pad of an element to sink pad of muxer element.
gboolean link_element_to_tee_src_pad(GstElement *tee, GstElement *sinkelem)
Function to link sink pad of an element to source pad of tee.
gboolean link_element_to_demux_src_pad(GstElement *demux, GstElement *elem, guint index)
Function to link sink pad of an element to source pad of demux element.
gboolean unlink_element_from_streammux_sink_pad(GstElement *streammux, GstElement *elem)
Function to unlink source pad of an element from sink pad of muxer element.