| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MEDIA_CAST_RTCP_RTCP_DEFINES_H_ | 5 #ifndef MEDIA_CAST_RTCP_RTCP_DEFINES_H_ |
| 6 #define MEDIA_CAST_RTCP_RTCP_DEFINES_H_ | 6 #define MEDIA_CAST_RTCP_RTCP_DEFINES_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| 11 | 11 |
| 12 #include "media/cast/cast_config.h" | 12 #include "media/cast/cast_config.h" |
| 13 #include "media/cast/cast_defines.h" | 13 #include "media/cast/cast_defines.h" |
| 14 #include "media/cast/logging/logging_defines.h" | 14 #include "media/cast/logging/logging_defines.h" |
| 15 #include "media/cast/net/cast_net_defines.h" |
| 15 | 16 |
| 16 namespace media { | 17 namespace media { |
| 17 namespace cast { | 18 namespace cast { |
| 18 | 19 |
| 19 // Handle the per frame ACK and NACK messages. | 20 // Handle the per frame ACK and NACK messages. |
| 20 class RtcpCastMessage { | 21 class RtcpCastMessage { |
| 21 public: | 22 public: |
| 22 explicit RtcpCastMessage(uint32 media_ssrc); | 23 explicit RtcpCastMessage(uint32 media_ssrc); |
| 23 ~RtcpCastMessage(); | 24 ~RtcpCastMessage(); |
| 24 | 25 |
| 25 uint32 media_ssrc_; | 26 uint32 media_ssrc_; |
| 26 uint32 ack_frame_id_; | 27 uint32 ack_frame_id_; |
| 27 MissingFramesAndPacketsMap missing_frames_and_packets_; | 28 MissingFramesAndPacketsMap missing_frames_and_packets_; |
| 28 }; | 29 }; |
| 29 | 30 |
| 30 // Log messages form sender to receiver. | |
| 31 enum RtcpSenderFrameStatus { | |
| 32 kRtcpSenderFrameStatusUnknown = 0, | |
| 33 kRtcpSenderFrameStatusDroppedByEncoder = 1, | |
| 34 kRtcpSenderFrameStatusDroppedByFlowControl = 2, | |
| 35 kRtcpSenderFrameStatusSentToNetwork = 3, | |
| 36 }; | |
| 37 | |
| 38 struct RtcpSenderFrameLogMessage { | |
| 39 RtcpSenderFrameStatus frame_status; | |
| 40 uint32 rtp_timestamp; | |
| 41 }; | |
| 42 | |
| 43 typedef std::list<RtcpSenderFrameLogMessage> RtcpSenderLogMessage; | |
| 44 | |
| 45 // Log messages from receiver to sender. | 31 // Log messages from receiver to sender. |
| 46 struct RtcpReceiverEventLogMessage { | 32 struct RtcpReceiverEventLogMessage { |
| 47 CastLoggingEvent type; | 33 CastLoggingEvent type; |
| 48 base::TimeTicks event_timestamp; | 34 base::TimeTicks event_timestamp; |
| 49 base::TimeDelta delay_delta; | 35 base::TimeDelta delay_delta; |
| 50 uint16 packet_id; | 36 uint16 packet_id; |
| 51 }; | 37 }; |
| 52 | 38 |
| 53 typedef std::list<RtcpReceiverEventLogMessage> RtcpReceiverEventLogMessages; | 39 typedef std::list<RtcpReceiverEventLogMessage> RtcpReceiverEventLogMessages; |
| 54 | 40 |
| 55 class RtcpReceiverFrameLogMessage { | 41 class RtcpReceiverFrameLogMessage { |
| 56 public: | 42 public: |
| 57 explicit RtcpReceiverFrameLogMessage(uint32 rtp_timestamp); | 43 explicit RtcpReceiverFrameLogMessage(uint32 rtp_timestamp); |
| 58 ~RtcpReceiverFrameLogMessage(); | 44 ~RtcpReceiverFrameLogMessage(); |
| 59 | 45 |
| 60 uint32 rtp_timestamp_; | 46 uint32 rtp_timestamp_; |
| 61 RtcpReceiverEventLogMessages event_log_messages_; | 47 RtcpReceiverEventLogMessages event_log_messages_; |
| 62 }; | 48 }; |
| 63 | 49 |
| 64 typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage; | 50 typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage; |
| 65 | 51 |
| 66 struct RtcpSenderInfo { | |
| 67 // First three members are used for lipsync. | |
| 68 // First two members are used for rtt. | |
| 69 uint32 ntp_seconds; | |
| 70 uint32 ntp_fraction; | |
| 71 uint32 rtp_timestamp; | |
| 72 uint32 send_packet_count; | |
| 73 size_t send_octet_count; | |
| 74 }; | |
| 75 | |
| 76 struct RtcpReportBlock { | |
| 77 uint32 remote_ssrc; // SSRC of sender of this report. | |
| 78 uint32 media_ssrc; // SSRC of the RTP packet sender. | |
| 79 uint8 fraction_lost; | |
| 80 uint32 cumulative_lost; // 24 bits valid. | |
| 81 uint32 extended_high_sequence_number; | |
| 82 uint32 jitter; | |
| 83 uint32 last_sr; | |
| 84 uint32 delay_since_last_sr; | |
| 85 }; | |
| 86 | |
| 87 struct RtcpRpsiMessage { | 52 struct RtcpRpsiMessage { |
| 88 uint32 remote_ssrc; | 53 uint32 remote_ssrc; |
| 89 uint8 payload_type; | 54 uint8 payload_type; |
| 90 uint64 picture_id; | 55 uint64 picture_id; |
| 91 }; | 56 }; |
| 92 | 57 |
| 93 class RtcpNackMessage { | 58 class RtcpNackMessage { |
| 94 public: | 59 public: |
| 95 RtcpNackMessage(); | 60 RtcpNackMessage(); |
| 96 ~RtcpNackMessage(); | 61 ~RtcpNackMessage(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 107 uint32 remb_bitrate; | 72 uint32 remb_bitrate; |
| 108 std::list<uint32> remb_ssrcs; | 73 std::list<uint32> remb_ssrcs; |
| 109 }; | 74 }; |
| 110 | 75 |
| 111 struct RtcpReceiverReferenceTimeReport { | 76 struct RtcpReceiverReferenceTimeReport { |
| 112 uint32 remote_ssrc; | 77 uint32 remote_ssrc; |
| 113 uint32 ntp_seconds; | 78 uint32 ntp_seconds; |
| 114 uint32 ntp_fraction; | 79 uint32 ntp_fraction; |
| 115 }; | 80 }; |
| 116 | 81 |
| 117 struct RtcpDlrrReportBlock { | |
| 118 uint32 last_rr; | |
| 119 uint32 delay_since_last_rr; | |
| 120 }; | |
| 121 | |
| 122 inline bool operator==(RtcpReportBlock lhs, RtcpReportBlock rhs) { | |
| 123 return lhs.remote_ssrc == rhs.remote_ssrc && | |
| 124 lhs.media_ssrc == rhs.media_ssrc && | |
| 125 lhs.fraction_lost == rhs.fraction_lost && | |
| 126 lhs.cumulative_lost == rhs.cumulative_lost && | |
| 127 lhs.extended_high_sequence_number == rhs.extended_high_sequence_number && | |
| 128 lhs.jitter == rhs.jitter && | |
| 129 lhs.last_sr == rhs.last_sr && | |
| 130 lhs.delay_since_last_sr == rhs.delay_since_last_sr; | |
| 131 } | |
| 132 | |
| 133 inline bool operator==(RtcpSenderInfo lhs, RtcpSenderInfo rhs) { | 82 inline bool operator==(RtcpSenderInfo lhs, RtcpSenderInfo rhs) { |
| 134 return lhs.ntp_seconds == rhs.ntp_seconds && | 83 return lhs.ntp_seconds == rhs.ntp_seconds && |
| 135 lhs.ntp_fraction == rhs.ntp_fraction && | 84 lhs.ntp_fraction == rhs.ntp_fraction && |
| 136 lhs.rtp_timestamp == rhs.rtp_timestamp && | 85 lhs.rtp_timestamp == rhs.rtp_timestamp && |
| 137 lhs.send_packet_count == rhs.send_packet_count && | 86 lhs.send_packet_count == rhs.send_packet_count && |
| 138 lhs.send_octet_count == rhs.send_octet_count; | 87 lhs.send_octet_count == rhs.send_octet_count; |
| 139 } | 88 } |
| 140 | 89 |
| 141 inline bool operator==(RtcpReceiverReferenceTimeReport lhs, | 90 inline bool operator==(RtcpReceiverReferenceTimeReport lhs, |
| 142 RtcpReceiverReferenceTimeReport rhs) { | 91 RtcpReceiverReferenceTimeReport rhs) { |
| 143 return lhs.remote_ssrc == rhs.remote_ssrc && | 92 return lhs.remote_ssrc == rhs.remote_ssrc && |
| 144 lhs.ntp_seconds == rhs.ntp_seconds && | 93 lhs.ntp_seconds == rhs.ntp_seconds && |
| 145 lhs.ntp_fraction == rhs.ntp_fraction; | 94 lhs.ntp_fraction == rhs.ntp_fraction; |
| 146 } | 95 } |
| 147 | 96 |
| 148 } // namespace cast | 97 } // namespace cast |
| 149 } // namespace media | 98 } // namespace media |
| 150 | 99 |
| 151 #endif // MEDIA_CAST_RTCP_RTCP_DEFINES_H_ | 100 #endif // MEDIA_CAST_RTCP_RTCP_DEFINES_H_ |
| OLD | NEW |