Added support for sending and receiving RTCP XR packets:

- Receiver reference time report block
- DLRR report block (RFC3611).

BUG=1613
R=mflodman@webrtc.org, stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2196010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4898 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
asapersson@webrtc.org
2013-10-02 13:15:34 +00:00
parent c0167702d3
commit 8469f7b328
13 changed files with 814 additions and 40 deletions

View File

@ -19,6 +19,8 @@
namespace webrtc {
namespace RTCPUtility {
uint32_t MidNtp(uint32_t ntp_sec, uint32_t ntp_frac);
// CNAME
struct RTCPCnameInformation
{
@ -74,6 +76,19 @@ namespace RTCPUtility {
// RFC 3611
uint32_t OriginatorSSRC;
};
struct RTCPPacketXRReceiverReferenceTimeItem
{
// RFC 3611 4.4
uint32_t NTPMostSignificant;
uint32_t NTPLeastSignificant;
};
struct RTCPPacketXRDLRRReportBlockItem
{
// RFC 3611 4.5
uint32_t SSRC;
uint32_t LastRR;
uint32_t DelayLastRR;
};
struct RTCPPacketXRVOIPMetricItem
{
// RFC 3611 4.7
@ -228,6 +243,8 @@ namespace RTCPUtility {
RTCPPacketPSFBFIRItem FIRItem;
RTCPPacketXR XR;
RTCPPacketXRReceiverReferenceTimeItem XRReceiverReferenceTimeItem;
RTCPPacketXRDLRRReportBlockItem XRDLRRReportBlockItem;
RTCPPacketXRVOIPMetricItem XRVOIPMetricItem;
RTCPPacketAPP APP;
@ -274,6 +291,10 @@ namespace RTCPUtility {
kRtcpRtpfbSrReqCode,
// RFC 3611
kRtcpXrHeaderCode,
kRtcpXrReceiverReferenceTimeCode,
kRtcpXrDlrrReportBlockCode,
kRtcpXrDlrrReportBlockItemCode,
kRtcpXrVoipMetricCode,
kRtcpAppCode,
@ -353,6 +374,7 @@ namespace RTCPUtility {
State_PSFB_AppItem, // Application specific FCI item
State_PSFB_REMBItem, // Application specific REMB item
State_XRItem,
State_XR_DLLRItem,
State_AppItem
};
@ -371,6 +393,8 @@ namespace RTCPUtility {
void IteratePsfbAppItem();
void IteratePsfbREMBItem();
void IterateAppItem();
void IterateXrItem();
void IterateXrDlrrItem();
void Validate();
void EndCurrentBlock();
@ -391,6 +415,8 @@ namespace RTCPUtility {
bool ParseXR();
bool ParseXRItem();
bool ParseXRReceiverReferenceTimeItem();
bool ParseXRDLRRReportBlockItem();
bool ParseXRVOIPMetricItem();
bool ParseFBCommon(const RTCPCommonHeader& header);