summaryrefslogtreecommitdiffstats
path: root/chromium/media/cast/rtcp/rtcp_utility.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/cast/rtcp/rtcp_utility.h')
-rw-r--r--chromium/media/cast/rtcp/rtcp_utility.h101
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