diff options
Diffstat (limited to 'chromium/media/cast/rtcp/rtcp_defines.h')
-rw-r--r-- | chromium/media/cast/rtcp/rtcp_defines.h | 118 |
1 files changed, 50 insertions, 68 deletions
diff --git a/chromium/media/cast/rtcp/rtcp_defines.h b/chromium/media/cast/rtcp/rtcp_defines.h index 0277bd1feaf..31795648c64 100644 --- a/chromium/media/cast/rtcp/rtcp_defines.h +++ b/chromium/media/cast/rtcp/rtcp_defines.h @@ -5,45 +5,42 @@ #ifndef MEDIA_CAST_RTCP_RTCP_DEFINES_H_ #define MEDIA_CAST_RTCP_RTCP_DEFINES_H_ -#include <list> #include <map> #include <set> #include "media/cast/cast_config.h" #include "media/cast/cast_defines.h" #include "media/cast/logging/logging_defines.h" +#include "media/cast/transport/cast_transport_defines.h" namespace media { namespace cast { +static const size_t kRtcpCastLogHeaderSize = 12; +static const size_t kRtcpReceiverFrameLogSize = 8; +static const size_t kRtcpReceiverEventLogSize = 4; + // Handle the per frame ACK and NACK messages. class RtcpCastMessage { public: explicit RtcpCastMessage(uint32 media_ssrc); ~RtcpCastMessage(); + void Copy(const RtcpCastMessage& cast_message); + uint32 media_ssrc_; uint32 ack_frame_id_; + uint16 target_delay_ms_; MissingFramesAndPacketsMap missing_frames_and_packets_; -}; - -// Log messages form sender to receiver. -enum RtcpSenderFrameStatus { - kRtcpSenderFrameStatusUnknown = 0, - kRtcpSenderFrameStatusDroppedByEncoder = 1, - kRtcpSenderFrameStatusDroppedByFlowControl = 2, - kRtcpSenderFrameStatusSentToNetwork = 3, -}; -struct RtcpSenderFrameLogMessage { - RtcpSenderFrameStatus frame_status; - uint32 rtp_timestamp; + DISALLOW_COPY_AND_ASSIGN(RtcpCastMessage); }; -typedef std::list<RtcpSenderFrameLogMessage> RtcpSenderLogMessage; - // Log messages from receiver to sender. struct RtcpReceiverEventLogMessage { + RtcpReceiverEventLogMessage(); + ~RtcpReceiverEventLogMessage(); + CastLoggingEvent type; base::TimeTicks event_timestamp; base::TimeDelta delay_delta; @@ -52,99 +49,84 @@ struct RtcpReceiverEventLogMessage { typedef std::list<RtcpReceiverEventLogMessage> RtcpReceiverEventLogMessages; -class RtcpReceiverFrameLogMessage { - public: +struct RtcpReceiverFrameLogMessage { explicit RtcpReceiverFrameLogMessage(uint32 rtp_timestamp); ~RtcpReceiverFrameLogMessage(); uint32 rtp_timestamp_; RtcpReceiverEventLogMessages event_log_messages_; -}; -typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage; - -struct RtcpSenderInfo { - // First three members are used for lipsync. - // First two members are used for rtt. - uint32 ntp_seconds; - uint32 ntp_fraction; - uint32 rtp_timestamp; - uint32 send_packet_count; - size_t send_octet_count; + // TODO(mikhal): Investigate what's the best way to allow adding + // DISALLOW_COPY_AND_ASSIGN, as currently it contradicts the implementation + // and possible changes have a big impact on design. }; -struct RtcpReportBlock { - uint32 remote_ssrc; // SSRC of sender of this report. - uint32 media_ssrc; // SSRC of the RTP packet sender. - uint8 fraction_lost; - uint32 cumulative_lost; // 24 bits valid. - uint32 extended_high_sequence_number; - uint32 jitter; - uint32 last_sr; - uint32 delay_since_last_sr; -}; +typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage; struct RtcpRpsiMessage { + RtcpRpsiMessage(); + ~RtcpRpsiMessage(); + uint32 remote_ssrc; uint8 payload_type; uint64 picture_id; }; -class RtcpNackMessage { - public: +struct RtcpNackMessage { RtcpNackMessage(); ~RtcpNackMessage(); uint32 remote_ssrc; std::list<uint16> nack_list; + + DISALLOW_COPY_AND_ASSIGN(RtcpNackMessage); }; -class RtcpRembMessage { - public: +struct RtcpRembMessage { RtcpRembMessage(); ~RtcpRembMessage(); uint32 remb_bitrate; std::list<uint32> remb_ssrcs; + + DISALLOW_COPY_AND_ASSIGN(RtcpRembMessage); }; struct RtcpReceiverReferenceTimeReport { + RtcpReceiverReferenceTimeReport(); + ~RtcpReceiverReferenceTimeReport(); + uint32 remote_ssrc; uint32 ntp_seconds; uint32 ntp_fraction; }; -struct RtcpDlrrReportBlock { - uint32 last_rr; - uint32 delay_since_last_rr; -}; - -inline bool operator==(RtcpReportBlock lhs, RtcpReportBlock rhs) { - return lhs.remote_ssrc == rhs.remote_ssrc && - lhs.media_ssrc == rhs.media_ssrc && - lhs.fraction_lost == rhs.fraction_lost && - lhs.cumulative_lost == rhs.cumulative_lost && - lhs.extended_high_sequence_number == rhs.extended_high_sequence_number && - lhs.jitter == rhs.jitter && - lhs.last_sr == rhs.last_sr && - lhs.delay_since_last_sr == rhs.delay_since_last_sr; -} - -inline bool operator==(RtcpSenderInfo lhs, RtcpSenderInfo rhs) { - return lhs.ntp_seconds == rhs.ntp_seconds && - lhs.ntp_fraction == rhs.ntp_fraction && - lhs.rtp_timestamp == rhs.rtp_timestamp && - lhs.send_packet_count == rhs.send_packet_count && - lhs.send_octet_count == rhs.send_octet_count; -} - inline bool operator==(RtcpReceiverReferenceTimeReport lhs, RtcpReceiverReferenceTimeReport rhs) { return lhs.remote_ssrc == rhs.remote_ssrc && - lhs.ntp_seconds == rhs.ntp_seconds && - lhs.ntp_fraction == rhs.ntp_fraction; + lhs.ntp_seconds == rhs.ntp_seconds && + lhs.ntp_fraction == rhs.ntp_fraction; } +// Struct used by raw event subscribers as an intermediate format before +// sending off to the other side via RTCP. +// (i.e., {Sender,Receiver}RtcpEventSubscriber) +struct RtcpEvent { + RtcpEvent(); + ~RtcpEvent(); + + CastLoggingEvent type; + + // Time of event logged. + base::TimeTicks timestamp; + + // Render/playout delay. Only set for FRAME_PLAYOUT events. + base::TimeDelta delay_delta; + + // Only set for packet events. + uint16 packet_id; +}; + } // namespace cast } // namespace media |