| Index: media/cast/rtcp/rtcp_utility.h
|
| diff --git a/media/cast/rtcp/rtcp_utility.h b/media/cast/rtcp/rtcp_utility.h
|
| index ab7312ffb6adf80cc86c2f6deef6fdaab538659a..5cf55d91060a06f0e69a0da80f5b96b6dd3e7189 100644
|
| --- a/media/cast/rtcp/rtcp_utility.h
|
| +++ b/media/cast/rtcp/rtcp_utility.h
|
| @@ -21,6 +21,13 @@ static const int kRtcpMaxNumberOfRembFeedbackSsrcs = 255;
|
| static const uint32 kRemb = ('R' << 24) + ('E' << 16) + ('M' << 8) + 'B';
|
| static const uint32 kCast = ('C' << 24) + ('A' << 16) + ('S' << 8) + 'T';
|
|
|
| +static const uint8 kSenderLogSubtype = 1;
|
| +static const uint8 kReceiverLogSubtype = 2;
|
| +
|
| +static const size_t kRtcpMaxReceiverLogMessages = 256;
|
| +static const size_t kRtcpMaxNackFields = 253;
|
| +static const size_t kRtcpMaxCastLossFields = 100;
|
| +
|
| struct RtcpFieldReceiverReport {
|
| // RFC 3550.
|
| uint32 sender_ssrc;
|
| @@ -139,6 +146,21 @@ struct RtcpFieldPayloadSpecificCastNackItem {
|
| uint8 bitmask;
|
| };
|
|
|
| +struct RtcpFieldApplicationSpecificCastReceiverLogItem {
|
| + uint32 sender_ssrc;
|
| + uint32 rtp_timestamp;
|
| + uint32 event_timestamp_base;
|
| + uint8 event;
|
| + uint16 delay_delta_or_packet_id;
|
| + uint16 event_timestamp_delta;
|
| +};
|
| +
|
| +struct RtcpFieldApplicationSpecificCastSenderLogItem {
|
| + uint32 sender_ssrc;
|
| + uint8 status;
|
| + uint32 rtp_timestamp;
|
| +};
|
| +
|
| union RtcpField {
|
| RtcpFieldReceiverReport receiver_report;
|
| RtcpFieldSenderReport sender_report;
|
| @@ -161,6 +183,9 @@ union RtcpField {
|
| RtcpFieldPayloadSpecificRembItem remb_item;
|
| RtcpFieldPayloadSpecificCastItem cast_item;
|
| RtcpFieldPayloadSpecificCastNackItem cast_nack_item;
|
| +
|
| + RtcpFieldApplicationSpecificCastReceiverLogItem cast_receiver_log;
|
| + RtcpFieldApplicationSpecificCastSenderLogItem cast_sender_log;
|
| };
|
|
|
| enum RtcpFieldTypes {
|
| @@ -189,10 +214,15 @@ enum RtcpFieldTypes {
|
| kRtcpPayloadSpecificRpsiCode,
|
| kRtcpPayloadSpecificAppCode,
|
|
|
| + // Application specific.
|
| kRtcpPayloadSpecificRembCode,
|
| kRtcpPayloadSpecificRembItemCode,
|
| kRtcpPayloadSpecificCastCode,
|
| kRtcpPayloadSpecificCastNackItemCode,
|
| + kRtcpApplicationSpecificCastReceiverLogCode,
|
| + kRtcpApplicationSpecificCastReceiverLogFrameCode,
|
| + kRtcpApplicationSpecificCastReceiverLogEventCode,
|
| + kRtcpApplicationSpecificCastSenderLogCode,
|
|
|
| // RFC 5104.
|
| kRtcpPayloadSpecificFirCode,
|
| @@ -215,11 +245,11 @@ enum RtcpPacketTypes {
|
| kPacketTypeInterArrivalJitterReport = 195,
|
| kPacketTypeSenderReport = 200,
|
| kPacketTypeReceiverReport = 201,
|
| - kPacketTypeSdes= 202,
|
| + kPacketTypeSdes = 202,
|
| kPacketTypeBye = 203,
|
| kPacketTypeApplicationDefined = 204,
|
| kPacketTypeGenericRtpFeedback = 205,
|
| - kPacketTypePayloadSpecific = 206,
|
| + kPacketTypePayloadSpecific = 206,
|
| kPacketTypeXr = 207,
|
| kPacketTypeHigh = 210, // Port Mapping.
|
| };
|
| @@ -243,6 +273,9 @@ class RtcpParser {
|
| kStateReportBlock, // Sender/Receiver report report blocks.
|
| kStateSdes,
|
| kStateBye,
|
| + kStateApplicationSpecificCastReceiverFrameLog,
|
| + kStateApplicationSpecificCastReceiverEventLog,
|
| + kStateApplicationSpecificCastSenderLog,
|
| kStateExtendedReportBlock,
|
| kStateExtendedReportDelaySinceLastReceiverReport,
|
| kStateGenericRtpFeedbackNack,
|
| @@ -262,6 +295,9 @@ class RtcpParser {
|
| void IterateReportBlockItem();
|
| void IterateSdesItem();
|
| void IterateByeItem();
|
| + void IterateCastReceiverLogFrame();
|
| + void IterateCastReceiverLogEvent();
|
| + void IterateCastSenderLog();
|
| void IterateExtendedReportItem();
|
| void IterateExtendedReportDelaySinceLastReceiverReportItem();
|
| void IterateNackItem();
|
| @@ -284,6 +320,10 @@ class RtcpParser {
|
| bool ParseSdesTypes();
|
| bool ParseBye();
|
| bool ParseByeItem();
|
| + bool ParseApplicationDefined(uint8 subtype);
|
| + bool ParseCastReceiverLogFrameItem();
|
| + bool ParseCastReceiverLogEventItem();
|
| + bool ParseCastSenderLogItem();
|
|
|
| bool ParseExtendedReport();
|
| bool ParseExtendedReportItem();
|
|
|