| 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 bool UpdateRTCPReceiveInformationTimers(); | 105 bool UpdateRTCPReceiveInformationTimers(); |
| 106 | 106 |
| 107 std::vector<rtcp::TmmbItem> BoundingSet(bool* tmmbr_owner); | 107 std::vector<rtcp::TmmbItem> BoundingSet(bool* tmmbr_owner); |
| 108 | 108 |
| 109 void UpdateTmmbr(); | 109 void UpdateTmmbr(); |
| 110 | 110 |
| 111 void RegisterRtcpStatisticsCallback(RtcpStatisticsCallback* callback); | 111 void RegisterRtcpStatisticsCallback(RtcpStatisticsCallback* callback); |
| 112 RtcpStatisticsCallback* GetRtcpStatisticsCallback(); | 112 RtcpStatisticsCallback* GetRtcpStatisticsCallback(); |
| 113 | 113 |
| 114 private: | 114 private: |
| 115 struct PacketInformation; |
| 115 using ReceivedInfoMap = std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*>; | 116 using ReceivedInfoMap = std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*>; |
| 116 // RTCP report block information mapped by remote SSRC. | 117 // RTCP report block information mapped by remote SSRC. |
| 117 using ReportBlockInfoMap = | 118 using ReportBlockInfoMap = |
| 118 std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*>; | 119 std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*>; |
| 119 // RTCP report block information map mapped by source SSRC. | 120 // RTCP report block information map mapped by source SSRC. |
| 120 using ReportBlockMap = std::map<uint32_t, ReportBlockInfoMap>; | 121 using ReportBlockMap = std::map<uint32_t, ReportBlockInfoMap>; |
| 121 | 122 |
| 122 bool ParseCompoundPacket(const uint8_t* packet_begin, | 123 bool ParseCompoundPacket(const uint8_t* packet_begin, |
| 123 const uint8_t* packet_end, | 124 const uint8_t* packet_end, |
| 124 RTCPHelp::RTCPPacketInformation* packet_information); | 125 PacketInformation* packet_information); |
| 125 | 126 |
| 126 void TriggerCallbacksFromRTCPPacket( | 127 void TriggerCallbacksFromRTCPPacket( |
| 127 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 128 const PacketInformation& packet_information); |
| 128 | 129 |
| 129 RTCPUtility::RTCPCnameInformation* CreateCnameInformation( | 130 RTCPUtility::RTCPCnameInformation* CreateCnameInformation( |
| 130 uint32_t remoteSSRC); | 131 uint32_t remoteSSRC); |
| 131 RTCPUtility::RTCPCnameInformation* GetCnameInformation( | 132 RTCPUtility::RTCPCnameInformation* GetCnameInformation( |
| 132 uint32_t remoteSSRC) const; | 133 uint32_t remoteSSRC) const; |
| 133 | 134 |
| 134 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation( | 135 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation( |
| 135 uint32_t remoteSSRC); | 136 uint32_t remoteSSRC); |
| 136 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC); | 137 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC); |
| 137 | 138 |
| 138 void HandleSenderReport( | 139 void HandleSenderReport(const rtcp::CommonHeader& rtcp_block, |
| 139 const rtcp::CommonHeader& rtcp_block, | 140 PacketInformation* packet_information) |
| 140 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | |
| 141 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 141 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 142 | 142 |
| 143 void HandleReceiverReport( | 143 void HandleReceiverReport(const rtcp::CommonHeader& rtcp_block, |
| 144 const rtcp::CommonHeader& rtcp_block, | 144 PacketInformation* packet_information) |
| 145 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | |
| 146 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 145 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 147 | 146 |
| 148 void HandleReportBlock(const rtcp::ReportBlock& report_block, | 147 void HandleReportBlock(const rtcp::ReportBlock& report_block, |
| 149 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, | 148 PacketInformation* packet_information, |
| 150 uint32_t remoteSSRC) | 149 uint32_t remoteSSRC) |
| 151 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 150 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 152 | 151 |
| 153 void HandleSDES(const rtcp::CommonHeader& rtcp_block, | 152 void HandleSDES(const rtcp::CommonHeader& rtcp_block, |
| 154 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 153 PacketInformation* packet_information) |
| 155 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 154 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 156 | 155 |
| 157 void HandleXr(const rtcp::CommonHeader& rtcp_block, | 156 void HandleXr(const rtcp::CommonHeader& rtcp_block, |
| 158 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 157 PacketInformation* packet_information) |
| 159 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 158 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 160 | 159 |
| 161 void HandleXrReceiveReferenceTime( | 160 void HandleXrReceiveReferenceTime(uint32_t sender_ssrc, |
| 162 const rtcp::Rrtr& rrtr, | 161 const rtcp::Rrtr& rrtr) |
| 163 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | |
| 164 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 162 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 165 | 163 |
| 166 void HandleXrDlrrReportBlock( | 164 void HandleXrDlrrReportBlock(const rtcp::ReceiveTimeInfo& rti) |
| 167 const rtcp::ReceiveTimeInfo& rti, | |
| 168 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | |
| 169 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 165 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 170 | 166 |
| 171 void HandleNACK(const rtcp::CommonHeader& rtcp_block, | 167 void HandleNACK(const rtcp::CommonHeader& rtcp_block, |
| 172 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 168 PacketInformation* packet_information) |
| 173 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 169 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 174 | 170 |
| 175 void HandleBYE(const rtcp::CommonHeader& rtcp_block) | 171 void HandleBYE(const rtcp::CommonHeader& rtcp_block) |
| 176 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 172 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 177 | 173 |
| 178 void HandlePLI(const rtcp::CommonHeader& rtcp_block, | 174 void HandlePLI(const rtcp::CommonHeader& rtcp_block, |
| 179 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 175 PacketInformation* packet_information) |
| 180 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 176 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 181 | 177 |
| 182 void HandleSLI(const rtcp::CommonHeader& rtcp_block, | 178 void HandleSLI(const rtcp::CommonHeader& rtcp_block, |
| 183 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 179 PacketInformation* packet_information) |
| 184 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 180 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 185 | 181 |
| 186 void HandleRPSI(const rtcp::CommonHeader& rtcp_block, | 182 void HandleRPSI(const rtcp::CommonHeader& rtcp_block, |
| 187 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 183 PacketInformation* packet_information) |
| 188 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 184 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 189 | 185 |
| 190 void HandlePsfbApp(const rtcp::CommonHeader& rtcp_block, | 186 void HandlePsfbApp(const rtcp::CommonHeader& rtcp_block, |
| 191 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 187 PacketInformation* packet_information) |
| 192 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 188 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 193 | 189 |
| 194 void HandleTMMBR(const rtcp::CommonHeader& rtcp_block, | 190 void HandleTMMBR(const rtcp::CommonHeader& rtcp_block, |
| 195 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 191 PacketInformation* packet_information) |
| 196 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 192 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 197 | 193 |
| 198 void HandleTMMBN(const rtcp::CommonHeader& rtcp_block, | 194 void HandleTMMBN(const rtcp::CommonHeader& rtcp_block, |
| 199 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 195 PacketInformation* packet_information) |
| 200 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 196 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 201 | 197 |
| 202 void HandleSR_REQ(const rtcp::CommonHeader& rtcp_block, | 198 void HandleSR_REQ(const rtcp::CommonHeader& rtcp_block, |
| 203 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 199 PacketInformation* packet_information) |
| 204 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 200 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 205 | 201 |
| 206 void HandleFIR(const rtcp::CommonHeader& rtcp_block, | 202 void HandleFIR(const rtcp::CommonHeader& rtcp_block, |
| 207 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) | 203 PacketInformation* packet_information) |
| 208 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 204 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 209 | 205 |
| 210 void HandleTransportFeedback( | 206 void HandleTransportFeedback(const rtcp::CommonHeader& rtcp_block, |
| 211 const rtcp::CommonHeader& rtcp_block, | 207 PacketInformation* packet_information) |
| 212 RTCPHelp::RTCPPacketInformation* rtcp_packet_information) | |
| 213 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 208 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 214 | 209 |
| 215 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( | 210 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( |
| 216 uint32_t remote_ssrc, | 211 uint32_t remote_ssrc, |
| 217 uint32_t source_ssrc) | 212 uint32_t source_ssrc) |
| 218 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 213 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 219 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( | 214 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( |
| 220 uint32_t remote_ssrc, | 215 uint32_t remote_ssrc, |
| 221 uint32_t source_ssrc) const | 216 uint32_t source_ssrc) const |
| 222 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 217 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; | 263 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; |
| 269 RtcpPacketTypeCounter packet_type_counter_; | 264 RtcpPacketTypeCounter packet_type_counter_; |
| 270 | 265 |
| 271 RTCPUtility::NackStats nack_stats_; | 266 RTCPUtility::NackStats nack_stats_; |
| 272 | 267 |
| 273 size_t num_skipped_packets_; | 268 size_t num_skipped_packets_; |
| 274 int64_t last_skipped_packets_warning_; | 269 int64_t last_skipped_packets_warning_; |
| 275 }; | 270 }; |
| 276 } // namespace webrtc | 271 } // namespace webrtc |
| 277 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ | 272 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ |
| OLD | NEW |