Amazon Kinesis Webrtc C SDK
Include.h File Reference
#include <com/amazonaws/kinesis/video/client/Include.h>
#include <com/amazonaws/kinesis/video/common/Include.h>
#include <com/amazonaws/kinesis/video/webrtcclient/NullableDefs.h>
#include <com/amazonaws/kinesis/video/webrtcclient/Stats.h>
Include dependency graph for Include.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  __RtcDataChannel
 RtcDataChannel represents a bi-directional data channel between two peers. More...
 
struct  RtcPeerConnection
 An RtcPeerConnection instance allows an application to establish peer-to-peer communications with another RtcPeerConnection, or to another endpoint implementing the required protocols. More...
 
struct  RtcMediaStreamTrack
 Represents a single track in a MediaStream. More...
 
struct  RtcRtpReceiver
 RTCRtpReceiver allows an application to inspect the receipt of a MediaStreamTrack. More...
 
struct  RtcRtpTransceiver
 The RTCRtpTransceiver represents a combination of an RTCRtpSender and an RTCRtpReceiver that share a common mid. More...
 
struct  RtcIceServer
 RtcIceServer is used to describe the STUN and TURN servers that can be used by the ICE Agent to establish a connection with a peer. More...
 
struct  RtcCertificate
 Specifies the certificate and the private key used by the certificate. The Certificates are in the form of x509 certs. More...
 
struct  KvsRtcConfiguration
 
struct  RtcConfiguration
 The Configuration defines a set of parameters to configure how the peer-to-peer communication established via RtcPeerConnection is established or re-established. More...
 
struct  RtcSessionDescriptionInit
 SessionDescription is used by RtcPeerConnection to expose local and remote session descriptions. More...
 
struct  RtcIceCandidateInit
 Rtc ICE candidate interface. More...
 
struct  SignalingMessage
 Structure defining the basic signaling message. More...
 
struct  ReceivedSignalingMessage
 Structure defining the signaling message to be received. More...
 
struct  SignalingClientInfo
 Populate Signaling client with client ID and application log level. More...
 
struct  ChannelInfo
 Contains all signaling channel related information. More...
 
struct  IceConfigInfo
 ICE configuration information struct. More...
 
struct  MediaStorageConfig
 
struct  SignalingClientCallbacks
 Register Signaling client callbacks. More...
 
struct  SignalingChannelDescription
 Signaling channel description returned from the service. More...
 
struct  RtcRtpTransceiverInit
 RtcRtpTransceiverInit is used to configure a transceiver when creating it. More...
 
struct  RtcDataChannelInit
 RtcDataChannelInit dictionary used to configure properties of the underlying channel such as data reliability. More...
 
struct  RtcIceMetrics
 Statistics relted to ICE candidates. More...
 
struct  RtcStreamMetrics
 Collection of RTP stream related stats Reference: https://www.w3.org/TR/webrtc-stats/#remoteinboundrtpstats-dict* Reference: https://www.w3.org/TR/webrtc-stats/#outboundrtpstats-dict* Reference: https://www.w3.org/TR/webrtc-stats/#transportstats-dict*. More...
 
struct  SignalingClientMetrics
 SignalingStats Collection of signaling related stats. Can be expanded in the future. More...
 
struct  KvsIceAgentMetrics
 KVS ICE Agent Collection of ICE agent related stats. Can be expanded in the future. More...
 
struct  PeerConnectionMetrics
 SignalingStats Collection of signaling related stats. Can be expanded in the future. More...
 
struct  RtcStats
 The stats object is populated based on RTCStatsType request. More...
 
struct  RtcEncoderStats
 The stats object is populated by the application to include details about the encoder. More...
 

Macros

#define PROFILE_CALL(f, msg)
 
#define PROFILE_CALL_WITH_T_OBJ(f, t, msg)
 
#define PROFILE_WITH_START_TIME(t, msg)
 
#define PROFILE_CALL_WITH_START_END_T_OBJ(f, s, e, d, msg)
 
#define PROFILE_WITH_START_END_TIME_OBJ(t1, t2, d, msg)
 
#define PROFILE_WITH_START_TIME_OBJ(t1, t2, msg)
 
#define STATUS_WEBRTC_BASE   0x55000000
 
#define STATUS_SESSION_DESCRIPTION_INIT_NOT_OBJECT   STATUS_WEBRTC_BASE + 0x00000001
 
#define STATUS_SESSION_DESCRIPTION_INIT_MISSING_SDP_OR_TYPE_MEMBER   STATUS_WEBRTC_BASE + 0x00000002
 
#define STATUS_SESSION_DESCRIPTION_INIT_INVALID_TYPE   STATUS_WEBRTC_BASE + 0x00000003
 
#define STATUS_SESSION_DESCRIPTION_INIT_MISSING_SDP   STATUS_WEBRTC_BASE + 0x00000004
 
#define STATUS_SESSION_DESCRIPTION_INIT_MISSING_TYPE   STATUS_WEBRTC_BASE + 0x00000005
 
#define STATUS_SESSION_DESCRIPTION_INIT_MAX_SDP_LEN_EXCEEDED   STATUS_WEBRTC_BASE + 0x00000006
 
#define STATUS_SESSION_DESCRIPTION_INVALID_SESSION_DESCRIPTION   STATUS_WEBRTC_BASE + 0x00000007
 
#define STATUS_SESSION_DESCRIPTION_MISSING_ICE_VALUES   STATUS_WEBRTC_BASE + 0x00000008
 
#define STATUS_SESSION_DESCRIPTION_MISSING_CERTIFICATE_FINGERPRINT   STATUS_WEBRTC_BASE + 0x00000009
 
#define STATUS_SESSION_DESCRIPTION_MAX_MEDIA_COUNT   STATUS_WEBRTC_BASE + 0x0000000A
 
#define STATUS_SDP_BASE   STATUS_WEBRTC_BASE + 0x01000000
 
#define STATUS_SDP_MISSING_ITEMS   STATUS_SDP_BASE + 0x00000001
 
#define STATUS_SDP_ATTRIBUTES_ERROR   STATUS_SDP_BASE + 0x00000002
 
#define STATUS_SDP_BANDWIDTH_ERROR   STATUS_SDP_BASE + 0x00000003
 
#define STATUS_SDP_CONNECTION_INFORMATION_ERROR   STATUS_SDP_BASE + 0x00000004
 
#define STATUS_SDP_EMAIL_ADDRESS_ERROR   STATUS_SDP_BASE + 0x00000005
 
#define STATUS_SDP_ENCYRPTION_KEY_ERROR   STATUS_SDP_BASE + 0x00000006
 
#define STATUS_SDP_INFORMATION_ERROR   STATUS_SDP_BASE + 0x00000007
 
#define STATUS_SDP_MEDIA_NAME_ERROR   STATUS_SDP_BASE + 0x00000008
 
#define STATUS_SDP_ORIGIN_ERROR   STATUS_SDP_BASE + 0x00000009
 
#define STATUS_SDP_PHONE_NUMBER_ERROR   STATUS_SDP_BASE + 0x0000000A
 
#define STATUS_SDP_TIME_DECRYPTION_ERROR   STATUS_SDP_BASE + 0x0000000B
 
#define STATUS_SDP_TIMEZONE_ERROR   STATUS_SDP_BASE + 0x0000000C
 
#define STATUS_SDP_URI_ERROR   STATUS_SDP_BASE + 0x0000000D
 
#define STATUS_SDP_VERSION_ERROR   STATUS_SDP_BASE + 0x0000000E
 
#define STATUS_SDP_ATTRIBUTE_MAX_EXCEEDED   STATUS_SDP_BASE + 0x0000000F
 
#define STATUS_SDP_MESSAGE_MALFORMED   STATUS_SDP_BASE + 0x00000010
 
#define STATUS_SDP_MESSAGE_MALFORMED_NOT_ENOUGH_INFO   STATUS_SDP_BASE + 0x00000011
 
#define STATUS_SDP_MESSAGE_MALFORMED_EQUAL_NOT_FOUND   STATUS_SDP_BASE + 0x00000012
 
#define STATUS_SDP_MESSAGE_MALFORMED_NEWLINE_NOT_FOUND   STATUS_SDP_BASE + 0x00000013
 
#define STATUS_SDP_MESSAGE_MALFORMED_NO_VALUE   STATUS_SDP_BASE + 0x00000014
 
#define STATUS_SDP_MESSAGE_MALFORMED_NO_SESSION_ID   STATUS_SDP_BASE + 0x00000015
 
#define STATUS_SDP_MESSAGE_MALFORMED_NO_SESSION_VERSION   STATUS_SDP_BASE + 0x00000016
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_NETWORK_TYPE   STATUS_SDP_BASE + 0x00000017
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_ADDRESS_TYPE   STATUS_SDP_BASE + 0x00000018
 
#define STATUS_SDP_MESSAGE_MALFORMED_REDUNDANT_INFO   STATUS_SDP_BASE + 0x00000019
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_BANDWIDTH   STATUS_SDP_BASE + 0x0000001A
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_START_TIME   STATUS_SDP_BASE + 0x0000001B
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_STOP_TIME   STATUS_SDP_BASE + 0x0000001C
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_PORT   STATUS_SDP_BASE + 0x0000001D
 
#define STATUS_SDP_MESSAGE_MALFORMED_INVALID_PORTNUM   STATUS_SDP_BASE + 0x0000001E
 
#define STATUS_SDP_SNPRINTF_ERROR   STATUS_SDP_BASE + 0x0000001F
 
#define STATUS_SDP_UNKNOWN_ERROR   STATUS_SDP_BASE + 0x00000020
 
#define STATUS_STUN_BASE   STATUS_SDP_BASE + 0x01000000
 
#define STATUS_STUN_MESSAGE_INTEGRITY_NOT_LAST   STATUS_STUN_BASE + 0x00000001
 
#define STATUS_STUN_MESSAGE_INTEGRITY_SIZE_ALIGNMENT   STATUS_STUN_BASE + 0x00000002
 
#define STATUS_STUN_FINGERPRINT_NOT_LAST   STATUS_STUN_BASE + 0x00000003
 
#define STATUS_STUN_MAGIC_COOKIE_MISMATCH   STATUS_STUN_BASE + 0x00000004
 
#define STATUS_STUN_INVALID_ADDRESS_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000005
 
#define STATUS_STUN_INVALID_USERNAME_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000006
 
#define STATUS_STUN_INVALID_MESSAGE_INTEGRITY_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000007
 
#define STATUS_STUN_INVALID_FINGERPRINT_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000008
 
#define STATUS_STUN_MULTIPLE_MESSAGE_INTEGRITY_ATTRIBUTES   STATUS_STUN_BASE + 0x00000009
 
#define STATUS_STUN_MULTIPLE_FINGERPRINT_ATTRIBUTES   STATUS_STUN_BASE + 0x0000000A
 
#define STATUS_STUN_ATTRIBUTES_AFTER_FINGERPRINT_MESSAGE_INTEGRITY   STATUS_STUN_BASE + 0x0000000B
 
#define STATUS_STUN_MESSAGE_INTEGRITY_AFTER_FINGERPRINT   STATUS_STUN_BASE + 0x0000000C
 
#define STATUS_STUN_MAX_ATTRIBUTE_COUNT   STATUS_STUN_BASE + 0x0000000D
 
#define STATUS_STUN_MESSAGE_INTEGRITY_MISMATCH   STATUS_STUN_BASE + 0x0000000E
 
#define STATUS_STUN_FINGERPRINT_MISMATCH   STATUS_STUN_BASE + 0x0000000F
 
#define STATUS_STUN_INVALID_PRIORITY_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000010
 
#define STATUS_STUN_INVALID_USE_CANDIDATE_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000011
 
#define STATUS_STUN_INVALID_LIFETIME_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000012
 
#define STATUS_STUN_INVALID_REQUESTED_TRANSPORT_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000013
 
#define STATUS_STUN_INVALID_REALM_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000014
 
#define STATUS_STUN_INVALID_NONCE_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000015
 
#define STATUS_STUN_INVALID_ERROR_CODE_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000016
 
#define STATUS_STUN_INVALID_ICE_CONTROL_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000017
 
#define STATUS_STUN_INVALID_CHANNEL_NUMBER_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000018
 
#define STATUS_STUN_INVALID_CHANGE_REQUEST_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x00000019
 
#define STATUS_STUN_INVALID_MESSAGE_LENGTH   STATUS_STUN_BASE + 0x0000001A
 
#define STATUS_STUN_INVALID_ATTRIBUTE_LENGTH   STATUS_STUN_BASE + 0x0000001B
 
#define STATUS_STUN_ATTRIBUTE_NOT_FOUND   STATUS_STUN_BASE + 0x0000001C
 
#define STATUS_STUN_NO_MORE_ATTRIBUTE_FOUND   STATUS_STUN_BASE + 0x0000001D
 
#define STATUS_STUN_UNKNOWN_ERROR   STATUS_STUN_BASE + 0x0000001E
 
#define STATUS_NETWORKING_BASE   STATUS_STUN_BASE + 0x01000000
 
#define STATUS_GET_LOCAL_IP_ADDRESSES_FAILED   STATUS_NETWORKING_BASE + 0x00000016
 
#define STATUS_CREATE_UDP_SOCKET_FAILED   STATUS_NETWORKING_BASE + 0x00000017
 
#define STATUS_BINDING_SOCKET_FAILED   STATUS_NETWORKING_BASE + 0x00000018
 
#define STATUS_GET_PORT_NUMBER_FAILED   STATUS_NETWORKING_BASE + 0x00000019
 
#define STATUS_SEND_DATA_FAILED   STATUS_NETWORKING_BASE + 0x0000001a
 
#define STATUS_RESOLVE_HOSTNAME_FAILED   STATUS_NETWORKING_BASE + 0x0000001b
 
#define STATUS_HOSTNAME_NOT_FOUND   STATUS_NETWORKING_BASE + 0x0000001c
 
#define STATUS_SOCKET_CONNECT_FAILED   STATUS_NETWORKING_BASE + 0x0000001d
 
#define STATUS_CREATE_SSL_FAILED   STATUS_NETWORKING_BASE + 0x0000001e
 
#define STATUS_SSL_CONNECTION_FAILED   STATUS_NETWORKING_BASE + 0x0000001f
 
#define STATUS_SECURE_SOCKET_READ_FAILED   STATUS_NETWORKING_BASE + 0x00000020
 
#define STATUS_SOCKET_CONNECTION_NOT_READY_TO_SEND   STATUS_NETWORKING_BASE + 0x00000021
 
#define STATUS_SOCKET_CONNECTION_CLOSED_ALREADY   STATUS_NETWORKING_BASE + 0x00000022
 
#define STATUS_SOCKET_SET_SEND_BUFFER_SIZE_FAILED   STATUS_NETWORKING_BASE + 0x00000023
 
#define STATUS_GET_SOCKET_FLAG_FAILED   STATUS_NETWORKING_BASE + 0x00000024
 
#define STATUS_SET_SOCKET_FLAG_FAILED   STATUS_NETWORKING_BASE + 0x00000025
 
#define STATUS_CLOSE_SOCKET_FAILED   STATUS_NETWORKING_BASE + 0x00000026
 
#define STATUS_CREATE_SOCKET_PAIR_FAILED   STATUS_NETWORKING_BASE + 0x00000027
 
#define STATUS_SOCKET_WRITE_FAILED   STATUS_NETWORKING_BASE + 0X00000028
 
#define STATUS_INVALID_ADDRESS_LENGTH   STATUS_NETWORKING_BASE + 0X00000029
 
#define STATUS_DTLS_BASE   STATUS_NETWORKING_BASE + 0x01000000
 
#define STATUS_CERTIFICATE_GENERATION_FAILED   STATUS_DTLS_BASE + 0x00000001
 
#define STATUS_SSL_CTX_CREATION_FAILED   STATUS_DTLS_BASE + 0x00000002
 
#define STATUS_SSL_REMOTE_CERTIFICATE_VERIFICATION_FAILED   STATUS_DTLS_BASE + 0x00000003
 
#define STATUS_SSL_PACKET_BEFORE_DTLS_READY   STATUS_DTLS_BASE + 0x00000004
 
#define STATUS_SSL_UNKNOWN_SRTP_PROFILE   STATUS_DTLS_BASE + 0x00000005
 
#define STATUS_SSL_INVALID_CERTIFICATE_BITS   STATUS_DTLS_BASE + 0x00000006
 
#define STATUS_DTLS_SESSION_ALREADY_FREED   STATUS_DTLS_BASE + 0x00000007
 
#define STATUS_ICE_BASE   STATUS_DTLS_BASE + 0x01000000
 
#define STATUS_ICE_AGENT_NO_SELECTED_CANDIDATE_AVAILABLE   STATUS_ICE_BASE + 0x00000001
 
#define STATUS_ICE_CANDIDATE_STRING_MISSING_PORT   STATUS_ICE_BASE + 0x00000002
 
#define STATUS_ICE_CANDIDATE_STRING_MISSING_IP   STATUS_ICE_BASE + 0x00000003
 
#define STATUS_ICE_CANDIDATE_STRING_INVALID_IP   STATUS_ICE_BASE + 0x00000004
 
#define STATUS_ICE_CANDIDATE_STRING_IS_TCP   STATUS_ICE_BASE + 0x00000005
 
#define STATUS_ICE_FAILED_TO_COMPUTE_MD5_FOR_LONG_TERM_CREDENTIAL   STATUS_ICE_BASE + 0x00000006
 
#define STATUS_ICE_URL_INVALID_PREFIX   STATUS_ICE_BASE + 0x00000007
 
#define STATUS_ICE_URL_TURN_MISSING_USERNAME   STATUS_ICE_BASE + 0x00000008
 
#define STATUS_ICE_URL_TURN_MISSING_CREDENTIAL   STATUS_ICE_BASE + 0x00000009
 
#define STATUS_ICE_AGENT_STATE_CHANGE_FAILED   STATUS_ICE_BASE + 0x0000000a
 
#define STATUS_ICE_NO_LOCAL_CANDIDATE_AVAILABLE_AFTER_GATHERING_TIMEOUT   STATUS_ICE_BASE + 0x0000000b
 
#define STATUS_ICE_AGENT_TERMINATED_ALREADY   STATUS_ICE_BASE + 0x0000000c
 
#define STATUS_ICE_NO_CONNECTED_CANDIDATE_PAIR   STATUS_ICE_BASE + 0x0000000d
 
#define STATUS_ICE_CANDIDATE_PAIR_LIST_EMPTY   STATUS_ICE_BASE + 0x0000000e
 
#define STATUS_ICE_NOMINATED_CANDIDATE_NOT_CONNECTED   STATUS_ICE_BASE + 0x00000010
 
#define STATUS_ICE_CANDIDATE_INIT_MALFORMED   STATUS_ICE_BASE + 0x00000011
 
#define STATUS_ICE_CANDIDATE_MISSING_CANDIDATE   STATUS_ICE_BASE + 0x00000012
 
#define STATUS_ICE_FAILED_TO_NOMINATE_CANDIDATE_PAIR   STATUS_ICE_BASE + 0x00000013
 
#define STATUS_ICE_MAX_REMOTE_CANDIDATE_COUNT_EXCEEDED   STATUS_ICE_BASE + 0x00000014
 
#define STATUS_ICE_INVALID_STATE   STATUS_ICE_BASE + 0x0000001c
 
#define STATUS_ICE_NO_LOCAL_HOST_CANDIDATE_AVAILABLE   STATUS_ICE_BASE + 0x0000001d
 
#define STATUS_ICE_NO_NOMINATED_VALID_CANDIDATE_PAIR_AVAILABLE   STATUS_ICE_BASE + 0x0000001e
 
#define STATUS_TURN_CONNECTION_NO_HOST_INTERFACE_FOUND   STATUS_ICE_BASE + 0x0000001f
 
#define STATUS_TURN_CONNECTION_STATE_TRANSITION_TIMEOUT   STATUS_ICE_BASE + 0x00000020
 
#define STATUS_TURN_CONNECTION_FAILED_TO_CREATE_PERMISSION   STATUS_ICE_BASE + 0x00000021
 
#define STATUS_TURN_CONNECTION_FAILED_TO_BIND_CHANNEL   STATUS_ICE_BASE + 0x00000022
 
#define STATUS_TURN_NEW_DATA_CHANNEL_MSG_HEADER_BEFORE_PREVIOUS_MSG_FINISH   STATUS_ICE_BASE + 0x00000023
 
#define STATUS_TURN_MISSING_CHANNEL_DATA_HEADER   STATUS_ICE_BASE + 0x00000024
 
#define STATUS_ICE_FAILED_TO_RECOVER_FROM_DISCONNECTION   STATUS_ICE_BASE + 0x00000025
 
#define STATUS_ICE_NO_AVAILABLE_ICE_CANDIDATE_PAIR   STATUS_ICE_BASE + 0x00000026
 
#define STATUS_TURN_CONNECTION_PEER_NOT_USABLE   STATUS_ICE_BASE + 0x00000027
 
#define STATUS_ICE_SERVER_INDEX_INVALID   STATUS_ICE_BASE + 0x00000028
 
#define STATUS_ICE_CANDIDATE_STRING_MISSING_TYPE   STATUS_ICE_BASE + 0x00000029
 
#define STATUS_TURN_CONNECTION_ALLOCATION_FAILED   STATUS_ICE_BASE + 0x0000002a
 
#define STATUS_TURN_INVALID_STATE   STATUS_ICE_BASE + 0x0000002b
 
#define STATUS_TURN_CONNECTION_GET_CREDENTIALS_FAILED   STATUS_ICE_BASE + 0x0000002c
 
#define STATUS_SRTP_BASE   STATUS_ICE_BASE + 0x01000000
 
#define STATUS_SRTP_DECRYPT_FAILED   STATUS_SRTP_BASE + 0x00000001
 
#define STATUS_SRTP_ENCRYPT_FAILED   STATUS_SRTP_BASE + 0x00000002
 
#define STATUS_SRTP_TRANSMIT_SESSION_CREATION_FAILED   STATUS_SRTP_BASE + 0x00000003
 
#define STATUS_SRTP_RECEIVE_SESSION_CREATION_FAILED   STATUS_SRTP_BASE + 0x00000004
 
#define STATUS_SRTP_INIT_FAILED   STATUS_SRTP_BASE + 0x00000005
 
#define STATUS_SRTP_NOT_READY_YET   STATUS_SRTP_BASE + 0x00000006
 
#define STATUS_RTP_BASE   STATUS_SRTP_BASE + 0x01000000
 
#define STATUS_RTP_INPUT_PACKET_TOO_SMALL   STATUS_RTP_BASE + 0x00000001
 
#define STATUS_RTP_INPUT_MTU_TOO_SMALL   STATUS_RTP_BASE + 0x00000002
 
#define STATUS_RTP_INVALID_NALU   STATUS_RTP_BASE + 0x00000003
 
#define STATUS_RTP_INVALID_EXTENSION_LEN   STATUS_RTP_BASE + 0x00000004
 
#define STATUS_RTP_INVALID_VERSION   STATUS_RTP_BASE + 0x00000005
 
#define STATUS_RTP_UNKNOWN_ERROR   STATUS_RTP_BASE + 0x00000006
 
#define STATUS_SIGNALING_BASE   STATUS_RTP_BASE + 0x01000000
 
#define STATUS_SIGNALING_INVALID_READY_STATE   STATUS_SIGNALING_BASE + 0x00000001
 
#define STATUS_SIGNALING_GET_TOKEN_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000002
 
#define STATUS_SIGNALING_DESCRIBE_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000003
 
#define STATUS_SIGNALING_CREATE_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000004
 
#define STATUS_SIGNALING_GET_ENDPOINT_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000005
 
#define STATUS_SIGNALING_GET_ICE_CONFIG_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000006
 
#define STATUS_SIGNALING_READY_CALLBACK_FAILED   STATUS_SIGNALING_BASE + 0x00000007
 
#define STATUS_SIGNALING_CONNECT_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000008
 
#define STATUS_SIGNALING_CONNECTED_CALLBACK_FAILED   STATUS_SIGNALING_BASE + 0x00000009
 
#define STATUS_SIGNALING_INVALID_CHANNEL_INFO_VERSION   STATUS_SIGNALING_BASE + 0x0000000A
 
#define STATUS_SIGNALING_INVALID_SIGNALING_CALLBACKS_VERSION   STATUS_SIGNALING_BASE + 0x0000000B
 
#define STATUS_SIGNALING_INVALID_CHANNEL_NAME_LENGTH   STATUS_SIGNALING_BASE + 0x0000000C
 
#define STATUS_SIGNALING_INVALID_CHANNEL_ARN_LENGTH   STATUS_SIGNALING_BASE + 0x0000000D
 
#define STATUS_SIGNALING_INVALID_REGION_LENGTH   STATUS_SIGNALING_BASE + 0x0000000E
 
#define STATUS_SIGNALING_INVALID_CPL_LENGTH   STATUS_SIGNALING_BASE + 0x0000000F
 
#define STATUS_SIGNALING_INVALID_CERTIFICATE_PATH_LENGTH   STATUS_SIGNALING_BASE + 0x00000010
 
#define STATUS_SIGNALING_INVALID_AGENT_POSTFIX_LENGTH   STATUS_SIGNALING_BASE + 0x00000011
 
#define STATUS_SIGNALING_INVALID_AGENT_LENGTH   STATUS_SIGNALING_BASE + 0x00000012
 
#define STATUS_SIGNALING_INVALID_KMS_KEY_LENGTH   STATUS_SIGNALING_BASE + 0x00000013
 
#define STATUS_SIGNALING_LWS_CREATE_CONTEXT_FAILED   STATUS_SIGNALING_BASE + 0x00000014
 
#define STATUS_SIGNALING_LWS_CLIENT_CONNECT_FAILED   STATUS_SIGNALING_BASE + 0x00000015
 
#define STATUS_SIGNALING_CHANNEL_BEING_DELETED   STATUS_SIGNALING_BASE + 0x00000016
 
#define STATUS_SIGNALING_INVALID_CLIENT_INFO_VERSION   STATUS_SIGNALING_BASE + 0x00000017
 
#define STATUS_SIGNALING_INVALID_CLIENT_INFO_CLIENT_LENGTH   STATUS_SIGNALING_BASE + 0x00000018
 
#define STATUS_SIGNALING_MAX_ICE_CONFIG_COUNT   STATUS_SIGNALING_BASE + 0x00000019
 
#define STATUS_SIGNALING_MAX_ICE_URI_COUNT   STATUS_SIGNALING_BASE + 0x0000001A
 
#define STATUS_SIGNALING_MAX_ICE_URI_LEN   STATUS_SIGNALING_BASE + 0x0000001B
 
#define STATUS_SIGNALING_NO_CONFIG_SPECIFIED   STATUS_SIGNALING_BASE + 0x0000001C
 
#define STATUS_SIGNALING_INVALID_ICE_CONFIG_INFO_VERSION   STATUS_SIGNALING_BASE + 0x0000001D
 
#define STATUS_SIGNALING_NO_CONFIG_URI_SPECIFIED   STATUS_SIGNALING_BASE + 0x0000001E
 
#define STATUS_SIGNALING_NO_ARN_RETURNED_ON_CREATE   STATUS_SIGNALING_BASE + 0x0000001F
 
#define STATUS_SIGNALING_MISSING_ENDPOINTS_IN_GET_ENDPOINT   STATUS_SIGNALING_BASE + 0x00000020
 
#define STATUS_SIGNALING_INVALID_MESSAGE_TYPE   STATUS_SIGNALING_BASE + 0x00000021
 
#define STATUS_SIGNALING_INVALID_SIGNALING_MESSAGE_VERSION   STATUS_SIGNALING_BASE + 0x00000022
 
#define STATUS_SIGNALING_NO_PEER_CLIENT_ID_IN_MESSAGE   STATUS_SIGNALING_BASE + 0x00000023
 
#define STATUS_SIGNALING_MESSAGE_DELIVERY_FAILED   STATUS_SIGNALING_BASE + 0x00000024
 
#define STATUS_SIGNALING_MAX_MESSAGE_LEN_AFTER_ENCODING   STATUS_SIGNALING_BASE + 0x00000025
 
#define STATUS_SIGNALING_RECEIVE_BINARY_DATA_NOT_SUPPORTED   STATUS_SIGNALING_BASE + 0x00000026
 
#define STATUS_SIGNALING_RECEIVE_EMPTY_DATA_NOT_SUPPORTED   STATUS_SIGNALING_BASE + 0x00000027
 
#define STATUS_SIGNALING_RECEIVED_MESSAGE_LARGER_THAN_MAX_DATA_LEN   STATUS_SIGNALING_BASE + 0x00000028
 
#define STATUS_SIGNALING_INVALID_PAYLOAD_LEN_IN_MESSAGE   STATUS_SIGNALING_BASE + 0x00000029
 
#define STATUS_SIGNALING_NO_PAYLOAD_IN_MESSAGE   STATUS_SIGNALING_BASE + 0x0000002A
 
#define STATUS_SIGNALING_DUPLICATE_MESSAGE_BEING_SENT   STATUS_SIGNALING_BASE + 0x0000002B
 
#define STATUS_SIGNALING_ICE_TTL_LESS_THAN_GRACE_PERIOD   STATUS_SIGNALING_BASE + 0x0000002C
 
#define STATUS_SIGNALING_DISCONNECTED_CALLBACK_FAILED   STATUS_SIGNALING_BASE + 0x0000002D
 
#define STATUS_SIGNALING_INVALID_MESSAGE_TTL_VALUE   STATUS_SIGNALING_BASE + 0x0000002E
 
#define STATUS_SIGNALING_ICE_CONFIG_REFRESH_FAILED   STATUS_SIGNALING_BASE + 0x0000002F
 
#define STATUS_SIGNALING_RECONNECT_FAILED   STATUS_SIGNALING_BASE + 0x00000030
 
#define STATUS_SIGNALING_DELETE_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000031
 
#define STATUS_SIGNALING_INVALID_METRICS_VERSION   STATUS_SIGNALING_BASE + 0x00000032
 
#define STATUS_SIGNALING_INVALID_CLIENT_INFO_CACHE_FILE_PATH_LEN   STATUS_SIGNALING_BASE + 0x00000033
 
#define STATUS_SIGNALING_LWS_CALL_FAILED   STATUS_SIGNALING_BASE + 0x00000034
 
#define STATUS_SIGNALING_INVALID_STREAM_ARN_LENGTH   STATUS_SIGNALING_BASE + 0x00000035
 
#define STATUS_SIGNALING_MISMATCH_MEDIA_STORAGE_CONFIG   STATUS_SIGNALING_BASE + 0x00000036
 
#define STATUS_SIGNALING_UPDATE_MEDIA_STORAGE_CONFIG   STATUS_SIGNALING_BASE + 0x00000037
 
#define STATUS_SIGNALING_MEDIA_STORAGE_DISABLED   STATUS_SIGNALING_BASE + 0x00000038
 
#define STATUS_SIGNALING_INVALID_CHANNEL_ARN   STATUS_SIGNALING_BASE + 0x00000039
 
#define STATUS_SIGNALING_JOIN_SESSION_CALL_FAILED   STATUS_SIGNALING_BASE + 0x0000004a
 
#define STATUS_SIGNALING_JOIN_SESSION_CONNECTED_FAILED   STATUS_SIGNALING_BASE + 0x0000004b
 
#define STATUS_SIGNALING_DESCRIBE_MEDIA_CALL_FAILED   STATUS_SIGNALING_BASE + 0x0000004c
 
#define STATUS_PEERCONNECTION_BASE   STATUS_SIGNALING_BASE + 0x01000000
 
#define STATUS_PEERCONNECTION_CREATE_ANSWER_WITHOUT_REMOTE_DESCRIPTION   STATUS_PEERCONNECTION_BASE + 0x00000001
 
#define STATUS_PEERCONNECTION_CODEC_INVALID   STATUS_PEERCONNECTION_BASE + 0x00000002
 
#define STATUS_PEERCONNECTION_CODEC_MAX_EXCEEDED   STATUS_PEERCONNECTION_BASE + 0x00000003
 
#define STATUS_PEERCONNECTION_EARLY_DNS_RESOLUTION_FAILED   STATUS_PEERCONNECTION_BASE + 0x00000004
 
#define STATUS_SCTP_BASE   STATUS_PEERCONNECTION_BASE + 0x01000000
 
#define STATUS_SCTP_SESSION_SETUP_FAILED   STATUS_SCTP_BASE + 0x00000001
 
#define STATUS_SCTP_INVALID_DCEP_PACKET   STATUS_SCTP_BASE + 0x00000002
 
#define STATUS_RTCP_BASE   STATUS_SCTP_BASE + 0x01000000
 
#define STATUS_RTCP_INPUT_PACKET_TOO_SMALL   STATUS_RTCP_BASE + 0x00000001
 
#define STATUS_RTCP_INPUT_PACKET_INVALID_VERSION   STATUS_RTCP_BASE + 0x00000002
 
#define STATUS_RTCP_INPUT_PACKET_LEN_MISMATCH   STATUS_RTCP_BASE + 0x00000003
 
#define STATUS_RTCP_INPUT_NACK_LIST_INVALID   STATUS_RTCP_BASE + 0x00000004
 
#define STATUS_RTCP_INPUT_SSRC_INVALID   STATUS_RTCP_BASE + 0x00000005
 
#define STATUS_RTCP_INPUT_PARTIAL_PACKET   STATUS_RTCP_BASE + 0x00000006
 
#define STATUS_RTCP_INPUT_REMB_TOO_SMALL   STATUS_RTCP_BASE + 0x00000007
 
#define STATUS_RTCP_INPUT_REMB_INVALID   STATUS_RTCP_BASE + 0x00000008
 
#define STATUS_ROLLING_BUFFER_BASE   STATUS_RTCP_BASE + 0x01000000
 
#define STATUS_ROLLING_BUFFER_NOT_IN_RANGE   STATUS_ROLLING_BUFFER_BASE + 0x00000001
 
#define MAX_CHANNEL_NAME_LEN   256
 
#define MAX_SIGNALING_CLIENT_ID_LEN   256
 
#define MAX_ICE_CONFIG_USER_NAME_LEN   256
 
#define MAX_ICE_CONFIG_CREDENTIAL_LEN   256
 
#define MAX_SIGNALING_ENDPOINT_URI_LEN   512
 
#define MAX_CORRELATION_ID_LEN   256
 
#define MAX_ERROR_TYPE_STRING_LEN   256
 
#define MAX_STATUS_CODE_STRING_LEN   256
 
#define MAX_MESSAGE_DESCRIPTION_LEN   1024
 
#define MAX_SESSION_DESCRIPTION_INIT_SDP_LEN   25000
 
#define MAX_MEDIA_STREAM_ID_LEN   255
 
#define MAX_RTCCONFIGURATION_CERTIFICATES   3
 
#define MAX_MEDIA_STREAM_TRACK_ID_LEN   255
 
#define MAX_ICE_CANDIDATE_INIT_CANDIDATE_LEN   255
 
#define MAX_DATA_CHANNEL_NAME_LEN   255
 
#define MAX_DATA_CHANNEL_PROTOCOL_LEN   255
 
#define MAX_SIGNALING_MESSAGE_LEN   (10 * 1024)
 
#define PEER_CONNECTION_CURRENT_VERSION   0
 
#define CHANNEL_INFO_CURRENT_VERSION   1
 
#define SIGNALING_CLIENT_INFO_CURRENT_VERSION   2
 
#define SIGNALING_CLIENT_CALLBACKS_CURRENT_VERSION   0
 
#define SIGNALING_CLIENT_CURRENT_VERSION   1
 
#define SIGNALING_CHANNEL_DESCRIPTION_CURRENT_VERSION   0
 
#define SIGNALING_ICE_CONFIG_INFO_CURRENT_VERSION   0
 
#define SIGNALING_MESSAGE_CURRENT_VERSION   0
 
#define RTC_ICE_METRICS_CURRENT_VERSION   0
 
#define RTC_STREAM_METRICS_CURRENT_VERSION   0
 
#define SIGNALING_CLIENT_METRICS_CURRENT_VERSION   1
 
#define PEER_CONNECTION_METRICS_CURRENT_VERSION   0
 
#define ICE_AGENT_METRICS_CURRENT_VERSION   0
 
#define MAX_ICE_CONFIG_URI_COUNT   4
 
#define MAX_ICE_CONFIG_COUNT   5
 
#define MAX_ICE_SERVERS_COUNT   (MAX_ICE_CONFIG_COUNT * MAX_ICE_CONFIG_URI_COUNT + 1)
 
#define SIGNALING_CREATE_TIMEOUT   (10 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_CONNECT_STATE_TIMEOUT   (15 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_DISCONNECT_STATE_TIMEOUT   (15 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_REFRESH_ICE_CONFIG_STATE_TIMEOUT   (20 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_CONNECT_TIMEOUT   (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define THREADPOOL_MIN_THREADS   1
 
#define THREADPOOL_MAX_THREADS   10
 
#define WEBRTC_THREADPOOL_MIN_THREADS_ENV_VAR   (PCHAR) "AWS_KVS_WEBRTC_THREADPOOL_MIN_THREADS"
 
#define WEBRTC_THREADPOOL_MAX_THREADS_ENV_VAR   (PCHAR) "AWS_KVS_WEBRTC_THREADPOOL_MAX_THREADS"
 
#define SIGNALING_SEND_TIMEOUT   (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_DELETE_TIMEOUT   (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_DEFAULT_MESSAGE_TTL_VALUE   (60 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define SIGNALING_JOIN_STORAGE_SESSION_WAIT_TIMEOUT   (6 * HUNDREDS_OF_NANOS_IN_A_SECOND)
 
#define DEFAULT_JITTER_BUFFER_MAX_LATENCY   (2000L * HUNDREDS_OF_NANOS_IN_A_MILLISECOND)
 
#define SIGNALING_VALID_NAME_CHARS   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_.-"
 
#define MAX_RTP_SEQUENCE_NUM   ((UINT32) MAX_UINT16)
 
#define MAX_RTP_TIMESTAMP   ((UINT32) MAX_UINT32)
 
#define KINESIS_VIDEO_STUN_URL_POSTFIX   "amazonaws.com"
 
#define KINESIS_VIDEO_STUN_URL_POSTFIX_CN   "amazonaws.com.cn"
 
#define KINESIS_VIDEO_STUN_URL   "stun:stun.kinesisvideo.%s.%s:443"
 
#define KINESIS_VIDEO_STUN_URL_WITHOUT_PORT   "stun.kinesisvideo.%s.%s"
 
#define SIGNALING_DEFAULT_SSL_PORT   DEFAULT_SSL_PORT_NUMBER
 
#define SIGNALING_DEFAULT_NON_SSL_PORT   DEFAULT_NON_SSL_PORT_NUMBER
 
#define CHK_LOG_ERR_NV(condition)   DLOGE("CHK_LOG_ERR_NV has been replaced with CHK_LOG_ERR");
 
#define SIGNALING_STATES_DEFAULT_RETRY_COUNT   1
 
#define SIGNALING_DEFAULT_API_CALL_CACHE_TTL   (10 * HUNDREDS_OF_NANOS_IN_AN_HOUR)
 
#define SIGNALING_API_CALL_CACHE_TTL_SENTINEL_VALUE   0
 
#define CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS_SENTINEL_VALUE   -1
 
#define INVALID_SIGNALING_CLIENT_HANDLE_VALUE   ((SIGNALING_CLIENT_HANDLE) INVALID_PIC_HANDLE_VALUE)
 This is a sentinel indicating an invalid handle value. More...
 
#define IS_VALID_SIGNALING_CLIENT_HANDLE(h)   ((h) != INVALID_SIGNALING_CLIENT_HANDLE_VALUE)
 Checks for the handle validity. More...
 

Typedefs

typedef UINT64 SIGNALING_CLIENT_HANDLE
 Definition of the signaling client handle. More...
 
typedef SIGNALING_CLIENT_HANDLEPSIGNALING_CLIENT_HANDLE
 
typedef enum SIGNALING_CLIENT_STATEPSIGNALING_CLIENT_STATE
 
typedef VOID(* RtcOnFrame) (UINT64, PFrame)
 RtcOnFrame is fired everytime a frame is received from the remote peer. It is available via the RtpRec. More...
 
typedef VOID(* RtcOnBandwidthEstimation) (UINT64, DOUBLE)
 RtcOnBandwidthEstimation is fired everytime a bandwidth estimation value is computed. This will be fired for receiver side estimation. More...
 
typedef VOID(* RtcOnSenderBandwidthEstimation) (UINT64, UINT32, UINT32, UINT32, UINT32, UINT64)
 RtcOnSenderBandwidthEstimation is fired everytime a bandwidth estimation value is computed by sender. This is an estimate of ALL packets sent across all transceivers. See https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 for more details. More...
 
typedef VOID(* RtcOnPictureLoss) (UINT64)
 RtcOnPictureLoss is fired everytime a Picture Loss Indication (PLI) feedback message is received. Receiving such message normally indicates that you sent a video frame which receiver could not decode. It may happen either because of packet loss or for any other reason. Generating an intra frame (aka keyframe, aka I-frame) in response to such message is considered a good strategy. More...
 
typedef struct __RtcDataChannel RtcDataChannel
 RtcDataChannel represents a bi-directional data channel between two peers. More...
 
typedef struct __RtcDataChannelPRtcDataChannel
 
typedef VOID(* RtcOnMessage) (UINT64, PRtcDataChannel, BOOL, PBYTE, UINT32)
 RtcOnMessage is fired when a message is received for the DataChannel. More...
 
typedef VOID(* RtcOnOpen) (UINT64, PRtcDataChannel)
 
typedef VOID(* RtcOnDataChannel) (UINT64, PRtcDataChannel)
 RtcOnDataChannel is fired when the remote PeerConnection creates a new DataChannel. More...
 
typedef VOID(* RtcOnIceCandidate) (UINT64, PCHAR)
 RtcOnIceCandidate is fired when new iceCandidate is found. if PCHAR is NULL then candidate gathering is done. More...
 
typedef BOOL(* IceSetInterfaceFilterFunc) (UINT64, PCHAR)
 IceSetInterfaceFilterFunc is fired when a callback function to filter network interfaces is assigned. The callback function is expected to check for specific interface names to be whitelisted/blacklisted. More...
 
typedef VOID(* RtcOnConnectionStateChange) (UINT64, RTC_PEER_CONNECTION_STATE)
 RtcOnConnectionStateChange is fired to report a change in peer connection state. More...
 
typedef struct RtcPeerConnectionPRtcPeerConnection
 
typedef struct RtcMediaStreamTrackPRtcMediaStreamTrack
 
typedef struct RtcRtpReceiverPRtcRtpReceiver
 
typedef struct RtcRtpTransceiverPRtcRtpTransceiver
 
typedef struct RtcIceServerPRtcIceServer
 
typedef struct RtcCertificatePRtcCertificate
 
typedef struct KvsRtcConfigurationPKvsRtcConfiguration
 
typedef struct RtcConfigurationPRtcConfiguration
 
typedef struct RtcSessionDescriptionInitPRtcSessionDescriptionInit
 
typedef struct RtcIceCandidateInitPRtcIceCandidateInit
 
typedef struct SignalingMessagePSignalingMessage
 
typedef struct ReceivedSignalingMessagePReceivedSignalingMessage
 
typedef struct SignalingClientInfoPSignalingClientInfo
 
typedef struct ChannelInfoPChannelInfo
 
typedef struct IceConfigInfoPIceConfigInfo
 
typedef struct MediaStorageConfigPMediaStorageConfig
 
typedef STATUS(* SignalingClientMessageReceivedFunc) (UINT64, PReceivedSignalingMessage)
 
typedef STATUS(* SignalingClientErrorReportFunc) (UINT64, STATUS, PCHAR, UINT32)
 
typedef STATUS(* SignalingClientStateChangedFunc) (UINT64, SIGNALING_CLIENT_STATE)
 
typedef struct SignalingClientCallbacksPSignalingClientCallbacks
 
typedef struct SignalingChannelDescriptionPSignalingChannelDescription
 
typedef struct RtcRtpTransceiverInitPRtcRtpTransceiverInit
 
typedef struct RtcDataChannelInitPRtcDataChannelInit
 
typedef struct RtcIceMetricsPRtcIceMetrics
 
typedef struct RtcStreamMetricsPRtcStreamMetrics
 
typedef struct SignalingClientMetricsPSignalingClientMetrics
 
typedef struct KvsIceAgentMetricsPKvsIceAgentMetrics
 
typedef struct PeerConnectionMetricsPPeerConnectionMetrics
 
typedef struct RtcStatsPRtcStats
 
typedef struct RtcEncoderStatsPRtcEncoderStats
 

Enumerations

enum  RTC_PEER_CONNECTION_STATE {
  RTC_PEER_CONNECTION_STATE_NONE = 0 , RTC_PEER_CONNECTION_STATE_NEW = 1 , RTC_PEER_CONNECTION_STATE_CONNECTING = 2 , RTC_PEER_CONNECTION_STATE_CONNECTED = 3 ,
  RTC_PEER_CONNECTION_STATE_DISCONNECTED = 4 , RTC_PEER_CONNECTION_STATE_FAILED = 5 , RTC_PEER_CONNECTION_STATE_CLOSED = 6 , RTC_PEER_CONNECTION_TOTAL_STATE_COUNT = 7
}
 RTC_PEER_CONNECTION_STATE Stats of RTC peer connection. More...
 
enum  SDP_TYPE { SDP_TYPE_OFFER = 1 , SDP_TYPE_ANSWER = 2 }
 
enum  MEDIA_STREAM_TRACK_KIND { MEDIA_STREAM_TRACK_KIND_AUDIO = 1 , MEDIA_STREAM_TRACK_KIND_VIDEO = 2 }
 The enum specifies the type of track in the stream. More...
 
enum  RTC_CODEC {
  RTC_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE = 1 , RTC_CODEC_OPUS = 2 , RTC_CODEC_VP8 = 3 , RTC_CODEC_MULAW = 4 ,
  RTC_CODEC_ALAW = 5 , RTC_CODEC_UNKNOWN = 6 , RTC_CODEC_H265 = 7 , RTC_CODEC_AAC = 8 ,
  RTC_CODEC_MAX
}
 The enum specifies the codec types for audio and video tracks. More...
 
enum  ICE_TRANSPORT_POLICY { ICE_TRANSPORT_POLICY_RELAY = 1 , ICE_TRANSPORT_POLICY_ALL = 2 }
 ICE_TRANSPORT_POLICY restrict which ICE candidates are used in a session. More...
 
enum  RTC_RTP_TRANSCEIVER_DIRECTION { RTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV = 1 , RTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY = 2 , RTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY = 3 , RTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE = 4 }
 RTC_RTP_TRANSCEIVER_DIRECTION indicates direction of a transceiver. More...
 
enum  SIGNALING_CHANNEL_STATUS { SIGNALING_CHANNEL_STATUS_CREATING , SIGNALING_CHANNEL_STATUS_ACTIVE , SIGNALING_CHANNEL_STATUS_UPDATING , SIGNALING_CHANNEL_STATUS_DELETING }
 Defines channel status as reported by the service. More...
 
enum  SIGNALING_MESSAGE_TYPE {
  SIGNALING_MESSAGE_TYPE_OFFER , SIGNALING_MESSAGE_TYPE_ANSWER , SIGNALING_MESSAGE_TYPE_ICE_CANDIDATE , SIGNALING_MESSAGE_TYPE_GO_AWAY ,
  SIGNALING_MESSAGE_TYPE_RECONNECT_ICE_SERVER , SIGNALING_MESSAGE_TYPE_STATUS_RESPONSE , SIGNALING_MESSAGE_TYPE_UNKNOWN
}
 Defines different signaling messages. More...
 
enum  SIGNALING_CLIENT_STATE {
  SIGNALING_CLIENT_STATE_UNKNOWN , SIGNALING_CLIENT_STATE_NEW , SIGNALING_CLIENT_STATE_GET_CREDENTIALS , SIGNALING_CLIENT_STATE_DESCRIBE ,
  SIGNALING_CLIENT_STATE_CREATE , SIGNALING_CLIENT_STATE_GET_ENDPOINT , SIGNALING_CLIENT_STATE_GET_ICE_CONFIG , SIGNALING_CLIENT_STATE_READY ,
  SIGNALING_CLIENT_STATE_CONNECTING , SIGNALING_CLIENT_STATE_CONNECTED , SIGNALING_CLIENT_STATE_DISCONNECTED , SIGNALING_CLIENT_STATE_DELETE ,
  SIGNALING_CLIENT_STATE_DELETED , SIGNALING_CLIENT_STATE_DESCRIBE_MEDIA , SIGNALING_CLIENT_STATE_JOIN_SESSION , SIGNALING_CLIENT_STATE_JOIN_SESSION_WAITING ,
  SIGNALING_CLIENT_STATE_JOIN_SESSION_CONNECTED , SIGNALING_CLIENT_STATE_MAX_VALUE
}
 Defines different states a signaling client traverses. More...
 
enum  SIGNALING_CHANNEL_TYPE { SIGNALING_CHANNEL_TYPE_UNKNOWN , SIGNALING_CHANNEL_TYPE_SINGLE_MASTER }
 Channel type as reported by the service. More...
 
enum  SIGNALING_CHANNEL_ROLE_TYPE { SIGNALING_CHANNEL_ROLE_TYPE_UNKNOWN , SIGNALING_CHANNEL_ROLE_TYPE_MASTER , SIGNALING_CHANNEL_ROLE_TYPE_VIEWER }
 Channel role type. More...
 
enum  NAT_BEHAVIOR {
  NAT_BEHAVIOR_NONE , NAT_BEHAVIOR_NOT_BEHIND_ANY_NAT , NAT_BEHAVIOR_NO_UDP_CONNECTIVITY , NAT_BEHAVIOR_ENDPOINT_INDEPENDENT ,
  NAT_BEHAVIOR_ADDRESS_DEPENDENT , NAT_BEHAVIOR_PORT_DEPENDENT
}
 Detected network environment. More...
 
enum  SIGNALING_API_CALL_CACHE_TYPE { SIGNALING_API_CALL_CACHE_TYPE_NONE , SIGNALING_API_CALL_CACHE_TYPE_DESCRIBE_GETENDPOINT , SIGNALING_API_CALL_CACHE_TYPE_FILE }
 Type of caching implementation to use with the signaling client. More...
 

Functions

PUBLIC_API STATUS createPeerConnection (PRtcConfiguration, PRtcPeerConnection *)
 Initialize a RtcPeerConnection with the provided Configuration. More...
 
PUBLIC_API STATUS addConfigToServerList (PRtcPeerConnection *, PIceConfigInfo)
 Give peer connection an ice config to add to its server list. More...
 
PUBLIC_API STATUS freePeerConnection (PRtcPeerConnection *)
 Free a RtcPeerConnection. More...
 
PUBLIC_API STATUS peerConnectionOnIceCandidate (PRtcPeerConnection, UINT64, RtcOnIceCandidate)
 Set a callback when new Ice collects new local candidate. More...
 
PUBLIC_API STATUS peerConnectionOnSenderBandwidthEstimation (PRtcPeerConnection, UINT64, RtcOnSenderBandwidthEstimation)
 Set a callback for transport-wide sender bandwidth estimation results. More...
 
PUBLIC_API STATUS peerConnectionOnDataChannel (PRtcPeerConnection, UINT64, RtcOnDataChannel)
 
PUBLIC_API STATUS peerConnectionOnConnectionStateChange (PRtcPeerConnection, UINT64, RtcOnConnectionStateChange)
 
PUBLIC_API STATUS peerConnectionGetLocalDescription (PRtcPeerConnection, PRtcSessionDescriptionInit)
 
PUBLIC_API STATUS peerConnectionGetCurrentLocalDescription (PRtcPeerConnection, PRtcSessionDescriptionInit)
 
PUBLIC_API STATUS peerConnectionAsync (startRoutine fn, PVOID data)
 
PUBLIC_API STATUS createOffer (PRtcPeerConnection, PRtcSessionDescriptionInit)
 Populate the provided answer that contains an RFC 3264 offer with the supported configurations for the session. More...
 
PUBLIC_API NullableBool canTrickleIceCandidates (PRtcPeerConnection)
 The canTrickleIceCandidates attribute indicates whether the remote peer is able to accept trickled ICE candidates. The value is determined based on whether a remote description indicates support for trickle ICE. Prior to the completion of setRemoteDescription, this value is null. More...
 
PUBLIC_API STATUS createAnswer (PRtcPeerConnection, PRtcSessionDescriptionInit)
 Populate the provided answer that contains an RFC 3264 answer with the supported configurations for the session. More...
 
PUBLIC_API STATUS serializeSessionDescriptionInit (PRtcSessionDescriptionInit, PCHAR, PUINT32)
 Create a JSON string from RtcSessionDescriptionInit. More...
 
PUBLIC_API STATUS deserializeSessionDescriptionInit (PCHAR, UINT32, PRtcSessionDescriptionInit)
 Parses a JSON string and returns an allocated PSessionDescriptionInit. More...
 
PUBLIC_API STATUS deserializeRtcIceCandidateInit (PCHAR, UINT32, PRtcIceCandidateInit)
 Parses a JSON string and populates a PRtcIceCandidateInit. More...
 
PUBLIC_API STATUS setLocalDescription (PRtcPeerConnection, PRtcSessionDescriptionInit)
 Instructs the RtcPeerConnection to apply the supplied RtcSessionDescriptionInit as the local description. More...
 
PUBLIC_API STATUS setRemoteDescription (PRtcPeerConnection, PRtcSessionDescriptionInit)
 Instructs the RtcPeerConnection to apply the supplied RtcSessionDescriptionInit as the remote description. More...
 
PUBLIC_API STATUS restartIce (PRtcPeerConnection)
 Instructs the RtcPeerConnection that ICE should be restarted. Subsequent calls to createOffer will create descriptions to restart ICE. More...
 
PUBLIC_API STATUS closePeerConnection (PRtcPeerConnection)
 Close the underlying DTLS session and IceAgent connection. Trigger RtcOnConnectionStateChange to RTC_PEER_CONNECTION_STATE_CLOSED. More...
 
PUBLIC_API STATUS addTransceiver (PRtcPeerConnection, PRtcMediaStreamTrack, PRtcRtpTransceiverInit, PRtcRtpTransceiver *)
 Create a new RtcRtpTransceiver and add it to the set of transceivers. More...
 
PUBLIC_API STATUS transceiverOnFrame (PRtcRtpTransceiver, UINT64, RtcOnFrame)
 Set a callback for transceiver frame. More...
 
PUBLIC_API STATUS transceiverOnBandwidthEstimation (PRtcRtpTransceiver, UINT64, RtcOnBandwidthEstimation)
 Set a callback for bandwidth estimation results. More...
 
PUBLIC_API STATUS transceiverOnPictureLoss (PRtcRtpTransceiver, UINT64, RtcOnPictureLoss)
 Set a callback for picture loss packet (PLI) More...
 
PUBLIC_API STATUS freeTransceiver (PRtcRtpTransceiver *)
 Frees the previously created transceiver object. More...
 
PUBLIC_API STATUS initKvsWebRtc (VOID)
 Initializes global state needed for all RtcPeerConnections. It must only be called once. More...
 
PUBLIC_API STATUS deinitKvsWebRtc (VOID)
 Deinitializes global state needed for all RtcPeerConnections. It must only be called once. More...
 
PUBLIC_API STATUS addSupportedCodec (PRtcPeerConnection, RTC_CODEC)
 Adds to the list of codecs we support receiving. More...
 
PUBLIC_API STATUS writeFrame (PRtcRtpTransceiver, PFrame)
 Packetizes and sends media via the configuration specified by the RtcRtpTransceiver. More...
 
PUBLIC_API STATUS updateEncoderStats (PRtcRtpTransceiver, PRtcEncoderStats)
 call this function to update stats which depend on external encoder More...
 
PUBLIC_API STATUS addIceCandidate (PRtcPeerConnection, PCHAR)
 Provides a remote candidate to the ICE Agent. More...
 
PUBLIC_API STATUS createDataChannel (PRtcPeerConnection, PCHAR, PRtcDataChannelInit, PRtcDataChannel *)
 createDataChannel creates a new RtcDataChannel object with the given label. More...
 
PUBLIC_API STATUS dataChannelOnMessage (PRtcDataChannel, UINT64, RtcOnMessage)
 Set a callback for data channel message. More...
 
PUBLIC_API STATUS dataChannelOnOpen (PRtcDataChannel, UINT64, RtcOnOpen)
 Set a callback for data channel open. More...
 
PUBLIC_API STATUS dataChannelSend (PRtcDataChannel, BOOL, PBYTE, UINT32)
 Send data via the PRtcDataChannel. More...
 
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. More...
 
PUBLIC_API PCHAR getNatBehaviorStr (NAT_BEHAVIOR natBehavior)
 Return the string representation for each NAT_BEHAVIOR enum. More...
 
PUBLIC_API STATUS createSignalingClientSync (PSignalingClientInfo, PChannelInfo, PSignalingClientCallbacks, PAwsCredentialProvider, PSIGNALING_CLIENT_HANDLE)
 Creates a Signaling client and returns a handle to it. More...
 
PUBLIC_API STATUS freeSignalingClient (PSIGNALING_CLIENT_HANDLE)
 Frees the Signaling client object. More...
 
PUBLIC_API STATUS signalingClientSendMessageSync (SIGNALING_CLIENT_HANDLE, PSignalingMessage)
 Send a message through a Signaling client. More...
 
PUBLIC_API STATUS signalingClientGetIceConfigInfoCount (SIGNALING_CLIENT_HANDLE, PUINT32)
 Gets the retrieved ICE configuration information object count. More...
 
PUBLIC_API STATUS signalingClientGetIceConfigInfo (SIGNALING_CLIENT_HANDLE, UINT32, PIceConfigInfo *)
 Gets the ICE configuration information object given its index. More...
 
PUBLIC_API STATUS signalingClientFetchSync (SIGNALING_CLIENT_HANDLE)
 Fetches all assets needed to ready the state machine before attempting to connect. Can also be used to reallocate missing / expired assets before reconnecting. More...
 
PUBLIC_API STATUS signalingClientConnectSync (SIGNALING_CLIENT_HANDLE)
 Connects the signaling client to the web socket in order to send/receive messages. More...
 
PUBLIC_API STATUS signalingClientDisconnectSync (SIGNALING_CLIENT_HANDLE)
 Disconnects the signaling client. More...
 
PUBLIC_API STATUS signalingClientGetCurrentState (SIGNALING_CLIENT_HANDLE, PSIGNALING_CLIENT_STATE)
 Gets the Signaling client current state. More...
 
PUBLIC_API STATUS signalingClientGetStateString (SIGNALING_CLIENT_STATE, PCHAR *)
 
PUBLIC_API STATUS signalingClientDeleteSync (SIGNALING_CLIENT_HANDLE)
 Deletes the signaling channel referenced by SIGNALING_CLIENT_HANDLE. More...
 
PUBLIC_API STATUS signalingClientGetMetrics (SIGNALING_CLIENT_HANDLE, PSignalingClientMetrics)
 Get signaling related metrics. More...
 
PUBLIC_API STATUS peerConnectionGetMetrics (PRtcPeerConnection, PPeerConnectionMetrics)
 Get peer connection related metrics. More...
 
PUBLIC_API STATUS iceAgentGetMetrics (PRtcPeerConnection, PKvsIceAgentMetrics)
 Get peer connection related metrics. More...
 
PUBLIC_API STATUS rtcPeerConnectionGetMetrics (PRtcPeerConnection, PRtcRtpTransceiver, PRtcStats)
 Get the relevant/all metrics based on the RTCStatsType field. This does not include any signaling related metrics. The caller of the API is expected to populate requestedTypeOfStats member of PRtcStats object with one of the values in RTC_STATS_TYPE. More...
 
PUBLIC_API STATUS createRtcCertificate (PRtcCertificate *)
 Creates an RtcCertificate object. More...
 
PUBLIC_API STATUS freeRtcCertificate (PRtcCertificate)
 Frees previously generated RtcCertificate object. More...
 

Macro Definition Documentation

◆ PROFILE_CALL

#define PROFILE_CALL (   f,
  msg 
)
Value:
do { \
startTimeInMacro = GETTIME(); \
f; \
DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (GETTIME() - startTimeInMacro) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
} while (FALSE)

◆ PROFILE_CALL_WITH_START_END_T_OBJ

#define PROFILE_CALL_WITH_START_END_T_OBJ (   f,
  s,
  e,
  d,
  msg 
)
Value:
do { \
s = GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
f; \
e = GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
d = ((e) - (s)); \
DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (d)); \
} while (FALSE)

◆ PROFILE_CALL_WITH_T_OBJ

#define PROFILE_CALL_WITH_T_OBJ (   f,
  t,
  msg 
)
Value:
do { \
startTimeInMacro = GETTIME(); \
f; \
t = (GETTIME() - startTimeInMacro) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (t)); \
} while (FALSE)

◆ PROFILE_WITH_START_END_TIME_OBJ

#define PROFILE_WITH_START_END_TIME_OBJ (   t1,
  t2,
  d,
  msg 
)
Value:
do { \
t1 = (t1 / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
t2 = (GETTIME() / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
d = ((t2) - (t1)); \
DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), (d)); \
} while (FALSE)

◆ PROFILE_WITH_START_TIME

#define PROFILE_WITH_START_TIME (   t,
  msg 
)
Value:
do { \
DLOGP("[%s] Time taken: %" PRIu64 " ms", msg, (GETTIME() - (t)) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND); \
} while (FALSE)

◆ PROFILE_WITH_START_TIME_OBJ

#define PROFILE_WITH_START_TIME_OBJ (   t1,
  t2,
  msg 
)
Value:
do { \
t2 = (GETTIME() - (t1)) / HUNDREDS_OF_NANOS_IN_A_MILLISECOND; \
DLOGP("[%s] Time taken: %" PRIu64 " ms", (msg), t2); \
} while (FALSE)