Index: media/cast/rtcp/rtcp.cc |
diff --git a/media/cast/rtcp/rtcp.cc b/media/cast/rtcp/rtcp.cc |
index cd910eb13b0b0e0de66a3d8eedb388fdfcb6633c..9f2007a2fb3ced44a041757f2879b395f352d619 100644 |
--- a/media/cast/rtcp/rtcp.cc |
+++ b/media/cast/rtcp/rtcp.cc |
@@ -19,6 +19,7 @@ namespace media { |
namespace cast { |
static const int kMaxRttMs = 10000; // 10 seconds. |
+static const uint16 kMaxDelay = 2000; |
// Time limit for received RTCP messages when we stop using it for lip-sync. |
static const int64 kMaxDiffSinceReceivedRtcpMs = 100000; // 100 seconds. |
@@ -241,18 +242,18 @@ void Rtcp::SendRtcpFromRtpReceiver( |
// Attach our NTP to all RTCP packets; with this information a "smart" sender |
// can make decisions based on how old the RTCP message is. |
- packet_type_flags |= RtcpSender::kRtcpRrtr; |
+ packet_type_flags |= transport::kRtcpRrtr; |
ConvertTimeTicksToNtp(now, &rrtr.ntp_seconds, &rrtr.ntp_fraction); |
SaveLastSentNtpTime(now, rrtr.ntp_seconds, rrtr.ntp_fraction); |
if (cast_message) { |
- packet_type_flags |= RtcpSender::kRtcpCast; |
+ packet_type_flags |= transport::kRtcpCast; |
} |
if (event_subscriber) { |
- packet_type_flags |= RtcpSender::kRtcpReceiverLog; |
+ packet_type_flags |= transport::kRtcpReceiverLog; |
} |
if (rtcp_mode_ == kRtcpCompound || now >= next_time_to_send_rtcp_) { |
- packet_type_flags |= RtcpSender::kRtcpRr; |
+ packet_type_flags |= transport::kRtcpRr; |
report_block.remote_ssrc = 0; // Not needed to set send side. |
report_block.media_ssrc = remote_ssrc_; // SSRC of the RTP packet sender. |
@@ -281,17 +282,18 @@ void Rtcp::SendRtcpFromRtpReceiver( |
UpdateNextTimeToSendRtcp(); |
} |
rtcp_sender_->SendRtcpFromRtpReceiver( |
- packet_type_flags, &report_block, &rrtr, cast_message, event_subscriber); |
+ packet_type_flags, &report_block, &rrtr, cast_message, event_subscriber, |
+ target_delay_ms_); |
} |
void Rtcp::SendRtcpFromRtpSender( |
const transport::RtcpSenderLogMessage& sender_log_message) { |
DCHECK(transport_sender_); |
- uint32 packet_type_flags = RtcpSender::kRtcpSr; |
+ uint32 packet_type_flags = transport::kRtcpSr; |
base::TimeTicks now = cast_environment_->Clock()->NowTicks(); |
if (sender_log_message.size()) { |
- packet_type_flags |= RtcpSender::kRtcpSenderLog; |
+ packet_type_flags |= transport::kRtcpSenderLog; |
} |
transport::RtcpSenderInfo sender_info; |
@@ -304,7 +306,7 @@ void Rtcp::SendRtcpFromRtpSender( |
transport::RtcpDlrrReportBlock dlrr; |
if (!time_last_report_received_.is_null()) { |
- packet_type_flags |= RtcpSender::kRtcpDlrr; |
+ packet_type_flags |= transport::kRtcpDlrr; |
dlrr.last_rr = last_report_received_; |
uint32 delay_seconds = 0; |
uint32 delay_fraction = 0; |
@@ -392,6 +394,11 @@ void Rtcp::SetCastReceiverEventHistorySize(size_t size) { |
rtcp_receiver_->SetCastReceiverEventHistorySize(size); |
} |
+void Rtcp::SetTargetDelay(base::TimeDelta target_delay) { |
+ target_delay_ms_ = static_cast<uint16>(target_delay.InMilliseconds()); |
+ DCHECK(target_delay_ms_ < kMaxDelay); |
+} |
+ |
void Rtcp::OnReceivedDelaySinceLastReport(uint32 receivers_ssrc, |
uint32 last_report, |
uint32 delay_since_last_report) { |