Amazon Kinesis Webrtc C SDK
Rtcp.h
Go to the documentation of this file.
1 #ifndef __KINESIS_VIDEO_WEBRTC_CLIENT_PEERCONNECTION_RTCP__
2 #define __KINESIS_VIDEO_WEBRTC_CLIENT_PEERCONNECTION_RTCP__
3 
4 #pragma once
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 STATUS onRtcpPacket(PKvsPeerConnection, PBYTE, UINT32);
17 
18 // https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01
19 // Deltas are represented as multiples of 250us:
20 #define TWCC_TICKS_PER_SECOND (1000000LL / 250)
21 #define MICROSECONDS_PER_SECOND 1000000LL
22 #define MILLISECONDS_PER_SECOND 1000LL
23 #define TWCC_PACKET_LOST_TIME ((UINT64) (-1LL))
24 #define TWCC_PACKET_UNITIALIZED_TIME 0
25 #define TWCC_ESTIMATOR_TIME_WINDOW (1 * HUNDREDS_OF_NANOS_IN_A_SECOND)
26 
27 typedef enum {
32 
33 #define TWCC_FB_PACKETCHUNK_SIZE 2
34 #define IS_TWCC_RUNLEN(packetChunk) ((((packetChunk) >> 15u) & 1u) == 0)
35 #define TWCC_RUNLEN_STATUS_SYMBOL(packetChunk) (((packetChunk) >> 13u) & 3u)
36 #define TWCC_RUNLEN_GET(packetChunk) ((packetChunk) & 0x1fffu)
37 #define TWCC_IS_NOTRECEIVED(statusSymbol) ((statusSymbol) == TWCC_STATUS_SYMBOL_NOTRECEIVED)
38 #define TWCC_ISRECEIVED(statusSymbol) ((statusSymbol) == TWCC_STATUS_SYMBOL_SMALLDELTA || (statusSymbol) == TWCC_STATUS_SYMBOL_LARGEDELTA)
39 #define TWCC_RUNLEN_ISRECEIVED(packetChunk) TWCC_ISRECEIVED(TWCC_RUNLEN_STATUS_SYMBOL(packetChunk))
40 #define TWCC_STATUSVECTOR_IS_2BIT(packetChunk) (((packetChunk) >> 14u) & 1u)
41 #define TWCC_STATUSVECTOR_SSIZE(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 2u : 1u)
42 #define TWCC_STATUSVECTOR_SMASK(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 2u : 1u)
43 #define TWCC_STATUSVECTOR_STATUS(packetChunk, i) \
44  (((packetChunk) >> (14u - (i) * TWCC_STATUSVECTOR_SSIZE(packetChunk))) & TWCC_STATUSVECTOR_SMASK(packetChunk))
45 #define TWCC_STATUSVECTOR_COUNT(packetChunk) (TWCC_STATUSVECTOR_IS_2BIT(packetChunk) ? 7 : 14)
46 #define TWCC_PACKET_STATUS_COUNT(payload) (getUnalignedInt16BigEndian((payload) + 10))
47 
48 #ifdef __cplusplus
49 }
50 #endif
51 #endif /* __KINESIS_VIDEO_WEBRTC_CLIENT_PEERCONNECTION_RTCP__ */
STATUS onRtcpSLIPacket(PRtcpPacket, PKvsPeerConnection)
Definition: Rtcp.c:31
TWCC_STATUS_SYMBOL
Definition: Rtcp.h:27
@ TWCC_STATUS_SYMBOL_LARGEDELTA
Definition: Rtcp.h:30
@ TWCC_STATUS_SYMBOL_NOTRECEIVED
Definition: Rtcp.h:28
@ TWCC_STATUS_SYMBOL_SMALLDELTA
Definition: Rtcp.h:29
STATUS onRtcpTwccPacket(PRtcpPacket, PKvsPeerConnection)
Definition: Rtcp.c:311
STATUS onRtcpRembPacket(PRtcpPacket, PKvsPeerConnection)
Definition: Rtcp.c:459
STATUS onRtcpPacket(PKvsPeerConnection, PBYTE, UINT32)
Definition: Rtcp.c:401
STATUS onRtcpPLIPacket(PRtcpPacket, PKvsPeerConnection)
Definition: Rtcp.c:487
STATUS parseRtcpTwccPacket(PRtcpPacket, PTwccManager)
Definition: Rtcp.c:140
Definition: PeerConnection.h:72
Definition: RtcpPacket.h:72
Definition: PeerConnection.h:57