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 |
11 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_HELP_H_ | 11 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_HELP_H_ |
12 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_HELP_H_ | 12 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_HELP_H_ |
13 | 13 |
14 #include <map> | |
15 #include <vector> | |
16 | |
17 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 14 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
18 #include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h" | |
19 #include "webrtc/typedefs.h" | 15 #include "webrtc/typedefs.h" |
20 | 16 |
21 namespace webrtc { | 17 namespace webrtc { |
22 namespace RTCPHelp { | 18 namespace RTCPHelp { |
23 | 19 |
24 class RTCPReportBlockInformation { | 20 class RTCPReportBlockInformation { |
25 public: | 21 public: |
26 RTCPReportBlockInformation(); | 22 RTCPReportBlockInformation(); |
27 ~RTCPReportBlockInformation(); | 23 ~RTCPReportBlockInformation(); |
28 | 24 |
29 // Statistics | 25 // Statistics |
30 RTCPReportBlock remoteReceiveBlock; | 26 RTCPReportBlock remoteReceiveBlock; |
31 uint32_t remoteMaxJitter; | 27 uint32_t remoteMaxJitter; |
32 | 28 |
33 // RTT | 29 // RTT |
34 int64_t RTT; | 30 int64_t RTT; |
35 int64_t minRTT; | 31 int64_t minRTT; |
36 int64_t maxRTT; | 32 int64_t maxRTT; |
37 int64_t avgRTT; | 33 int64_t avgRTT; |
38 uint32_t numAverageCalcs; | 34 uint32_t numAverageCalcs; |
39 }; | 35 }; |
40 | 36 |
41 class RTCPReceiveInformation { | |
42 public: | |
43 RTCPReceiveInformation(); | |
44 ~RTCPReceiveInformation(); | |
45 | |
46 void InsertTmmbrItem(uint32_t sender_ssrc, | |
47 const rtcp::TmmbItem& tmmbr_item, | |
48 int64_t current_time_ms); | |
49 | |
50 void GetTmmbrSet(int64_t current_time_ms, | |
51 std::vector<rtcp::TmmbItem>* candidates); | |
52 | |
53 void ClearTmmbr(); | |
54 | |
55 int64_t last_time_received_ms = 0; | |
56 | |
57 int32_t last_fir_sequence_number = -1; | |
58 int64_t last_fir_request_ms = 0; | |
59 | |
60 bool ready_for_delete = false; | |
61 | |
62 std::vector<rtcp::TmmbItem> tmmbn; | |
63 | |
64 private: | |
65 struct TimedTmmbrItem { | |
66 rtcp::TmmbItem tmmbr_item; | |
67 int64_t last_updated_ms; | |
68 }; | |
69 | |
70 std::map<uint32_t, TimedTmmbrItem> tmmbr_; | |
71 }; | |
72 | |
73 } // end namespace RTCPHelp | 37 } // end namespace RTCPHelp |
74 } // namespace webrtc | 38 } // namespace webrtc |
75 | 39 |
76 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_HELP_H_ | 40 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_HELP_H_ |
OLD | NEW |