| Index: media/cast/rtcp/rtcp.cc
|
| diff --git a/media/cast/rtcp/rtcp.cc b/media/cast/rtcp/rtcp.cc
|
| index 958e47209159b923e7a462122f5bc5ba8d276664..fc241ecf3d7abffc499078789361808dc7a698e9 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) {
|
|
|