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

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: Separate Pli message from Cast message. Created 4 years, 9 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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
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,
102 const RtcpPliMessage* pli_message,
102 base::TimeDelta target_delay, 103 base::TimeDelta target_delay,
103 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, 104 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events,
104 const RtpReceiverStatistics* rtp_receiver_statistics) const { 105 const RtpReceiverStatistics* rtp_receiver_statistics) const {
105 RtcpReportBlock report_block; 106 RtcpReportBlock report_block;
106 RtcpReceiverReferenceTimeReport rrtr; 107 RtcpReceiverReferenceTimeReport rrtr;
107 rrtr.ntp_seconds = time_data.ntp_seconds; 108 rrtr.ntp_seconds = time_data.ntp_seconds;
108 rrtr.ntp_fraction = time_data.ntp_fraction; 109 rrtr.ntp_fraction = time_data.ntp_fraction;
109 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 }
132
131 RtcpBuilder rtcp_builder(local_ssrc_); 133 RtcpBuilder rtcp_builder(local_ssrc_);
132 packet_sender_->SendRtcpPacket( 134 packet_sender_->SendRtcpPacket(
133 local_ssrc_, rtcp_builder.BuildRtcpFromReceiver( 135 local_ssrc_, rtcp_builder.BuildRtcpFromReceiver(
134 rtp_receiver_statistics ? &report_block : NULL, &rrtr, 136 rtp_receiver_statistics ? &report_block : nullptr, &rrtr,
135 cast_message, rtcp_events, target_delay)); 137 cast_message, pli_message, rtcp_events, target_delay));
136 } 138 }
137 139
138 void ReceiverRtcpSession::OnReceivedLipSyncInfo(RtpTimeTicks rtp_timestamp, 140 void ReceiverRtcpSession::OnReceivedLipSyncInfo(RtpTimeTicks rtp_timestamp,
139 uint32_t ntp_seconds, 141 uint32_t ntp_seconds,
140 uint32_t ntp_fraction) { 142 uint32_t ntp_fraction) {
141 if (ntp_seconds == 0) { 143 if (ntp_seconds == 0) {
142 NOTREACHED(); 144 NOTREACHED();
143 return; 145 return;
144 } 146 }
145 lip_sync_rtp_timestamp_ = rtp_timestamp; 147 lip_sync_rtp_timestamp_ = rtp_timestamp;
(...skipping 17 matching lines...) Expand all
163 DCHECK((clock_->NowTicks() - local_reference_time) < 165 DCHECK((clock_->NowTicks() - local_reference_time) <
164 base::TimeDelta::FromMinutes(1)); 166 base::TimeDelta::FromMinutes(1));
165 167
166 *rtp_timestamp = lip_sync_rtp_timestamp_; 168 *rtp_timestamp = lip_sync_rtp_timestamp_;
167 *reference_time = local_reference_time; 169 *reference_time = local_reference_time;
168 return true; 170 return true;
169 } 171 }
170 172
171 } // namespace cast 173 } // namespace cast
172 } // namespace media 174 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698