| 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_receiver.h" | 5 #include "media/cast/rtcp/rtcp_receiver.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | |
| 8 #include "base/logging.h" | 7 #include "base/logging.h" |
| 9 #include "media/cast/rtcp/rtcp_utility.h" | 8 #include "media/cast/rtcp/rtcp_utility.h" |
| 10 | 9 |
| 11 namespace media { | 10 namespace media { |
| 12 namespace cast { | 11 namespace cast { |
| 13 | 12 |
| 14 RtcpReceiver::RtcpReceiver(RtcpSenderFeedback* sender_feedback, | 13 RtcpReceiver::RtcpReceiver(scoped_refptr<CastEnvironment> cast_environment, |
| 14 RtcpSenderFeedback* sender_feedback, |
| 15 RtcpReceiverFeedback* receiver_feedback, | 15 RtcpReceiverFeedback* receiver_feedback, |
| 16 RtcpRttFeedback* rtt_feedback, | 16 RtcpRttFeedback* rtt_feedback, |
| 17 uint32 local_ssrc) | 17 uint32 local_ssrc) |
| 18 : ssrc_(local_ssrc), | 18 : ssrc_(local_ssrc), |
| 19 remote_ssrc_(0), | 19 remote_ssrc_(0), |
| 20 sender_feedback_(sender_feedback), | 20 sender_feedback_(sender_feedback), |
| 21 receiver_feedback_(receiver_feedback), | 21 receiver_feedback_(receiver_feedback), |
| 22 rtt_feedback_(rtt_feedback) { | 22 rtt_feedback_(rtt_feedback), |
| 23 } | 23 cast_environment_(cast_environment) {} |
| 24 | 24 |
| 25 RtcpReceiver::~RtcpReceiver() {} | 25 RtcpReceiver::~RtcpReceiver() {} |
| 26 | 26 |
| 27 void RtcpReceiver::SetRemoteSSRC(uint32 ssrc) { | 27 void RtcpReceiver::SetRemoteSSRC(uint32 ssrc) { |
| 28 remote_ssrc_ = ssrc; | 28 remote_ssrc_ = ssrc; |
| 29 } | 29 } |
| 30 | 30 |
| 31 void RtcpReceiver::IncomingRtcpPacket(RtcpParser* rtcp_parser) { | 31 void RtcpReceiver::IncomingRtcpPacket(RtcpParser* rtcp_parser) { |
| 32 RtcpFieldTypes field_type = rtcp_parser->Begin(); | 32 RtcpFieldTypes field_type = rtcp_parser->Begin(); |
| 33 while (field_type != kRtcpNotValidCode) { | 33 while (field_type != kRtcpNotValidCode) { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 // which the information in this reception report block pertains. | 155 // which the information in this reception report block pertains. |
| 156 | 156 |
| 157 const RtcpFieldReportBlockItem& rb = rtcp_field->report_block_item; | 157 const RtcpFieldReportBlockItem& rb = rtcp_field->report_block_item; |
| 158 | 158 |
| 159 // Filter out all report blocks that are not for us. | 159 // Filter out all report blocks that are not for us. |
| 160 if (rb.ssrc != ssrc_) { | 160 if (rb.ssrc != ssrc_) { |
| 161 // This block is not for us ignore it. | 161 // This block is not for us ignore it. |
| 162 return; | 162 return; |
| 163 } | 163 } |
| 164 VLOG(1) << "Cast RTCP received RB from SSRC " << remote_ssrc; | 164 VLOG(1) << "Cast RTCP received RB from SSRC " << remote_ssrc; |
| 165 | 165 cast_environment_->Logging()->InsertGenericEvent(kPacketLoss, |
| 166 TRACE_COUNTER_ID1("cast_rtcp", "RtcpReceiver::FractionLost", | 166 rb.fraction_lost); |
| 167 rb.ssrc, rb.fraction_lost); | 167 cast_environment_->Logging()->InsertGenericEvent(kJitterMs, |
| 168 TRACE_COUNTER_ID1("cast_rtcp", "RtcpReceiver::CumulativeNumberOfPacketsLost", | 168 rb.jitter); |
| 169 rb.ssrc, rb.cumulative_number_of_packets_lost); | |
| 170 TRACE_COUNTER_ID1("cast_rtcp", "RtcpReceiver::Jitter", | |
| 171 rb.ssrc, rb.jitter); | |
| 172 | 169 |
| 173 RtcpReportBlock report_block; | 170 RtcpReportBlock report_block; |
| 174 report_block.remote_ssrc = remote_ssrc; | 171 report_block.remote_ssrc = remote_ssrc; |
| 175 report_block.media_ssrc = rb.ssrc; | 172 report_block.media_ssrc = rb.ssrc; |
| 176 report_block.fraction_lost = rb.fraction_lost; | 173 report_block.fraction_lost = rb.fraction_lost; |
| 177 report_block.cumulative_lost = rb.cumulative_number_of_packets_lost; | 174 report_block.cumulative_lost = rb.cumulative_number_of_packets_lost; |
| 178 report_block.extended_high_sequence_number = | 175 report_block.extended_high_sequence_number = |
| 179 rb.extended_highest_sequence_number; | 176 rb.extended_highest_sequence_number; |
| 180 report_block.jitter = rb.jitter; | 177 report_block.jitter = rb.jitter; |
| 181 report_block.last_sr = rb.last_sender_report; | 178 report_block.last_sr = rb.last_sender_report; |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 | 434 |
| 438 void RtcpReceiver::HandleFIRItem(const RtcpField* rtcp_field) { | 435 void RtcpReceiver::HandleFIRItem(const RtcpField* rtcp_field) { |
| 439 // Is it our sender that is requested to generate a new keyframe. | 436 // Is it our sender that is requested to generate a new keyframe. |
| 440 if (ssrc_ != rtcp_field->fir_item.ssrc) return; | 437 if (ssrc_ != rtcp_field->fir_item.ssrc) return; |
| 441 | 438 |
| 442 VLOG(1) << "Cast RTCP received FIR on our SSRC " << ssrc_; | 439 VLOG(1) << "Cast RTCP received FIR on our SSRC " << ssrc_; |
| 443 } | 440 } |
| 444 | 441 |
| 445 } // namespace cast | 442 } // namespace cast |
| 446 } // namespace media | 443 } // namespace media |
| OLD | NEW |