uvgRTP 4.0.0
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
4#include "uvgrtp/definitions.hh"
5
7#ifdef _WIN32
8#include <winsock2.h>
9#include <windows.h>
10#else
11#include <sys/time.h>
12#endif
13
14// ssize_t definition for all systems
15#if defined(_MSC_VER)
16typedef SSIZE_T ssize_t;
17#else
18#include <sys/types.h>
19#endif
20
21#include <stdint.h>
22
24
32typedef enum RTP_ERROR {
34 RTP_INITIALIZED = 8,
35 RTP_AUTH_TAG_MISMATCH = 7,
36 RTP_MULTIPLE_PKTS_READY = 6,
37 RTP_PKT_READY = 5,
38 RTP_PKT_MODIFIED = 4,
39 RTP_PKT_NOT_HANDLED = 3,
40 RTP_INTERRUPTED = 2,
41 RTP_NOT_READY = 1,
43
44 RTP_OK = 0,
57
58} rtp_error_t;
59
65typedef enum RTP_FORMAT {
66 // See RFC 3551 for more details
67
68 // static audio profiles
71 // 1 is reserved in RFC 3551
72 // 2 is reserved in RFC 3551
82 // 12 QCELP is unsupported in uvgRTP
83 // 13 CN is unsupported in uvgRTP
84 // 14 MPA is unsupported in uvgRTP
89 // 19 is reserved in RFC 3551
90 // 20 - 23 are unassigned in RFC 3551
91
92 /* static video profiles, unsupported in uvgRTP
93 * 24 is unassigned
94 * 25 is CelB,
95 * 26 is JPEG
96 * 27 is unassigned
97 * 28 is nv
98 * 29 is unassigned
99 * 30 is unassigned
100 * 31 is H261
101 * 32 is MPV
102 * 33 is MP2T
103 * 32 is H263
104 */
105
106 /* Rest of static numbers
107 * 35 - 71 are unassigned
108 * 72 - 76 are reserved
109 * 77 - 95 are unassigned
110 */
111
112 /* Formats with dynamic payload numbers 96 - 127, including default values.
113 * Use RCC_DYN_PAYLOAD_TYPE flag to change the number if desired. */
114
123 // RED is unsupported in uvgRTP
126 // H263-1998 is unsupported in uvgRTP
130 RTP_FORMAT_ATLAS = 109
131
132} rtp_format_t;
133
140typedef enum RTP_FLAGS {
142
144
145 RTP_OBSOLETE = 1,
146 RTP_SLICE = 1, // used to do what RTP_NO_H26X_SCL does, may do something different in the future
148
150 RTP_COPY = 1 << 1,
151
158
160 RTP_H26X_DO_NOT_AGGR = 1 << 3
161
162} rtp_flags_t;
163
173
175 RCE_OBSOLETE = 1,
177
178 // These can be used to specify what the address does for one address create session
179 RCE_SEND_ONLY = 1 << 1,
181
183 RCE_SRTP = 1 << 3,
184
194
204
205
210
214
222
228
231
239
242
245 RCE_RTCP = 1 << 13,
246
252
255
258
261
264
266 RCE_FRAME_RATE = 1 << 19,
267
270
272 RCE_RTCP_MUX = 1 << 21,
273
275 RCE_LAST = 1 << 22
277}; // maximum is 1 << 30 for int
278
279
421
422
423#if UVGRTP_EXTENDED_API
433extern thread_local rtp_error_t rtp_errno;
434
435 // End of EXTENDED_API group
436#endif
thread_local rtp_error_t rtp_errno
Thread-local variable holding the error code for RTP operations that do not return rtp_error.
RTP_CTX_ENABLE_FLAGS
RTP context enable flags.
Definition util.hh:171
@ RCE_H26X_DEPENDENCY_ENFORCEMENT
Definition util.hh:213
@ RCE_SRTP_KEYSIZE_256
Definition util.hh:257
@ RCE_RTCP_MUX
Definition util.hh:272
@ RCE_SRTP_KMNGMNT_ZRTP
Definition util.hh:193
@ RCE_SRTP_KMNGMNT_USER
Definition util.hh:203
@ RCE_NO_FLAGS
Use this if you have no RCE flags.
Definition util.hh:172
@ RCE_SRTP_NULL_CIPHER
Definition util.hh:230
@ RCE_ZRTP_DIFFIE_HELLMAN_MODE
Definition util.hh:260
@ RCE_FRAGMENT_GENERIC
Definition util.hh:221
@ RCE_SEND_ONLY
address/port interpreted as remote, no binding to local socket
Definition util.hh:179
@ RCE_SRTP_AUTHENTICATE_RTP
Definition util.hh:238
@ RCE_PACE_FRAGMENT_SENDING
Definition util.hh:269
@ RCE_NO_H26X_PREPEND_SC
Definition util.hh:209
@ RCE_HOLEPUNCH_KEEPALIVE
Definition util.hh:251
@ RCE_ZRTP_MULTISTREAM_MODE
Definition util.hh:263
@ RCE_SYSTEM_CALL_CLUSTERING
Definition util.hh:227
@ RCE_RTCP
Definition util.hh:245
@ RCE_SRTP_REPLAY_PROTECTION
Definition util.hh:241
@ RCE_FRAME_RATE
Definition util.hh:266
@ RCE_SRTP_KEYSIZE_192
Definition util.hh:254
@ RCE_SRTP
Definition util.hh:183
@ RCE_RECEIVE_ONLY
address/port interpreted as local, sending not possible
Definition util.hh:180
RTP_FORMAT
These flags are given to uvgrtp::session::create_stream()
Definition util.hh:65
@ RTP_FORMAT_H266
H.266/VVC.
Definition util.hh:129
@ RTP_FORMAT_G728
G728.
Definition util.hh:85
@ RTP_FORMAT_PCMU
PCMU, ITU-T G.711.
Definition util.hh:70
@ RTP_FORMAT_L16_STEREO
L16 Stereo.
Definition util.hh:80
@ RTP_FORMAT_G722
G722.
Definition util.hh:79
@ RTP_FORMAT_G726_32
G726, 32 kbit/s.
Definition util.hh:116
@ RTP_FORMAT_L16_MONO
L16 Mono.
Definition util.hh:81
@ RTP_FORMAT_GSM_EFR
GSM enhanced full rate speech transcoding.
Definition util.hh:121
@ RTP_FORMAT_OPUS
Opus, see RFC 7587.
Definition util.hh:125
@ RTP_FORMAT_H265
H.265/HEVC, see RFC 7798.
Definition util.hh:128
@ RTP_FORMAT_PCMA
PCMA.
Definition util.hh:78
@ RTP_FORMAT_LPC
LPC.
Definition util.hh:77
@ RTP_FORMAT_G729
G729, 8 kbit/s.
Definition util.hh:88
@ RTP_FORMAT_ATLAS
V3C.
Definition util.hh:130
@ RTP_FORMAT_G726_24
G726, 24 kbit/s.
Definition util.hh:117
@ RTP_FORMAT_VDVI
VDVI, variable-rate DVI4.
Definition util.hh:124
@ RTP_FORMAT_DVI4_441
DVI 44.1 kbit/s.
Definition util.hh:86
@ RTP_FORMAT_GSM
GSM (Group Speciale Mobile)
Definition util.hh:73
@ RTP_FORMAT_G723
G723.
Definition util.hh:74
@ RTP_FORMAT_DVI4_882
DVI 88.2 kbit/s.
Definition util.hh:87
@ RTP_FORMAT_L8
L8, linear audio data samples.
Definition util.hh:122
@ RTP_FORMAT_DVI4_32
DVI 32 kbit/s.
Definition util.hh:75
@ RTP_FORMAT_GENERIC
Same as PCMU.
Definition util.hh:69
@ RTP_FORMAT_H264
H.264/AVC, see RFC 6184.
Definition util.hh:127
@ RTP_FORMAT_G729E
G729E, 11.8 kbit/s.
Definition util.hh:120
@ RTP_FORMAT_DVI4_64
DVI 64 kbit/s.
Definition util.hh:76
@ RTP_FORMAT_G726_16
G726, 16 kbit/s.
Definition util.hh:118
@ RTP_FORMAT_G726_40
G726, 40 kbit/s.
Definition util.hh:115
@ RTP_FORMAT_G729D
G729D, 6.4 kbit/s.
Definition util.hh:119
RTP_ERROR
RTP error codes.
Definition util.hh:32
@ RTP_BIND_ERROR
Failed to bind to interface.
Definition util.hh:47
@ RTP_NOT_FOUND
Object not found.
Definition util.hh:56
@ RTP_OK
Success.
Definition util.hh:44
@ RTP_NOT_INITIALIZED
Object has not been initialized.
Definition util.hh:52
@ RTP_INVALID_VALUE
Invalid value.
Definition util.hh:48
@ RTP_SEND_ERROR
System call send(2) or one of its derivatives failed.
Definition util.hh:49
@ RTP_NOT_SUPPORTED
Method/version/extension not supported.
Definition util.hh:53
@ RTP_SSRC_COLLISION
SSRC collision detected.
Definition util.hh:51
@ RTP_RECV_ERROR
System call recv(2) or one of its derivatives failed.
Definition util.hh:54
@ RTP_SOCKET_ERROR
Failed to create socket.
Definition util.hh:46
@ RTP_MEMORY_ERROR
Memory allocation failed.
Definition util.hh:50
@ RTP_TIMEOUT
Operation timed out.
Definition util.hh:55
@ RTP_GENERIC_ERROR
Generic error condition.
Definition util.hh:45
RTP_CTX_CONFIGURATION_FLAGS
RTP context configuration flags.
Definition util.hh:287
@ RCC_REMOTE_SSRC
Definition util.hh:371
@ RCC_FPS_NUMERATOR
Definition util.hh:351
@ RCC_PKT_MAX_DELAY
Definition util.hh:322
@ RCC_MTU_SIZE
Definition util.hh:338
@ RCC_MULTICAST_TTL
Definition util.hh:399
@ RCC_POLL_TIMEOUT
Definition util.hh:393
@ RCC_SESSION_BANDWIDTH
Definition util.hh:385
@ RCC_RING_BUFFER_SIZE
Definition util.hh:314
@ RCC_FPS_DENOMINATOR
Definition util.hh:359
@ RCC_PACE_FRAG_NUMERATOR
Definition util.hh:407
@ RCC_UDP_RCV_BUF_SIZE
Definition util.hh:298
@ RCC_DYN_PAYLOAD_TYPE
Definition util.hh:325
@ RCC_UDP_SND_BUF_SIZE
Definition util.hh:306
@ RCC_SSRC
Definition util.hh:365
@ RCC_PACE_FRAG_DENOMINATOR
Definition util.hh:415
@ RCC_CLOCK_RATE
Definition util.hh:328
RTP_FLAGS
These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.
Definition util.hh:140
@ RTP_H26X_DO_NOT_AGGR
Definition util.hh:160
@ RTP_NO_FLAGS
Use this if you have no RTP flags.
Definition util.hh:141
@ RTP_COPY
Definition util.hh:150
@ RTP_NO_H26X_SCL
Definition util.hh:157