Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1262)

Side by Side Diff: media/cast/rtcp/rtcp.cc

Issue 136903003: cast: Wire upp logging to be sent over RTCP between receiver and sender. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge TOT Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/cast/logging/logging_unittest.cc ('k') | media/cast/rtcp/rtcp_receiver.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/rand_util.h" 7 #include "base/rand_util.h"
8 #include "media/cast/cast_config.h" 8 #include "media/cast/cast_config.h"
9 #include "media/cast/cast_defines.h" 9 #include "media/cast/cast_defines.h"
10 #include "media/cast/cast_environment.h" 10 #include "media/cast/cast_environment.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 // Add received log messages into our log system. 91 // Add received log messages into our log system.
92 RtcpReceiverLogMessage::const_iterator it = receiver_log.begin(); 92 RtcpReceiverLogMessage::const_iterator it = receiver_log.begin();
93 93
94 for (; it != receiver_log.end(); ++it) { 94 for (; it != receiver_log.end(); ++it) {
95 uint32 rtp_timestamp = it->rtp_timestamp_; 95 uint32 rtp_timestamp = it->rtp_timestamp_;
96 96
97 RtcpReceiverEventLogMessages::const_iterator event_it = 97 RtcpReceiverEventLogMessages::const_iterator event_it =
98 it->event_log_messages_.begin(); 98 it->event_log_messages_.begin();
99 for (; event_it != it->event_log_messages_.end(); ++event_it) { 99 for (; event_it != it->event_log_messages_.end(); ++event_it) {
100 switch (event_it->type) { 100 switch (event_it->type) {
101 case kPacketReceived: 101 case kAudioPacketReceived:
102 case kVideoPacketReceived:
102 case kDuplicatePacketReceived: 103 case kDuplicatePacketReceived:
103 cast_environment_->Logging()->InsertPacketEvent( 104 cast_environment_->Logging()->InsertPacketEvent(
104 event_it->event_timestamp, event_it->type, rtp_timestamp, 105 event_it->event_timestamp, event_it->type, rtp_timestamp,
105 kFrameIdUnknown, event_it->packet_id, 0, 0); 106 kFrameIdUnknown, event_it->packet_id, 0, 0);
106 break; 107 break;
107 case kAckSent: 108 case kAudioAckSent:
109 case kVideoAckSent:
108 case kAudioFrameDecoded: 110 case kAudioFrameDecoded:
109 case kVideoFrameDecoded: 111 case kVideoFrameDecoded:
110 cast_environment_->Logging()->InsertFrameEvent( 112 cast_environment_->Logging()->InsertFrameEvent(
111 event_it->event_timestamp, event_it->type, rtp_timestamp, 113 event_it->event_timestamp, event_it->type, rtp_timestamp,
112 kFrameIdUnknown); 114 kFrameIdUnknown);
113 break; 115 break;
114 case kAudioPlayoutDelay: 116 case kAudioPlayoutDelay:
115 case kVideoRenderDelay: 117 case kVideoRenderDelay:
116 cast_environment_->Logging()->InsertFrameEventWithDelay( 118 cast_environment_->Logging()->InsertFrameEventWithDelay(
117 event_it->event_timestamp, event_it->type, rtp_timestamp, 119 event_it->event_timestamp, event_it->type, rtp_timestamp,
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 void Rtcp::SendRtcpFromRtpReceiver(const RtcpCastMessage* cast_message, 255 void Rtcp::SendRtcpFromRtpReceiver(const RtcpCastMessage* cast_message,
254 RtcpReceiverLogMessage* receiver_log) { 256 RtcpReceiverLogMessage* receiver_log) {
255 uint32 packet_type_flags = 0; 257 uint32 packet_type_flags = 0;
256 258
257 base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 259 base::TimeTicks now = cast_environment_->Clock()->NowTicks();
258 transport::RtcpReportBlock report_block; 260 transport::RtcpReportBlock report_block;
259 RtcpReceiverReferenceTimeReport rrtr; 261 RtcpReceiverReferenceTimeReport rrtr;
260 262
261 if (cast_message) { 263 if (cast_message) {
262 packet_type_flags |= RtcpSender::kRtcpCast; 264 packet_type_flags |= RtcpSender::kRtcpCast;
263 cast_environment_->Logging()->InsertGenericEvent(now, kAckSent,
264 cast_message->ack_frame_id_);
265 } 265 }
266 if (receiver_log) { 266 if (receiver_log) {
267 packet_type_flags |= RtcpSender::kRtcpReceiverLog; 267 packet_type_flags |= RtcpSender::kRtcpReceiverLog;
268 } 268 }
269 if (rtcp_mode_ == kRtcpCompound || now >= next_time_to_send_rtcp_) { 269 if (rtcp_mode_ == kRtcpCompound || now >= next_time_to_send_rtcp_) {
270 packet_type_flags |= RtcpSender::kRtcpRr; 270 packet_type_flags |= RtcpSender::kRtcpRr;
271 271
272 report_block.remote_ssrc = 0; // Not needed to set send side. 272 report_block.remote_ssrc = 0; // Not needed to set send side.
273 report_block.media_ssrc = remote_ssrc_; // SSRC of the RTP packet sender. 273 report_block.media_ssrc = remote_ssrc_; // SSRC of the RTP packet sender.
274 if (rtp_receiver_statistics_) { 274 if (rtp_receiver_statistics_) {
275 rtp_receiver_statistics_->GetStatistics( 275 rtp_receiver_statistics_->GetStatistics(
276 &report_block.fraction_lost, 276 &report_block.fraction_lost,
277 &report_block.cumulative_lost, 277 &report_block.cumulative_lost,
278 &report_block.extended_high_sequence_number, 278 &report_block.extended_high_sequence_number,
279 &report_block.jitter); 279 &report_block.jitter);
280 cast_environment_->Logging()->InsertGenericEvent(now, kJitterMs, 280 cast_environment_->Logging()->InsertGenericEvent(now, kJitterMs,
281 report_block.jitter); 281 report_block.jitter);
282 cast_environment_->Logging()->InsertGenericEvent(now, kPacketLoss, 282 cast_environment_->Logging()->InsertGenericEvent(now, kPacketLoss,
283 report_block.fraction_lost); 283 report_block.fraction_lost);
284
285 } 284 }
286 285
287 report_block.last_sr = last_report_received_; 286 report_block.last_sr = last_report_received_;
288 if (!time_last_report_received_.is_null()) { 287 if (!time_last_report_received_.is_null()) {
289 uint32 delay_seconds = 0; 288 uint32 delay_seconds = 0;
290 uint32 delay_fraction = 0; 289 uint32 delay_fraction = 0;
291 base::TimeDelta delta = now - time_last_report_received_; 290 base::TimeDelta delta = now - time_last_report_received_;
292 ConvertTimeToFractions(delta.InMicroseconds(), 291 ConvertTimeToFractions(delta.InMicroseconds(),
293 &delay_seconds, 292 &delay_seconds,
294 &delay_fraction); 293 &delay_fraction);
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 int random = base::RandInt(0, 999); 501 int random = base::RandInt(0, 999);
503 base::TimeDelta time_to_next = (rtcp_interval_ / 2) + 502 base::TimeDelta time_to_next = (rtcp_interval_ / 2) +
504 (rtcp_interval_ * random / 1000); 503 (rtcp_interval_ * random / 1000);
505 504
506 base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 505 base::TimeTicks now = cast_environment_->Clock()->NowTicks();
507 next_time_to_send_rtcp_ = now + time_to_next; 506 next_time_to_send_rtcp_ = now + time_to_next;
508 } 507 }
509 508
510 } // namespace cast 509 } // namespace cast
511 } // namespace media 510 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/logging_unittest.cc ('k') | media/cast/rtcp/rtcp_receiver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698