| 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 117 |
| 118 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation( | 118 RTCPHelp::RTCPReceiveInformation* CreateReceiveInformation( |
| 119 uint32_t remoteSSRC); | 119 uint32_t remoteSSRC); |
| 120 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC); | 120 RTCPHelp::RTCPReceiveInformation* GetReceiveInformation(uint32_t remoteSSRC); |
| 121 | 121 |
| 122 void UpdateReceiveInformation( | 122 void UpdateReceiveInformation( |
| 123 RTCPHelp::RTCPReceiveInformation& receiveInformation); | 123 RTCPHelp::RTCPReceiveInformation& receiveInformation); |
| 124 | 124 |
| 125 void HandleSenderReceiverReport( | 125 void HandleSenderReceiverReport( |
| 126 RTCPUtility::RTCPParserV2& rtcpParser, | 126 RTCPUtility::RTCPParserV2& rtcpParser, |
| 127 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 127 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 128 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 128 | 129 |
| 129 void HandleReportBlock( | 130 void HandleReportBlock( |
| 130 const RTCPUtility::RTCPPacket& rtcpPacket, | 131 const RTCPUtility::RTCPPacket& rtcpPacket, |
| 131 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, | 132 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, |
| 132 uint32_t remoteSSRC); | 133 uint32_t remoteSSRC) |
| 134 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 133 | 135 |
| 134 void HandleSDES(RTCPUtility::RTCPParserV2& rtcpParser, | 136 void HandleSDES(RTCPUtility::RTCPParserV2& rtcpParser, |
| 135 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 137 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 138 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 136 | 139 |
| 137 void HandleSDESChunk(RTCPUtility::RTCPParserV2& rtcpParser); | 140 void HandleSDESChunk(RTCPUtility::RTCPParserV2& rtcpParser) |
| 141 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 138 | 142 |
| 139 void HandleXrHeader(RTCPUtility::RTCPParserV2& parser, | 143 void HandleXrHeader(RTCPUtility::RTCPParserV2& parser, |
| 140 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 144 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 145 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 141 | 146 |
| 142 void HandleXrReceiveReferenceTime( | 147 void HandleXrReceiveReferenceTime( |
| 143 RTCPUtility::RTCPParserV2& parser, | 148 RTCPUtility::RTCPParserV2& parser, |
| 144 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 149 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 150 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 145 | 151 |
| 146 void HandleXrDlrrReportBlock( | 152 void HandleXrDlrrReportBlock( |
| 147 RTCPUtility::RTCPParserV2& parser, | 153 RTCPUtility::RTCPParserV2& parser, |
| 148 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 154 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 155 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 149 | 156 |
| 150 void HandleXrDlrrReportBlockItem( | 157 void HandleXrDlrrReportBlockItem( |
| 151 const RTCPUtility::RTCPPacket& packet, | 158 const RTCPUtility::RTCPPacket& packet, |
| 152 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 159 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 160 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 153 | 161 |
| 154 void HandleXRVOIPMetric( | 162 void HandleXRVOIPMetric( |
| 155 RTCPUtility::RTCPParserV2& rtcpParser, | 163 RTCPUtility::RTCPParserV2& rtcpParser, |
| 156 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 164 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 165 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 157 | 166 |
| 158 void HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser, | 167 void HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser, |
| 159 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 168 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 169 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 160 | 170 |
| 161 void HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket, | 171 void HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket, |
| 162 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 172 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 173 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 163 | 174 |
| 164 void HandleBYE(RTCPUtility::RTCPParserV2& rtcpParser); | 175 void HandleBYE(RTCPUtility::RTCPParserV2& rtcpParser) |
| 176 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 165 | 177 |
| 166 void HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser, | 178 void HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser, |
| 167 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 179 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 180 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 168 | 181 |
| 169 void HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser, | 182 void HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser, |
| 170 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 183 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 184 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 171 | 185 |
| 172 void HandleSLIItem(const RTCPUtility::RTCPPacket& rtcpPacket, | 186 void HandleSLIItem(const RTCPUtility::RTCPPacket& rtcpPacket, |
| 173 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 187 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 188 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 174 | 189 |
| 175 void HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser, | 190 void HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser, |
| 176 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 191 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 192 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 177 | 193 |
| 178 void HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser, | 194 void HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser, |
| 179 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 195 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 196 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 180 | 197 |
| 181 void HandleREMBItem(RTCPUtility::RTCPParserV2& rtcpParser, | 198 void HandleREMBItem(RTCPUtility::RTCPParserV2& rtcpParser, |
| 182 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 199 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 200 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 183 | 201 |
| 184 void HandleIJ(RTCPUtility::RTCPParserV2& rtcpParser, | 202 void HandleIJ(RTCPUtility::RTCPParserV2& rtcpParser, |
| 185 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 203 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 204 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 186 | 205 |
| 187 void HandleIJItem(const RTCPUtility::RTCPPacket& rtcpPacket, | 206 void HandleIJItem(const RTCPUtility::RTCPPacket& rtcpPacket, |
| 188 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 207 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 208 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 189 | 209 |
| 190 void HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser, | 210 void HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser, |
| 191 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 211 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 212 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 192 | 213 |
| 193 void HandleTMMBRItem(RTCPHelp::RTCPReceiveInformation& receiveInfo, | 214 void HandleTMMBRItem(RTCPHelp::RTCPReceiveInformation& receiveInfo, |
| 194 const RTCPUtility::RTCPPacket& rtcpPacket, | 215 const RTCPUtility::RTCPPacket& rtcpPacket, |
| 195 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, | 216 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation, |
| 196 uint32_t senderSSRC); | 217 uint32_t senderSSRC) |
| 218 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 197 | 219 |
| 198 void HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser, | 220 void HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser, |
| 199 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 221 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 222 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 200 | 223 |
| 201 void HandleSR_REQ(RTCPUtility::RTCPParserV2& rtcpParser, | 224 void HandleSR_REQ(RTCPUtility::RTCPParserV2& rtcpParser, |
| 202 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 225 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 226 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 203 | 227 |
| 204 void HandleTMMBNItem(RTCPHelp::RTCPReceiveInformation& receiveInfo, | 228 void HandleTMMBNItem(RTCPHelp::RTCPReceiveInformation& receiveInfo, |
| 205 const RTCPUtility::RTCPPacket& rtcpPacket); | 229 const RTCPUtility::RTCPPacket& rtcpPacket) |
| 230 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 206 | 231 |
| 207 void HandleFIR(RTCPUtility::RTCPParserV2& rtcpParser, | 232 void HandleFIR(RTCPUtility::RTCPParserV2& rtcpParser, |
| 208 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 233 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 234 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 209 | 235 |
| 210 void HandleFIRItem(RTCPHelp::RTCPReceiveInformation* receiveInfo, | 236 void HandleFIRItem(RTCPHelp::RTCPReceiveInformation* receiveInfo, |
| 211 const RTCPUtility::RTCPPacket& rtcpPacket, | 237 const RTCPUtility::RTCPPacket& rtcpPacket, |
| 212 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 238 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 239 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 213 | 240 |
| 214 void HandleAPP(RTCPUtility::RTCPParserV2& rtcpParser, | 241 void HandleAPP(RTCPUtility::RTCPParserV2& rtcpParser, |
| 215 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 242 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 243 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 216 | 244 |
| 217 void HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser, | 245 void HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser, |
| 218 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 246 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
| 247 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 219 | 248 |
| 220 void HandleTransportFeedback( | 249 void HandleTransportFeedback( |
| 221 RTCPUtility::RTCPParserV2* rtcp_parser, | 250 RTCPUtility::RTCPParserV2* rtcp_parser, |
| 222 RTCPHelp::RTCPPacketInformation* rtcp_packet_information); | 251 RTCPHelp::RTCPPacketInformation* rtcp_packet_information) |
| 252 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 223 | 253 |
| 224 private: | 254 private: |
| 225 typedef std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*> | 255 typedef std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*> |
| 226 ReceivedInfoMap; | 256 ReceivedInfoMap; |
| 227 // RTCP report block information mapped by remote SSRC. | 257 // RTCP report block information mapped by remote SSRC. |
| 228 typedef std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*> | 258 typedef std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*> |
| 229 ReportBlockInfoMap; | 259 ReportBlockInfoMap; |
| 230 // RTCP report block information map mapped by source SSRC. | 260 // RTCP report block information map mapped by source SSRC. |
| 231 typedef std::map<uint32_t, ReportBlockInfoMap> ReportBlockMap; | 261 typedef std::map<uint32_t, ReportBlockInfoMap> ReportBlockMap; |
| 232 | 262 |
| 233 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( | 263 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( |
| 234 uint32_t remote_ssrc, uint32_t source_ssrc) | 264 uint32_t remote_ssrc, uint32_t source_ssrc) |
| 235 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 265 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 236 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( | 266 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( |
| 237 uint32_t remote_ssrc, uint32_t source_ssrc) const | 267 uint32_t remote_ssrc, uint32_t source_ssrc) const |
| 238 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 268 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
| 239 | 269 |
| 240 Clock* const _clock; | 270 Clock* const _clock; |
| 241 const bool receiver_only_; | 271 const bool receiver_only_; |
| 242 RtcpMode _method; | 272 RtcpMode _method; |
| 243 int64_t _lastReceived; | 273 int64_t _lastReceived; |
| 244 ModuleRtpRtcpImpl& _rtpRtcp; | 274 ModuleRtpRtcpImpl& _rtpRtcp; |
| 245 | 275 |
| 246 CriticalSectionWrapper* _criticalSectionFeedbacks; | 276 CriticalSectionWrapper* _criticalSectionFeedbacks; |
| 247 RtcpBandwidthObserver* const _cbRtcpBandwidthObserver; | 277 RtcpBandwidthObserver* const _cbRtcpBandwidthObserver; |
| 248 RtcpIntraFrameObserver* const _cbRtcpIntraFrameObserver; | 278 RtcpIntraFrameObserver* const _cbRtcpIntraFrameObserver; |
| 249 TransportFeedbackObserver* const _cbTransportFeedbackObserver; | 279 TransportFeedbackObserver* const _cbTransportFeedbackObserver; |
| 250 | 280 |
| 251 CriticalSectionWrapper* _criticalSectionRTCPReceiver; | 281 CriticalSectionWrapper* _criticalSectionRTCPReceiver; |
| 252 uint32_t main_ssrc_; | 282 uint32_t main_ssrc_ GUARDED_BY(_criticalSectionRTCPReceiver); |
| 253 uint32_t _remoteSSRC; | 283 uint32_t _remoteSSRC GUARDED_BY(_criticalSectionRTCPReceiver); |
| 254 std::set<uint32_t> registered_ssrcs_; | 284 std::set<uint32_t> registered_ssrcs_ GUARDED_BY(_criticalSectionRTCPReceiver); |
| 255 | 285 |
| 256 // Received send report | 286 // Received send report |
| 257 RTCPSenderInfo _remoteSenderInfo; | 287 RTCPSenderInfo _remoteSenderInfo; |
| 258 // when did we receive the last send report | 288 // when did we receive the last send report |
| 259 uint32_t _lastReceivedSRNTPsecs; | 289 uint32_t _lastReceivedSRNTPsecs; |
| 260 uint32_t _lastReceivedSRNTPfrac; | 290 uint32_t _lastReceivedSRNTPfrac; |
| 261 | 291 |
| 262 // Received XR receive time report. | 292 // Received XR receive time report. |
| 263 RtcpReceiveTimeInfo _remoteXRReceiveTimeInfo; | 293 RtcpReceiveTimeInfo _remoteXRReceiveTimeInfo; |
| 264 // Time when the report was received. | 294 // Time when the report was received. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 287 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; | 317 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; |
| 288 RtcpPacketTypeCounter packet_type_counter_; | 318 RtcpPacketTypeCounter packet_type_counter_; |
| 289 | 319 |
| 290 RTCPUtility::NackStats nack_stats_; | 320 RTCPUtility::NackStats nack_stats_; |
| 291 | 321 |
| 292 size_t num_skipped_packets_; | 322 size_t num_skipped_packets_; |
| 293 int64_t last_skipped_packets_warning_; | 323 int64_t last_skipped_packets_warning_; |
| 294 }; | 324 }; |
| 295 } // namespace webrtc | 325 } // namespace webrtc |
| 296 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ | 326 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ |
| OLD | NEW |