4#ifndef __KINESIS_VIDEO_WEBRTC_CLIENT_PEERCONNECTION_PEERCONNECTION__
5#define __KINESIS_VIDEO_WEBRTC_CLIENT_PEERCONNECTION_PEERCONNECTION__
13#define LOCAL_ICE_UFRAG_LEN 4
14#define LOCAL_ICE_PWD_LEN 24
15#define LOCAL_CNAME_LEN 16
18#define MAX_ICE_UFRAG_LEN 256
19#define MAX_ICE_PWD_LEN 256
21#define PEER_FRAME_BUFFER_SIZE_INCREMENT_FACTOR 1.5
24#define VALID_CHAR_SET_FOR_JSON "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"
26#define ICE_CANDIDATE_JSON_TEMPLATE (PCHAR) "{\"candidate\":\"candidate:%s\",\"sdpMid\":\"0\",\"sdpMLineIndex\":0}"
28#define MAX_ICE_CANDIDATE_JSON_LEN (MAX_SDP_ATTRIBUTE_VALUE_LENGTH + SIZEOF(ICE_CANDIDATE_JSON_TEMPLATE) + 1)
30#define CODEC_HASH_TABLE_BUCKET_COUNT 50
31#define CODEC_HASH_TABLE_BUCKET_LENGTH 2
32#define RTX_HASH_TABLE_BUCKET_COUNT 50
33#define RTX_HASH_TABLE_BUCKET_LENGTH 2
34#define TWCC_HASH_TABLE_BUCKET_COUNT 100
35#define TWCC_HASH_TABLE_BUCKET_LENGTH 2
37#define DATA_CHANNEL_HASH_TABLE_BUCKET_COUNT 200
38#define DATA_CHANNEL_HASH_TABLE_BUCKET_LENGTH 2
41#define DEBUG_LOG_SDP ((PCHAR) "DEBUG_LOG_SDP")
43#define MAX_ACCESS_THREADS_WEBRTC_CLIENT_CONTEXT 50
#define CERTIFICATE_FINGERPRINT_LENGTH
Definition Include_i.h:95
#define LOCAL_ICE_PWD_LEN
Definition PeerConnection.h:14
struct TwccRtpPacketInfo * PTwccRtpPacketInfo
RTX_CODEC
Definition PeerConnection.h:45
@ RTC_RTX_CODEC_H265
Definition PeerConnection.h:48
@ RTC_RTX_CODEC_VP8
Definition PeerConnection.h:47
@ RTC_RTX_CODEC_H264_PROFILE_42E01F_LEVEL_ASYMMETRY_ALLOWED_PACKETIZATION_MODE
Definition PeerConnection.h:46
STATUS onFrameDroppedFunc(UINT64, UINT16, UINT16, UINT32)
Definition PeerConnection.c:435
#define LOCAL_ICE_UFRAG_LEN
Definition PeerConnection.h:13
struct KvsPeerConnection * PKvsPeerConnection
#define MAX_ICE_PWD_LEN
Definition PeerConnection.h:19
STATUS onFrameReadyFunc(UINT64, UINT16, UINT16, UINT32)
Definition PeerConnection.c:375
#define LOCAL_CNAME_LEN
Definition PeerConnection.h:15
VOID onSctpSessionOutboundPacket(UINT64, PBYTE, UINT32)
Definition PeerConnection.c:589
struct AllocateSctpSortDataChannelsData * PAllocateSctpSortDataChannelsData
VOID onIceConnectionStateChange(UINT64, UINT64)
Definition PeerConnection.c:482
STATUS changePeerConnectionState(PKvsPeerConnection, RTC_PEER_CONNECTION_STATE)
Definition PeerConnection.c:322
STATUS sendPacketToRtpReceiver(PKvsPeerConnection, PBYTE, UINT32)
Definition PeerConnection.c:230
struct TwccManager * PTwccManager
struct StunIpAddrContext * PStunIpAddrContext
struct WebRtcClientContext * PWebRtcClientContext
VOID onSctpSessionDataChannelOpen(UINT64, UINT32, PBYTE, UINT32)
Definition PeerConnection.c:638
UINT32 parseExtId(PCHAR)
parses string of form "$number $whatever" returns $number as uint32
Definition PeerConnection.c:1371
#define MAX_ICE_UFRAG_LEN
Definition PeerConnection.h:18
STATUS twccManagerOnPacketSent(PKvsPeerConnection, PRtpPacket)
Definition PeerConnection.c:2032
struct KvsPeerConnectionDiagnostics * PKvsPeerConnectionDiagnostics
VOID onSctpSessionDataChannelMessage(UINT64, UINT32, BOOL, PBYTE, UINT32)
Definition PeerConnection.c:607
#define MAX_SDP_SESSION_MEDIA_COUNT
Definition Sdp.h:104
STATUS(* RtcOnPeerCongestionFeedback)(UINT64, PCongestionCtx)
Called when the SDK has computed congestion context from TWCC feedback. The application uses this to ...
Definition Include.h:1258
VOID(* RtcOnDataChannel)(UINT64, PRtcDataChannel)
RtcOnDataChannel is fired when the remote PeerConnection creates a new DataChannel.
Definition Include.h:1303
VOID(* RtcOnSenderBandwidthEstimation)(UINT64, UINT32, UINT32, UINT32, UINT32, UINT64)
RtcOnSenderBandwidthEstimation is fired everytime a bandwidth estimation value is computed by sender....
Definition Include.h:1198
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:1249
VOID(* RtcOnIceCandidate)(UINT64, PCHAR)
RtcOnIceCandidate is fired when new iceCandidate is found. if PCHAR is NULL then candidate gathering ...
Definition Include.h:1310
VOID(* RtcOnConnectionStateChange)(UINT64, RTC_PEER_CONNECTION_STATE)
RtcOnConnectionStateChange is fired to report a change in peer connection state.
Definition Include.h:1323
RTC_PEER_CONNECTION_STATE
RTC_PEER_CONNECTION_STATE Stats of RTC peer connection.
Definition Include.h:977
@ RTC_RTP_TRANSCEIVER_DIRECTION_UNINITIALIZED
Will use the default "sendrecv" after initialization.
Definition Include.h:1037
#define MAX_ICE_CONFIG_URI_LEN
Definition Stats.h:30
Definition PeerConnection.h:171
PKvsPeerConnection pKvsPeerConnection
Definition PeerConnection.h:173
PHashTable unkeyedDataChannels
Definition PeerConnection.h:174
UINT32 currentDataChannelId
Definition PeerConnection.h:172
Definition Include_i.h:113
Definition PeerConnection.h:73
UINT64 peerConnectionCreationTime
Definition PeerConnection.h:74
UINT64 dtlsSessionSetupTime
Definition PeerConnection.h:75
UINT64 closePeerConnectionTime
Definition PeerConnection.h:77
UINT64 iceHolePunchingTime
Definition PeerConnection.h:76
UINT64 freePeerConnectionTime
Definition PeerConnection.h:78
Definition PeerConnection.h:81
RtcOnTwccFeedbackReceived onTwccFeedbackReceived
Definition PeerConnection.h:160
PHashTable pDataChannels
Definition PeerConnection.h:134
RtcOnDataChannel onDataChannel
Definition PeerConnection.h:137
PDoubleList pTransceivers
Definition PeerConnection.h:100
volatile SIZE_T transportWideSequenceNumber
Definition PeerConnection.h:88
MUTEX pSrtpSessionLock
Definition PeerConnection.h:94
PHashTable pCodecTable
Definition PeerConnection.h:127
RtcOnConnectionStateChange onConnectionStateChange
Definition PeerConnection.h:143
RtcOnIceCandidate onIceCandidate
Definition PeerConnection.h:140
RtcOnSenderBandwidthEstimation onSenderBandwidthEstimation
Definition PeerConnection.h:156
PHashTable pRtxTable
Definition PeerConnection.h:131
UINT32 padding
Definition PeerConnection.h:87
UINT64 onIceCandidateCustomData
Definition PeerConnection.h:139
UINT64 onDataChannelCustomData
Definition PeerConnection.h:136
UINT64 onConnectionStateChangeCustomData
Definition PeerConnection.h:142
RtcPeerConnection peerConnection
Definition PeerConnection.h:82
UINT16 MTU
Definition PeerConnection.h:146
BOOL isOffer
Definition PeerConnection.h:120
UINT64 onPeerCongestionFeedbackCustomData
Definition PeerConnection.h:165
PSctpSession pSctpSession
Definition PeerConnection.h:97
PTwccManager pTwccManager
Definition PeerConnection.h:155
PIceAgent pIceAgent
Definition PeerConnection.h:90
PDoubleList pAnswerTransceivers
Definition PeerConnection.h:102
MUTEX twccLock
Definition PeerConnection.h:154
PSessionDescription pRemoteSessionDescription
Definition PeerConnection.h:99
UINT64 iceConnectingStartTime
Definition PeerConnection.h:167
MUTEX peerConnectionObjLock
Definition PeerConnection.h:116
BOOL dtlsIsServer
Definition PeerConnection.h:92
UINT64 onSenderBandwidthEstimationCustomData
Definition PeerConnection.h:157
KvsPeerConnectionDiagnostics peerConnectionDiagnostics
Definition PeerConnection.h:168
NullableBool canTrickleIce
Definition PeerConnection.h:148
TIMER_QUEUE_HANDLE timerQueueHandle
Definition PeerConnection.h:122
PDtlsSession pDtlsSession
Definition PeerConnection.h:91
volatile ATOMIC_BOOL sctpIsEnabled
Definition PeerConnection.h:104
RtcOnPeerCongestionFeedback onPeerCongestionFeedback
Definition PeerConnection.h:164
RTC_PEER_CONNECTION_STATE connectionState
Definition PeerConnection.h:144
UINT16 twccExtId
Definition PeerConnection.h:152
UINT64 onTwccFeedbackReceivedCustomData
Definition PeerConnection.h:161
PDoubleList pFakeTransceivers
Definition PeerConnection.h:101
PSrtpSession pSrtpSession
Definition PeerConnection.h:95
Definition NullableDefs.h:60
An RtcPeerConnection instance allows an application to establish peer-to-peer communications with ano...
Definition Include.h:1341
Definition PeerConnection.h:177
UINT64 expirationDuration
Definition PeerConnection.h:183
UINT64 stunDnsResolutionTime
Definition PeerConnection.h:182
STATUS status
Definition PeerConnection.h:184
DualKvsIpAddresses kvsIpAddresses
Definition PeerConnection.h:179
BOOL isIpInitialized
Definition PeerConnection.h:180
UINT64 startTime
Definition PeerConnection.h:181
Definition PeerConnection.h:64
DOUBLE lastQueueDelay
Definition PeerConnection.h:70
UINT16 lastReportedSeqNum
Definition PeerConnection.h:67
PHashTable pTwccRtpPktInfosHashTable
Definition PeerConnection.h:65
DOUBLE smoothedSlope
Definition PeerConnection.h:69
UINT16 prevReportedBaseSeqNum
Definition PeerConnection.h:68
UINT16 firstSeqNumInRollingWindow
Definition PeerConnection.h:66
Definition PeerConnection.h:58
UINT64 localTimeKvs
sender send time (T) in hundreds of nanos
Definition PeerConnection.h:59
UINT64 remoteTimeKvs
receiver arrival time (R) in hundreds of nanos (reconstructed)
Definition PeerConnection.h:60
UINT32 packetSize
Definition PeerConnection.h:61
Definition PeerConnection.h:189
PStunIpAddrContext pStunIpAddrCtx
Definition PeerConnection.h:190
volatile ATOMIC_BOOL isContextInitialized
Definition PeerConnection.h:191
MUTEX stunCtxlock
Definition PeerConnection.h:193
volatile SIZE_T contextRefCnt
Definition PeerConnection.h:192
Definition IceAgent.h:199
Definition RtpPacket.h:99
Definition SrtpSession.h:15