NVIDIA DeepStream SDK API Reference

9.0 Release
sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2020-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 _GST_NVDSUDPSRC_H_
14 #define _GST_NVDSUDPSRC_H_
15 
16 #include <gst/base/gstpushsrc.h>
17 #include <gio/gio.h>
18 #include <rivermax_api.h>
19 
20 #include "gstnvdsudpcommon.h"
21 
22 G_BEGIN_DECLS
23 
24 #define GST_TYPE_NVDSUDPSRC (gst_nvdsudpsrc_get_type())
25 #define GST_NVDSUDPSRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_NVDSUDPSRC,GstNvDsUdpSrc))
26 #define GST_NVDSUDPSRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_NVDSUDPSRC,GstNvDsUdpSrcClass))
27 #define GST_IS_NVDSUDPSRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NVDSUDPSRC))
28 #define GST_IS_NVDSUDPSRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NVDSUDPSRC))
29 
32 typedef struct DstStreamInfo {
33  char *ip;
34  uint16_t port;
36 
38 {
39  GstPushSrc parent;
40 
41  /* properties */
42  gchar *uri;
43  gchar *localIfaceIps;
44  gint port;
46  gchar *multi_iface;
47  gboolean auto_multicast;
48  GstCaps *caps;
49  gchar *address;
51  GSocket *used_socket;
52  guint64 timeout;
53  gboolean reuse;
54  gboolean loop;
55  guint headerSize;
56  guint payloadSize;
57  guint numPackets;
58  guint payMultiple;
59  gint gpuId;
62  guint64 latency_offset; /* Latency offset in nanoseconds */
63  gchar *ptpSrc;
64  gchar *st2022_7_streams; /* List of IP:port pairs for ST2022-7 redundant streams */
65  guint num_streams; /* Number of active streams (primary + redundant) */
66  guint num_source_addresses; /* Number of source addresses for filtering */
67  guint num_local_interfaces; /* Number of local interfaces */
68 
72  guint frameSize;
73  guint stride;
74  uint8_t *dataPtr1;
75  uint8_t *dataPtr2;
76  guint len1;
77  guint len2;
78  gboolean mBit;
79  gboolean ffFound;
81 
82  GstBufferPool *pool;
83  GThread *pThread;
84  GQueue *bufferQ;
85  GCond qCond;
86  GMutex qLock;
87  GCond flowCond;
88  GMutex flowLock;
89  gboolean isRunning;
90  gboolean flushing;
91  GInetSocketAddress *addr;
92  GCancellable *cancellable;
94  gint pollfd;
95  gint lastError;
96  gboolean isRtpOut;
97  /*For rtpticks based buffer pts/dts generation */
98  gboolean first_rtp_packet;
99  guint64 last_rtp_tick;
100  guint64 rtp_tick_base;
101  guint clock_rate;
102  gboolean is_nvmm;
103 
104  /* Rivermax specific */
105  guint flowId;
106  struct sockaddr_in localNicAddr;
108  rmx_input_flow flow[MAX_ST2022_7_STREAMS];
109  rmx_input_stream_params stream_params;
110  rmx_mem_region *data; /* Pointer to internal memory region in stream_params */
111  rmx_mem_region *hdr; /* Pointer to internal memory region in stream_params */
112  rmx_device_iface device;
113  rmx_input_chunk_handle chunk_handle[MAX_ST2022_7_STREAMS];
114  rmx_mkey_id data_mkey;
115  rmx_mkey_id hdr_mkey;
120  gboolean isGpuDirect;
121  gpointer dataPtr;
122  gpointer hdrPtr;
124 
128 };
129 
131 {
132  GstPushSrcClass parent_class;
133 };
134 
135 GType gst_nvdsudpsrc_get_type (void);
136 
137 G_END_DECLS
138 
139 #endif
_GstNvDsUdpSrc::address
gchar * address
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:49
_GstNvDsUdpSrc::dataPtr
gpointer dataPtr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:121
_GstNvDsUdpSrc::uri
gchar * uri
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:42
_GstNvDsUdpSrc::st2022_7_streams
gchar * st2022_7_streams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:64
_GstNvDsUdpSrc::addr
GInetSocketAddress * addr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:91
_GstNvDsUdpSrc::hdr_stride_size
size_t hdr_stride_size
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:117
_GstNvDsUdpSrc::port
gint port
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:44
_GstNvDsUdpSrc::stream_params
rmx_input_stream_params stream_params
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:109
_GstNvDsUdpSrc::stride
guint stride
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:73
_GstNvDsUdpSrc::isRtpOut
gboolean isRtpOut
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:96
_GstNvDsUdpSrc::caps
GstCaps * caps
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:48
_GstNvDsUdpSrc::clock_rate
guint clock_rate
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:101
_GstNvDsUdpSrc::hdr_mkey
rmx_mkey_id hdr_mkey
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:115
_GstNvDsUdpSrc::parent
GstPushSrc parent
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:39
_GstNvDsUdpSrc::dataPtr1
uint8_t * dataPtr1
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:74
gst_nvdsudpsrc_get_type
GType gst_nvdsudpsrc_get_type(void)
_GstNvDsUdpSrc::flowId
guint flowId
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:105
DstStreamInfo
struct DstStreamInfo DstStreamInfo
_GstNvDsUdpSrc::len2
guint len2
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:77
_GstNvDsUdpSrc::mBit
gboolean mBit
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:78
_GstNvDsUdpSrc::flow
rmx_input_flow flow[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:108
_GstNvDsUdpSrc
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:37
_GstNvDsUdpSrc::hdr
rmx_mem_region * hdr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:111
_GstNvDsUdpSrc::localIfaceIp
gchar * localIfaceIp[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:127
_GstNvDsUdpSrc::payMultiple
guint payMultiple
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:58
_GstNvDsUdpSrc::lastError
gint lastError
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:95
_GstNvDsUdpSrc::latency_offset
guint64 latency_offset
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:62
_GstNvDsUdpSrc::is_nvmm
gboolean is_nvmm
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:102
_GstNvDsUdpSrc::alignedMemSize
size_t alignedMemSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:123
VideoType
VideoType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:43
_GstNvDsUdpSrc::data
rmx_mem_region * data
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:110
_GstNvDsUdpSrc::adjust_leap_seconds
gboolean adjust_leap_seconds
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:61
_GstNvDsUdpSrc::rtp_tick_base
guint64 rtp_tick_base
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:100
_GstNvDsUdpSrc::sourceAddresses
gchar * sourceAddresses
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:50
_GstNvDsUdpSrc::bufferQ
GQueue * bufferQ
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:84
_GstNvDsUdpSrc::numPackets
guint numPackets
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:57
MemoryType
MemoryType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:48
_GstNvDsUdpSrc::packetCounter
guint packetCounter
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:80
_GstNvDsUdpSrc::isRunning
gboolean isRunning
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:89
_GstNvDsUdpSrc::flushing
gboolean flushing
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:90
_GstNvDsUdpSrc::auto_multicast
gboolean auto_multicast
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:47
_GstNvDsUdpSrc::reuse
gboolean reuse
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:53
DstStreamInfo
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:32
_GstNvDsUdpSrc::flowCond
GCond flowCond
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:87
_GstNvDsUdpSrc::data_mkey
rmx_mkey_id data_mkey
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:114
_GstNvDsUdpSrc::pThread
GThread * pThread
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:83
_GstNvDsUdpSrc::used_socket
GSocket * used_socket
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:51
_GstNvDsUdpSrc::multi_iface
gchar * multi_iface
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:46
_GstNvDsUdpSrc::pollfd
gint pollfd
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:94
_GstNvDsUdpSrc::qLock
GMutex qLock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:86
_GstNvDsUdpSrcClass::parent_class
GstPushSrcClass parent_class
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:132
_GstNvDsUdpSrc::ptpSrc
gchar * ptpSrc
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:63
gstnvdsudpcommon.h
_GstNvDsUdpSrc::chunk_handle
rmx_input_chunk_handle chunk_handle[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:113
_GstNvDsUdpSrc::use_rtp_timestamp
gboolean use_rtp_timestamp
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:60
_GstNvDsUdpSrc::num_local_interfaces
guint num_local_interfaces
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:67
_GstNvDsUdpSrc::dataPtr2
uint8_t * dataPtr2
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:75
_GstNvDsUdpSrc::loop
gboolean loop
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:54
_GstNvDsUdpSrc::num_streams
guint num_streams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:65
_GstNvDsUdpSrc::header_mem_block_id
size_t header_mem_block_id
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:119
DstStreamInfo::port
uint16_t port
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:34
_GstNvDsUdpSrc::first_rtp_packet
gboolean first_rtp_packet
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:98
_GstNvDsUdpSrc::buffer_size
gint buffer_size
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:45
_GstNvDsUdpSrc::flowLock
GMutex flowLock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:88
_GstNvDsUdpSrc::len1
guint len1
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:76
_GstNvDsUdpSrc::srcAddress
gchar * srcAddress[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:126
_GstNvDsUdpSrcClass
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:130
_GstNvDsUdpSrc::device
rmx_device_iface device
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:112
_GstNvDsUdpSrc::isGpuDirect
gboolean isGpuDirect
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:120
_GstNvDsUdpSrc::localNicAddr
struct sockaddr_in localNicAddr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:106
DstStreamInfo::ip
char * ip
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:33
_GstNvDsUdpSrc::last_rtp_tick
guint64 last_rtp_tick
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:99
_GstNvDsUdpSrc::pool
GstBufferPool * pool
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:82
_GstNvDsUdpSrc::timeout
guint64 timeout
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:52
_GstNvDsUdpSrc::frameSize
guint frameSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:72
_GstNvDsUdpSrc::qCond
GCond qCond
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:85
_GstNvDsUdpSrc::data_stride_size
size_t data_stride_size
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:116
_GstNvDsUdpSrc::hdrPtr
gpointer hdrPtr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:122
_GstNvDsUdpSrc::headerSize
guint headerSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:55
_GstNvDsUdpSrc::num_source_addresses
guint num_source_addresses
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:66
_GstNvDsUdpSrc::gpuId
gint gpuId
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:59
MAX_ST2022_7_STREAMS
#define MAX_ST2022_7_STREAMS
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:30
_GstNvDsUdpSrc::payload_mem_block_id
size_t payload_mem_block_id
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:118
_GstNvDsUdpSrc::dstStream
DstStreamInfo dstStream[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:125
StreamType
StreamType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:35
_GstNvDsUdpSrc::payloadSize
guint payloadSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:56
_GstNvDsUdpSrc::streamType
StreamType streamType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:69
_GstNvDsUdpSrc::streamId
rmx_stream_id streamId[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:107
_GstNvDsUdpSrc::cancellableFd
gint cancellableFd
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:93
_GstNvDsUdpSrc::outputMemType
MemoryType outputMemType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:71
_GstNvDsUdpSrc::videoType
VideoType videoType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:70
_GstNvDsUdpSrc::localIfaceIps
gchar * localIfaceIps
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:43
_GstNvDsUdpSrc::cancellable
GCancellable * cancellable
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:92
_GstNvDsUdpSrc::ffFound
gboolean ffFound
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsrc.h:79