Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "base/big_endian.h" | 5 #include "base/big_endian.h" |
| 6 #include "base/time/tick_clock.h" | 6 #include "base/time/tick_clock.h" |
| 7 #include "media/cast/net/pacing/paced_sender.h" | 7 #include "media/cast/net/pacing/paced_sender.h" |
| 8 #include "media/cast/net/rtcp/receiver_rtcp_session.h" | 8 #include "media/cast/net/rtcp/receiver_rtcp_session.h" |
| 9 #include "media/cast/net/rtcp/rtcp_builder.h" | 9 #include "media/cast/net/rtcp/rtcp_builder.h" |
| 10 #include "media/cast/net/rtcp/rtcp_defines.h" | 10 #include "media/cast/net/rtcp/rtcp_defines.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 91 local_clock_ahead_by_.Reset(now, measured_offset); | 91 local_clock_ahead_by_.Reset(now, measured_offset); |
| 92 } | 92 } |
| 93 VLOG(1) << "Local clock is ahead of the remote clock by: " | 93 VLOG(1) << "Local clock is ahead of the remote clock by: " |
| 94 << "measured=" << measured_offset.InMicroseconds() << " usec, " | 94 << "measured=" << measured_offset.InMicroseconds() << " usec, " |
| 95 << "filtered=" << local_clock_ahead_by_.Current().InMicroseconds() | 95 << "filtered=" << local_clock_ahead_by_.Current().InMicroseconds() |
| 96 << " usec."; | 96 << " usec."; |
| 97 } | 97 } |
| 98 | 98 |
| 99 void ReceiverRtcpSession::SendRtcpReport( | 99 void ReceiverRtcpSession::SendRtcpReport( |
| 100 RtcpTimeData time_data, | 100 RtcpTimeData time_data, |
| 101 const RtcpCastMessage* cast_message, | 101 const RtcpCastMessage* cast_message, |
|
miu
2016/02/26 23:36:06
Instead of including |picture_loss_indicator| in |
xjz
2016/02/27 05:53:32
Done.
| |
| 102 base::TimeDelta target_delay, | 102 base::TimeDelta target_delay, |
| 103 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, | 103 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, |
| 104 const RtpReceiverStatistics* rtp_receiver_statistics) const { | 104 const RtpReceiverStatistics* rtp_receiver_statistics) const { |
| 105 RtcpReportBlock report_block; | 105 RtcpReportBlock report_block; |
| 106 RtcpReceiverReferenceTimeReport rrtr; | 106 RtcpReceiverReferenceTimeReport rrtr; |
| 107 rrtr.ntp_seconds = time_data.ntp_seconds; | 107 if ((!cast_message) || (!cast_message->picture_loss_indicator)) { |
| 108 rrtr.ntp_fraction = time_data.ntp_fraction; | 108 rrtr.ntp_seconds = time_data.ntp_seconds; |
| 109 | 109 rrtr.ntp_fraction = time_data.ntp_fraction; |
| 110 } | |
| 110 if (rtp_receiver_statistics) { | 111 if (rtp_receiver_statistics) { |
| 111 report_block.remote_ssrc = 0; // Not needed to set send side. | 112 report_block.remote_ssrc = 0; // Not needed to set send side. |
| 112 report_block.media_ssrc = remote_ssrc_; // SSRC of the RTP packet sender. | 113 report_block.media_ssrc = remote_ssrc_; // SSRC of the RTP packet sender. |
| 113 report_block.fraction_lost = rtp_receiver_statistics->fraction_lost; | 114 report_block.fraction_lost = rtp_receiver_statistics->fraction_lost; |
| 114 report_block.cumulative_lost = rtp_receiver_statistics->cumulative_lost; | 115 report_block.cumulative_lost = rtp_receiver_statistics->cumulative_lost; |
| 115 report_block.extended_high_sequence_number = | 116 report_block.extended_high_sequence_number = |
| 116 rtp_receiver_statistics->extended_high_sequence_number; | 117 rtp_receiver_statistics->extended_high_sequence_number; |
| 117 report_block.jitter = rtp_receiver_statistics->jitter; | 118 report_block.jitter = rtp_receiver_statistics->jitter; |
| 118 report_block.last_sr = last_report_truncated_ntp_; | 119 report_block.last_sr = last_report_truncated_ntp_; |
| 119 if (!time_last_report_received_.is_null()) { | 120 if (!time_last_report_received_.is_null()) { |
| 120 uint32_t delay_seconds = 0; | 121 uint32_t delay_seconds = 0; |
| 121 uint32_t delay_fraction = 0; | 122 uint32_t delay_fraction = 0; |
| 122 base::TimeDelta delta = time_data.timestamp - time_last_report_received_; | 123 base::TimeDelta delta = time_data.timestamp - time_last_report_received_; |
| 123 ConvertTimeToFractions(delta.InMicroseconds(), &delay_seconds, | 124 ConvertTimeToFractions(delta.InMicroseconds(), &delay_seconds, |
| 124 &delay_fraction); | 125 &delay_fraction); |
| 125 report_block.delay_since_last_sr = | 126 report_block.delay_since_last_sr = |
| 126 ConvertToNtpDiff(delay_seconds, delay_fraction); | 127 ConvertToNtpDiff(delay_seconds, delay_fraction); |
| 127 } else { | 128 } else { |
| 128 report_block.delay_since_last_sr = 0; | 129 report_block.delay_since_last_sr = 0; |
| 129 } | 130 } |
| 130 } | 131 } |
| 131 RtcpBuilder rtcp_builder(local_ssrc_); | 132 RtcpBuilder rtcp_builder(local_ssrc_); |
| 132 packet_sender_->SendRtcpPacket( | 133 packet_sender_->SendRtcpPacket( |
| 133 local_ssrc_, rtcp_builder.BuildRtcpFromReceiver( | 134 local_ssrc_, |
| 134 rtp_receiver_statistics ? &report_block : NULL, &rrtr, | 135 rtcp_builder.BuildRtcpFromReceiver( |
| 135 cast_message, rtcp_events, target_delay)); | 136 rtp_receiver_statistics ? &report_block : nullptr, |
| 137 (cast_message && cast_message->picture_loss_indicator) ? nullptr | |
|
miu
2016/02/26 23:36:06
Separate argument for PLI here too.
Also, it seem
xjz
2016/02/27 05:53:32
Done.
| |
| 138 : &rrtr, | |
| 139 cast_message, rtcp_events, target_delay)); | |
| 136 } | 140 } |
| 137 | 141 |
| 138 void ReceiverRtcpSession::OnReceivedLipSyncInfo(RtpTimeTicks rtp_timestamp, | 142 void ReceiverRtcpSession::OnReceivedLipSyncInfo(RtpTimeTicks rtp_timestamp, |
| 139 uint32_t ntp_seconds, | 143 uint32_t ntp_seconds, |
| 140 uint32_t ntp_fraction) { | 144 uint32_t ntp_fraction) { |
| 141 if (ntp_seconds == 0) { | 145 if (ntp_seconds == 0) { |
| 142 NOTREACHED(); | 146 NOTREACHED(); |
| 143 return; | 147 return; |
| 144 } | 148 } |
| 145 lip_sync_rtp_timestamp_ = rtp_timestamp; | 149 lip_sync_rtp_timestamp_ = rtp_timestamp; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 163 DCHECK((clock_->NowTicks() - local_reference_time) < | 167 DCHECK((clock_->NowTicks() - local_reference_time) < |
| 164 base::TimeDelta::FromMinutes(1)); | 168 base::TimeDelta::FromMinutes(1)); |
| 165 | 169 |
| 166 *rtp_timestamp = lip_sync_rtp_timestamp_; | 170 *rtp_timestamp = lip_sync_rtp_timestamp_; |
| 167 *reference_time = local_reference_time; | 171 *reference_time = local_reference_time; |
| 168 return true; | 172 return true; |
| 169 } | 173 } |
| 170 | 174 |
| 171 } // namespace cast | 175 } // namespace cast |
| 172 } // namespace media | 176 } // namespace media |
| OLD | NEW |