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 16 matching lines...) Expand all Loading... |
27 class ModuleRtpRtcpImpl; | 27 class ModuleRtpRtcpImpl; |
28 | 28 |
29 class RTCPReceiver : public TMMBRHelp | 29 class RTCPReceiver : public TMMBRHelp |
30 { | 30 { |
31 public: | 31 public: |
32 RTCPReceiver(Clock* clock, | 32 RTCPReceiver(Clock* clock, |
33 bool receiver_only, | 33 bool receiver_only, |
34 RtcpPacketTypeCounterObserver* packet_type_counter_observer, | 34 RtcpPacketTypeCounterObserver* packet_type_counter_observer, |
35 RtcpBandwidthObserver* rtcp_bandwidth_observer, | 35 RtcpBandwidthObserver* rtcp_bandwidth_observer, |
36 RtcpIntraFrameObserver* rtcp_intra_frame_observer, | 36 RtcpIntraFrameObserver* rtcp_intra_frame_observer, |
37 TransportFeedbackObserver* transport_feedback_observer, | |
38 ModuleRtpRtcpImpl* owner); | 37 ModuleRtpRtcpImpl* owner); |
39 virtual ~RTCPReceiver(); | 38 virtual ~RTCPReceiver(); |
40 | 39 |
41 RTCPMethod Status() const; | 40 RTCPMethod Status() const; |
42 void SetRTCPStatus(RTCPMethod method); | 41 void SetRTCPStatus(RTCPMethod method); |
43 | 42 |
44 int64_t LastReceived(); | 43 int64_t LastReceived(); |
45 int64_t LastReceivedReceiverReport() const; | 44 int64_t LastReceivedReceiverReport() const; |
46 | 45 |
47 void SetSsrcs(uint32_t main_ssrc, | 46 void SetSsrcs(uint32_t main_ssrc, |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 void HandleFIRItem(RTCPHelp::RTCPReceiveInformation* receiveInfo, | 209 void HandleFIRItem(RTCPHelp::RTCPReceiveInformation* receiveInfo, |
211 const RTCPUtility::RTCPPacket& rtcpPacket, | 210 const RTCPUtility::RTCPPacket& rtcpPacket, |
212 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 211 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); |
213 | 212 |
214 void HandleAPP(RTCPUtility::RTCPParserV2& rtcpParser, | 213 void HandleAPP(RTCPUtility::RTCPParserV2& rtcpParser, |
215 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 214 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); |
216 | 215 |
217 void HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser, | 216 void HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser, |
218 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); | 217 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation); |
219 | 218 |
220 void HandleTransportFeedback( | |
221 RTCPUtility::RTCPParserV2* rtcp_parser, | |
222 RTCPHelp::RTCPPacketInformation* rtcp_packet_information); | |
223 | |
224 private: | 219 private: |
225 typedef std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*> | 220 typedef std::map<uint32_t, RTCPHelp::RTCPReceiveInformation*> |
226 ReceivedInfoMap; | 221 ReceivedInfoMap; |
227 // RTCP report block information mapped by remote SSRC. | 222 // RTCP report block information mapped by remote SSRC. |
228 typedef std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*> | 223 typedef std::map<uint32_t, RTCPHelp::RTCPReportBlockInformation*> |
229 ReportBlockInfoMap; | 224 ReportBlockInfoMap; |
230 // RTCP report block information map mapped by source SSRC. | 225 // RTCP report block information map mapped by source SSRC. |
231 typedef std::map<uint32_t, ReportBlockInfoMap> ReportBlockMap; | 226 typedef std::map<uint32_t, ReportBlockInfoMap> ReportBlockMap; |
232 | 227 |
233 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( | 228 RTCPHelp::RTCPReportBlockInformation* CreateOrGetReportBlockInformation( |
234 uint32_t remote_ssrc, uint32_t source_ssrc) | 229 uint32_t remote_ssrc, uint32_t source_ssrc) |
235 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 230 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
236 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( | 231 RTCPHelp::RTCPReportBlockInformation* GetReportBlockInformation( |
237 uint32_t remote_ssrc, uint32_t source_ssrc) const | 232 uint32_t remote_ssrc, uint32_t source_ssrc) const |
238 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 233 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); |
239 | 234 |
240 Clock* const _clock; | 235 Clock* const _clock; |
241 const bool receiver_only_; | 236 const bool receiver_only_; |
242 RTCPMethod _method; | 237 RTCPMethod _method; |
243 int64_t _lastReceived; | 238 int64_t _lastReceived; |
244 ModuleRtpRtcpImpl& _rtpRtcp; | 239 ModuleRtpRtcpImpl& _rtpRtcp; |
245 | 240 |
246 CriticalSectionWrapper* _criticalSectionFeedbacks; | 241 CriticalSectionWrapper* _criticalSectionFeedbacks; |
247 RtcpBandwidthObserver* const _cbRtcpBandwidthObserver; | 242 RtcpBandwidthObserver* const _cbRtcpBandwidthObserver; |
248 RtcpIntraFrameObserver* const _cbRtcpIntraFrameObserver; | 243 RtcpIntraFrameObserver* const _cbRtcpIntraFrameObserver; |
249 TransportFeedbackObserver* const _cbTransportFeedbackObserver; | |
250 | 244 |
251 CriticalSectionWrapper* _criticalSectionRTCPReceiver; | 245 CriticalSectionWrapper* _criticalSectionRTCPReceiver; |
252 uint32_t main_ssrc_; | 246 uint32_t main_ssrc_; |
253 uint32_t _remoteSSRC; | 247 uint32_t _remoteSSRC; |
254 std::set<uint32_t> registered_ssrcs_; | 248 std::set<uint32_t> registered_ssrcs_; |
255 | 249 |
256 // Received send report | 250 // Received send report |
257 RTCPSenderInfo _remoteSenderInfo; | 251 RTCPSenderInfo _remoteSenderInfo; |
258 // when did we receive the last send report | 252 // when did we receive the last send report |
259 uint32_t _lastReceivedSRNTPsecs; | 253 uint32_t _lastReceivedSRNTPsecs; |
(...skipping 21 matching lines...) Expand all Loading... |
281 // The time we last received an RTCP RR telling we have successfully | 275 // The time we last received an RTCP RR telling we have successfully |
282 // delivered RTP packet to the remote side. | 276 // delivered RTP packet to the remote side. |
283 int64_t _lastIncreasedSequenceNumberMs; | 277 int64_t _lastIncreasedSequenceNumberMs; |
284 | 278 |
285 RtcpStatisticsCallback* stats_callback_ GUARDED_BY(_criticalSectionFeedbacks); | 279 RtcpStatisticsCallback* stats_callback_ GUARDED_BY(_criticalSectionFeedbacks); |
286 | 280 |
287 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; | 281 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; |
288 RtcpPacketTypeCounter packet_type_counter_; | 282 RtcpPacketTypeCounter packet_type_counter_; |
289 | 283 |
290 RTCPUtility::NackStats nack_stats_; | 284 RTCPUtility::NackStats nack_stats_; |
291 | |
292 size_t num_skipped_packets_; | |
293 int64_t last_skipped_packets_warning_; | |
294 }; | 285 }; |
295 } // namespace webrtc | 286 } // namespace webrtc |
296 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ | 287 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ |
OLD | NEW |