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 namespace webrtc { | 27 namespace webrtc { |
28 class VideoBitrateAllocationObserver; | 28 class VideoBitrateAllocationObserver; |
29 namespace rtcp { | 29 namespace rtcp { |
30 class CommonHeader; | 30 class CommonHeader; |
31 class ReportBlock; | 31 class ReportBlock; |
32 class Rrtr; | 32 class Rrtr; |
33 class TargetBitrate; | 33 class TargetBitrate; |
34 class TmmbItem; | 34 class TmmbItem; |
35 } // namespace rtcp | 35 } // namespace rtcp |
36 | 36 |
37 class RTCPReceiver { | 37 class RTCPReceiver { |
philipel
2016/12/19 15:39:07
RtcpReceiver? Or maybe that is for another CL...
danilchap
2016/12/19 16:37:56
prefer to leave for another CL
changing name would
philipel
2016/12/20 09:55:55
Acknowledged.
| |
38 public: | 38 public: |
39 class ModuleRtpRtcp { | 39 class ModuleRtpRtcp { |
40 public: | 40 public: |
41 virtual void SetTmmbn(std::vector<rtcp::TmmbItem> bounding_set) = 0; | 41 virtual void SetTmmbn(std::vector<rtcp::TmmbItem> bounding_set) = 0; |
42 virtual void OnRequestSendReport() = 0; | 42 virtual void OnRequestSendReport() = 0; |
43 virtual void OnReceivedNack( | 43 virtual void OnReceivedNack( |
44 const std::vector<uint16_t>& nack_sequence_numbers) = 0; | 44 const std::vector<uint16_t>& nack_sequence_numbers) = 0; |
45 virtual void OnReceivedRtcpReportBlocks( | 45 virtual void OnReceivedRtcpReportBlocks( |
46 const ReportBlockList& report_blocks) = 0; | 46 const ReportBlockList& report_blocks) = 0; |
47 | 47 |
48 protected: | 48 protected: |
49 virtual ~ModuleRtpRtcp() = default; | 49 virtual ~ModuleRtpRtcp() = default; |
50 }; | 50 }; |
51 | 51 |
52 RTCPReceiver(Clock* clock, | 52 RTCPReceiver(Clock* clock, |
53 bool receiver_only, | 53 bool receiver_only, |
54 RtcpPacketTypeCounterObserver* packet_type_counter_observer, | 54 RtcpPacketTypeCounterObserver* packet_type_counter_observer, |
55 RtcpBandwidthObserver* rtcp_bandwidth_observer, | 55 RtcpBandwidthObserver* rtcp_bandwidth_observer, |
56 RtcpIntraFrameObserver* rtcp_intra_frame_observer, | 56 RtcpIntraFrameObserver* rtcp_intra_frame_observer, |
57 TransportFeedbackObserver* transport_feedback_observer, | 57 TransportFeedbackObserver* transport_feedback_observer, |
58 VideoBitrateAllocationObserver* bitrate_allocation_observer, | 58 VideoBitrateAllocationObserver* bitrate_allocation_observer, |
59 ModuleRtpRtcp* owner); | 59 ModuleRtpRtcp* owner); |
60 virtual ~RTCPReceiver(); | 60 virtual ~RTCPReceiver(); |
61 | 61 |
62 bool IncomingPacket(const uint8_t* packet, size_t packet_size); | 62 bool IncomingPacket(const uint8_t* packet, size_t packet_size); |
63 | 63 |
64 int64_t LastReceivedReceiverReport() const; | 64 int64_t LastReceivedReceiverReport() const; |
65 | 65 |
66 void SetSsrcs(uint32_t main_ssrc, const std::set<uint32_t>& registered_ssrcs); | 66 void SetSsrcs(uint32_t main_ssrc, const std::set<uint32_t>& registered_ssrcs); |
67 void SetRemoteSSRC(uint32_t ssrc); | 67 void SetRemoteSSRC(uint32_t ssrc); |
philipel
2016/12/19 15:39:07
SetRemoteSsrc
danilchap
2016/12/19 16:37:56
Prefer to change public methods in a different CL.
philipel
2016/12/20 09:55:55
Acknowledged.
| |
68 uint32_t RemoteSSRC() const; | 68 uint32_t RemoteSSRC() const; |
philipel
2016/12/19 15:39:07
RemoteSsrc
| |
69 | 69 |
70 // get received cname | 70 // Get received cname. |
71 int32_t CNAME(uint32_t remoteSSRC, char cName[RTCP_CNAME_SIZE]) const; | 71 int32_t CNAME(uint32_t remote_ssrc, char cname[RTCP_CNAME_SIZE]) const; |
philipel
2016/12/19 15:39:07
Cname
| |
72 | 72 |
73 // get received NTP | 73 // Get received NTP. |
74 bool NTP(uint32_t* ReceivedNTPsecs, | 74 bool NTP(uint32_t* received_ntp_secs, |
75 uint32_t* ReceivedNTPfrac, | 75 uint32_t* received_ntp_frac, |
76 uint32_t* RTCPArrivalTimeSecs, | 76 uint32_t* rtcp_arrival_time_secs, |
77 uint32_t* RTCPArrivalTimeFrac, | 77 uint32_t* rtcp_arrival_time_frac, |
78 uint32_t* rtcp_timestamp) const; | 78 uint32_t* rtcp_timestamp) const; |
79 | 79 |
80 bool LastReceivedXrReferenceTimeInfo(rtcp::ReceiveTimeInfo* info) const; | 80 bool LastReceivedXrReferenceTimeInfo(rtcp::ReceiveTimeInfo* info) const; |
81 | 81 |
82 // Get rtt. | 82 // Get rtt. |
83 int32_t RTT(uint32_t remote_ssrc, | 83 int32_t RTT(uint32_t remote_ssrc, |
philipel
2016/12/19 15:39:07
Rtt
| |
84 int64_t* last_rtt_ms, | 84 int64_t* last_rtt_ms, |
85 int64_t* avg_rtt_ms, | 85 int64_t* avg_rtt_ms, |
86 int64_t* min_rtt_ms, | 86 int64_t* min_rtt_ms, |
87 int64_t* max_rtt_ms) const; | 87 int64_t* max_rtt_ms) const; |
88 | 88 |
89 int32_t SenderInfoReceived(RTCPSenderInfo* senderInfo) const; | 89 int32_t SenderInfoReceived(RTCPSenderInfo* sender_info) const; |
90 | 90 |
91 void SetRtcpXrRrtrStatus(bool enable); | 91 void SetRtcpXrRrtrStatus(bool enable); |
92 bool GetAndResetXrRrRtt(int64_t* rtt_ms); | 92 bool GetAndResetXrRrRtt(int64_t* rtt_ms); |
93 | 93 |
94 // get statistics | 94 // Get statistics. |
95 int32_t StatisticsReceived(std::vector<RTCPReportBlock>* receiveBlocks) const; | 95 int32_t StatisticsReceived(std::vector<RTCPReportBlock>* receiveBlocks) const; |
96 | 96 |
97 // Returns true if we haven't received an RTCP RR for several RTCP | 97 // Returns true if we haven't received an RTCP RR for several RTCP |
98 // intervals, but only triggers true once. | 98 // intervals, but only triggers true once. |
99 bool RtcpRrTimeout(int64_t rtcp_interval_ms); | 99 bool RtcpRrTimeout(int64_t rtcp_interval_ms); |
100 | 100 |
101 // Returns true if we haven't received an RTCP RR telling the receive side | 101 // Returns true if we haven't received an RTCP RR telling the receive side |
102 // has not received RTP packets for too long, i.e. extended highest sequence | 102 // has not received RTP packets for too long, i.e. extended highest sequence |
103 // number hasn't increased for several RTCP intervals. The function only | 103 // number hasn't increased for several RTCP intervals. The function only |
104 // returns true once until a new RR is received. | 104 // returns true once until a new RR is received. |
105 bool RtcpRrSequenceNumberTimeout(int64_t rtcp_interval_ms); | 105 bool RtcpRrSequenceNumberTimeout(int64_t rtcp_interval_ms); |
106 | 106 |
107 std::vector<rtcp::TmmbItem> TmmbrReceived(); | 107 std::vector<rtcp::TmmbItem> TmmbrReceived(); |
108 | 108 |
109 bool UpdateRTCPReceiveInformationTimers(); | 109 bool UpdateRTCPReceiveInformationTimers(); |
philipel
2016/12/19 15:39:07
UpdateRtcpReceiveInformationTimers
| |
110 | 110 |
111 std::vector<rtcp::TmmbItem> BoundingSet(bool* tmmbr_owner); | 111 std::vector<rtcp::TmmbItem> BoundingSet(bool* tmmbr_owner); |
112 | 112 |
113 void UpdateTmmbr(); | 113 void UpdateTmmbr(); |
114 | 114 |
115 void RegisterRtcpStatisticsCallback(RtcpStatisticsCallback* callback); | 115 void RegisterRtcpStatisticsCallback(RtcpStatisticsCallback* callback); |
116 RtcpStatisticsCallback* GetRtcpStatisticsCallback(); | 116 RtcpStatisticsCallback* GetRtcpStatisticsCallback(); |
117 | 117 |
118 private: | 118 private: |
119 struct PacketInformation; | 119 struct PacketInformation; |
120 struct ReceiveInformation; | 120 struct ReceiveInformation; |
121 struct ReportBlockWithRtt; | 121 struct ReportBlockWithRtt; |
122 // Mapped by remote ssrc. | 122 // Mapped by remote ssrc. |
123 using ReceivedInfoMap = std::map<uint32_t, ReceiveInformation>; | 123 using ReceivedInfoMap = std::map<uint32_t, ReceiveInformation>; |
124 // RTCP report blocks mapped by remote SSRC. | 124 // RTCP report blocks mapped by remote SSRC. |
125 using ReportBlockInfoMap = std::map<uint32_t, ReportBlockWithRtt>; | 125 using ReportBlockInfoMap = std::map<uint32_t, ReportBlockWithRtt>; |
126 // RTCP report blocks map mapped by source SSRC. | 126 // RTCP report blocks map mapped by source SSRC. |
127 using ReportBlockMap = std::map<uint32_t, ReportBlockInfoMap>; | 127 using ReportBlockMap = std::map<uint32_t, ReportBlockInfoMap>; |
128 | 128 |
129 bool ParseCompoundPacket(const uint8_t* packet_begin, | 129 bool ParseCompoundPacket(const uint8_t* packet_begin, |
130 const uint8_t* packet_end, | 130 const uint8_t* packet_end, |
131 PacketInformation* packet_information); | 131 PacketInformation* packet_information); |
132 | 132 |
133 void TriggerCallbacksFromRTCPPacket( | 133 void TriggerCallbacksFromRtcpPacket( |
134 const PacketInformation& packet_information); | 134 const PacketInformation& packet_information); |
135 | 135 |
136 void CreateReceiveInformation(uint32_t remote_ssrc) | 136 void CreateReceiveInformation(uint32_t remote_ssrc) |
137 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 137 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
138 ReceiveInformation* GetReceiveInformation(uint32_t remote_ssrc) | 138 ReceiveInformation* GetReceiveInformation(uint32_t remote_ssrc) |
139 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 139 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
140 | 140 |
141 void HandleSenderReport(const rtcp::CommonHeader& rtcp_block, | 141 void HandleSenderReport(const rtcp::CommonHeader& rtcp_block, |
142 PacketInformation* packet_information) | 142 PacketInformation* packet_information) |
143 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 143 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
144 | 144 |
145 void HandleReceiverReport(const rtcp::CommonHeader& rtcp_block, | 145 void HandleReceiverReport(const rtcp::CommonHeader& rtcp_block, |
146 PacketInformation* packet_information) | 146 PacketInformation* packet_information) |
147 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 147 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
148 | 148 |
149 void HandleReportBlock(const rtcp::ReportBlock& report_block, | 149 void HandleReportBlock(const rtcp::ReportBlock& report_block, |
150 PacketInformation* packet_information, | 150 PacketInformation* packet_information, |
151 uint32_t remoteSSRC) | 151 uint32_t remote_ssrc) |
152 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 152 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
153 | 153 |
154 void HandleSDES(const rtcp::CommonHeader& rtcp_block, | 154 void HandleSdes(const rtcp::CommonHeader& rtcp_block, |
155 PacketInformation* packet_information) | 155 PacketInformation* packet_information) |
156 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 156 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
157 | 157 |
158 void HandleXr(const rtcp::CommonHeader& rtcp_block, | 158 void HandleXr(const rtcp::CommonHeader& rtcp_block, |
159 PacketInformation* packet_information) | 159 PacketInformation* packet_information) |
160 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 160 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
161 | 161 |
162 void HandleXrReceiveReferenceTime(uint32_t sender_ssrc, | 162 void HandleXrReceiveReferenceTime(uint32_t sender_ssrc, |
163 const rtcp::Rrtr& rrtr) | 163 const rtcp::Rrtr& rrtr) |
164 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 164 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
165 | 165 |
166 void HandleXrDlrrReportBlock(const rtcp::ReceiveTimeInfo& rti) | 166 void HandleXrDlrrReportBlock(const rtcp::ReceiveTimeInfo& rti) |
167 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 167 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
168 | 168 |
169 void HandleXrTargetBitrate(const rtcp::TargetBitrate& target_bitrate, | 169 void HandleXrTargetBitrate(const rtcp::TargetBitrate& target_bitrate, |
170 PacketInformation* packet_information) | 170 PacketInformation* packet_information) |
171 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 171 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
172 | 172 |
173 void HandleNACK(const rtcp::CommonHeader& rtcp_block, | 173 void HandleNack(const rtcp::CommonHeader& rtcp_block, |
174 PacketInformation* packet_information) | 174 PacketInformation* packet_information) |
175 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 175 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
176 | 176 |
177 void HandleBYE(const rtcp::CommonHeader& rtcp_block) | 177 void HandleBye(const rtcp::CommonHeader& rtcp_block) |
178 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 178 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
179 | 179 |
180 void HandlePLI(const rtcp::CommonHeader& rtcp_block, | 180 void HandlePli(const rtcp::CommonHeader& rtcp_block, |
181 PacketInformation* packet_information) | 181 PacketInformation* packet_information) |
182 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 182 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
183 | 183 |
184 void HandleSLI(const rtcp::CommonHeader& rtcp_block, | 184 void HandleSli(const rtcp::CommonHeader& rtcp_block, |
185 PacketInformation* packet_information) | 185 PacketInformation* packet_information) |
186 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 186 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
187 | 187 |
188 void HandleRPSI(const rtcp::CommonHeader& rtcp_block, | 188 void HandleRpsi(const rtcp::CommonHeader& rtcp_block, |
189 PacketInformation* packet_information) | 189 PacketInformation* packet_information) |
190 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 190 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
191 | 191 |
192 void HandlePsfbApp(const rtcp::CommonHeader& rtcp_block, | 192 void HandlePsfbApp(const rtcp::CommonHeader& rtcp_block, |
193 PacketInformation* packet_information) | 193 PacketInformation* packet_information) |
194 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 194 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
195 | 195 |
196 void HandleTMMBR(const rtcp::CommonHeader& rtcp_block, | 196 void HandleTmmbr(const rtcp::CommonHeader& rtcp_block, |
197 PacketInformation* packet_information) | 197 PacketInformation* packet_information) |
198 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 198 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
199 | 199 |
200 void HandleTMMBN(const rtcp::CommonHeader& rtcp_block, | 200 void HandleTmmbn(const rtcp::CommonHeader& rtcp_block, |
201 PacketInformation* packet_information) | 201 PacketInformation* packet_information) |
202 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 202 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
203 | 203 |
204 void HandleSR_REQ(const rtcp::CommonHeader& rtcp_block, | 204 void HandleSrReq(const rtcp::CommonHeader& rtcp_block, |
205 PacketInformation* packet_information) | 205 PacketInformation* packet_information) |
206 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 206 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
207 | 207 |
208 void HandleFIR(const rtcp::CommonHeader& rtcp_block, | 208 void HandleFir(const rtcp::CommonHeader& rtcp_block, |
209 PacketInformation* packet_information) | 209 PacketInformation* packet_information) |
210 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 210 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
211 | 211 |
212 void HandleTransportFeedback(const rtcp::CommonHeader& rtcp_block, | 212 void HandleTransportFeedback(const rtcp::CommonHeader& rtcp_block, |
213 PacketInformation* packet_information) | 213 PacketInformation* packet_information) |
214 EXCLUSIVE_LOCKS_REQUIRED(_criticalSectionRTCPReceiver); | 214 EXCLUSIVE_LOCKS_REQUIRED(rtcp_receiver_lock_); |
215 | 215 |
216 Clock* const _clock; | 216 Clock* const clock_; |
217 const bool receiver_only_; | 217 const bool receiver_only_; |
218 ModuleRtpRtcp& _rtpRtcp; | 218 ModuleRtpRtcp* const rtp_rtcp_; |
219 | 219 |
220 rtc::CriticalSection feedbacks_lock_; | 220 rtc::CriticalSection feedbacks_lock_; |
221 RtcpBandwidthObserver* const rtcp_bandwidth_observer_; | 221 RtcpBandwidthObserver* const rtcp_bandwidth_observer_; |
222 RtcpIntraFrameObserver* const rtcp_intra_frame_observer_; | 222 RtcpIntraFrameObserver* const rtcp_intra_frame_observer_; |
223 TransportFeedbackObserver* const transport_feedback_observer_; | 223 TransportFeedbackObserver* const transport_feedback_observer_; |
224 VideoBitrateAllocationObserver* const bitrate_allocation_observer_; | 224 VideoBitrateAllocationObserver* const bitrate_allocation_observer_; |
225 | 225 |
226 rtc::CriticalSection _criticalSectionRTCPReceiver; | 226 rtc::CriticalSection rtcp_receiver_lock_; |
227 uint32_t main_ssrc_ GUARDED_BY(_criticalSectionRTCPReceiver); | 227 uint32_t main_ssrc_ GUARDED_BY(rtcp_receiver_lock_); |
228 uint32_t _remoteSSRC GUARDED_BY(_criticalSectionRTCPReceiver); | 228 uint32_t remote_ssrc_ GUARDED_BY(rtcp_receiver_lock_); |
229 std::set<uint32_t> registered_ssrcs_ GUARDED_BY(_criticalSectionRTCPReceiver); | 229 std::set<uint32_t> registered_ssrcs_ GUARDED_BY(rtcp_receiver_lock_); |
230 | 230 |
231 // Received send report | 231 // Received sender report. |
232 RTCPSenderInfo _remoteSenderInfo; | 232 RTCPSenderInfo remote_sender_info_; |
233 // When did we receive the last send report. | 233 // When did we receive the last send report. |
234 NtpTime last_received_sr_ntp_; | 234 NtpTime last_received_sr_ntp_; |
235 | 235 |
236 // Received XR receive time report. | 236 // Received XR receive time report. |
237 rtcp::ReceiveTimeInfo remote_time_info_; | 237 rtcp::ReceiveTimeInfo remote_time_info_; |
238 // Time when the report was received. | 238 // Time when the report was received. |
239 NtpTime last_received_xr_ntp_; | 239 NtpTime last_received_xr_ntp_; |
240 // Estimated rtt, zero when there is no valid estimate. | 240 // Estimated rtt, zero when there is no valid estimate. |
241 bool xr_rrtr_status_ GUARDED_BY(_criticalSectionRTCPReceiver); | 241 bool xr_rrtr_status_ GUARDED_BY(rtcp_receiver_lock_); |
242 int64_t xr_rr_rtt_ms_; | 242 int64_t xr_rr_rtt_ms_; |
243 | 243 |
244 // Received report blocks. | 244 // Received report blocks. |
245 ReportBlockMap received_report_blocks_ | 245 ReportBlockMap received_report_blocks_ GUARDED_BY(rtcp_receiver_lock_); |
246 GUARDED_BY(_criticalSectionRTCPReceiver); | 246 ReceivedInfoMap received_infos_ GUARDED_BY(rtcp_receiver_lock_); |
247 ReceivedInfoMap received_infos_ GUARDED_BY(_criticalSectionRTCPReceiver); | |
248 std::map<uint32_t, std::string> received_cnames_ | 247 std::map<uint32_t, std::string> received_cnames_ |
249 GUARDED_BY(_criticalSectionRTCPReceiver); | 248 GUARDED_BY(rtcp_receiver_lock_); |
250 | 249 |
251 // The last time we received an RTCP RR. | 250 // The last time we received an RTCP RR. |
252 int64_t _lastReceivedRrMs; | 251 int64_t last_received_rr_ms_; |
253 | 252 |
254 // The time we last received an RTCP RR telling we have successfully | 253 // The time we last received an RTCP RR telling we have successfully |
255 // delivered RTP packet to the remote side. | 254 // delivered RTP packet to the remote side. |
256 int64_t _lastIncreasedSequenceNumberMs; | 255 int64_t last_increased_sequence_number_ms_; |
257 | 256 |
258 RtcpStatisticsCallback* stats_callback_ GUARDED_BY(feedbacks_lock_); | 257 RtcpStatisticsCallback* stats_callback_ GUARDED_BY(feedbacks_lock_); |
259 | 258 |
260 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; | 259 RtcpPacketTypeCounterObserver* const packet_type_counter_observer_; |
261 RtcpPacketTypeCounter packet_type_counter_; | 260 RtcpPacketTypeCounter packet_type_counter_; |
262 | 261 |
263 RTCPUtility::NackStats nack_stats_; | 262 RTCPUtility::NackStats nack_stats_; |
264 | 263 |
265 size_t num_skipped_packets_; | 264 size_t num_skipped_packets_; |
266 int64_t last_skipped_packets_warning_; | 265 int64_t last_skipped_packets_warning_ms_; |
267 }; | 266 }; |
268 } // namespace webrtc | 267 } // namespace webrtc |
269 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ | 268 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_RECEIVER_H_ |
OLD | NEW |