NVIDIA DeepStream SDK API Reference

9.0 Release
sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-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_NVDSUDPSINK_H_
14 #define _GST_NVDSUDPSINK_H_
15 
16 #include <gst/base/gstbasesink.h>
17 #include <gst/base/gstadapter.h>
18 #include <rivermax_api.h>
19 #include <gio/gio.h>
20 
21 #include "gstnvdsudpcommon.h"
22 
23 G_BEGIN_DECLS
24 
25 #define GST_TYPE_NVDSUDPSINK (gst_nvdsudpsink_get_type())
26 #define GST_NVDSUDPSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_NVDSUDPSINK,GstNvDsUdpSink))
27 #define GST_NVDSUDPSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_NVDSUDPSINK,GstNvDsUdpSinkClass))
28 #define GST_IS_NVDSUDPSINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NVDSUDPSINK))
29 #define GST_IS_NVDSUDPSINK_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NVDSUDPSINK))
30 
33 
34 typedef struct StreamParams {
35  guint width;
36  guint height;
41  guint payloadStride; // payload stride size.
42  guint headerStride; // header stride size.
43  guint chunkSize; // Number of packets in a chunk.
44  guint sampleRate;
45  guint depth;
47  guint64 ptime; // duration of audio in a packet in nanoseconds.
48  gdouble frameTimeInterval; // Time interval of frame in nanoseconds.
49  gdouble firstPacketTime;
51  gdouble fps;
54  gchar *format;
55  guint chunkNum;
56  guint64 frameCount;
57  guint16 seq;
58  guint16 extSeqNumber;
59  gdouble timestampTick;
60  guint ssrc;
61  guint8 payloadType;
62 } StreamParams;
63 
65 {
66  GstBaseSink parent;
67 
68  gboolean isRtpStream;
69  GstAdapter *adapter;
70  /* properties */
71  gboolean auto_multicast;
72  gboolean close_socket;
73  gboolean loop;
74  GSocket *socket;
75  gchar *sdpFile;
76  gchar *host;
77  guint16 port;
78  gchar *uri;
79  gchar *localIfaceIp;
80  gchar *ptpSrc;
81  size_t nChunks;
83  guint payloadSize;
86  guint64 rtp_timestamp_offset; /* RTP timestamp offset in nanoseconds */
87  gint gpu_id; /* GPU ID for GPUDirect, -1 means disabled */
88 
89  guint nextChunk;
90  GThread *rThread;
91  GQueue *bufferQ;
92  GCond qCond;
93  GMutex qLock;
94  gboolean isRunning;
95  gint lastError;
97 
98  /* Rivermax specific */
99  void *ptr_mem;
100  void *ptr_hdr_mem;
101  struct sockaddr_in localNicAddr;
102  rmx_stream_id streamId;
103  rmx_mem_region **chunks; /* Array of pointers to packet arrays (new API) */
107  rmx_mem_region reg_mem[MAX_ST2022_7_STREAMS];
109  size_t payload_mem_block_id; /* Memory block ID for payload */
110  size_t header_mem_block_id; /* Memory block ID for header */
111  rmx_output_gen_chunk_handle chunk_handle; /* Chunk handle for generic API */
112  rmx_output_media_chunk_handle media_chunk_handle; /* Chunk handle for media API */
114  gboolean isGenericApi;
116 
117  /* GPU direct specific */
118  gboolean isGpuDirect;
119  gboolean is_nvmm;
122  CUstream cuda_stream;
123 
124  gboolean is_dup;
126  guint num_streams;
127 };
128 
130 {
131  GstBaseSinkClass parent_class;
132 };
133 
134 GType gst_nvdsudpsink_get_type (void);
135 
136 G_END_DECLS
137 
138 #endif
_GstNvDsUdpSink::adapter
GstAdapter * adapter
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:69
_GstNvDsUdpSink::isGenericApi
gboolean isGenericApi
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:114
_GstNvDsUdpSink::internalThreadCore
gint internalThreadCore
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:115
StreamParams::depth
guint depth
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:45
_GstNvDsUdpSink::ptr_hdr_mem
void * ptr_hdr_mem
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:100
StreamParams::ptime
guint64 ptime
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:47
StreamParams::chunksPerFrame
guint chunksPerFrame
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:38
StreamParams::packetsPerFrame
guint packetsPerFrame
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:37
_GstNvDsUdpSinkClass
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:129
_GstNvDsUdpSink::device_iface
rmx_device_iface device_iface[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:106
StreamParams::streamType
StreamType streamType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:52
_GstNvDsUdpSink::rtp_timestamp_offset
guint64 rtp_timestamp_offset
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:86
_GstNvDsUdpSink::isRtpStream
gboolean isRtpStream
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:68
_GstNvDsUdpSink::media_chunk_handle
rmx_output_media_chunk_handle media_chunk_handle
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:112
_GstNvDsUdpSink::parent
GstBaseSink parent
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:66
_GstNvDsUdpSink::loop
gboolean loop
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:73
_GstNvDsUdpSinkClass::parent_class
GstBaseSinkClass parent_class
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:131
_GstNvDsUdpSink::alignedMemSize
size_t alignedMemSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:120
StreamParams::audioChannels
guint audioChannels
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:46
_GstNvDsUdpSink::reg_mem
rmx_mem_region reg_mem[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:107
VideoType
VideoType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:43
StreamParams::payloadStride
guint payloadStride
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:41
_GstNvDsUdpSink::streamParams
StreamParams streamParams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:113
_GstNvDsUdpSink::ptr_mem
void * ptr_mem
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:99
StreamParams::seq
guint16 seq
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:57
_GstNvDsUdpSink::is_nvmm
gboolean is_nvmm
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:119
_GstNvDsUdpSink::socket
GSocket * socket
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:74
StreamParams::frameCount
guint64 frameCount
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:56
_GstNvDsUdpSink::streamId
rmx_stream_id streamId
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:102
StreamParams::chunksPerMemblock
guint chunksPerMemblock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:39
StreamParams::height
guint height
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:36
StreamParams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:34
_GstNvDsUdpSink::host
gchar * host
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:76
StreamParams::videoType
VideoType videoType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:53
_GstNvDsUdpSink::bufferQ
GQueue * bufferQ
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:91
_GstNvDsUdpSink::headerMemSize
size_t headerMemSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:121
StreamParams::sampleRate
guint sampleRate
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:44
StreamParams::pass_rtp_ts_offset
guint64 pass_rtp_ts_offset
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:50
_GstNvDsUdpSink::auto_multicast
gboolean auto_multicast
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:71
StreamParams::ssrc
guint ssrc
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:60
_GstNvDsUdpSink::isGpuDirect
gboolean isGpuDirect
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:118
gstnvdsudpcommon.h
_GstNvDsUdpSink::cuda_stream
CUstream cuda_stream
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:122
StreamParams::extSeqNumber
guint16 extSeqNumber
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:58
_GstNvDsUdpSink::isRunning
gboolean isRunning
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:94
_GstNvDsUdpSink::packetsPerChunk
guint packetsPerChunk
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:82
_GstNvDsUdpSink::ptpSrc
gchar * ptpSrc
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:80
_GstNvDsUdpSink::payload_mem_block_id
size_t payload_mem_block_id
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:109
_GstNvDsUdpSink::reg_hdr_mem
rmx_mem_region reg_hdr_mem[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:108
_GstNvDsUdpSink::nChunks
size_t nChunks
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:81
_GstNvDsUdpSink::qCond
GCond qCond
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:92
StreamParams
struct StreamParams StreamParams
_GstNvDsUdpSink::packetsPerLine
guint packetsPerLine
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:84
_GstNvDsUdpSink::num_streams
guint num_streams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:126
_GstNvDsUdpSink::sdpFile
gchar * sdpFile
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:75
_GstNvDsUdpSink::localNicAddr
struct sockaddr_in localNicAddr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:101
_GstNvDsUdpSink::rThread
GThread * rThread
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:90
_GstNvDsUdpSink::payloadSize
guint payloadSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:83
_GstNvDsUdpSink
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:64
StreamParams::timestampTick
gdouble timestampTick
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:59
_GstNvDsUdpSink::hdr_mkey
rmx_mkey_id hdr_mkey[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:105
gst_nvdsudpsink_get_type
GType gst_nvdsudpsink_get_type(void)
_GstNvDsUdpSink::mkey
rmx_mkey_id mkey[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:104
StreamParams::firstPacketTime
gdouble firstPacketTime
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:49
StreamParams::fps
gdouble fps
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:51
_GstNvDsUdpSink::chunk_handle
rmx_output_gen_chunk_handle chunk_handle
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:111
StreamParams::frameTimeInterval
gdouble frameTimeInterval
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:48
_GstNvDsUdpSink::qLock
GMutex qLock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:93
_GstNvDsUdpSink::close_socket
gboolean close_socket
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:72
_GstNvDsUdpSink::pass_rtp_timestamp
gboolean pass_rtp_timestamp
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:85
_GstNvDsUdpSink::chunks
rmx_mem_region ** chunks
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:103
MAX_ST2022_7_STREAMS
#define MAX_ST2022_7_STREAMS
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:30
_GstNvDsUdpSink::is_dup
gboolean is_dup
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:124
StreamParams::chunkNum
guint chunkNum
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:55
StreamParams::framesPerMemblock
guint framesPerMemblock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:40
_GstNvDsUdpSink::lastError
gint lastError
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:95
StreamType
StreamType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:35
_GstNvDsUdpSink::source_ips
gchar * source_ips[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:125
_GstNvDsUdpSink::localIfaceIp
gchar * localIfaceIp
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:79
_GstNvDsUdpSink::port
guint16 port
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:77
StreamParams::width
guint width
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:35
_GstNvDsUdpSink::uri
gchar * uri
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:78
StreamParams::chunkSize
guint chunkSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:43
_GstNvDsUdpSink::gpu_id
gint gpu_id
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:87
_GstNvDsUdpSink::header_mem_block_id
size_t header_mem_block_id
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:110
StreamParams::headerStride
guint headerStride
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:42
_GstNvDsUdpSink::renderThreadCore
gchar * renderThreadCore
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:96
StreamParams::payloadType
guint8 payloadType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:61
StreamParams::format
gchar * format
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:54
_GstNvDsUdpSink::nextChunk
guint nextChunk
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:89