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

Side by Side Diff: media/cast/sender/frame_sender.cc

Issue 532373003: [Cast] RTT clean-up to the max! (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "media/cast/sender/frame_sender.h" 5 #include "media/cast/sender/frame_sender.h"
6 6
7 namespace media { 7 namespace media {
8 namespace cast { 8 namespace cast {
9 namespace { 9 namespace {
10 const int kMinSchedulingDelayMs = 1; 10 const int kMinSchedulingDelayMs = 1;
11 } // namespace 11 } // namespace
12 12
13 FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment, 13 FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment,
14 CastTransportSender* const transport_sender, 14 CastTransportSender* const transport_sender,
15 base::TimeDelta rtcp_interval, 15 base::TimeDelta rtcp_interval,
16 int rtp_timebase, 16 int rtp_timebase,
17 uint32 ssrc, 17 uint32 ssrc,
18 double max_frame_rate, 18 double max_frame_rate,
19 base::TimeDelta playout_delay) 19 base::TimeDelta playout_delay)
20 : cast_environment_(cast_environment), 20 : cast_environment_(cast_environment),
21 transport_sender_(transport_sender), 21 transport_sender_(transport_sender),
22 ssrc_(ssrc), 22 ssrc_(ssrc),
23 rtt_available_(false),
24 rtcp_interval_(rtcp_interval), 23 rtcp_interval_(rtcp_interval),
25 max_frame_rate_(max_frame_rate), 24 max_frame_rate_(max_frame_rate),
26 num_aggressive_rtcp_reports_sent_(0), 25 num_aggressive_rtcp_reports_sent_(0),
27 last_sent_frame_id_(0), 26 last_sent_frame_id_(0),
28 latest_acked_frame_id_(0), 27 latest_acked_frame_id_(0),
29 duplicate_ack_counter_(0), 28 duplicate_ack_counter_(0),
30 rtp_timebase_(rtp_timebase), 29 rtp_timebase_(rtp_timebase),
31 weak_factory_(this) { 30 weak_factory_(this) {
32 DCHECK_GT(rtp_timebase_, 0); 31 DCHECK_GT(rtp_timebase_, 0);
33 SetTargetPlayoutDelay(playout_delay); 32 SetTargetPlayoutDelay(playout_delay);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 const int64 rtp_delta = TimeDeltaToRtpDelta(time_delta, rtp_timebase_); 70 const int64 rtp_delta = TimeDeltaToRtpDelta(time_delta, rtp_timebase_);
72 const uint32 now_as_rtp_timestamp = 71 const uint32 now_as_rtp_timestamp =
73 GetRecordedRtpTimestamp(last_sent_frame_id_) + 72 GetRecordedRtpTimestamp(last_sent_frame_id_) +
74 static_cast<uint32>(rtp_delta); 73 static_cast<uint32>(rtp_delta);
75 transport_sender_->SendSenderReport(ssrc_, now, now_as_rtp_timestamp); 74 transport_sender_->SendSenderReport(ssrc_, now, now_as_rtp_timestamp);
76 75
77 if (schedule_future_reports) 76 if (schedule_future_reports)
78 ScheduleNextRtcpReport(); 77 ScheduleNextRtcpReport();
79 } 78 }
80 79
81 void FrameSender::OnReceivedRtt(base::TimeDelta rtt, 80 void FrameSender::OnMeasuredRoundTripTime(base::TimeDelta rtt) {
82 base::TimeDelta avg_rtt, 81 DCHECK(rtt > base::TimeDelta());
83 base::TimeDelta min_rtt, 82 current_round_trip_time_ = rtt;
84 base::TimeDelta max_rtt) {
85 rtt_available_ = true;
86 rtt_ = rtt;
87 avg_rtt_ = avg_rtt;
88 min_rtt_ = min_rtt;
89 max_rtt_ = max_rtt;
90 } 83 }
91 84
92 void FrameSender::SetTargetPlayoutDelay( 85 void FrameSender::SetTargetPlayoutDelay(
93 base::TimeDelta new_target_playout_delay) { 86 base::TimeDelta new_target_playout_delay) {
94 target_playout_delay_ = new_target_playout_delay; 87 target_playout_delay_ = new_target_playout_delay;
95 max_unacked_frames_ = 88 max_unacked_frames_ =
96 std::min(kMaxUnackedFrames, 89 std::min(kMaxUnackedFrames,
97 1 + static_cast<int>(target_playout_delay_ * 90 1 + static_cast<int>(target_playout_delay_ *
98 max_frame_rate_ / 91 max_frame_rate_ /
99 base::TimeDelta::FromSeconds(1))); 92 base::TimeDelta::FromSeconds(1)));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 base::TimeTicks FrameSender::GetRecordedReferenceTime(uint32 frame_id) const { 146 base::TimeTicks FrameSender::GetRecordedReferenceTime(uint32 frame_id) const {
154 return frame_reference_times_[frame_id % arraysize(frame_reference_times_)]; 147 return frame_reference_times_[frame_id % arraysize(frame_reference_times_)];
155 } 148 }
156 149
157 RtpTimestamp FrameSender::GetRecordedRtpTimestamp(uint32 frame_id) const { 150 RtpTimestamp FrameSender::GetRecordedRtpTimestamp(uint32 frame_id) const {
158 return frame_rtp_timestamps_[frame_id % arraysize(frame_rtp_timestamps_)]; 151 return frame_rtp_timestamps_[frame_id % arraysize(frame_rtp_timestamps_)];
159 } 152 }
160 153
161 } // namespace cast 154 } // namespace cast
162 } // namespace media 155 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698