NVIDIA DeepStream SDK API Reference

9.1 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: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef _GST_NVDSUDPSINK_H_
19 #define _GST_NVDSUDPSINK_H_
20 
21 #include <gst/base/gstbasesink.h>
22 #include <gst/base/gstadapter.h>
23 #include <rivermax_api.h>
24 #include <gio/gio.h>
25 
26 #include "../gstnvdsudpcommon.h"
27 
28 G_BEGIN_DECLS
29 
30 #define GST_TYPE_NVDSUDPSINK (gst_nvdsudpsink_get_type())
31 #define GST_NVDSUDPSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_NVDSUDPSINK,GstNvDsUdpSink))
32 #define GST_NVDSUDPSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_NVDSUDPSINK,GstNvDsUdpSinkClass))
33 #define GST_IS_NVDSUDPSINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NVDSUDPSINK))
34 #define GST_IS_NVDSUDPSINK_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NVDSUDPSINK))
35 
38 
39 typedef struct StreamParams {
40  guint width;
41  guint height;
42  guint packetsPerFrame;
43  guint chunksPerFrame;
44  guint chunksPerMemblock;
45  guint framesPerMemblock;
46  guint payloadStride; // payload stride size.
47  guint headerStride; // header stride size.
48  guint chunkSize; // Number of packets in a chunk.
49  guint sampleRate;
50  guint depth;
51  guint audioChannels;
52  guint64 ptime; // duration of audio in a packet in nanoseconds.
53  gdouble frameTimeInterval; // Time interval of frame in nanoseconds.
54  gdouble firstPacketTime;
55  guint64 pass_rtp_ts_offset;
56  gdouble fps;
59  gchar *format;
60  guint chunkNum;
61  guint64 frameCount;
62  guint16 seq;
63  guint16 extSeqNumber;
64  gdouble timestampTick;
65  guint ssrc;
66  guint8 payloadType;
67 } StreamParams;
68 
69 struct _GstNvDsUdpSink
70 {
71  GstBaseSink parent;
72 
73  gboolean isRtpStream;
74  GstAdapter *adapter;
75  /* properties */
76  gboolean auto_multicast;
77  gboolean close_socket;
78  gboolean loop;
79  GSocket *socket;
80  gchar *sdpFile;
81  gchar *host;
82  guint16 port;
83  gchar *uri;
84  gchar *localIfaceIp;
85  gchar *ptpSrc;
86  guint nChunks;
87  guint packetsPerChunk;
88  guint payloadSize;
89  guint packetsPerLine;
90  gboolean pass_rtp_timestamp;
91  guint64 rtp_timestamp_offset; /* RTP timestamp offset in nanoseconds */
92  gint gpu_id; /* GPU ID for GPUDirect, -1 means disabled */
93 
94  guint nextChunk;
95  GThread *rThread;
96  GQueue *bufferQ;
97  GCond qCond;
98  GMutex qLock;
99  gboolean isRunning;
100  gint lastError;
101  gchar *renderThreadCore;
102 
103  /* Rivermax specific */
104  void *memblock;
106  rmax_stream_id streamId;
107  struct sockaddr_in localNicAddr;
108  struct rmax_chunk *chunks;
109  rmax_mkey_id mKey[MAX_ST2022_7_STREAMS];
110  rmax_mkey_id hKey[MAX_ST2022_7_STREAMS];
112  gboolean isGenericApi;
113  gint internalThreadCore;
114 
115  /* GPU direct specific */
116  gboolean isGpuDirect;
117  gboolean is_nvmm;
118  size_t alignedMemSize;
119  CUstream cuda_stream;
120 
121  gboolean is_dup;
123  guint num_streams;
124 };
125 
127 {
128  GstBaseSinkClass parent_class;
129 };
130 
131 GType gst_nvdsudpsink_get_type (void);
132 
133 G_END_DECLS
134 
135 #endif
_GstNvDsUdpSink::adapter
GstAdapter * adapter
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:74
_GstNvDsUdpSink::isGenericApi
gboolean isGenericApi
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:119
_GstNvDsUdpSink::internalThreadCore
gint internalThreadCore
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:120
StreamParams::depth
guint depth
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:50
StreamParams::ptime
guint64 ptime
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:52
StreamParams::chunksPerFrame
guint chunksPerFrame
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:43
StreamParams::packetsPerFrame
guint packetsPerFrame
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:42
_GstNvDsUdpSinkClass
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:134
StreamParams::streamType
StreamType streamType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:57
_GstNvDsUdpSink::rtp_timestamp_offset
guint64 rtp_timestamp_offset
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:91
_GstNvDsUdpSink::isRtpStream
gboolean isRtpStream
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:73
_GstNvDsUdpSink::parent
GstBaseSink parent
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:71
_GstNvDsUdpSink::loop
gboolean loop
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:78
_GstNvDsUdpSink::header_block
void * header_block
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:105
_GstNvDsUdpSink::mKey
rmax_mkey_id mKey[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:109
_GstNvDsUdpSinkClass::parent_class
GstBaseSinkClass parent_class
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:136
_GstNvDsUdpSink::alignedMemSize
size_t alignedMemSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:125
StreamParams::audioChannels
guint audioChannels
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:51
StreamParams
struct StreamParams StreamParams
VideoType
VideoType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:49
StreamParams::payloadStride
guint payloadStride
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:46
_GstNvDsUdpSink::streamParams
StreamParams streamParams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:118
_GstNvDsUdpSink::hKey
rmax_mkey_id hKey[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:110
StreamParams::seq
guint16 seq
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:62
_GstNvDsUdpSink::is_nvmm
gboolean is_nvmm
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:124
_GstNvDsUdpSink::socket
GSocket * socket
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:79
gst_nvdsudpsink_get_type
GType gst_nvdsudpsink_get_type(void)
StreamParams::frameCount
guint64 frameCount
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:61
_GstNvDsUdpSink::streamId
rmax_stream_id streamId
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:106
StreamParams::chunksPerMemblock
guint chunksPerMemblock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:44
StreamParams::height
guint height
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:41
StreamParams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:39
_GstNvDsUdpSink::host
gchar * host
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:81
StreamParams::videoType
VideoType videoType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:58
_GstNvDsUdpSink::bufferQ
GQueue * bufferQ
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:96
StreamParams::sampleRate
guint sampleRate
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:49
StreamParams::pass_rtp_ts_offset
guint64 pass_rtp_ts_offset
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:55
_GstNvDsUdpSink::auto_multicast
gboolean auto_multicast
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:76
StreamParams::ssrc
guint ssrc
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:65
_GstNvDsUdpSink::isGpuDirect
gboolean isGpuDirect
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:123
_GstNvDsUdpSink::cuda_stream
CUstream cuda_stream
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:127
StreamParams::extSeqNumber
guint16 extSeqNumber
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:63
_GstNvDsUdpSink::isRunning
gboolean isRunning
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:99
_GstNvDsUdpSink::packetsPerChunk
guint packetsPerChunk
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:87
_GstNvDsUdpSink::ptpSrc
gchar * ptpSrc
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:85
_GstNvDsUdpSink::chunks
struct rmax_chunk * chunks
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:108
_GstNvDsUdpSink::nChunks
guint nChunks
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:86
_GstNvDsUdpSink::qCond
GCond qCond
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:97
_GstNvDsUdpSink::packetsPerLine
guint packetsPerLine
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:89
_GstNvDsUdpSink::num_streams
guint num_streams
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:131
_GstNvDsUdpSink::sdpFile
gchar * sdpFile
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:80
_GstNvDsUdpSink::localNicAddr
struct sockaddr_in localNicAddr
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:106
_GstNvDsUdpSink::rThread
GThread * rThread
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:95
_GstNvDsUdpSink::payloadSize
guint payloadSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:88
_GstNvDsUdpSink
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:69
StreamParams::timestampTick
gdouble timestampTick
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:64
StreamParams::firstPacketTime
gdouble firstPacketTime
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:54
StreamParams::fps
gdouble fps
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:56
StreamParams::frameTimeInterval
gdouble frameTimeInterval
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:53
_GstNvDsUdpSink::memblock
void * memblock
Definition: sources/gst-plugins/gst-nvdsudp/legacy_api/gstnvdsudpsink.h:104
_GstNvDsUdpSink::qLock
GMutex qLock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:98
_GstNvDsUdpSink::close_socket
gboolean close_socket
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:77
_GstNvDsUdpSink::pass_rtp_timestamp
gboolean pass_rtp_timestamp
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:90
MAX_ST2022_7_STREAMS
#define MAX_ST2022_7_STREAMS
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:36
_GstNvDsUdpSink::is_dup
gboolean is_dup
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:129
StreamParams::chunkNum
guint chunkNum
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:60
StreamParams::framesPerMemblock
guint framesPerMemblock
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:45
_GstNvDsUdpSink::lastError
gint lastError
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:100
StreamType
StreamType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpcommon.h:41
_GstNvDsUdpSink::source_ips
gchar * source_ips[MAX_ST2022_7_STREAMS]
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:130
_GstNvDsUdpSink::localIfaceIp
gchar * localIfaceIp
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:84
_GstNvDsUdpSink::port
guint16 port
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:82
StreamParams::width
guint width
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:40
_GstNvDsUdpSink::uri
gchar * uri
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:83
StreamParams::chunkSize
guint chunkSize
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:48
_GstNvDsUdpSink::gpu_id
gint gpu_id
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:92
StreamParams::headerStride
guint headerStride
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:47
_GstNvDsUdpSink::renderThreadCore
gchar * renderThreadCore
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:101
StreamParams::payloadType
guint8 payloadType
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:66
StreamParams::format
gchar * format
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:59
_GstNvDsUdpSink::nextChunk
guint nextChunk
Definition: sources/gst-plugins/gst-nvdsudp/gstnvdsudpsink.h:94