NVIDIA DeepStream SDK API Reference

9.0 Release
sources/gst-plugins/gst-nvdsudp/legacy_api/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;
37  guint packetsPerFrame;
38  guint chunksPerFrame;
39  guint chunksPerMemblock;
40  guint framesPerMemblock;
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;
46  guint audioChannels;
47  guint64 ptime; // duration of audio in a packet in nanoseconds.
48  gdouble frameTimeInterval; // Time interval of frame in nanoseconds.
49  gdouble firstPacketTime;
50  guint64 pass_rtp_ts_offset;
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 
64 struct _GstNvDsUdpSink
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  guint nChunks;
82  guint packetsPerChunk;
83  guint payloadSize;
84  guint packetsPerLine;
85  gboolean pass_rtp_timestamp;
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;
96  gchar *renderThreadCore;
97 
98  /* Rivermax specific */
99  void *memblock;
101  rmax_stream_id streamId;
102  struct sockaddr_in localNicAddr;
103  struct rmax_chunk *chunks;
104  rmax_mkey_id mKey[MAX_ST2022_7_STREAMS];
105  rmax_mkey_id hKey[MAX_ST2022_7_STREAMS];
107  gboolean isGenericApi;
108  gint internalThreadCore;
109 
110  /* GPU direct specific */
111  gboolean isGpuDirect;
112  gboolean is_nvmm;
113  size_t alignedMemSize;
114  CUstream cuda_stream;
115 
116  gboolean is_dup;
118  guint num_streams;
119 };
120 
122 {
123  GstBaseSinkClass parent_class;
124 };
125 
126 GType gst_nvdsudpsink_get_type (void);
127 
128 G_END_DECLS
129 
130 #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
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
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::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
_GstNvDsUdpSink::header_block
void * header_block
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:100
_GstNvDsUdpSink::mKey
rmax_mkey_id mKey[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:104
_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
StreamParams
struct StreamParams StreamParams
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::hKey
rmax_mkey_id hKey[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:105
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
gst_nvdsudpsink_get_type
GType gst_nvdsudpsink_get_type(void)
StreamParams::frameCount
guint64 frameCount
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:56
_GstNvDsUdpSink::streamId
rmax_stream_id streamId
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:101
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
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
_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::chunks
struct rmax_chunk * chunks
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:103
_GstNvDsUdpSink::nChunks
guint nChunks
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:81
_GstNvDsUdpSink::qCond
GCond qCond
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:92
_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
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
StreamParams::frameTimeInterval
gdouble frameTimeInterval
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:48
_GstNvDsUdpSink::memblock
void * memblock
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:99
_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
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
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