uvgRTP 2.0.1
An open-source library for RTP/SRTP media delivery
Loading...
Searching...
No Matches
util.hh
Go to the documentation of this file.
1
2#pragma once
3
5#ifdef _WIN32
6#include <winsock2.h>
7#include <windows.h>
8#else
9#include <sys/time.h>
10#endif
11
12// ssize_t definition for all systems
13#if defined(_MSC_VER)
14typedef SSIZE_T ssize_t;
15#else
16#include <sys/types.h>
17#endif
18
19#include <stdint.h>
20
22
30typedef enum RTP_ERROR {
31 RTP_MULTIPLE_PKTS_READY = 6,
32 RTP_PKT_READY = 5,
33 RTP_PKT_MODIFIED = 4,
34 RTP_PKT_NOT_HANDLED = 3,
35 RTP_INTERRUPTED = 2,
36 RTP_NOT_READY = 1,
37 RTP_OK = 0,
52} rtp_error_t;
53
59typedef enum RTP_FORMAT {
60 // See RFC 3551 for more details
61
62 // static audio profiles
65 // 1 is reserved in RFC 3551
66 // 2 is reserved in RFC 3551
76 // 12 QCELP is unsupported in uvgRTP
77 // 13 CN is unsupported in uvgRTP
78 // 14 MPA is unsupported in uvgRTP
83 // 19 is reserved in RFC 3551
84 // 20 - 23 are unassigned in RFC 3551
85
86 /* static video profiles, unsupported in uvgRTP
87 * 24 is unassigned
88 * 25 is CelB,
89 * 26 is JPEG
90 * 27 is unassigned
91 * 28 is nv
92 * 29 is unassigned
93 * 30 is unassigned
94 * 31 is H261
95 * 32 is MPV
96 * 33 is MP2T
97 * 32 is H263
98 */
99
100 /* Rest of static numbers
101 * 35 - 71 are unassigned
102 * 72 - 76 are reserved
103 * 77 - 95 are unassigned
104 */
105
106 /* Formats with dynamic payload numbers 96 - 127, including default values.
107 * Use RCC_DYN_PAYLOAD_TYPE flag to change the number if desired. */
108
117 // RED is unsupported in uvgRTP
120 // H263-1998 is unsupported in uvgRTP
123 RTP_FORMAT_H266 = 108
124
125} rtp_format_t;
126
133typedef enum RTP_FLAGS {
136
139 RTP_SLICE = 1, // used to do what RTP_NO_H26X_SCL does, may do something different in the future
140
142 RTP_COPY = 1 << 1,
143
149 RTP_NO_H26X_SCL = 1 << 2
150
151} rtp_flags_t;
152
161 RCE_NO_FLAGS = 0,
162
163 // Obsolete flags, they do nothing because the feature has been removed or they are enabled by default
164 RCE_OBSOLETE = 1, // for checking if user inputs obsolete flags
165 RCE_SYSTEM_CALL_DISPATCHER = 1, // removed feature
166 RCE_NO_H26X_INTRA_DELAY = 1, // removed feature
167 RCE_NO_H26X_SCL = 1, // this flag was moved to be an RTP flag
168 RCE_H26X_NO_DEPENDENCY_ENFORCEMENT = 1, // the feature is disabled by default
169 RCE_H26X_PREPEND_SC = 1, // the feature is enabled by default
170 RCE_NO_SYSTEM_CALL_CLUSTERING = 1, // disabled by default
171 RCE_SRTP_INPLACE_ENCRYPTION = 1, // the feature is enabled by default
172
173 // These can be used to specify what the address does for one address create session
174 RCE_SEND_ONLY = 1 << 1, // address interpreted as remote, no binding to socket
175 RCE_RECEIVE_ONLY = 1 << 2, // address interpreted as local, sending not possible
176
178 RCE_SRTP = 1 << 3,
179
189
199
204
208
216
222
225
233
236
239 RCE_RTCP = 1 << 13,
240
246
249
252
255
257 RCE_FRAMERATE = 1 << 18,
258
261
262 RCE_LAST = 1 << 20
263}; // maximum is 1 << 30 for int
264
265
274 RCC_NO_FLAGS = 0,
275
283
291
299
307
310
313
323
334
344
345 RCC_LAST
346};
347
348extern thread_local rtp_error_t rtp_errno;
RTP_CTX_ENABLE_FLAGS
RTP context enable flags.
Definition: util.hh:160
@ RCE_H26X_DEPENDENCY_ENFORCEMENT
Definition: util.hh:207
@ RCE_H26X_DO_NOT_PREPEND_SC
Definition: util.hh:203
@ RCE_SRTP_KEYSIZE_256
Definition: util.hh:251
@ RCE_ZRTP_MULTISTREAM_NO_DH
Definition: util.hh:254
@ RCE_SRTP_KMNGMNT_ZRTP
Definition: util.hh:188
@ RCE_SRTP_KMNGMNT_USER
Definition: util.hh:198
@ RCE_SRTP_NULL_CIPHER
Definition: util.hh:224
@ RCE_FRAGMENT_GENERIC
Definition: util.hh:215
@ RCE_FRAGMENT_PACING
Definition: util.hh:260
@ RCE_SRTP_AUTHENTICATE_RTP
Definition: util.hh:232
@ RCE_HOLEPUNCH_KEEPALIVE
Definition: util.hh:245
@ RCE_FRAMERATE
Definition: util.hh:257
@ RCE_SYSTEM_CALL_CLUSTERING
Definition: util.hh:221
@ RCE_RTCP
Definition: util.hh:239
@ RCE_SRTP_REPLAY_PROTECTION
Definition: util.hh:235
@ RCE_SRTP_KEYSIZE_192
Definition: util.hh:248
@ RCE_SRTP
Definition: util.hh:178
RTP_FORMAT
These flags are given to uvgrtp::session::create_stream()
Definition: util.hh:59
@ RTP_FORMAT_H266
H.266/VVC.
Definition: util.hh:123
@ RTP_FORMAT_G728
G728.
Definition: util.hh:79
@ RTP_FORMAT_PCMU
PCMU, ITU-T G.711.
Definition: util.hh:64
@ RTP_FORMAT_L16_STEREO
L16 Stereo.
Definition: util.hh:74
@ RTP_FORMAT_G722
G722.
Definition: util.hh:73
@ RTP_FORMAT_G726_32
G726, 32 kbit/s.
Definition: util.hh:110
@ RTP_FORMAT_L16_MONO
L16 Mono.
Definition: util.hh:75
@ RTP_FORMAT_GSM_EFR
GSM enhanced full rate speech transcoding.
Definition: util.hh:115
@ RTP_FORMAT_OPUS
Opus, see RFC 7587.
Definition: util.hh:119
@ RTP_FORMAT_H265
H.265/HEVC, see RFC 7798.
Definition: util.hh:122
@ RTP_FORMAT_PCMA
PCMA.
Definition: util.hh:72
@ RTP_FORMAT_LPC
LPC.
Definition: util.hh:71
@ RTP_FORMAT_G729
G729, 8 kbit/s.
Definition: util.hh:82
@ RTP_FORMAT_G726_24
G726, 24 kbit/s.
Definition: util.hh:111
@ RTP_FORMAT_VDVI
VDVI, variable-rate DVI4.
Definition: util.hh:118
@ RTP_FORMAT_DVI4_441
DVI 44.1 kbit/s.
Definition: util.hh:80
@ RTP_FORMAT_GSM
GSM (Group Speciale Mobile)
Definition: util.hh:67
@ RTP_FORMAT_G723
G723.
Definition: util.hh:68
@ RTP_FORMAT_DVI4_882
DVI 88.2 kbit/s.
Definition: util.hh:81
@ RTP_FORMAT_L8
L8, linear audio data samples.
Definition: util.hh:116
@ RTP_FORMAT_DVI4_32
DVI 32 kbit/s.
Definition: util.hh:69
@ RTP_FORMAT_GENERIC
Same as PCMU.
Definition: util.hh:63
@ RTP_FORMAT_H264
H.264/AVC, see RFC 6184.
Definition: util.hh:121
@ RTP_FORMAT_G729E
G729E, 11.8 kbit/s.
Definition: util.hh:114
@ RTP_FORMAT_DVI4_64
DVI 64 kbit/s.
Definition: util.hh:70
@ RTP_FORMAT_G726_16
G726, 16 kbit/s.
Definition: util.hh:112
@ RTP_FORMAT_G726_40
G726, 40 kbit/s.
Definition: util.hh:109
@ RTP_FORMAT_G729D
G729D, 6.4 kbit/s.
Definition: util.hh:113
RTP_ERROR
RTP error codes.
Definition: util.hh:30
@ RTP_BIND_ERROR
Failed to bind to interface.
Definition: util.hh:40
@ RTP_INITIALIZED
Object already initialized.
Definition: util.hh:45
@ RTP_NOT_FOUND
Object not found.
Definition: util.hh:50
@ RTP_OK
Success.
Definition: util.hh:37
@ RTP_NOT_INITIALIZED
Object has not been initialized.
Definition: util.hh:46
@ RTP_INVALID_VALUE
Invalid value.
Definition: util.hh:41
@ RTP_SEND_ERROR
System call send(2) or one of its derivatives failed.
Definition: util.hh:42
@ RTP_AUTH_TAG_MISMATCH
Authentication tag does not match the RTP packet contents.
Definition: util.hh:51
@ RTP_NOT_SUPPORTED
Method/version/extension not supported.
Definition: util.hh:47
@ RTP_SSRC_COLLISION
SSRC collision detected.
Definition: util.hh:44
@ RTP_RECV_ERROR
System call recv(2) or one of its derivatives failed.
Definition: util.hh:48
@ RTP_SOCKET_ERROR
Failed to create socket.
Definition: util.hh:39
@ RTP_MEMORY_ERROR
Memory allocation failed.
Definition: util.hh:43
@ RTP_TIMEOUT
Operation timed out.
Definition: util.hh:49
@ RTP_GENERIC_ERROR
Generic error condition.
Definition: util.hh:38
RTP_CTX_CONFIGURATION_FLAGS
RTP context configuration flags.
Definition: util.hh:273
@ RCC_PKT_MAX_DELAY
Definition: util.hh:306
@ RCC_MTU_SIZE
Definition: util.hh:322
@ RCC_FPS_ENUMERATOR
Definition: util.hh:333
@ RCC_RING_BUFFER_SIZE
Definition: util.hh:298
@ RCC_FPS_DENOMINATOR
Definition: util.hh:343
@ RCC_UDP_RCV_BUF_SIZE
Definition: util.hh:282
@ RCC_DYN_PAYLOAD_TYPE
Definition: util.hh:309
@ RCC_UDP_SND_BUF_SIZE
Definition: util.hh:290
@ RCC_CLOCK_RATE
Definition: util.hh:312
RTP_FLAGS
These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.
Definition: util.hh:133
@ RTP_NO_FLAGS
Definition: util.hh:135
@ RTP_COPY
Definition: util.hh:142
@ RTP_OBSOLETE
Definition: util.hh:138
@ RTP_NO_H26X_SCL
Definition: util.hh:149