Index: media/cast/sender/frame_sender.cc |
diff --git a/media/cast/sender/frame_sender.cc b/media/cast/sender/frame_sender.cc |
index 638bd0b79c9f0f6818de9d76016f77ba1390ce33..b531a069fe46022d5089aab45b79945e8f8c64dc 100644 |
--- a/media/cast/sender/frame_sender.cc |
+++ b/media/cast/sender/frame_sender.cc |
@@ -14,14 +14,19 @@ FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment, |
CastTransportSender* const transport_sender, |
base::TimeDelta rtcp_interval, |
int frequency, |
- uint32 ssrc) |
+ uint32 ssrc, |
+ double max_frame_rate, |
+ base::TimeDelta playout_delay) |
: cast_environment_(cast_environment), |
transport_sender_(transport_sender), |
ssrc_(ssrc), |
rtp_timestamp_helper_(frequency), |
rtt_available_(false), |
rtcp_interval_(rtcp_interval), |
+ max_frame_rate_(max_frame_rate), |
weak_factory_(this) { |
+ SetTargetPlayoutDelay(playout_delay); |
+ send_target_playout_delay_ = false; |
} |
FrameSender::~FrameSender() { |
@@ -68,5 +73,16 @@ void FrameSender::OnReceivedRtt(base::TimeDelta rtt, |
max_rtt_ = max_rtt; |
} |
+void FrameSender::SetTargetPlayoutDelay( |
+ base::TimeDelta new_target_playout_delay) { |
+ target_playout_delay_ = new_target_playout_delay; |
+ max_unacked_frames_ = |
+ std::min(kMaxUnackedFrames, |
+ 1 + static_cast<int>(target_playout_delay_ * |
+ max_frame_rate_ / |
+ base::TimeDelta::FromSeconds(1))); |
+ send_target_playout_delay_ = true; |
+} |
+ |
} // namespace cast |
} // namespace media |