OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/net/rtcp/rtcp.h" | 5 #include "media/cast/net/rtcp/rtcp.h" |
6 | 6 |
7 #include "media/cast/cast_config.h" | 7 #include "media/cast/cast_config.h" |
8 #include "media/cast/cast_defines.h" | 8 #include "media/cast/cast_defines.h" |
9 #include "media/cast/cast_environment.h" | 9 #include "media/cast/cast_environment.h" |
10 #include "media/cast/net/cast_transport_defines.h" | 10 #include "media/cast/net/cast_transport_defines.h" |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 rtp_receiver_statistics->GetStatistics( | 152 rtp_receiver_statistics->GetStatistics( |
153 &report_block.fraction_lost, &report_block.cumulative_lost, | 153 &report_block.fraction_lost, &report_block.cumulative_lost, |
154 &report_block.extended_high_sequence_number, &report_block.jitter); | 154 &report_block.extended_high_sequence_number, &report_block.jitter); |
155 } | 155 } |
156 | 156 |
157 report_block.last_sr = last_report_truncated_ntp_; | 157 report_block.last_sr = last_report_truncated_ntp_; |
158 if (!time_last_report_received_.is_null()) { | 158 if (!time_last_report_received_.is_null()) { |
159 uint32 delay_seconds = 0; | 159 uint32 delay_seconds = 0; |
160 uint32 delay_fraction = 0; | 160 uint32 delay_fraction = 0; |
161 base::TimeDelta delta = now - time_last_report_received_; | 161 base::TimeDelta delta = now - time_last_report_received_; |
162 | |
163 // TODO(hclam): DLRR is not used by any receiver. Consider removing | |
164 // it. There is one race condition in the computation of the time for | |
165 // DLRR: current time is submitted to this method while | |
166 // |time_last_report_received_| is updated just before that. This can | |
167 // happen if current time is not submitted synchronously. | |
168 if (delta < base::TimeDelta()) | |
169 delta = base::TimeDelta(); | |
170 ConvertTimeToFractions(delta.InMicroseconds(), &delay_seconds, | 162 ConvertTimeToFractions(delta.InMicroseconds(), &delay_seconds, |
171 &delay_fraction); | 163 &delay_fraction); |
172 report_block.delay_since_last_sr = | 164 report_block.delay_since_last_sr = |
173 ConvertToNtpDiff(delay_seconds, delay_fraction); | 165 ConvertToNtpDiff(delay_seconds, delay_fraction); |
174 } else { | 166 } else { |
175 report_block.delay_since_last_sr = 0; | 167 report_block.delay_since_last_sr = 0; |
176 } | 168 } |
177 } | 169 } |
178 rtcp_sender_->SendRtcpFromRtpReceiver(packet_type_flags, | 170 rtcp_sender_->SendRtcpFromRtpReceiver(packet_type_flags, |
179 &report_block, | 171 &report_block, |
(...skipping 15 matching lines...) Expand all Loading... |
195 SaveLastSentNtpTime(current_time, current_ntp_seconds, | 187 SaveLastSentNtpTime(current_time, current_ntp_seconds, |
196 current_ntp_fractions); | 188 current_ntp_fractions); |
197 | 189 |
198 RtcpDlrrReportBlock dlrr; | 190 RtcpDlrrReportBlock dlrr; |
199 if (!time_last_report_received_.is_null()) { | 191 if (!time_last_report_received_.is_null()) { |
200 packet_type_flags |= kRtcpDlrr; | 192 packet_type_flags |= kRtcpDlrr; |
201 dlrr.last_rr = last_report_truncated_ntp_; | 193 dlrr.last_rr = last_report_truncated_ntp_; |
202 uint32 delay_seconds = 0; | 194 uint32 delay_seconds = 0; |
203 uint32 delay_fraction = 0; | 195 uint32 delay_fraction = 0; |
204 base::TimeDelta delta = current_time - time_last_report_received_; | 196 base::TimeDelta delta = current_time - time_last_report_received_; |
| 197 // TODO(hclam): DLRR is not used by any receiver. Consider removing |
| 198 // it. There is one race condition in the computation of the time for |
| 199 // DLRR: current time is submitted to this method while |
| 200 // |time_last_report_received_| is updated just before that. This can |
| 201 // happen if current time is not submitted synchronously. |
| 202 if (delta < base::TimeDelta()) |
| 203 delta = base::TimeDelta(); |
205 ConvertTimeToFractions(delta.InMicroseconds(), &delay_seconds, | 204 ConvertTimeToFractions(delta.InMicroseconds(), &delay_seconds, |
206 &delay_fraction); | 205 &delay_fraction); |
207 | 206 |
208 dlrr.delay_since_last_rr = ConvertToNtpDiff(delay_seconds, delay_fraction); | 207 dlrr.delay_since_last_rr = ConvertToNtpDiff(delay_seconds, delay_fraction); |
209 } | 208 } |
210 | 209 |
211 RtcpSenderInfo sender_info; | 210 RtcpSenderInfo sender_info; |
212 sender_info.ntp_seconds = current_ntp_seconds; | 211 sender_info.ntp_seconds = current_ntp_seconds; |
213 sender_info.ntp_fraction = current_ntp_fractions; | 212 sender_info.ntp_fraction = current_ntp_fractions; |
214 sender_info.rtp_timestamp = current_time_as_rtp_timestamp; | 213 sender_info.rtp_timestamp = current_time_as_rtp_timestamp; |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 } | 359 } |
361 | 360 |
362 void Rtcp::OnReceivedReceiverLog(const RtcpReceiverLogMessage& receiver_log) { | 361 void Rtcp::OnReceivedReceiverLog(const RtcpReceiverLogMessage& receiver_log) { |
363 if (log_callback_.is_null()) | 362 if (log_callback_.is_null()) |
364 return; | 363 return; |
365 log_callback_.Run(receiver_log); | 364 log_callback_.Run(receiver_log); |
366 } | 365 } |
367 | 366 |
368 } // namespace cast | 367 } // namespace cast |
369 } // namespace media | 368 } // namespace media |
OLD | NEW |