OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/rtcp/rtcp.h" | 5 #include "media/cast/rtcp/rtcp.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "base/rand_util.h" | 8 #include "base/rand_util.h" |
9 #include "media/cast/cast_config.h" | 9 #include "media/cast/cast_config.h" |
10 #include "media/cast/cast_defines.h" | 10 #include "media/cast/cast_defines.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
45 : media_ssrc_(media_ssrc) {} | 45 : media_ssrc_(media_ssrc) {} |
46 | 46 |
47 RtcpCastMessage::~RtcpCastMessage() {} | 47 RtcpCastMessage::~RtcpCastMessage() {} |
48 | 48 |
49 RtcpNackMessage::RtcpNackMessage() {} | 49 RtcpNackMessage::RtcpNackMessage() {} |
50 RtcpNackMessage::~RtcpNackMessage() {} | 50 RtcpNackMessage::~RtcpNackMessage() {} |
51 | 51 |
52 RtcpRembMessage::RtcpRembMessage() {} | 52 RtcpRembMessage::RtcpRembMessage() {} |
53 RtcpRembMessage::~RtcpRembMessage() {} | 53 RtcpRembMessage::~RtcpRembMessage() {} |
54 | 54 |
55 RtcpReceiverFrameLogMessage::RtcpReceiverFrameLogMessage() {} | 55 RtcpReceiverFrameLogMessage::RtcpReceiverFrameLogMessage(uint32 timestamp) |
56 : rtp_timestamp(timestamp) {} | |
mikhal
2013/11/22 21:39:34
just noticed: here too: rtp_timestamp_
| |
57 | |
56 RtcpReceiverFrameLogMessage::~RtcpReceiverFrameLogMessage() {} | 58 RtcpReceiverFrameLogMessage::~RtcpReceiverFrameLogMessage() {} |
57 | 59 |
58 class LocalRtcpReceiverFeedback : public RtcpReceiverFeedback { | 60 class LocalRtcpReceiverFeedback : public RtcpReceiverFeedback { |
59 public: | 61 public: |
60 explicit LocalRtcpReceiverFeedback(Rtcp* rtcp) | 62 explicit LocalRtcpReceiverFeedback(Rtcp* rtcp) |
61 : rtcp_(rtcp) { | 63 : rtcp_(rtcp) { |
62 } | 64 } |
63 | 65 |
64 virtual void OnReceivedSenderReport( | 66 virtual void OnReceivedSenderReport( |
65 const RtcpSenderInfo& remote_sender_info) OVERRIDE { | 67 const RtcpSenderInfo& remote_sender_info) OVERRIDE { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
168 RtcpParser rtcp_parser(rtcp_buffer, length); | 170 RtcpParser rtcp_parser(rtcp_buffer, length); |
169 if (!rtcp_parser.IsValid()) { | 171 if (!rtcp_parser.IsValid()) { |
170 // Silently ignore packet. | 172 // Silently ignore packet. |
171 DLOG(ERROR) << "Received invalid RTCP packet"; | 173 DLOG(ERROR) << "Received invalid RTCP packet"; |
172 return; | 174 return; |
173 } | 175 } |
174 rtcp_receiver_->IncomingRtcpPacket(&rtcp_parser); | 176 rtcp_receiver_->IncomingRtcpPacket(&rtcp_parser); |
175 } | 177 } |
176 | 178 |
177 void Rtcp::SendRtcpFromRtpReceiver(const RtcpCastMessage* cast_message, | 179 void Rtcp::SendRtcpFromRtpReceiver(const RtcpCastMessage* cast_message, |
178 const RtcpReceiverLogMessage* receiver_log) { | 180 RtcpReceiverLogMessage* receiver_log) { |
179 uint32 packet_type_flags = 0; | 181 uint32 packet_type_flags = 0; |
180 | 182 |
181 base::TimeTicks now = clock_->NowTicks(); | 183 base::TimeTicks now = clock_->NowTicks(); |
182 RtcpReportBlock report_block; | 184 RtcpReportBlock report_block; |
183 RtcpReceiverReferenceTimeReport rrtr; | 185 RtcpReceiverReferenceTimeReport rrtr; |
184 | 186 |
185 if (cast_message) { | 187 if (cast_message) { |
186 packet_type_flags |= RtcpSender::kRtcpCast; | 188 packet_type_flags |= RtcpSender::kRtcpCast; |
187 } | 189 } |
188 if (receiver_log) { | 190 if (receiver_log) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
220 SaveLastSentNtpTime(now, rrtr.ntp_seconds, rrtr.ntp_fraction); | 222 SaveLastSentNtpTime(now, rrtr.ntp_seconds, rrtr.ntp_fraction); |
221 UpdateNextTimeToSendRtcp(); | 223 UpdateNextTimeToSendRtcp(); |
222 } | 224 } |
223 rtcp_sender_->SendRtcpFromRtpReceiver(packet_type_flags, | 225 rtcp_sender_->SendRtcpFromRtpReceiver(packet_type_flags, |
224 &report_block, | 226 &report_block, |
225 &rrtr, | 227 &rrtr, |
226 cast_message, | 228 cast_message, |
227 receiver_log); | 229 receiver_log); |
228 } | 230 } |
229 | 231 |
230 void Rtcp::SendRtcpFromRtpSender( | 232 void Rtcp::SendRtcpFromRtpSender(RtcpSenderLogMessage* sender_log_message) { |
231 const RtcpSenderLogMessage* sender_log_message) { | |
232 uint32 packet_type_flags = RtcpSender::kRtcpSr; | 233 uint32 packet_type_flags = RtcpSender::kRtcpSr; |
233 base::TimeTicks now = clock_->NowTicks(); | 234 base::TimeTicks now = clock_->NowTicks(); |
234 | 235 |
236 if (sender_log_message) { | |
237 packet_type_flags |= RtcpSender::kRtcpSenderLog; | |
238 } | |
239 | |
235 RtcpSenderInfo sender_info; | 240 RtcpSenderInfo sender_info; |
236 RtcpDlrrReportBlock dlrr; | |
237 | |
238 if (sender_log_message) packet_type_flags |= RtcpSender::kRtcpSenderLog; | |
239 | |
240 if (rtp_sender_statistics_) { | 241 if (rtp_sender_statistics_) { |
241 rtp_sender_statistics_->GetStatistics(now, &sender_info); | 242 rtp_sender_statistics_->GetStatistics(now, &sender_info); |
242 } else { | 243 } else { |
243 memset(&sender_info, 0, sizeof(sender_info)); | 244 memset(&sender_info, 0, sizeof(sender_info)); |
244 } | 245 } |
245 SaveLastSentNtpTime(now, sender_info.ntp_seconds, sender_info.ntp_fraction); | 246 SaveLastSentNtpTime(now, sender_info.ntp_seconds, sender_info.ntp_fraction); |
246 | 247 |
248 RtcpDlrrReportBlock dlrr; | |
247 if (!time_last_report_received_.is_null()) { | 249 if (!time_last_report_received_.is_null()) { |
248 packet_type_flags |= RtcpSender::kRtcpDlrr; | 250 packet_type_flags |= RtcpSender::kRtcpDlrr; |
249 dlrr.last_rr = last_report_received_; | 251 dlrr.last_rr = last_report_received_; |
250 uint32 delay_seconds = 0; | 252 uint32 delay_seconds = 0; |
251 uint32 delay_fraction = 0; | 253 uint32 delay_fraction = 0; |
252 base::TimeDelta delta = now - time_last_report_received_; | 254 base::TimeDelta delta = now - time_last_report_received_; |
253 ConvertTimeToFractions(delta.InMicroseconds(), | 255 ConvertTimeToFractions(delta.InMicroseconds(), |
254 &delay_seconds, | 256 &delay_seconds, |
255 &delay_fraction); | 257 &delay_fraction); |
256 | 258 |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
413 int random = base::RandInt(0, 999); | 415 int random = base::RandInt(0, 999); |
414 base::TimeDelta time_to_next = (rtcp_interval_ / 2) + | 416 base::TimeDelta time_to_next = (rtcp_interval_ / 2) + |
415 (rtcp_interval_ * random / 1000); | 417 (rtcp_interval_ * random / 1000); |
416 | 418 |
417 base::TimeTicks now = clock_->NowTicks(); | 419 base::TimeTicks now = clock_->NowTicks(); |
418 next_time_to_send_rtcp_ = now + time_to_next; | 420 next_time_to_send_rtcp_ = now + time_to_next; |
419 } | 421 } |
420 | 422 |
421 } // namespace cast | 423 } // namespace cast |
422 } // namespace media | 424 } // namespace media |
OLD | NEW |