OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 // Returns true if we haven't received an RTCP RR for several RTCP | 94 // Returns true if we haven't received an RTCP RR for several RTCP |
95 // intervals, but only triggers true once. | 95 // intervals, but only triggers true once. |
96 bool RtcpRrTimeout(int64_t rtcp_interval_ms); | 96 bool RtcpRrTimeout(int64_t rtcp_interval_ms); |
97 | 97 |
98 // Returns true if we haven't received an RTCP RR telling the receive side | 98 // Returns true if we haven't received an RTCP RR telling the receive side |
99 // has not received RTP packets for too long, i.e. extended highest sequence | 99 // has not received RTP packets for too long, i.e. extended highest sequence |
100 // number hasn't increased for several RTCP intervals. The function only | 100 // number hasn't increased for several RTCP intervals. The function only |
101 // returns true once until a new RR is received. | 101 // returns true once until a new RR is received. |
102 bool RtcpRrSequenceNumberTimeout(int64_t rtcp_interval_ms); | 102 bool RtcpRrSequenceNumberTimeout(int64_t rtcp_interval_ms); |
103 | 103 |
104 std::vector<rtcp::TmmbItem> TmmbrReceived() const; | 104 std::vector<rtcp::TmmbItem> TmmbrReceived(); |
105 | 105 |
106 bool UpdateRTCPReceiveInformationTimers(); | 106 bool UpdateRTCPReceiveInformationTimers(); |
107 | 107 |
108 std::vector<rtcp::TmmbItem> BoundingSet(bool* tmmbr_owner); | 108 std::vector<rtcp::TmmbItem> BoundingSet(bool* tmmbr_owner); |
109 | 109 |
110 void UpdateTmmbr(); | 110 void UpdateTmmbr(); |
111 | 111 |
112 void RegisterRtcpStatisticsCallback(RtcpStatisticsCallback* callback); | 112 void RegisterRtcpStatisticsCallback(RtcpStatisticsCallback* callback); |
113 RtcpStatisticsCallback* GetRtcpStatisticsCallback(); | 113 RtcpStatisticsCallback* GetRtcpStatisticsCallback(); |
114 | 114 |
115 private: | 115 private: |
116 struct PacketInformation; | 116 struct PacketInformation; |
117 using ReceivedInfoMap = std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*>; | 117 struct ReceiveInformation; |
| 118 // Mapped by remote ssrc. |
| 119 using ReceivedInfoMap = std::map<uint32_t, ReceiveInformation>; |
118 // RTCP report block information mapped by remote SSRC. | 120 // RTCP report block information mapped by remote SSRC. |
119 using ReportBlockInfoMap = | 121 using ReportBlockInfoMap = |
120 std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*>; | 122 std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*>; |
121 // RTCP report block information map mapped by source SSRC. | 123 // RTCP report block information map mapped by source SSRC. |
122 using ReportBlockMap = std::map<uint32_t, ReportBlockInfoMap>; | 124 using ReportBlockMap = std::map<uint32_t, ReportBlockInfoMap>; |
123 | 125 |
124 bool ParseCompoundPacket(const uint8_t* packet_begin, | 126 bool ParseCompoundPacket(const uint8_t* packet_begin, |
125 const uint8_t* packet_end, | 127 const uint8_t* packet_end, |
126 PacketInformation* packet_information); | 128 PacketInformation* packet_information); |
127 | 129 |
128 void TriggerCallbacksFromRTCPPacket( | 130 void TriggerCallbacksFromRTCPPacket( |
129 const PacketInformation& packet_information); | 131 const PacketInformation& packet_information); |
130 | 132 |
131 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation( | 133 void CreateReceiveInformation(uint32_t remote_ssrc) |
132 uint32_t remoteSSRC); | 134 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
133 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC); | 135 ReceiveInformation* GetReceiveInformation(uint32_t remote_ssrc) |
| 136 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
134 | 137 |
135 void HandleSenderReport(const rtcp::CommonHeader& rtcp_block, | 138 void HandleSenderReport(const rtcp::CommonHeader& rtcp_block, |
136 PacketInformation* packet_information) | 139 PacketInformation* packet_information) |
137 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 140 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
138 | 141 |
139 void HandleReceiverReport(const rtcp::CommonHeader& rtcp_block, | 142 void HandleReceiverReport(const rtcp::CommonHeader& rtcp_block, |
140 PacketInformation* packet_information) | 143 PacketInformation* packet_information) |
141 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 144 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
142 | 145 |
143 void HandleReportBlock(const rtcp::ReportBlock& report_block, | 146 void HandleReportBlock(const rtcp::ReportBlock& report_block, |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 // Time when the report was received. | 240 // Time when the report was received. |
238 uint32_t _lastReceivedXRNTPsecs; | 241 uint32_t _lastReceivedXRNTPsecs; |
239 uint32_t _lastReceivedXRNTPfrac; | 242 uint32_t _lastReceivedXRNTPfrac; |
240 // Estimated rtt, zero when there is no valid estimate. | 243 // Estimated rtt, zero when there is no valid estimate. |
241 bool xr_rrtr_status_ GUARDED_BY(_criticalSectionRTCPReceiver); | 244 bool xr_rrtr_status_ GUARDED_BY(_criticalSectionRTCPReceiver); |
242 int64_t xr_rr_rtt_ms_; | 245 int64_t xr_rr_rtt_ms_; |
243 | 246 |
244 // Received report blocks. | 247 // Received report blocks. |
245 ReportBlockMap _receivedReportBlockMap | 248 ReportBlockMap _receivedReportBlockMap |
246 GUARDED_BY(_criticalSectionRTCPReceiver); | 249 GUARDED_BY(_criticalSectionRTCPReceiver); |
247 ReceivedInfoMap _receivedInfoMap; | 250 ReceivedInfoMap received_infos_ GUARDED_BY(_criticalSectionRTCPReceiver); |
248 std::map<uint32_t, std::string> received_cnames_ | 251 std::map<uint32_t, std::string> received_cnames_ |
249 GUARDED_BY(_criticalSectionRTCPReceiver); | 252 GUARDED_BY(_criticalSectionRTCPReceiver); |
250 | 253 |
251 // The last time we received an RTCP RR. | 254 // The last time we received an RTCP RR. |
252 int64_t _lastReceivedRrMs; | 255 int64_t _lastReceivedRrMs; |
253 | 256 |
254 // The time we last received an RTCP RR telling we have successfully | 257 // The time we last received an RTCP RR telling we have successfully |
255 // delivered RTP packet to the remote side. | 258 // delivered RTP packet to the remote side. |
256 int64_t _lastIncreasedSequenceNumberMs; | 259 int64_t _lastIncreasedSequenceNumberMs; |
257 | 260 |
258 RtcpStatisticsCallback* stats_callback_ GUARDED_BY(_criticalSectionFeedbacks); | 261 RtcpStatisticsCallback* stats_callback_ GUARDED_BY(_criticalSectionFeedbacks); |
259 | 262 |
260 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; | 263 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; |
261 RtcpPacketTypeCounter packet_type_counter_; | 264 RtcpPacketTypeCounter packet_type_counter_; |
262 | 265 |
263 RTCPUtility::NackStats nack_stats_; | 266 RTCPUtility::NackStats nack_stats_; |
264 | 267 |
265 size_t num_skipped_packets_; | 268 size_t num_skipped_packets_; |
266 int64_t last_skipped_packets_warning_; | 269 int64_t last_skipped_packets_warning_; |
267 }; | 270 }; |
268 } // namespace webrtc | 271 } // namespace webrtc |
269 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ | 272 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ |
OLD | NEW |