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

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

Issue 1709863002: Add Cast PLI support on sender side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698