diff options
Diffstat (limited to 'chromium/media/cast/rtcp/rtcp_utility.h')
-rw-r--r-- | chromium/media/cast/rtcp/rtcp_utility.h | 101 |
1 files changed, 43 insertions, 58 deletions
diff --git a/chromium/media/cast/rtcp/rtcp_utility.h b/chromium/media/cast/rtcp/rtcp_utility.h index 5cf55d91060..34f3f25a889 100644 --- a/chromium/media/cast/rtcp/rtcp_utility.h +++ b/chromium/media/cast/rtcp/rtcp_utility.h @@ -7,6 +7,7 @@ #include "media/cast/cast_config.h" #include "media/cast/cast_defines.h" +#include "media/cast/logging/logging_defines.h" #include "media/cast/rtcp/rtcp_defines.h" namespace media { @@ -21,7 +22,6 @@ 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; @@ -37,7 +37,7 @@ struct RtcpFieldReceiverReport { struct RtcpFieldSenderReport { // RFC 3550. uint32 sender_ssrc; - uint8 number_of_report_blocks; + uint8 number_of_report_blocks; uint32 ntp_most_significant; uint32 ntp_least_significant; uint32 rtp_timestamp; @@ -48,7 +48,7 @@ struct RtcpFieldSenderReport { struct RtcpFieldReportBlockItem { // RFC 3550. uint32 ssrc; - uint8 fraction_lost; + uint8 fraction_lost; uint32 cumulative_number_of_packets_lost; uint32 extended_highest_sequence_number; uint32 jitter; @@ -101,9 +101,9 @@ struct RtcpFieldPayloadSpecificRpsi { // RFC 4585. uint32 sender_ssrc; uint32 media_ssrc; - uint8 payload_type; + uint8 payload_type; uint16 number_of_valid_bits; - uint8 native_bit_string[kRtcpRpsiDataSize]; + uint8 native_bit_string[kRtcpRpsiDataSize]; }; struct RtcpFieldXr { @@ -138,6 +138,7 @@ struct RtcpFieldPayloadSpecificRembItem { struct RtcpFieldPayloadSpecificCastItem { uint8 last_frame_id; uint8 number_of_lost_fields; + uint16 target_delay_ms; }; struct RtcpFieldPayloadSpecificCastNackItem { @@ -151,41 +152,37 @@ struct RtcpFieldApplicationSpecificCastReceiverLogItem { uint32 rtp_timestamp; uint32 event_timestamp_base; uint8 event; - uint16 delay_delta_or_packet_id; + union { + uint16 packet_id; + int16 delay_delta; + } 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; - RtcpFieldReportBlockItem report_block_item; - RtcpFieldSdesCName c_name; - RtcpFieldBye bye; - - RtcpFieldXr extended_report; - RtcpFieldXrRrtr rrtr; - RtcpFieldXrDlrr dlrr; - - RtcpFieldGenericRtpFeedbackNack nack; - RtcpFieldGenericRtpFeedbackNackItem nack_item; - - RtcpFieldPayloadSpecificPli pli; - RtcpFieldPayloadSpecificRpsi rpsi; - RtcpFieldPayloadSpecificFir fir; - RtcpFieldPayloadSpecificFirItem fir_item; - RtcpFieldPayloadSpecificApplication application_specific; - RtcpFieldPayloadSpecificRembItem remb_item; - RtcpFieldPayloadSpecificCastItem cast_item; - RtcpFieldPayloadSpecificCastNackItem cast_nack_item; + RtcpFieldReceiverReport receiver_report; + RtcpFieldSenderReport sender_report; + RtcpFieldReportBlockItem report_block_item; + RtcpFieldSdesCName c_name; + RtcpFieldBye bye; + + RtcpFieldXr extended_report; + RtcpFieldXrRrtr rrtr; + RtcpFieldXrDlrr dlrr; + + RtcpFieldGenericRtpFeedbackNack nack; + RtcpFieldGenericRtpFeedbackNackItem nack_item; + + RtcpFieldPayloadSpecificPli pli; + RtcpFieldPayloadSpecificRpsi rpsi; + RtcpFieldPayloadSpecificFir fir; + RtcpFieldPayloadSpecificFirItem fir_item; + RtcpFieldPayloadSpecificApplication application_specific; + RtcpFieldPayloadSpecificRembItem remb_item; + RtcpFieldPayloadSpecificCastItem cast_item; + RtcpFieldPayloadSpecificCastNackItem cast_nack_item; RtcpFieldApplicationSpecificCastReceiverLogItem cast_receiver_log; - RtcpFieldApplicationSpecificCastSenderLogItem cast_sender_log; }; enum RtcpFieldTypes { @@ -195,7 +192,6 @@ enum RtcpFieldTypes { kRtcpRrCode, kRtcpSrCode, kRtcpReportBlockItemCode, - kRtcpSdesCode, kRtcpSdesChunkCode, kRtcpByeCode, @@ -209,7 +205,6 @@ enum RtcpFieldTypes { // RFC 4585. kRtcpGenericRtpFeedbackNackCode, kRtcpGenericRtpFeedbackNackItemCode, - kRtcpPayloadSpecificPliCode, kRtcpPayloadSpecificRpsiCode, kRtcpPayloadSpecificAppCode, @@ -222,7 +217,6 @@ enum RtcpFieldTypes { kRtcpApplicationSpecificCastReceiverLogCode, kRtcpApplicationSpecificCastReceiverLogFrameCode, kRtcpApplicationSpecificCastReceiverLogEventCode, - kRtcpApplicationSpecificCastSenderLogCode, // RFC 5104. kRtcpPayloadSpecificFirCode, @@ -233,27 +227,13 @@ enum RtcpFieldTypes { }; struct RtcpCommonHeader { - uint8 V; // Version. - bool P; // Padding. - uint8 IC; // Item count / subtype. - uint8 PT; // Packet Type. + uint8 V; // Version. + bool P; // Padding. + uint8 IC; // Item count / subtype. + uint8 PT; // Packet Type. uint16 length_in_octets; }; -enum RtcpPacketTypes { - kPacketTypeLow = 194, // SMPTE time-code mapping. - kPacketTypeInterArrivalJitterReport = 195, - kPacketTypeSenderReport = 200, - kPacketTypeReceiverReport = 201, - kPacketTypeSdes = 202, - kPacketTypeBye = 203, - kPacketTypeApplicationDefined = 204, - kPacketTypeGenericRtpFeedback = 205, - kPacketTypePayloadSpecific = 206, - kPacketTypeXr = 207, - kPacketTypeHigh = 210, // Port Mapping. -}; - class RtcpParser { public: RtcpParser(const uint8* rtcp_data, size_t rtcp_length); @@ -275,7 +255,6 @@ class RtcpParser { kStateBye, kStateApplicationSpecificCastReceiverFrameLog, kStateApplicationSpecificCastReceiverEventLog, - kStateApplicationSpecificCastSenderLog, kStateExtendedReportBlock, kStateExtendedReportDelaySinceLastReceiverReport, kStateGenericRtpFeedbackNack, @@ -297,7 +276,6 @@ class RtcpParser { void IterateByeItem(); void IterateCastReceiverLogFrame(); void IterateCastReceiverLogEvent(); - void IterateCastSenderLog(); void IterateExtendedReportItem(); void IterateExtendedReportDelaySinceLastReceiverReportItem(); void IterateNackItem(); @@ -323,7 +301,6 @@ class RtcpParser { bool ParseApplicationDefined(uint8 subtype); bool ParseCastReceiverLogFrameItem(); bool ParseCastReceiverLogEventItem(); - bool ParseCastSenderLogItem(); bool ParseExtendedReport(); bool ParseExtendedReportItem(); @@ -355,6 +332,14 @@ class RtcpParser { DISALLOW_COPY_AND_ASSIGN(RtcpParser); }; +// Converts a log event type to an integer value. +// NOTE: We have only allocated 4 bits to represent the type of event over the +// wire. Therefore, this function can only return values from 0 to 15. +uint8 ConvertEventTypeToWireFormat(CastLoggingEvent event); + +// The inverse of |ConvertEventTypeToWireFormat()|. +CastLoggingEvent TranslateToLogEventFromWireFormat(uint8 event); + } // namespace cast } // namespace media |