Amazon Kinesis Webrtc C SDK
 
Loading...
Searching...
No Matches
Include.h
Go to the documentation of this file.
1/*
2 * Main public include file
3 */
4#ifndef __KINESIS_VIDEO_WEBRTC_CLIENT_INCLUDE__
5#define __KINESIS_VIDEO_WEBRTC_CLIENT_INCLUDE__
6
7#pragma once
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
14// Public headers
16#if defined(__clang__)
17#pragma clang diagnostic push
18#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
19#endif
20#include <com/amazonaws/kinesis/video/client/Include.h>
21#include <com/amazonaws/kinesis/video/common/Include.h>
24#if defined(__clang__)
25#pragma clang diagnostic pop
26#endif
27
28/* TODO: Potentially move these call to PIC instead. Moving to PIC in the future would not cause any backward compatibility issues */
29
30#ifdef INCREASE_PRECISION_TIMING_LOGS
31
37#define PROFILE_CALL(f, msg) \
38 do { \
39 startTimeInMacro = GETTIME(); \
40 f; \
41 UINT64 __dt = GETTIME() - startTimeInMacro; \
42 DLOGP("[%s] Time taken: %" PRIu64 ".%02" PRIu64 " ms", (msg), __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, \
43 (__dt % HUNDREDS_OF_NANOS_IN_A_MILLISECOND) / (HUNDREDS_OF_NANOS_IN_A_MILLISECOND / 100)); \
44 } while (FALSE)
45
53#define PROFILE_CALL_WITH_T_OBJ(f, t, msg) \
54 do { \
55 startTimeInMacro = GETTIME(); \
56 f; \
57 UINT64 __dt = GETTIME() - startTimeInMacro; \
58 t = __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
59 DLOGP("[%s] Time taken: %" PRIu64 ".%02" PRIu64 " ms", (msg), __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, \
60 (__dt % HUNDREDS_OF_NANOS_IN_A_MILLISECOND) / (HUNDREDS_OF_NANOS_IN_A_MILLISECOND / 100)); \
61 } while (FALSE)
62
68#define PROFILE_WITH_START_TIME(t, msg) \
69 do { \
70 UINT64 __dt = GETTIME() - (t); \
71 DLOGP("[%s] Time taken: %" PRIu64 ".%02" PRIu64 " ms", msg, __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, \
72 (__dt % HUNDREDS_OF_NANOS_IN_A_MILLISECOND) / (HUNDREDS_OF_NANOS_IN_A_MILLISECOND / 100)); \
73 } while (FALSE)
74
83#define PROFILE_CALL_WITH_START_END_T_OBJ(f, s, e, d, msg) \
84 do { \
85 UINT64 __s = GETTIME(); \
86 f; \
87 UINT64 __e = GETTIME(); \
88 UINT64 __dt = __e - __s; \
89 s = __s / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
90 e = __e / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
91 d = ((e) - (s)); \
92 DLOGP("[%s] Time taken: %" PRIu64 ".%02" PRIu64 " ms", (msg), __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, \
93 (__dt % HUNDREDS_OF_NANOS_IN_A_MILLISECOND) / (HUNDREDS_OF_NANOS_IN_A_MILLISECOND / 100)); \
94 } while (FALSE)
95
103#define PROFILE_WITH_START_END_TIME_OBJ(t1, t2, d, msg) \
104 do { \
105 UINT64 __dt = GETTIME() - (t1); \
106 t1 = (t1 / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
107 t2 = (GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
108 d = ((t2) - (t1)); \
109 DLOGP("[%s] Time taken: %" PRIu64 ".%02" PRIu64 " ms", (msg), __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, \
110 (__dt % HUNDREDS_OF_NANOS_IN_A_MILLISECOND) / (HUNDREDS_OF_NANOS_IN_A_MILLISECOND / 100)); \
111 } while (FALSE)
112
119#define PROFILE_WITH_START_TIME_OBJ(t1, t2, msg) \
120 do { \
121 UINT64 __dt = GETTIME() - (t1); \
122 t2 = __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
123 DLOGP("[%s] Time taken: %" PRIu64 ".%02" PRIu64 " ms", (msg), __dt / HUNDREDS_OF_NANOS_IN_A_MILLISECOND, \
124 (__dt % HUNDREDS_OF_NANOS_IN_A_MILLISECOND) / (HUNDREDS_OF_NANOS_IN_A_MILLISECOND / 100)); \
125 } while (FALSE)
126
127#else // INCREASE_PRECISION_TIMING_LOGS
128
134#define PROFILE_CALL(f, msg) \
135 do { \
136 startTimeInMacro = GETTIME(); \
137 f; \
138 DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (GETTIME() - startTimeInMacro) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
139 } while (FALSE)
140
148#define PROFILE_CALL_WITH_T_OBJ(f, t, msg) \
149 do { \
150 startTimeInMacro = GETTIME(); \
151 f; \
152 t = (GETTIME() - startTimeInMacro) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
153 DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (t)); \
154 } while (FALSE)
155
161#define PROFILE_WITH_START_TIME(t, msg) \
162 do { \
163 DLOGP("[%s] Time taken: %" PRIu64 " ms", msg, (GETTIME() - (t)) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
164 } while (FALSE)
165
174#define PROFILE_CALL_WITH_START_END_T_OBJ(f, s, e, d, msg) \
175 do { \
176 s = GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
177 f; \
178 e = GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
179 d = ((e) - (s)); \
180 DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (d)); \
181 } while (FALSE)
182
190#define PROFILE_WITH_START_END_TIME_OBJ(t1, t2, d, msg) \
191 do { \
192 t1 = (t1 / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
193 t2 = (GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
194 d = ((t2) - (t1)); \
195 DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (d)); \
196 } while (FALSE)
197
204#define PROFILE_WITH_START_TIME_OBJ(t1, t2, msg) \
205 do { \
206 t2 = (GETTIME() - (t1)) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
207 DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), t2); \
208 } while (FALSE)
209
210#endif // INCREASE_PRECISION_TIMING_LOGS
211
218#define STATUS_WEBRTC_BASE 0x55000000
219
223
229#define STATUS_SESSION_DESCRIPTION_INIT_NOT_OBJECT STATUS_WEBRTC_BASE + 0x00000001
230#define STATUS_SESSION_DESCRIPTION_INIT_MISSING_SDP_OR_TYPE_MEMBER STATUS_WEBRTC_BASE + 0x00000002
231#define STATUS_SESSION_DESCRIPTION_INIT_INVALID_TYPE STATUS_WEBRTC_BASE + 0x00000003
232#define STATUS_SESSION_DESCRIPTION_INIT_MISSING_SDP STATUS_WEBRTC_BASE + 0x00000004
233#define STATUS_SESSION_DESCRIPTION_INIT_MISSING_TYPE STATUS_WEBRTC_BASE + 0x00000005
234#define STATUS_SESSION_DESCRIPTION_INIT_MAX_SDP_LEN_EXCEEDED STATUS_WEBRTC_BASE + 0x00000006
235#define STATUS_SESSION_DESCRIPTION_INVALID_SESSION_DESCRIPTION STATUS_WEBRTC_BASE + 0x00000007
236#define STATUS_SESSION_DESCRIPTION_MISSING_ICE_VALUES STATUS_WEBRTC_BASE + 0x00000008
237#define STATUS_SESSION_DESCRIPTION_MISSING_CERTIFICATE_FINGERPRINT STATUS_WEBRTC_BASE + 0x00000009
238#define STATUS_SESSION_DESCRIPTION_MAX_MEDIA_COUNT STATUS_WEBRTC_BASE + 0x0000000A
239#define STATUS_SESSION_DESCRIPTION_CODEC_NOT_MAPPED_TO_RTX STATUS_WEBRTC_BASE + 0x0000000B
245
251#define STATUS_SDP_BASE STATUS_WEBRTC_BASE + 0x01000000
252#define STATUS_SDP_MISSING_ITEMS STATUS_SDP_BASE + 0x00000001
253#define STATUS_SDP_ATTRIBUTES_ERROR STATUS_SDP_BASE + 0x00000002
254#define STATUS_SDP_BANDWIDTH_ERROR STATUS_SDP_BASE + 0x00000003
255#define STATUS_SDP_CONNECTION_INFORMATION_ERROR STATUS_SDP_BASE + 0x00000004
256#define STATUS_SDP_EMAIL_ADDRESS_ERROR STATUS_SDP_BASE + 0x00000005
257#define STATUS_SDP_ENCYRPTION_KEY_ERROR STATUS_SDP_BASE + 0x00000006
258#define STATUS_SDP_INFORMATION_ERROR STATUS_SDP_BASE + 0x00000007
259#define STATUS_SDP_MEDIA_NAME_ERROR STATUS_SDP_BASE + 0x00000008
260#define STATUS_SDP_ORIGIN_ERROR STATUS_SDP_BASE + 0x00000009
261#define STATUS_SDP_PHONE_NUMBER_ERROR STATUS_SDP_BASE + 0x0000000A
262#define STATUS_SDP_TIME_DECRYPTION_ERROR STATUS_SDP_BASE + 0x0000000B
263#define STATUS_SDP_TIMEZONE_ERROR STATUS_SDP_BASE + 0x0000000C
264#define STATUS_SDP_URI_ERROR STATUS_SDP_BASE + 0x0000000D
265#define STATUS_SDP_VERSION_ERROR STATUS_SDP_BASE + 0x0000000E
266#define STATUS_SDP_ATTRIBUTE_MAX_EXCEEDED STATUS_SDP_BASE + 0x0000000F
272
277#define STATUS_STUN_BASE STATUS_SDP_BASE + 0x01000000
278#define STATUS_STUN_MESSAGE_INTEGRITY_NOT_LAST STATUS_STUN_BASE + 0x00000001
279#define STATUS_STUN_MESSAGE_INTEGRITY_SIZE_ALIGNMENT STATUS_STUN_BASE + 0x00000002
280#define STATUS_STUN_FINGERPRINT_NOT_LAST STATUS_STUN_BASE + 0x00000003
281#define STATUS_STUN_MAGIC_COOKIE_MISMATCH STATUS_STUN_BASE + 0x00000004
282#define STATUS_STUN_INVALID_ADDRESS_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000005
283#define STATUS_STUN_INVALID_USERNAME_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000006
284#define STATUS_STUN_INVALID_MESSAGE_INTEGRITY_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000007
285#define STATUS_STUN_INVALID_FINGERPRINT_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000008
286#define STATUS_STUN_MULTIPLE_MESSAGE_INTEGRITY_ATTRIBUTES STATUS_STUN_BASE + 0x00000009
287#define STATUS_STUN_MULTIPLE_FINGERPRINT_ATTRIBUTES STATUS_STUN_BASE + 0x0000000A
288#define STATUS_STUN_ATTRIBUTES_AFTER_FINGERPRINT_MESSAGE_INTEGRITY STATUS_STUN_BASE + 0x0000000B
289#define STATUS_STUN_MESSAGE_INTEGRITY_AFTER_FINGERPRINT STATUS_STUN_BASE + 0x0000000C
290#define STATUS_STUN_MAX_ATTRIBUTE_COUNT STATUS_STUN_BASE + 0x0000000D
291#define STATUS_STUN_MESSAGE_INTEGRITY_MISMATCH STATUS_STUN_BASE + 0x0000000E
292#define STATUS_STUN_FINGERPRINT_MISMATCH STATUS_STUN_BASE + 0x0000000F
293#define STATUS_STUN_INVALID_PRIORITY_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000010
294#define STATUS_STUN_INVALID_USE_CANDIDATE_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000011
295#define STATUS_STUN_INVALID_LIFETIME_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000012
296#define STATUS_STUN_INVALID_REQUESTED_TRANSPORT_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000013
297#define STATUS_STUN_INVALID_REALM_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000014
298#define STATUS_STUN_INVALID_NONCE_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000015
299#define STATUS_STUN_INVALID_ERROR_CODE_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000016
300#define STATUS_STUN_INVALID_ICE_CONTROL_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000017
301#define STATUS_STUN_INVALID_CHANNEL_NUMBER_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000018
302#define STATUS_STUN_INVALID_CHANGE_REQUEST_ATTRIBUTE_LENGTH STATUS_STUN_BASE + 0x00000019
303#define STATUS_STUN_ATTRIBUTE_LENGTH_EXCEEDED_BUFFER_SIZE STATUS_STUN_BASE + 0x0000001A
309
314#define STATUS_NETWORKING_BASE STATUS_STUN_BASE + 0x01000000
315#define STATUS_GET_LOCAL_IP_ADDRESSES_FAILED STATUS_NETWORKING_BASE + 0x00000016
316#define STATUS_CREATE_UDP_SOCKET_FAILED STATUS_NETWORKING_BASE + 0x00000017
317#define STATUS_BINDING_SOCKET_FAILED STATUS_NETWORKING_BASE + 0x00000018
318#define STATUS_GET_PORT_NUMBER_FAILED STATUS_NETWORKING_BASE + 0x00000019
319#define STATUS_SEND_DATA_FAILED STATUS_NETWORKING_BASE + 0x0000001a
320#define STATUS_RESOLVE_HOSTNAME_FAILED STATUS_NETWORKING_BASE + 0x0000001b
321#define STATUS_HOSTNAME_NOT_FOUND STATUS_NETWORKING_BASE + 0x0000001c
322#define STATUS_SOCKET_CONNECT_FAILED STATUS_NETWORKING_BASE + 0x0000001d
323#define STATUS_CREATE_SSL_FAILED STATUS_NETWORKING_BASE + 0x0000001e
324#define STATUS_SSL_CONNECTION_FAILED STATUS_NETWORKING_BASE + 0x0000001f
325#define STATUS_SECURE_SOCKET_READ_FAILED STATUS_NETWORKING_BASE + 0x00000020
326#define STATUS_SOCKET_CONNECTION_NOT_READY_TO_SEND STATUS_NETWORKING_BASE + 0x00000021
327#define STATUS_SOCKET_CONNECTION_CLOSED_ALREADY STATUS_NETWORKING_BASE + 0x00000022
328#define STATUS_SOCKET_SET_SEND_BUFFER_SIZE_FAILED STATUS_NETWORKING_BASE + 0x00000023
329#define STATUS_GET_SOCKET_FLAG_FAILED STATUS_NETWORKING_BASE + 0x00000024
330#define STATUS_SET_SOCKET_FLAG_FAILED STATUS_NETWORKING_BASE + 0x00000025
331#define STATUS_CLOSE_SOCKET_FAILED STATUS_NETWORKING_BASE + 0x00000026
332#define STATUS_CREATE_SOCKET_PAIR_FAILED STATUS_NETWORKING_BASE + 0x00000027
333#define STATUS_SOCKET_WRITE_FAILED STATUS_NETWORKING_BASE + 0X00000028
334#define STATUS_INVALID_ADDRESS_LENGTH STATUS_NETWORKING_BASE + 0X00000029
335
341
346#define STATUS_DTLS_BASE STATUS_NETWORKING_BASE + 0x01000000
347#define STATUS_CERTIFICATE_GENERATION_FAILED STATUS_DTLS_BASE + 0x00000001
348#define STATUS_SSL_CTX_CREATION_FAILED STATUS_DTLS_BASE + 0x00000002
349#define STATUS_SSL_REMOTE_CERTIFICATE_VERIFICATION_FAILED STATUS_DTLS_BASE + 0x00000003
350#define STATUS_SSL_PACKET_BEFORE_DTLS_READY STATUS_DTLS_BASE + 0x00000004
351#define STATUS_SSL_UNKNOWN_SRTP_PROFILE STATUS_DTLS_BASE + 0x00000005
352#define STATUS_SSL_INVALID_CERTIFICATE_BITS STATUS_DTLS_BASE + 0x00000006
353#define STATUS_DTLS_SESSION_ALREADY_FREED STATUS_DTLS_BASE + 0x00000007
359
364#define STATUS_ICE_BASE STATUS_DTLS_BASE + 0x01000000
365#define STATUS_ICE_AGENT_NO_SELECTED_CANDIDATE_AVAILABLE STATUS_ICE_BASE + 0x00000001
366#define STATUS_ICE_CANDIDATE_STRING_MISSING_PORT STATUS_ICE_BASE + 0x00000002
367#define STATUS_ICE_CANDIDATE_STRING_MISSING_IP STATUS_ICE_BASE + 0x00000003
368#define STATUS_ICE_CANDIDATE_STRING_INVALID_IP STATUS_ICE_BASE + 0x00000004
369#define STATUS_ICE_CANDIDATE_STRING_IS_TCP STATUS_ICE_BASE + 0x00000005
370#define STATUS_ICE_FAILED_TO_COMPUTE_MD5_FOR_LONG_TERM_CREDENTIAL STATUS_ICE_BASE + 0x00000006
371#define STATUS_ICE_URL_INVALID_PREFIX STATUS_ICE_BASE + 0x00000007
372#define STATUS_ICE_URL_TURN_MISSING_USERNAME STATUS_ICE_BASE + 0x00000008
373#define STATUS_ICE_URL_TURN_MISSING_CREDENTIAL STATUS_ICE_BASE + 0x00000009
374#define STATUS_ICE_AGENT_STATE_CHANGE_FAILED STATUS_ICE_BASE + 0x0000000a
375#define STATUS_ICE_NO_LOCAL_CANDIDATE_AVAILABLE_AFTER_GATHERING_TIMEOUT STATUS_ICE_BASE + 0x0000000b
376#define STATUS_ICE_AGENT_TERMINATED_ALREADY STATUS_ICE_BASE + 0x0000000c
377#define STATUS_ICE_NO_CONNECTED_CANDIDATE_PAIR STATUS_ICE_BASE + 0x0000000d
378#define STATUS_ICE_CANDIDATE_PAIR_LIST_EMPTY STATUS_ICE_BASE + 0x0000000e
379#define STATUS_ICE_NOMINATED_CANDIDATE_NOT_CONNECTED STATUS_ICE_BASE + 0x00000010
380#define STATUS_ICE_CANDIDATE_INIT_MALFORMED STATUS_ICE_BASE + 0x00000011
381#define STATUS_ICE_CANDIDATE_MISSING_CANDIDATE STATUS_ICE_BASE + 0x00000012
382#define STATUS_ICE_FAILED_TO_NOMINATE_CANDIDATE_PAIR STATUS_ICE_BASE + 0x00000013
383#define STATUS_ICE_MAX_REMOTE_CANDIDATE_COUNT_EXCEEDED STATUS_ICE_BASE + 0x00000014
384#define STATUS_ICE_URL_MALFORMED STATUS_ICE_BASE + 0x00000015
385#define STATUS_ICE_URL_STUNS_IP_LITERAL_NOT_ALLOWED STATUS_ICE_BASE + 0x00000016
386#define STATUS_ICE_INVALID_STATE STATUS_ICE_BASE + 0x0000001c
387#define STATUS_ICE_NO_LOCAL_HOST_CANDIDATE_AVAILABLE STATUS_ICE_BASE + 0x0000001d
388#define STATUS_ICE_NO_NOMINATED_VALID_CANDIDATE_PAIR_AVAILABLE STATUS_ICE_BASE + 0x0000001e
389#define STATUS_TURN_CONNECTION_NO_HOST_INTERFACE_FOUND STATUS_ICE_BASE + 0x0000001f
390#define STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT STATUS_ICE_BASE + 0x00000020
391#define STATUS_TURN_CONNECTION_FAILED_TO_CREATE_PERMISSION STATUS_ICE_BASE + 0x00000021
392#define STATUS_TURN_CONNECTION_FAILED_TO_BIND_CHANNEL STATUS_ICE_BASE + 0x00000022
393#define STATUS_TURN_NEW_DATA_CHANNEL_MSG_HEADER_BEFORE_PREVIOUS_MSG_FINISH STATUS_ICE_BASE + 0x00000023
394#define STATUS_TURN_MISSING_CHANNEL_DATA_HEADER STATUS_ICE_BASE + 0x00000024
395#define STATUS_ICE_FAILED_TO_RECOVER_FROM_DISCONNECTION STATUS_ICE_BASE + 0x00000025
396#define STATUS_ICE_NO_AVAILABLE_ICE_CANDIDATE_PAIR STATUS_ICE_BASE + 0x00000026
397#define STATUS_TURN_CONNECTION_PEER_NOT_USABLE STATUS_ICE_BASE + 0x00000027
398#define STATUS_ICE_SERVER_INDEX_INVALID STATUS_ICE_BASE + 0x00000028
399#define STATUS_ICE_CANDIDATE_STRING_MISSING_TYPE STATUS_ICE_BASE + 0x00000029
400#define STATUS_TURN_CONNECTION_ALLOCATION_FAILED STATUS_ICE_BASE + 0x0000002a
401#define STATUS_TURN_INVALID_STATE STATUS_ICE_BASE + 0x0000002b
402#define STATUS_TURN_CONNECTION_GET_CREDENTIALS_FAILED STATUS_ICE_BASE + 0x0000002c
403#define STATUS_FAILED_TO_INIT_RELAY_CANDIDATES STATUS_ICE_BASE + 0x0000002d
404#define STATUS_TURN_CONNECTION_CREDENTIALS_REJECTED STATUS_ICE_BASE + 0x0000002e
405#define STATUS_ICE_SERVERS_FINAL STATUS_ICE_BASE + 0x0000002f
406
412
417#define STATUS_SRTP_BASE STATUS_ICE_BASE + 0x01000000
418#define STATUS_SRTP_DECRYPT_FAILED STATUS_SRTP_BASE + 0x00000001
419#define STATUS_SRTP_ENCRYPT_FAILED STATUS_SRTP_BASE + 0x00000002
420#define STATUS_SRTP_TRANSMIT_SESSION_CREATION_FAILED STATUS_SRTP_BASE + 0x00000003
421#define STATUS_SRTP_RECEIVE_SESSION_CREATION_FAILED STATUS_SRTP_BASE + 0x00000004
422#define STATUS_SRTP_INIT_FAILED STATUS_SRTP_BASE + 0x00000005
423#define STATUS_SRTP_NOT_READY_YET STATUS_SRTP_BASE + 0x00000006
429
434#define STATUS_RTP_BASE STATUS_SRTP_BASE + 0x01000000
435#define STATUS_RTP_INPUT_PACKET_TOO_SMALL STATUS_RTP_BASE + 0x00000001
436#define STATUS_RTP_INPUT_MTU_TOO_SMALL STATUS_RTP_BASE + 0x00000002
437#define STATUS_RTP_INVALID_NALU STATUS_RTP_BASE + 0x00000003
438#define STATUS_RTP_INVALID_EXTENSION_LEN STATUS_RTP_BASE + 0x00000004
439#define STATUS_RTP_FRAME_TOO_LARGE STATUS_RTP_BASE + 0x00000005
445
450#define STATUS_SIGNALING_BASE STATUS_RTP_BASE + 0x01000000
451#define STATUS_SIGNALING_INVALID_READY_STATE STATUS_SIGNALING_BASE + 0x00000001
452#define STATUS_SIGNALING_GET_TOKEN_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000002
453#define STATUS_SIGNALING_DESCRIBE_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000003
454#define STATUS_SIGNALING_CREATE_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000004
455#define STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000005
456#define STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000006
457#define STATUS_SIGNALING_READY_CALLBACK_FAILED STATUS_SIGNALING_BASE + 0x00000007
458#define STATUS_SIGNALING_CONNECT_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000008
459#define STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED STATUS_SIGNALING_BASE + 0x00000009
460#define STATUS_SIGNALING_INVALID_CHANNEL_INFO_VERSION STATUS_SIGNALING_BASE + 0x0000000A
461#define STATUS_SIGNALING_INVALID_SIGNALING_CALLBACKS_VERSION STATUS_SIGNALING_BASE + 0x0000000B
462#define STATUS_SIGNALING_INVALID_CHANNEL_NAME_LENGTH STATUS_SIGNALING_BASE + 0x0000000C
463#define STATUS_SIGNALING_INVALID_CHANNEL_ARN_LENGTH STATUS_SIGNALING_BASE + 0x0000000D
464#define STATUS_SIGNALING_INVALID_REGION_LENGTH STATUS_SIGNALING_BASE + 0x0000000E
465#define STATUS_SIGNALING_INVALID_CPL_LENGTH STATUS_SIGNALING_BASE + 0x0000000F
466#define STATUS_SIGNALING_INVALID_CERTIFICATE_PATH_LENGTH STATUS_SIGNALING_BASE + 0x00000010
467#define STATUS_SIGNALING_INVALID_AGENT_POSTFIX_LENGTH STATUS_SIGNALING_BASE + 0x00000011
468#define STATUS_SIGNALING_INVALID_AGENT_LENGTH STATUS_SIGNALING_BASE + 0x00000012
469#define STATUS_SIGNALING_INVALID_KMS_KEY_LENGTH STATUS_SIGNALING_BASE + 0x00000013
470#define STATUS_SIGNALING_LWS_CREATE_CONTEXT_FAILED STATUS_SIGNALING_BASE + 0x00000014
471#define STATUS_SIGNALING_LWS_CLIENT_CONNECT_FAILED STATUS_SIGNALING_BASE + 0x00000015
472#define STATUS_SIGNALING_CHANNEL_BEING_DELETED STATUS_SIGNALING_BASE + 0x00000016
473#define STATUS_SIGNALING_INVALID_CLIENT_INFO_VERSION STATUS_SIGNALING_BASE + 0x00000017
474#define STATUS_SIGNALING_INVALID_CLIENT_INFO_CLIENT_LENGTH STATUS_SIGNALING_BASE + 0x00000018
475#define STATUS_SIGNALING_MAX_ICE_CONFIG_COUNT STATUS_SIGNALING_BASE + 0x00000019
476#define STATUS_SIGNALING_MAX_ICE_URI_COUNT STATUS_SIGNALING_BASE + 0x0000001A
477#define STATUS_SIGNALING_MAX_ICE_URI_LEN STATUS_SIGNALING_BASE + 0x0000001B
478#define STATUS_SIGNALING_NO_CONFIG_SPECIFIED STATUS_SIGNALING_BASE + 0x0000001C
479#define STATUS_SIGNALING_INVALID_ICE_CONFIG_INFO_VERSION STATUS_SIGNALING_BASE + 0x0000001D
480#define STATUS_SIGNALING_NO_CONFIG_URI_SPECIFIED STATUS_SIGNALING_BASE + 0x0000001E
481#define STATUS_SIGNALING_NO_ARN_RETURNED_ON_CREATE STATUS_SIGNALING_BASE + 0x0000001F
482#define STATUS_SIGNALING_MISSING_ENDPOINTS_IN_GET_ENDPOINT STATUS_SIGNALING_BASE + 0x00000020
483#define STATUS_SIGNALING_INVALID_MESSAGE_TYPE STATUS_SIGNALING_BASE + 0x00000021
484#define STATUS_SIGNALING_INVALID_SIGNALING_MESSAGE_VERSION STATUS_SIGNALING_BASE + 0x00000022
485#define STATUS_SIGNALING_NO_PEER_CLIENT_ID_IN_MESSAGE STATUS_SIGNALING_BASE + 0x00000023
486#define STATUS_SIGNALING_MESSAGE_DELIVERY_FAILED STATUS_SIGNALING_BASE + 0x00000024
487#define STATUS_SIGNALING_MAX_MESSAGE_LEN_AFTER_ENCODING STATUS_SIGNALING_BASE + 0x00000025
488#define STATUS_SIGNALING_RECEIVE_BINARY_DATA_NOT_SUPPORTED STATUS_SIGNALING_BASE + 0x00000026
489#define STATUS_SIGNALING_RECEIVE_EMPTY_DATA_NOT_SUPPORTED STATUS_SIGNALING_BASE + 0x00000027
490#define STATUS_SIGNALING_RECEIVED_MESSAGE_LARGER_THAN_MAX_DATA_LEN STATUS_SIGNALING_BASE + 0x00000028
491#define STATUS_SIGNALING_INVALID_PAYLOAD_LEN_IN_MESSAGE STATUS_SIGNALING_BASE + 0x00000029
492#define STATUS_SIGNALING_NO_PAYLOAD_IN_MESSAGE STATUS_SIGNALING_BASE + 0x0000002A
493#define STATUS_SIGNALING_DUPLICATE_MESSAGE_BEING_SENT STATUS_SIGNALING_BASE + 0x0000002B
494#define STATUS_SIGNALING_ICE_TTL_LESS_THAN_GRACE_PERIOD STATUS_SIGNALING_BASE + 0x0000002C
495#define STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED STATUS_SIGNALING_BASE + 0x0000002D
496#define STATUS_SIGNALING_INVALID_MESSAGE_TTL_VALUE STATUS_SIGNALING_BASE + 0x0000002E
497#define STATUS_SIGNALING_ICE_CONFIG_REFRESH_FAILED STATUS_SIGNALING_BASE + 0x0000002F
498#define STATUS_SIGNALING_RECONNECT_FAILED STATUS_SIGNALING_BASE + 0x00000030
499#define STATUS_SIGNALING_DELETE_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000031
500#define STATUS_SIGNALING_INVALID_METRICS_VERSION STATUS_SIGNALING_BASE + 0x00000032
501#define STATUS_SIGNALING_INVALID_CLIENT_INFO_CACHE_FILE_PATH_LEN STATUS_SIGNALING_BASE + 0x00000033
502#define STATUS_SIGNALING_LWS_CALL_FAILED STATUS_SIGNALING_BASE + 0x00000034
503#define STATUS_SIGNALING_INVALID_STREAM_ARN_LENGTH STATUS_SIGNALING_BASE + 0x00000035
504#define STATUS_SIGNALING_MISMATCH_MEDIA_STORAGE_CONFIG STATUS_SIGNALING_BASE + 0x00000036
505#define STATUS_SIGNALING_UPDATE_MEDIA_STORAGE_CONFIG STATUS_SIGNALING_BASE + 0x00000037
506#define STATUS_SIGNALING_MEDIA_STORAGE_DISABLED STATUS_SIGNALING_BASE + 0x00000038
507#define STATUS_SIGNALING_INVALID_CHANNEL_ARN STATUS_SIGNALING_BASE + 0x00000039
508#define STATUS_SIGNALING_JOIN_SESSION_CALL_FAILED STATUS_SIGNALING_BASE + 0x0000004a
509#define STATUS_SIGNALING_JOIN_SESSION_CONNECTED_FAILED STATUS_SIGNALING_BASE + 0x0000004b
510#define STATUS_SIGNALING_DESCRIBE_MEDIA_CALL_FAILED STATUS_SIGNALING_BASE + 0x0000004c
511#define STATUS_SIGNALING_FREE_FROM_CALLBACK STATUS_SIGNALING_BASE + 0x0000004d
512
518
524#define STATUS_PEERCONNECTION_BASE STATUS_SIGNALING_BASE + 0x01000000
525#define STATUS_PEERCONNECTION_CREATE_ANSWER_WITHOUT_REMOTE_DESCRIPTION STATUS_PEERCONNECTION_BASE + 0x00000001
526#define STATUS_PEERCONNECTION_CODEC_INVALID STATUS_PEERCONNECTION_BASE + 0x00000002
527#define STATUS_PEERCONNECTION_CODEC_MAX_EXCEEDED STATUS_PEERCONNECTION_BASE + 0x00000003
528#define STATUS_PEERCONNECTION_EARLY_DNS_RESOLUTION_FAILED STATUS_PEERCONNECTION_BASE + 0x00000004
534
539#define STATUS_SCTP_BASE STATUS_PEERCONNECTION_BASE + 0x01000000
540#define STATUS_SCTP_SESSION_SETUP_FAILED STATUS_SCTP_BASE + 0x00000001
541#define STATUS_SCTP_INVALID_DCEP_PACKET STATUS_SCTP_BASE + 0x00000002
542#define STATUS_SCTP_SENDV_FAILED STATUS_SCTP_BASE + 0x00000003
548
553#define STATUS_RTCP_BASE STATUS_SCTP_BASE + 0x01000000
554#define STATUS_RTCP_INPUT_PACKET_TOO_SMALL STATUS_RTCP_BASE + 0x00000001
555#define STATUS_RTCP_INPUT_PACKET_INVALID_VERSION STATUS_RTCP_BASE + 0x00000002
556#define STATUS_RTCP_INPUT_PACKET_LEN_MISMATCH STATUS_RTCP_BASE + 0x00000003
557#define STATUS_RTCP_INPUT_NACK_LIST_INVALID STATUS_RTCP_BASE + 0x00000004
558#define STATUS_RTCP_INPUT_SSRC_INVALID STATUS_RTCP_BASE + 0x00000005
559#define STATUS_RTCP_INPUT_PARTIAL_PACKET STATUS_RTCP_BASE + 0x00000006
560#define STATUS_RTCP_INPUT_REMB_TOO_SMALL STATUS_RTCP_BASE + 0x00000007
561#define STATUS_RTCP_INPUT_REMB_INVALID STATUS_RTCP_BASE + 0x00000008
562#define STATUS_RTCP_PLI_NOT_NEGOTIATED STATUS_RTCP_BASE + 0x00000009
568
574#define STATUS_ROLLING_BUFFER_BASE STATUS_RTCP_BASE + 0x01000000
575#define STATUS_ROLLING_BUFFER_NOT_IN_RANGE STATUS_ROLLING_BUFFER_BASE + 0x00000001
581
590#define MAX_CHANNEL_NAME_LEN 256
591
595#define MAX_SIGNALING_CLIENT_ID_LEN 256
596
601#define MAX_ICE_CONFIG_USER_NAME_LEN 256
602
608#define MAX_ICE_CONFIG_USER_NAME_BUFFER_LEN (MAX_ICE_CONFIG_USER_NAME_LEN + 1)
609
615#define MAX_ICE_CONFIG_CREDENTIAL_LEN 256
616
622#define MAX_ICE_CONFIG_CREDENTIAL_BUFFER_LEN (MAX_ICE_CONFIG_CREDENTIAL_LEN + 1)
623
627#define MAX_SIGNALING_ENDPOINT_URI_LEN 512
628
632#define MAX_CONTROL_PLANE_URI_CHAR_LEN 256
633
637#define MAX_CORRELATION_ID_LEN 256
638
642#define MAX_ERROR_TYPE_STRING_LEN 256
643
647#define MAX_STATUS_CODE_STRING_LEN 8
648
652#define MAX_MESSAGE_DESCRIPTION_LEN 1024
653
662#ifdef KVS_SIGNALING_MESSAGE_LEN
663#define MAX_SESSION_DESCRIPTION_INIT_SDP_LEN ((KVS_SIGNALING_MESSAGE_LEN - 1024) * 3 / 4)
664#else
665#define MAX_SESSION_DESCRIPTION_INIT_SDP_LEN 25000
666#endif
667
671#define MAX_MEDIA_STREAM_ID_LEN 255
672
676#define MAX_RTCCONFIGURATION_CERTIFICATES 3
677
681#define MAX_MEDIA_STREAM_TRACK_ID_LEN 255
682
686#define MAX_ICE_CANDIDATE_INIT_CANDIDATE_LEN 255
687
691#define MAX_DATA_CHANNEL_NAME_LEN 255
692
696#define MAX_DATA_CHANNEL_PROTOCOL_LEN 255
697
706#ifdef KVS_SIGNALING_MESSAGE_LEN
707#define MAX_SIGNALING_MESSAGE_LEN KVS_SIGNALING_MESSAGE_LEN
708#else
709#define MAX_SIGNALING_MESSAGE_LEN 18750
710#endif
716
724#define PEER_CONNECTION_CURRENT_VERSION 0
725
729#define CHANNEL_INFO_CURRENT_VERSION 1
730
734#define SIGNALING_CLIENT_INFO_CURRENT_VERSION 2
735
739#define SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION 0
740
744#define SIGNALING_CLIENT_CURRENT_VERSION 1
745
749#define SIGNALING_CHANNEL_DESCRIPTION_CURRENT_VERSION 0
750
754#define SIGNALING_ICE_CONFIG_INFO_CURRENT_VERSION 0
755
759#define SIGNALING_MESSAGE_CURRENT_VERSION 0
760
764#define RTC_ICE_METRICS_CURRENT_VERSION 0
765
769#define RTC_STREAM_METRICS_CURRENT_VERSION 0
770
774#define SIGNALING_CLIENT_METRICS_CURRENT_VERSION 1
775
779#define PEER_CONNECTION_METRICS_CURRENT_VERSION 0
780
784#define ICE_AGENT_METRICS_CURRENT_VERSION 0
785
791
799#define MAX_ICE_CONFIG_URI_COUNT 4
800
804#define MAX_ICE_CONFIG_COUNT 5
805
811#define MAX_ICE_SERVERS_COUNT (MAX_ICE_CONFIG_COUNT * MAX_ICE_CONFIG_URI_COUNT + 1)
817
825#define SIGNALING_CREATE_TIMEOUT (10 * HUNDREDS_OF_NANOS_IN_A_SECOND)
826
830#define SIGNALING_CONNECT_STATE_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND)
831
835#define SIGNALING_DISCONNECT_STATE_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND)
836
840#define SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT (20 * HUNDREDS_OF_NANOS_IN_A_SECOND)
841
845#define SIGNALING_CONNECT_TIMEOUT (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
846
850#define THREADPOOL_MIN_THREADS 3
851
855#define THREADPOOL_MAX_THREADS 10
856
860#define WEBRTC_THREADPOOL_MIN_THREADS_ENV_VAR (PCHAR) "AWS_KVS_WEBRTC_THREADPOOL_MIN_THREADS"
861
865#define WEBRTC_THREADPOOL_MAX_THREADS_ENV_VAR (PCHAR) "AWS_KVS_WEBRTC_THREADPOOL_MAX_THREADS"
866
870#define USE_DUAL_STACK_ENDPOINTS_ENV_VAR ((PCHAR) "KVS_DUALSTACK_ENDPOINTS")
871
875#define DISABLE_IPV4_TURN_ENV_VAR ((PCHAR) "KVS_DISABLE_IPV4_TURN")
876#define DISABLE_IPV6_TURN_ENV_VAR ((PCHAR) "KVS_DISABLE_IPV6_TURN")
877
878#ifdef _WIN32
882#define SIGNALING_SEND_TIMEOUT (15 * HUNDREDS_OF_NANOS_IN_A_SECOND)
883#else
887#define SIGNALING_SEND_TIMEOUT (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
888#endif
892#define SIGNALING_DELETE_TIMEOUT (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
893
897#define SIGNALING_DEFAULT_MESSAGE_TTL_VALUE (60 * HUNDREDS_OF_NANOS_IN_A_SECOND)
898
899#define SIGNALING_JOIN_STORAGE_SESSION_WAIT_TIMEOUT (6 * HUNDREDS_OF_NANOS_IN_A_SECOND)
900
909#define MAX_OUTBOUND_FRAME_SIZE_BYTES (5 * 1024 * 1024)
910
914#define DEFAULT_JITTER_BUFFER_MAX_LATENCY (2000L * HUNDREDS_OF_NANOS_IN_A_MILLISECOND)
920#define SIGNALING_VALID_NAME_CHARS "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_.-"
921
925#define MAX_RTP_SEQUENCE_NUM ((UINT32) MAX_UINT16)
926
930#define MAX_RTP_TIMESTAMP ((UINT32) MAX_UINT32)
931
935#define KINESIS_VIDEO_STUN_URL_POSTFIX "amazonaws.com"
936#define KINESIS_VIDEO_STUN_URL_POSTFIX_CN "amazonaws.com.cn"
937#define KINESIS_VIDEO_STUN_URL_PREFIX "stun."
938#define KINESIS_VIDEO_STUN_URL_PREFIX_LENGTH 5
939#define KINESIS_VIDEO_STUN_URL "stun:stun.kinesisvideo.%s.%s:443"
940#define KINESIS_VIDEO_STUNS_URL "stuns:stun.kinesisvideo-fips.%s.%s:443"
941#define KINESIS_VIDEO_STUN_URL_WITHOUT_PORT "stun.kinesisvideo.%s.%s"
942#define KINESIS_VIDEO_STUNS_URL_WITHOUT_PORT "stun.kinesisvideo-fips.%s.%s"
943#define KINESIS_VIDEO_DUALSTACK_STUN_URL_POSTFIX "api.aws"
944#define KINESIS_VIDEO_DUALSTACK_STUN_URL_POSTFIX_CN "api.amazonwebservices.com.cn"
945
949#define SIGNALING_DEFAULT_SSL_PORT DEFAULT_SSL_PORT_NUMBER
950
954#define SIGNALING_DEFAULT_NON_SSL_PORT DEFAULT_NON_SSL_PORT_NUMBER
955
956/* CHK_LOG_ERR_NV has been replaced with CHK_LOG_ERR. */
957#define CHK_LOG_ERR_NV(condition) DLOGE("CHK_LOG_ERR_NV has been replaced with CHK_LOG_ERR");
958
962#define SIGNALING_STATES_DEFAULT_RETRY_COUNT 1
963
967#define SIGNALING_DEFAULT_API_CALL_CACHE_TTL (10 * HUNDREDS_OF_NANOS_IN_AN_HOUR)
968
972#define SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE 0
973
977#define CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE -1
978
984
988#ifndef INVALID_SIGNALING_CLIENT_HANDLE_VALUE
989#define INVALID_SIGNALING_CLIENT_HANDLE_VALUE ((SIGNALING_CLIENT_HANDLE) INVALID_PIC_HANDLE_VALUE)
990#endif
991
995#ifndef IS_VALID_SIGNALING_CLIENT_HANDLE
996#define IS_VALID_SIGNALING_CLIENT_HANDLE(h) ((h) != INVALID_SIGNALING_CLIENT_HANDLE_VALUE)
997#endif
998
1002
1022
1026typedef enum {
1029} SDP_TYPE;
1030
1038
1042typedef enum {
1050 // RTC_CODEC_MAX **MUST** be the last enum in the list **ALWAYS** and not assigned a value
1053
1065
1079
1089
1102
1133
1141
1150
1162
1190
1196
1207typedef VOID (*RtcOnFrame)(UINT64, PFrame);
1208
1216typedef VOID (*RtcOnBandwidthEstimation)(UINT64, DOUBLE);
1217
1233typedef VOID (*RtcOnSenderBandwidthEstimation)(UINT64, UINT32, UINT32, UINT32, UINT32, UINT64);
1234
1249
1259
1271
1285
1294
1304typedef VOID (*RtcOnPictureLoss)(UINT64);
1305
1317
1323typedef VOID (*RtcOnMessage)(UINT64, PRtcDataChannel, BOOL, PBYTE, UINT32);
1324
1330typedef VOID (*RtcOnOpen)(UINT64, PRtcDataChannel);
1331
1338typedef VOID (*RtcOnDataChannel)(UINT64, PRtcDataChannel);
1339
1345typedef VOID (*RtcOnIceCandidate)(UINT64, PCHAR);
1346
1351typedef BOOL (*IceSetInterfaceFilterFunc)(UINT64, PCHAR);
1352
1364
1379
1391
1404
1415
1427
1432typedef struct {
1433 // The certificate bits and the size
1436
1437 // The private key bits and the size in bytes
1441
1500
1532
1546
1557
1561typedef struct {
1562 UINT32 version;
1563
1565
1566 CHAR correlationId[MAX_CORRELATION_ID_LEN + 1];
1567
1568 CHAR peerClientId[MAX_SIGNALING_CLIENT_ID_LEN + 1];
1569
1570 UINT32 payloadLen;
1571
1572 CHAR payload[MAX_SIGNALING_MESSAGE_LEN + 1];
1574
1588
1610
1614typedef struct {
1615 UINT32 version;
1616
1618
1623
1624 PCHAR pRegion;
1626
1629
1631
1634
1636
1638
1640
1642
1644
1646
1651
1652 BOOL retry;
1653
1655
1656 UINT64 messageTtl;
1658
1659 UINT32 tagCount;
1660
1661 PTag pTags;
1662
1663 /* --- V1 members --- */
1664
1666
1670
1672
1674
1691
1692typedef struct {
1694 CHAR storageStreamArn[MAX_ARN_LEN + 1];
1714
1730typedef STATUS (*SignalingClientErrorReportFunc)(UINT64, STATUS, PCHAR, UINT32);
1731
1763
1767typedef struct {
1768 UINT32 version;
1769 CHAR channelArn[MAX_ARN_LEN + 1];
1770 CHAR channelName[MAX_CHANNEL_NAME_LEN + 1];
1773 CHAR updateVersion[MAX_UPDATE_VERSION_LEN + 1];
1775 UINT64 messageTtl;
1779
1788
1810
1829
1842
1853
1861
1869
1879
1900
1917
1929
1937PUBLIC_API STATUS freePeerConnection(PRtcPeerConnection*);
1938
1952
1963
1976
1988
1999
2010
2020
2030
2043
2056
2069
2079PUBLIC_API STATUS serializeSessionDescriptionInit(PRtcSessionDescriptionInit, PCHAR, PUINT32);
2080
2090PUBLIC_API STATUS deserializeSessionDescriptionInit(PCHAR, UINT32, PRtcSessionDescriptionInit);
2091
2101PUBLIC_API STATUS deserializeRtcIceCandidateInit(PCHAR, UINT32, PRtcIceCandidateInit);
2102
2115
2128
2139PUBLIC_API STATUS restartIce(PRtcPeerConnection);
2140
2150PUBLIC_API STATUS closePeerConnection(PRtcPeerConnection);
2151
2167
2181
2191PUBLIC_API STATUS transceiverOnFrame(PRtcRtpTransceiver, UINT64, RtcOnFrame);
2192
2203
2214
2230
2246PUBLIC_API STATUS transceiverSetFmtp(PRtcRtpTransceiver, PCHAR);
2247
2258PUBLIC_API STATUS freeTransceiver(PRtcRtpTransceiver*);
2259
2265PUBLIC_API STATUS initKvsWebRtc(VOID);
2266
2272PUBLIC_API STATUS deinitKvsWebRtc(VOID);
2273
2285
2295PUBLIC_API STATUS writeFrame(PRtcRtpTransceiver, PFrame);
2296
2303
2317PUBLIC_API STATUS addIceCandidate(PRtcPeerConnection, PCHAR);
2318
2336
2346PUBLIC_API STATUS dataChannelOnMessage(PRtcDataChannel, UINT64, RtcOnMessage);
2347
2357PUBLIC_API STATUS dataChannelOnOpen(PRtcDataChannel, UINT64, RtcOnOpen);
2358
2372PUBLIC_API STATUS dataChannelSend(PRtcDataChannel, BOOL, PBYTE, UINT32);
2373
2387PUBLIC_API STATUS discoverNatBehavior(PCHAR, NAT_BEHAVIOR*, NAT_BEHAVIOR*, IceSetInterfaceFilterFunc, UINT64);
2388
2397PUBLIC_API PCHAR getNatBehaviorStr(NAT_BEHAVIOR natBehavior);
2398
2412
2435
2448
2460
2475
2485
2496
2505
2515
2524PUBLIC_API STATUS signalingClientGetStateString(SIGNALING_CLIENT_STATE, PCHAR*);
2525
2543
2551
2559
2567
2586
2594PUBLIC_API STATUS createRtcCertificate(PRtcCertificate*);
2595
2603PUBLIC_API STATUS freeRtcCertificate(PRtcCertificate);
2604
2606#ifdef __cplusplus
2607}
2608#endif
2609#endif /* __KINESIS_VIDEO_WEBRTC_CLIENT_INCLUDE__ */
CHAR DOMString[255U+1]
DOMString type is used to store strings of size 256 bytes (inclusive of '\0' character.
Definition Stats.h:91
RTC_STATS_TYPE
Type of Stats object requested by the application Reference https://www.w3.org/TR/webrtc-stats/#rtcst...
Definition Stats.h:115
VOID(* RtcOnOpen)(UINT64, PRtcDataChannel)
Definition Include.h:1330
STATUS(* SignalingClientErrorReportFunc)(UINT64, STATUS, PCHAR, UINT32)
Definition Include.h:1730
struct TwccFeedback * PTwccFeedback
STATUS(* RtcOnPeerCongestionFeedback)(UINT64, PCongestionCtx)
Called when the SDK has computed congestion context from TWCC feedback. The application uses this to ...
Definition Include.h:1293
VOID(* RtcOnMessage)(UINT64, PRtcDataChannel, BOOL, PBYTE, UINT32)
RtcOnMessage is fired when a message is received for the DataChannel.
Definition Include.h:1323
STATUS(* SignalingClientMessageReceivedFunc)(UINT64, PReceivedSignalingMessage)
Definition Include.h:1713
VOID(* RtcOnDataChannel)(UINT64, PRtcDataChannel)
RtcOnDataChannel is fired when the remote PeerConnection creates a new DataChannel.
Definition Include.h:1338
struct __RtcDataChannel * PRtcDataChannel
VOID(* RtcOnSenderBandwidthEstimation)(UINT64, UINT32, UINT32, UINT32, UINT32, UINT64)
RtcOnSenderBandwidthEstimation is fired everytime a bandwidth estimation value is computed by sender....
Definition Include.h:1233
VOID(* RtcOnFrame)(UINT64, PFrame)
RtcOnFrame is fired everytime a frame is received from the remote peer. It is available via the RtpRe...
Definition Include.h:1207
STATUS(* RtcOnTwccFeedbackReceived)(UINT64, PTwccFeedback, UINT32, PTwccCongestionState)
Called when new TWCC feedback is available from the remote peer. Updates the current network congesti...
Definition Include.h:1284
struct TwccCongestionState * PTwccCongestionState
STATUS(* SignalingClientStateChangedFunc)(UINT64, SIGNALING_CLIENT_STATE)
Definition Include.h:1745
struct __RtcDataChannel RtcDataChannel
RtcDataChannel represents a bi-directional data channel between two peers.
VOID(* RtcOnIceCandidate)(UINT64, PCHAR)
RtcOnIceCandidate is fired when new iceCandidate is found. if PCHAR is NULL then candidate gathering ...
Definition Include.h:1345
BOOL(* IceSetInterfaceFilterFunc)(UINT64, PCHAR)
IceSetInterfaceFilterFunc is fired when a callback function to filter network interfaces is assigned....
Definition Include.h:1351
VOID(* RtcOnPictureLoss)(UINT64)
RtcOnPictureLoss is fired everytime a Picture Loss Indication (PLI) feedback message is received....
Definition Include.h:1304
VOID(* RtcOnConnectionStateChange)(UINT64, RTC_PEER_CONNECTION_STATE)
RtcOnConnectionStateChange is fired to report a change in peer connection state.
Definition Include.h:1358
struct CongestionCtx * PCongestionCtx
VOID(* RtcOnBandwidthEstimation)(UINT64, DOUBLE)
RtcOnBandwidthEstimation is fired everytime a bandwidth estimation value is computed....
Definition Include.h:1216
#define MAX_ICE_CONFIG_URI_COUNT
Definition Include.h:799
#define MAX_ICE_SERVERS_COUNT
Definition Include.h:811
#define MAX_MEDIA_STREAM_ID_LEN
Definition Include.h:671
#define MAX_ICE_CONFIG_CREDENTIAL_BUFFER_LEN
Definition Include.h:622
#define MAX_RTCCONFIGURATION_CERTIFICATES
Definition Include.h:676
#define MAX_DATA_CHANNEL_PROTOCOL_LEN
Definition Include.h:696
#define MAX_MESSAGE_DESCRIPTION_LEN
Definition Include.h:652
#define MAX_SESSION_DESCRIPTION_INIT_SDP_LEN
Definition Include.h:665
#define MAX_SIGNALING_MESSAGE_LEN
Definition Include.h:709
#define MAX_ICE_CANDIDATE_INIT_CANDIDATE_LEN
Definition Include.h:686
#define MAX_ERROR_TYPE_STRING_LEN
Definition Include.h:642
#define MAX_CORRELATION_ID_LEN
Definition Include.h:637
#define MAX_SIGNALING_CLIENT_ID_LEN
Definition Include.h:595
#define MAX_CHANNEL_NAME_LEN
Definition Include.h:590
#define MAX_ICE_CONFIG_USER_NAME_BUFFER_LEN
Definition Include.h:608
#define MAX_DATA_CHANNEL_NAME_LEN
Definition Include.h:691
RTC_PEER_CONNECTION_STATE
RTC_PEER_CONNECTION_STATE Stats of RTC peer connection.
Definition Include.h:1012
RTC_RTP_TRANSCEIVER_DIRECTION
RTC_RTP_TRANSCEIVER_DIRECTION indicates direction of a transceiver.
Definition Include.h:1071
SIGNALING_CLIENT_STATE
Defines different states a signaling client traverses.
Definition Include.h:1106
SIGNALING_CHANNEL_ROLE_TYPE
Channel role type.
Definition Include.h:1145
SIGNALING_CHANNEL_TYPE
Channel type as reported by the service.
Definition Include.h:1137
SIGNALING_MESSAGE_TYPE
Defines different signaling messages.
Definition Include.h:1093
RTC_CODEC
The enum specifies the codec types for audio and video tracks.
Definition Include.h:1042
ICE_TRANSPORT_POLICY
ICE_TRANSPORT_POLICY restrict which ICE candidates are used in a session.
Definition Include.h:1059
MEDIA_STREAM_TRACK_KIND
The enum specifies the type of track in the stream.
Definition Include.h:1034
SDP_TYPE
Definition Include.h:1026
enum SIGNALING_CLIENT_STATE * PSIGNALING_CLIENT_STATE
SIGNALING_API_CALL_CACHE_TYPE
Type of caching implementation to use with the signaling client.
Definition Include.h:1166
SIGNALING_CHANNEL_STATUS
Defines channel status as reported by the service.
Definition Include.h:1083
NAT_BEHAVIOR
Detected network environment.
Definition Include.h:1154
@ RTC_PEER_CONNECTION_STATE_NONE
Starting state of peer connection.
Definition Include.h:1013
@ RTC_PEER_CONNECTION_TOTAL_STATE_COUNT
This state indicates maximum number of Peer connection states.
Definition Include.h:1020
@ RTC_PEER_CONNECTION_STATE_DISCONNECTED
This state is set when ICE Agent is disconnected.
Definition Include.h:1017
@ RTC_PEER_CONNECTION_STATE_CONNECTING
This state is set when ICE agent checks connection.
Definition Include.h:1015
@ RTC_PEER_CONNECTION_STATE_FAILED
This state is set when ICE Agent transitions to fail state.
Definition Include.h:1018
@ RTC_PEER_CONNECTION_STATE_NEW
This state is set when ICE Agent is waiting for remote credential.
Definition Include.h:1014
@ RTC_PEER_CONNECTION_STATE_CLOSED
This state leads to termination of streaming session.
Definition Include.h:1019
@ RTC_PEER_CONNECTION_STATE_CONNECTED
This state is set when CIE Agent is ready.
Definition Include.h:1016
@ RTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE
This indicates that the peer can not send or receive data.
Definition Include.h:1076
@ RTC_RTP_TRANSCEIVER_DIRECTION_MAX
Sentinel for validation, keep last.
Definition Include.h:1077
@ RTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV
This indicates that peer can send and receive data.
Definition Include.h:1073
@ RTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY
This indicates that the peer can only send information.
Definition Include.h:1074
@ RTC_RTP_TRANSCEIVER_DIRECTION_UNINITIALIZED
Will use the default "sendrecv" after initialization.
Definition Include.h:1072
@ RTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY
This indicates that the peer can only receive information.
Definition Include.h:1075
@ SIGNALING_CLIENT_STATE_UNKNOWN
Starting state of signaling client.
Definition Include.h:1107
@ SIGNALING_CLIENT_STATE_JOIN_SESSION
Definition Include.h:1127
@ SIGNALING_CLIENT_STATE_DESCRIBE_MEDIA
Definition Include.h:1126
@ SIGNALING_CLIENT_STATE_GET_ENDPOINT
This state is set to provide an endpoint for sending/receiving messages.
Definition Include.h:1114
@ SIGNALING_CLIENT_STATE_CONNECTED
On transitioning to this state, the timeout on the state machine is reset.
Definition Include.h:1121
@ SIGNALING_CLIENT_STATE_NEW
This state indicates a new client state.
Definition Include.h:1108
@ SIGNALING_CLIENT_STATE_READY
Definition Include.h:1117
@ SIGNALING_CLIENT_STATE_JOIN_SESSION_WAITING
Definition Include.h:1128
@ SIGNALING_CLIENT_STATE_GET_ICE_CONFIG
Definition Include.h:1115
@ SIGNALING_CLIENT_STATE_JOIN_SESSION_CONNECTED
Definition Include.h:1129
@ SIGNALING_CLIENT_STATE_DESCRIBE
Definition Include.h:1110
@ SIGNALING_CLIENT_STATE_MAX_VALUE
This state indicates maximum number of signaling client states.
Definition Include.h:1130
@ SIGNALING_CLIENT_STATE_DELETE
This state transition happens when the application calls signalingClientDeleteSync API.
Definition Include.h:1123
@ SIGNALING_CLIENT_STATE_DISCONNECTED
This state transition happens either from connect or connected state.
Definition Include.h:1122
@ SIGNALING_CLIENT_STATE_GET_CREDENTIALS
This state involves getting a token using AWS credentials.
Definition Include.h:1109
@ SIGNALING_CLIENT_STATE_DELETED
Definition Include.h:1124
@ SIGNALING_CLIENT_STATE_CREATE
Definition Include.h:1112
@ SIGNALING_CLIENT_STATE_CONNECTING
Definition Include.h:1119
@ SIGNALING_CHANNEL_ROLE_TYPE_MASTER
Channel role is master.
Definition Include.h:1147
@ SIGNALING_CHANNEL_ROLE_TYPE_VIEWER
Channel role is viewer.
Definition Include.h:1148
@ SIGNALING_CHANNEL_ROLE_TYPE_UNKNOWN
Channel role is unknown.
Definition Include.h:1146
@ SIGNALING_CHANNEL_TYPE_UNKNOWN
Channel type is unknown.
Definition Include.h:1138
@ SIGNALING_CHANNEL_TYPE_SINGLE_MASTER
Channel type is master.
Definition Include.h:1139
@ SIGNALING_MESSAGE_TYPE_STATUS_RESPONSE
This message notifies the awaiting send after checking for failure in message delivery.
Definition Include.h:1099
@ SIGNALING_MESSAGE_TYPE_RECONNECT_ICE_SERVER
This message moves signaling state back to get ICE config.
Definition Include.h:1098
@ SIGNALING_MESSAGE_TYPE_OFFER
This message type leads to checks in existence of peer id and payload in the message.
Definition Include.h:1094
@ SIGNALING_MESSAGE_TYPE_ANSWER
This message type leads to checks in length/existence of payload in the message.
Definition Include.h:1095
@ SIGNALING_MESSAGE_TYPE_UNKNOWN
This message type is set when the type of message received is unknown.
Definition Include.h:1100
@ SIGNALING_MESSAGE_TYPE_GO_AWAY
This message moves signaling back to describe state.
Definition Include.h:1097
@ SIGNALING_MESSAGE_TYPE_ICE_CANDIDATE
This message type leads to checks in length/existence of payload in the message.
Definition Include.h:1096
@ RTC_CODEC_ALAW
ALAW audio codec.
Definition Include.h:1047
@ RTC_CODEC_VP8
VP8 video codec.
Definition Include.h:1045
@ RTC_CODEC_MULAW
MULAW audio codec.
Definition Include.h:1046
@ RTC_CODEC_UNKNOWN
Definition Include.h:1048
@ RTC_CODEC_H265
H265 video codec.
Definition Include.h:1049
@ RTC_CODEC_OPUS
OPUS audio codec.
Definition Include.h:1044
@ RTC_CODEC_MAX
Placeholder for max number of supported codecs.
Definition Include.h:1051
@ RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE
H264 video codec.
Definition Include.h:1043
@ ICE_TRANSPORT_POLICY_ALL
The ICE Agent can use any type of candidate when this value is specified.
Definition Include.h:1063
@ ICE_TRANSPORT_POLICY_RELAY
Definition Include.h:1060
@ MEDIA_STREAM_TRACK_KIND_VIDEO
Video track. Track information is set before add transceiver.
Definition Include.h:1036
@ MEDIA_STREAM_TRACK_KIND_AUDIO
Audio track. Track information is set before add transceiver.
Definition Include.h:1035
@ SDP_TYPE_ANSWER
SessionDescription is type answer.
Definition Include.h:1028
@ SDP_TYPE_OFFER
SessionDescription is type offer.
Definition Include.h:1027
@ SIGNALING_API_CALL_CACHE_TYPE_DESCRIBE_GETENDPOINT
Definition Include.h:1169
@ SIGNALING_API_CALL_CACHE_TYPE_NONE
No caching. The calls to the backend will be made for every API.
Definition Include.h:1167
@ SIGNALING_API_CALL_CACHE_TYPE_FILE
Definition Include.h:1178
@ SIGNALING_API_CALL_CACHE_TYPE_FILE_EXCEPT_DESCRIBE_MEDIA
Definition Include.h:1184
@ SIGNALING_CHANNEL_STATUS_CREATING
Signaling channel is being created.
Definition Include.h:1084
@ SIGNALING_CHANNEL_STATUS_ACTIVE
Signaling channel is active.
Definition Include.h:1085
@ SIGNALING_CHANNEL_STATUS_DELETING
Signaling channel is being deleted.
Definition Include.h:1087
@ SIGNALING_CHANNEL_STATUS_UPDATING
Signaling channel is being updated.
Definition Include.h:1086
@ NAT_BEHAVIOR_NO_UDP_CONNECTIVITY
No UDP connectvity.
Definition Include.h:1157
@ NAT_BEHAVIOR_ENDPOINT_INDEPENDENT
Nat behavior is irregardless of change in external address.
Definition Include.h:1158
@ NAT_BEHAVIOR_NOT_BEHIND_ANY_NAT
Host is not behind any NAT.
Definition Include.h:1156
@ NAT_BEHAVIOR_PORT_DEPENDENT
Nat behavior changes when external address or port is changed.
Definition Include.h:1160
@ NAT_BEHAVIOR_NONE
Dummy placeholder.
Definition Include.h:1155
@ NAT_BEHAVIOR_ADDRESS_DEPENDENT
Nat behavior changes changes when external address is changed, but remain same if only port is change...
Definition Include.h:1159
PUBLIC_API STATUS initKvsWebRtc(VOID)
Initializes global state needed for all RtcPeerConnections. It must only be called once.
Definition PeerConnection.c:1933
PUBLIC_API STATUS setLocalDescription(PRtcPeerConnection, PRtcSessionDescriptionInit)
Instructs the RtcPeerConnection to apply the supplied RtcSessionDescriptionInit as the local descript...
Definition PeerConnection.c:1695
PUBLIC_API STATUS freeTransceiver(PRtcRtpTransceiver *)
Frees the previously created transceiver object.
Definition Rtp.c:123
PUBLIC_API STATUS dataChannelSend(PRtcDataChannel, BOOL, PBYTE, UINT32)
Send data via the PRtcDataChannel.
Definition DataChannel.c:57
PUBLIC_API STATUS transceiverSetFmtp(PRtcRtpTransceiver, PCHAR)
Override the H264 fmtp string advertised in SDP offers and answers for this transceiver.
Definition Rtp.c:220
PUBLIC_API STATUS addIceCandidate(PRtcPeerConnection, PCHAR)
Provides a remote candidate to the ICE Agent.
Definition PeerConnection.c:1857
PUBLIC_API STATUS createOffer(PRtcPeerConnection, PRtcSessionDescriptionInit)
Populate the provided answer that contains an RFC 3264 offer with the supported configurations for th...
Definition PeerConnection.c:1624
PUBLIC_API STATUS peerConnectionGetCurrentLocalDescription(PRtcPeerConnection, PRtcSessionDescriptionInit)
Definition PeerConnection.c:1350
PUBLIC_API STATUS signalingClientGetIceConfigInfoCount(SIGNALING_CLIENT_HANDLE, PUINT32)
Gets the retrieved ICE configuration information object count.
Definition Client.c:281
PUBLIC_API STATUS peerConnectionUpdateIceServers(PRtcPeerConnection, PRtcIceServer, UINT32)
Dynamically update the ICE servers for an existing peer connection.
Definition PeerConnection.c:2151
PUBLIC_API STATUS dataChannelOnOpen(PRtcDataChannel, UINT64, RtcOnOpen)
Set a callback for data channel open.
Definition DataChannel.c:92
PUBLIC_API STATUS createSignalingClientSync(PSignalingClientInfo, PChannelInfo, PSignalingClientCallbacks, PAwsCredentialProvider, PSIGNALING_CLIENT_HANDLE)
Creates a Signaling client and returns a handle to it.
Definition Client.c:55
PUBLIC_API STATUS peerConnectionOnSenderBandwidthEstimation(PRtcPeerConnection, UINT64, RtcOnSenderBandwidthEstimation)
Set a callback for transport-wide sender bandwidth estimation results.
Definition PeerConnection.c:1292
PUBLIC_API STATUS writeFrame(PRtcRtpTransceiver, PFrame)
Packetizes and sends media via the configuration specified by the RtcRtpTransceiver.
Definition Rtp.c:286
PUBLIC_API STATUS peerConnectionOnDataChannel(PRtcPeerConnection, UINT64, RtcOnDataChannel)
Definition PeerConnection.c:1241
PUBLIC_API STATUS freePeerConnection(PRtcPeerConnection *)
Free a RtcPeerConnection.
Definition PeerConnection.c:1103
PUBLIC_API STATUS setRemoteDescription(PRtcPeerConnection, PRtcSessionDescriptionInit)
Instructs the RtcPeerConnection to apply the supplied RtcSessionDescriptionInit as the remote descrip...
Definition PeerConnection.c:1407
PUBLIC_API STATUS rtcPeerConnectionGetMetrics(PRtcPeerConnection, PRtcRtpTransceiver, PRtcStats)
Get the relevant/all metrics based on the RTCStatsType field. This does not include any signaling rel...
Definition Metrics.c:225
PUBLIC_API STATUS setOnPeerCongestionFeedbackFn(PRtcPeerConnection, UINT64, RtcOnPeerCongestionFeedback)
Configure a callback invoked when the SDK has congestion context ready for the application....
Definition PeerConnection.c:2260
PUBLIC_API PCHAR getNatBehaviorStr(NAT_BEHAVIOR natBehavior)
Return the string representation for each NAT_BEHAVIOR enum.
Definition NatBehaviorDiscovery.c:369
PUBLIC_API STATUS peerConnectionOnIceCandidate(PRtcPeerConnection, UINT64, RtcOnIceCandidate)
Set a callback when new Ice collects new local candidate.
Definition PeerConnection.c:1216
PUBLIC_API STATUS addTransceiver(PRtcPeerConnection, PRtcMediaStreamTrack, PRtcRtpTransceiverInit, PRtcRtpTransceiver *)
Create a new RtcRtpTransceiver and add it to the set of transceivers.
Definition PeerConnection.c:1725
PUBLIC_API STATUS signalingClientDisconnectSync(SIGNALING_CLIENT_HANDLE)
Disconnects the signaling client.
Definition Client.c:247
PUBLIC_API STATUS createRtcCertificate(PRtcCertificate *)
Creates an RtcCertificate object.
Definition Crypto.c:60
PUBLIC_API STATUS serializeSessionDescriptionInit(PRtcSessionDescriptionInit, PCHAR, PUINT32)
Create a JSON string from RtcSessionDescriptionInit.
Definition SessionDescription.c:28
PUBLIC_API STATUS transceiverSendPictureLoss(PRtcRtpTransceiver)
Send a Picture Loss Indication (PLI) to ask the remote sender for a new keyframe.
Definition Rtcp.c:837
PUBLIC_API STATUS discoverNatBehavior(PCHAR, NAT_BEHAVIOR *, NAT_BEHAVIOR *, IceSetInterfaceFilterFunc, UINT64)
Use the process described in https://tools.ietf.org/html/rfc5780#section-4.3 to discover NAT behavior...
Definition NatBehaviorDiscovery.c:262
PUBLIC_API STATUS createDataChannel(PRtcPeerConnection, PCHAR, PRtcDataChannelInit, PRtcDataChannel *)
createDataChannel creates a new RtcDataChannel object with the given label.
Definition DataChannel.c:10
PUBLIC_API STATUS createAnswer(PRtcPeerConnection, PRtcSessionDescriptionInit)
Populate the provided answer that contains an RFC 3264 answer with the supported configurations for t...
Definition PeerConnection.c:1666
PUBLIC_API STATUS peerConnectionGetMetrics(PRtcPeerConnection, PPeerConnectionMetrics)
Get peer connection related metrics.
Definition PeerConnection.c:2179
PUBLIC_API STATUS dataChannelOnMessage(PRtcDataChannel, UINT64, RtcOnMessage)
Set a callback for data channel message.
Definition DataChannel.c:75
PUBLIC_API STATUS transceiverOnPictureLoss(PRtcRtpTransceiver, UINT64, RtcOnPictureLoss)
Set a callback for picture loss packet (PLI)
Definition Rtp.c:242
PUBLIC_API STATUS signalingClientGetIceConfigInfo(SIGNALING_CLIENT_HANDLE, UINT32, PIceConfigInfo *)
Gets the ICE configuration information object given its index.
Definition Client.c:298
PUBLIC_API STATUS signalingClientGetStateString(SIGNALING_CLIENT_STATE, PCHAR *)
Definition Client.c:343
PUBLIC_API STATUS closePeerConnection(PRtcPeerConnection)
Close the underlying DTLS session and IceAgent connection. Trigger RtcOnConnectionStateChange to RTC_...
Definition PeerConnection.c:1896
PUBLIC_API STATUS signalingClientFetchSync(SIGNALING_CLIENT_HANDLE)
Fetches all assets needed to ready the state machine before attempting to connect....
Definition Client.c:183
PUBLIC_API STATUS peerConnectionGetLocalDescription(PRtcPeerConnection, PRtcSessionDescriptionInit)
Definition PeerConnection.c:1318
PUBLIC_API STATUS transceiverOnBandwidthEstimation(PRtcRtpTransceiver, UINT64, RtcOnBandwidthEstimation)
Set a callback for bandwidth estimation results.
Definition Rtp.c:203
PUBLIC_API STATUS transceiverOnFrame(PRtcRtpTransceiver, UINT64, RtcOnFrame)
Set a callback for transceiver frame.
Definition Rtp.c:186
PUBLIC_API STATUS configureTransceiverRollingBuffer(PRtcRtpTransceiver, PRtcMediaStreamTrack, DOUBLE, DOUBLE)
Set up rolling buffer configuration - max duration of media to store (sec) and expected max bitrate (...
Definition PeerConnection.c:1712
PUBLIC_API STATUS deserializeSessionDescriptionInit(PCHAR, UINT32, PRtcSessionDescriptionInit)
Parses a JSON string and returns an allocated PSessionDescriptionInit.
Definition SessionDescription.c:87
PUBLIC_API STATUS signalingClientGetCurrentState(SIGNALING_CLIENT_HANDLE, PSIGNALING_CLIENT_STATE)
Gets the Signaling client current state.
Definition Client.c:315
PUBLIC_API STATUS updateEncoderStats(PRtcRtpTransceiver, PRtcEncoderStats)
call this function to update stats which depend on external encoder
Definition Rtp.c:259
PUBLIC_API STATUS iceAgentGetMetrics(PRtcPeerConnection, PKvsIceAgentMetrics)
Get peer connection related metrics.
Definition PeerConnection.c:2215
PUBLIC_API STATUS freeRtcCertificate(PRtcCertificate)
Frees previously generated RtcCertificate object.
Definition Crypto.c:102
PUBLIC_API STATUS signalingClientConnectSync(SIGNALING_CLIENT_HANDLE)
Connects the signaling client to the web socket in order to send/receive messages.
Definition Client.c:164
PUBLIC_API STATUS signalingClientGetMetrics(SIGNALING_CLIENT_HANDLE, PSignalingClientMetrics)
Get signaling related metrics.
Definition Client.c:423
PUBLIC_API STATUS signalingClientDeleteSync(SIGNALING_CLIENT_HANDLE)
Deletes the signaling channel referenced by SIGNALING_CLIENT_HANDLE.
Definition Client.c:264
PUBLIC_API STATUS createPeerConnection(PRtcConfiguration, PRtcPeerConnection *)
Initialize a RtcPeerConnection with the provided Configuration.
Definition PeerConnection.c:999
PUBLIC_API STATUS restartIce(PRtcPeerConnection)
Instructs the RtcPeerConnection that ICE should be restarted. Subsequent calls to createOffer will cr...
Definition PeerConnection.c:1874
PUBLIC_API NullableBool canTrickleIceCandidates(PRtcPeerConnection)
The canTrickleIceCandidates attribute indicates whether the remote peer is able to accept trickled IC...
Definition PeerConnection.c:1914
PUBLIC_API STATUS deinitKvsWebRtc(VOID)
Deinitializes global state needed for all RtcPeerConnections. It must only be called once.
Definition PeerConnection.c:2016
PUBLIC_API STATUS signalingClientSendMessageSync(SIGNALING_CLIENT_HANDLE, PSignalingMessage)
Send a message through a Signaling client.
Definition Client.c:147
PUBLIC_API STATUS peerConnectionOnConnectionStateChange(PRtcPeerConnection, UINT64, RtcOnConnectionStateChange)
Definition PeerConnection.c:1266
PUBLIC_API STATUS setOnTwccFeedbackReceived(PRtcPeerConnection, UINT64, RtcOnTwccFeedbackReceived)
Configure a custom TWCC feedback received callback. When TWCC feedback arrives from the remote peer,...
Definition PeerConnection.c:2234
PUBLIC_API STATUS addSupportedCodec(PRtcPeerConnection, RTC_CODEC)
Adds to the list of codecs we support receiving.
Definition PeerConnection.c:1827
PUBLIC_API STATUS deserializeRtcIceCandidateInit(PCHAR, UINT32, PRtcIceCandidateInit)
Parses a JSON string and populates a PRtcIceCandidateInit.
Definition SessionDescription.c:1802
PUBLIC_API STATUS freeSignalingClient(PSIGNALING_CLIENT_HANDLE)
Frees the Signaling client object.
Definition Client.c:124
struct SignalingClientCallbacks * PSignalingClientCallbacks
struct MediaStorageConfig * PMediaStorageConfig
struct SignalingClientInfo * PSignalingClientInfo
struct RtcIceServer * PRtcIceServer
struct RtcSessionDescriptionInit * PRtcSessionDescriptionInit
struct RtcRtpTransceiverInit * PRtcRtpTransceiverInit
struct KvsRtcConfiguration * PKvsRtcConfiguration
struct RtcRtpTransceiver * PRtcRtpTransceiver
struct RtcPeerConnection * PRtcPeerConnection
struct RtcMediaStreamTrack * PRtcMediaStreamTrack
struct RtcCertificate * PRtcCertificate
struct ReceivedSignalingMessage * PReceivedSignalingMessage
struct RtcConfiguration * PRtcConfiguration
struct ChannelInfo * PChannelInfo
struct SignalingMessage * PSignalingMessage
struct RtcDataChannelInit * PRtcDataChannelInit
struct RtcIceCandidateInit * PRtcIceCandidateInit
struct RtcRtpReceiver * PRtcRtpReceiver
struct SignalingChannelDescription * PSignalingChannelDescription
struct IceConfigInfo * PIceConfigInfo
#define MAX_ICE_CONFIG_URI_LEN
Definition Stats.h:30
#define MAX_ICE_CONFIG_URI_BUFFER_LEN
Definition Stats.h:37
struct KvsIceAgentMetrics * PKvsIceAgentMetrics
struct RtcStreamMetrics * PRtcStreamMetrics
struct PeerConnectionMetrics * PPeerConnectionMetrics
struct RtcEncoderStats * PRtcEncoderStats
struct SignalingClientMetrics * PSignalingClientMetrics
struct RtcStats * PRtcStats
struct RtcIceMetrics * PRtcIceMetrics
UINT64 filterCustomData
Custom Data that can be populated by the developer while developing filter function.
Definition Include.h:1477
PCHAR pRegion
Definition Include.h:1624
UINT32 tagCount
Number of tags associated with the stream.
Definition Include.h:1659
PCHAR pKmsKeyId
Optional KMS key id ARN. Maximum length is defined by MAX_ARN_LEN+1.
Definition Include.h:1639
UINT32 uriCount
Number of Ice URI objects.
Definition Include.h:1686
MEDIA_STREAM_TRACK_KIND kind
Kind of track - audio or video.
Definition Include.h:1389
BOOL retry
Flag determines if a retry of the network calls is to be done on errors up to max retry times.
Definition Include.h:1652
UINT64 signalingEndTime
Definition Include.h:1849
BOOL storageStatus
Indicate the association between channelArn and storageStreamArn.
Definition Include.h:1693
UINT32 packetSize
Size of the packet sent (bytes)
Definition Include.h:1247
RtcIceServerStats rtcIceServerStats
Server related stats. Reference in Stats.h.
Definition Include.h:1824
PCHAR pCertPath
Optional certificate path. Maximum length is defined by MAX_PATH_LEN+1.
Definition Include.h:1630
UINT32 version
Version of peer connection structure.
Definition Include.h:1377
SignalingClientStats signalingClientStats
Signaling client metrics stats. Reference in Stats.h.
Definition Include.h:1851
UINT64 SIGNALING_CLIENT_HANDLE
Definition of the signaling client handle.
Definition Include.h:982
UINT32 signalingMessagesMinimumThreads
Unused field post v1.8.1.
Definition Include.h:1607
UINT32 sendBufSize
Socket send buffer length. Item larger then this size will get dropped. Use system default if 0.
Definition Include.h:1475
BOOL iceServersFinal
Definition Include.h:1494
BOOL disableNonRoutablePeersFilterForRelay
Definition Include.h:1489
UINT32 version
Version of the SignalingChannelDescription struct.
Definition Include.h:1768
UINT32 version
Current version of the structure.
Definition Include.h:1562
UINT32 version
Current version of the structure.
Definition Include.h:1756
UINT32 certificateSize
Size of certificate in bytes (optional)
Definition Include.h:1435
TwccCongestionState congestionState
Current congestion state.
Definition Include.h:1269
RtcRemoteInboundRtpStreamStats rtcInboundStats
Inbound RTP Stats. Reference in Stats.h.
Definition Include.h:1838
UINT32 signalingMessagesMaximumThreads
Unused field post v1.8.1.
Definition Include.h:1608
PTag pTags
Stream tags array.
Definition Include.h:1661
UINT32 iceLocalCandidateGatheringTimeout
Definition Include.h:1455
BOOL reserved
Reserved field for compatibility.
Definition Include.h:1645
UINT64 messageTtl
Definition Include.h:1775
PCHAR pChannelArn
Definition Include.h:1619
KvsIceAgentStats kvsIceAgentStats
ICE agent metrics. Reference in Stats.h.
Definition Include.h:1859
NullableUint16 maxRetransmits
Control number of times a channel retransmits data if not delivered successfully.
Definition Include.h:1800
ICE_TRANSPORT_POLICY iceTransportPolicy
Indicates which candidates the ICE Agent is allowed to use.
Definition Include.h:1508
UINT32 id
Definition Include.h:1313
SIGNALING_CHANNEL_TYPE channelType
Channel type when creating.
Definition Include.h:1641
SignalingClientErrorReportFunc errorReportFn
Error reporting function. This is an optional member.
Definition Include.h:1759
RtcIceCandidatePairStats rtcIceCandidatePairStats
Candidate pair stats. Reference in Stats.h.
Definition Include.h:1827
RtcTransportStats rtcTransportStats
Transport stats. Reference in Stats.h.
Definition Include.h:1840
UINT64 signalingCallTime
Definition Include.h:1850
UINT64 duration
Time window for this feedback (hundreds of nanos)
Definition Include.h:1268
RTC_CODEC codec
non-standard, codec that the track is using
Definition Include.h:1386
SDP_TYPE type
Indicates an offer/answer SDP type.
Definition Include.h:1540
RtcIceCandidateStats localRtcIceCandidateStats
Local candidate stats. Reference in Stats.h.
Definition Include.h:1825
KvsRtcConfiguration kvsRtcConfiguration
Non-standard configuration options.
Definition Include.h:1510
RTC_RTP_TRANSCEIVER_DIRECTION direction
Transceiver direction - SENDONLY, RECVONLY, SENDRECV.
Definition Include.h:1786
UINT64 cachingPeriod
Definition Include.h:1647
UINT32 version
Version of the structure.
Definition Include.h:1615
UINT32 version
Version of the struct.
Definition Include.h:1684
RtcOutboundRtpStreamStats rtcOutboundStats
Outbound RTP Stats. Reference in Stats.h.
Definition Include.h:1839
RTC_RTP_TRANSCEIVER_DIRECTION direction
Transceiver direction.
Definition Include.h:1412
UINT16 bitDepth
Only valid for video. bits per pixel (24, 30, 36), note it's not per channel but per pixel.
Definition Include.h:1890
UINT64 rxPackets
Packets reported as received.
Definition Include.h:1267
KvsRetryStrategyCallbacks signalingRetryStrategyCallbacks
Retry strategy callbacks used while creating signaling client.
Definition Include.h:1603
SignalingClientStateChangedFunc stateChangeFn
Signaling client state change callback.
Definition Include.h:1760
BOOL negotiated
Definition Include.h:1802
UINT32 loggingLevel
Definition Include.h:1595
UINT32 stateMachineRetryCountReadOnly
Definition Include.h:1605
PCHAR pUserAgent
Combined user agent. Maximum length is defined by MAX_USER_AGENT_LEN+1.
Definition Include.h:1637
UINT16 width
Only valid for video.
Definition Include.h:1888
SIGNALING_CHANNEL_STATUS channelStatus
Current channel status as reported by the service.
Definition Include.h:1771
BOOL useMediaStorage
use the feature of media storage.
Definition Include.h:1671
UINT16 twccSeqNum
Transport-wide sequence number.
Definition Include.h:1244
SIGNALING_CHANNEL_TYPE channelType
Channel type as reported by the service.
Definition Include.h:1772
SERVICE_CALL_RESULT statusCode
Response status code.
Definition Include.h:1582
RtcRtpReceiver receiver
RtcRtpReceiver that has track specific information.
Definition Include.h:1413
RtcMediaStreamTrack track
Track with details of codec, trackId, streamId and track kind.
Definition Include.h:1402
UINT32 version
Structure version.
Definition Include.h:1847
UINT64 ttl
TTL of the configuration is 100ns.
Definition Include.h:1685
UINT64 creationTime
Timestamp of when the channel gets created.
Definition Include.h:1777
UINT64 messageTtl
Definition Include.h:1656
UINT32 version
Structure version.
Definition Include.h:1837
BOOL asyncIceServerConfig
Definition Include.h:1667
PeerConnectionStats peerConnectionStats
Peer connection metrics stats. Reference in Stats.h.
Definition Include.h:1867
BOOL voiceActivity
Only valid for audio. TRUE if last audio packet contained voice.
Definition Include.h:1892
SIGNALING_MESSAGE_TYPE messageType
Type of signaling message.
Definition Include.h:1564
UINT32 version
Version of the structure.
Definition Include.h:1593
PBYTE pCertificate
Certificate bits.
Definition Include.h:1434
BOOL generateRSACertificate
Definition Include.h:1472
UINT32 encodeTimeMsec
milliseconds spent encoding frames since last encoder update
Definition Include.h:1891
UINT32 privateKeySize
Size of private key in bytes (optional)
Definition Include.h:1439
RTC_STATS_TYPE requestedTypeOfStats
Type of stats requested. Set to RTC_ALL to get all supported stats.
Definition Include.h:1876
UINT64 signalingStartTime
Definition Include.h:1848
BOOL useTrickleIce
Indicates if an offer should set trickle ice.
Definition Include.h:1541
UINT64 rxBytes
Bytes reported as received.
Definition Include.h:1265
DOUBLE delayTrend
Definition Include.h:1254
UINT64 customData
Custom data passed by the caller.
Definition Include.h:1757
BOOL disableSenderSideBandwidthEstimation
Definition Include.h:1482
PCHAR cacheFilePath
Definition Include.h:1598
PCHAR pControlPlaneUrl
Definition Include.h:1627
SIGNALING_CHANNEL_ROLE_TYPE channelRoleType
Channel role type for the endpoint - master/viewer.
Definition Include.h:1643
SIGNALING_API_CALL_CACHE_TYPE cachingPolicy
Backend API call caching policy.
Definition Include.h:1665
UINT32 iceConnectionCheckTimeout
Definition Include.h:1458
PBYTE pPrivateKey
Private key bit.
Definition Include.h:1438
GetCurrentTimeFunc getCurrentTimeFn
callback to override system time, used for testing clock skew
Definition Include.h:1761
UINT32 targetBitrate
Definition Include.h:1884
NullableUint16 maxPacketLifeTime
Definition Include.h:1797
UINT32 iceCandidateNominationTimeout
Definition Include.h:1461
UINT64 recvTime
RTP packet reported receive time in hundreds of nanos (remote clock, reconstructed)
Definition Include.h:1246
UINT64 sendTime
RTP packet send time in hundreds of nanos (local clock)
Definition Include.h:1245
PCHAR pStorageStreamArn
Definition Include.h:1621
UINT32 payloadLen
Optional payload length. If 0, the length will be calculated.
Definition Include.h:1570
BOOL ordered
Decides the order in which data is sent. If true, data is sent in order.
Definition Include.h:1796
UINT32 iceConnectionCheckPollingInterval
Definition Include.h:1465
UINT64 txPackets
Packets sent over the transport.
Definition Include.h:1266
CHAR name[255+1]
Define name of data channel. Max length is 256 characters.
Definition Include.h:1312
UINT32 version
Structure version.
Definition Include.h:1858
PCHAR pChannelName
Name of the signaling channel name. Maximum length is defined by MAX_CHANNEL_NAME_LEN + 1.
Definition Include.h:1617
SignalingMessage signalingMessage
Definition Include.h:1579
UINT64 timestamp
Timestamp of request for stats.
Definition Include.h:1875
PCHAR pCustomUserAgent
Optional custom user agent name. Maximum length is defined by MAX_USER_AGENT_LEN+1.
Definition Include.h:1635
SIGNALING_CLIENT_HANDLE * PSIGNALING_CLIENT_HANDLE
Definition Include.h:983
UINT32 version
Structure version.
Definition Include.h:1823
UINT16 height
Only valid for video.
Definition Include.h:1889
IceSetInterfaceFilterFunc iceSetInterfaceFilterFunc
Definition Include.h:1479
INT32 generatedCertificateBits
Definition Include.h:1468
UINT16 maximumTransmissionUnit
Definition Include.h:1450
SignalingClientMessageReceivedFunc messageReceivedFn
Callback registration for received SDP.
Definition Include.h:1758
UINT64 txBytes
Bytes sent over the transport.
Definition Include.h:1264
BOOL reconnect
Flag determines if reconnection should be attempted on connection drop.
Definition Include.h:1654
PCHAR pUserAgentPostfix
Definition Include.h:1632
INT32 signalingClientCreationMaxRetryAttempts
Max attempts to create signaling client before returning error to the caller.
Definition Include.h:1604
UINT32 version
Structure version.
Definition Include.h:1866
RtcStatsObject rtcStatsObject
Object that is populated by the SDK on request.
Definition Include.h:1877
RtcIceCandidateStats remoteRtcIceCandidateStats
Remote candidate stats. Reference in Stats.h.
Definition Include.h:1826
DOMString encoderImplementation
encoder name eg "libvpx" or "x264"
Definition Include.h:1893
Contains all signaling channel related information.
Definition Include.h:1614
Context provided to the bandwidth controller callback.
Definition Include.h:1263
ICE configuration information struct.
Definition Include.h:1683
KVS ICE Agent Collection of ICE agent related stats. Can be expanded in the future.
Definition Include.h:1857
: IceAgent profiling Stats related to the KVS ICE Agent
Definition Stats.h:268
Definition Include.h:1449
Definition Include.h:1692
Definition NullableDefs.h:60
Custom data type to allow setting UINT16 data type to NULL since C does not support setting basic dat...
Definition NullableDefs.h:87
SignalingStats Collection of signaling related stats. Can be expanded in the future.
Definition Include.h:1865
Definition Stats.h:645
Structure defining the signaling message to be received.
Definition Include.h:1578
Specifies the certificate and the private key used by the certificate. The Certificates are in the fo...
Definition Include.h:1432
The Configuration defines a set of parameters to configure how the peer-to-peer communication establi...
Definition Include.h:1507
RtcDataChannelInit dictionary used to configure properties of the underlying channel such as data rel...
Definition Include.h:1795
The stats object is populated by the application to include details about the encoder.
Definition Include.h:1883
Rtc ICE candidate interface.
Definition Include.h:1552
RtcIceCandidatePairStats Stats related to the local-remote ICE candidate pair.
Definition Stats.h:210
: RtcIceCandidateStats Stats related to a specific candidate in a pair
Definition Stats.h:287
Statistics relted to ICE candidates.
Definition Include.h:1822
: RtcIceServerStats Stats related to the ICE Server
Definition Stats.h:253
RtcIceServer is used to describe the STUN and TURN servers that can be used by the ICE Agent to estab...
Definition Include.h:1422
Represents a single track in a MediaStream.
Definition Include.h:1385
RtcOutboundRtpStreamStats Gathers stats for media stream from the embedded device Note: RTCOutboundRt...
Definition Stats.h:364
An RtcPeerConnection instance allows an application to establish peer-to-peer communications with ano...
Definition Include.h:1376
RTCRemoteInboundRtpStreamStats Represents the remote endpoint's measurement metrics for a particular ...
Definition Stats.h:416
RTCRtpReceiver allows an application to inspect the receipt of a MediaStreamTrack.
Definition Include.h:1401
RtcRtpTransceiverInit is used to configure a transceiver when creating it.
Definition Include.h:1785
The RTCRtpTransceiver represents a combination of an RTCRtpSender and an RTCRtpReceiver that share a ...
Definition Include.h:1411
SessionDescription is used by RtcPeerConnection to expose local and remote session descriptions.
Definition Include.h:1539
RTCStatsObject Represents an object passed in by the application developer which will be populated in...
Definition Stats.h:660
The stats object is populated based on RTCStatsType request.
Definition Include.h:1874
Collection of RTP stream related stats Reference: https://www.w3.org/TR/webrtc-stats/#remoteinboundrt...
Definition Include.h:1836
RtcTransportStats Represents the stats corresponding to an RTCDtlsTransport and its underlying RTCIce...
Definition Stats.h:304
Signaling channel description returned from the service.
Definition Include.h:1767
Register Signaling client callbacks.
Definition Include.h:1755
Populate Signaling client with client ID and application log level.
Definition Include.h:1592
SignalingStats Collection of signaling related stats. Can be expanded in the future.
Definition Include.h:1846
SignalingClientMetrics Represent the stats related to the KVS WebRTC SDK signaling client.
Definition Stats.h:592
Structure defining the basic signaling message.
Definition Include.h:1561
Congestion state output from the trendline estimator.
Definition Include.h:1253
Per-packet feedback from a TWCC report.
Definition Include.h:1243
RtcDataChannel represents a bi-directional data channel between two peers.
Definition Include.h:1311