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

Side by Side Diff: webrtc/modules/congestion_controller/transport_feedback_adapter.cc

Issue 2710093004: Rename webrtc::PacketInfo to webrtc::PacketFeedback (Closed)
Patch Set: . Created 3 years, 10 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 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 12 matching lines...) Expand all
23 #include "webrtc/system_wrappers/include/field_trial.h" 23 #include "webrtc/system_wrappers/include/field_trial.h"
24 24
25 namespace webrtc { 25 namespace webrtc {
26 26
27 const int64_t kNoTimestamp = -1; 27 const int64_t kNoTimestamp = -1;
28 const int64_t kSendTimeHistoryWindowMs = 60000; 28 const int64_t kSendTimeHistoryWindowMs = 60000;
29 const int64_t kBaseTimestampScaleFactor = 29 const int64_t kBaseTimestampScaleFactor =
30 rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8); 30 rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8);
31 const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24); 31 const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24);
32 32
33 class PacketInfoComparator { 33 class PacketFeedbackComparator {
34 public: 34 public:
35 inline bool operator()(const PacketInfo& lhs, const PacketInfo& rhs) { 35 inline bool operator()(const PacketFeedback& lhs, const PacketFeedback& rhs) {
36 if (lhs.arrival_time_ms != rhs.arrival_time_ms) 36 if (lhs.arrival_time_ms != rhs.arrival_time_ms)
37 return lhs.arrival_time_ms < rhs.arrival_time_ms; 37 return lhs.arrival_time_ms < rhs.arrival_time_ms;
38 if (lhs.send_time_ms != rhs.send_time_ms) 38 if (lhs.send_time_ms != rhs.send_time_ms)
39 return lhs.send_time_ms < rhs.send_time_ms; 39 return lhs.send_time_ms < rhs.send_time_ms;
40 return lhs.sequence_number < rhs.sequence_number; 40 return lhs.sequence_number < rhs.sequence_number;
41 } 41 }
42 }; 42 };
43 43
44 TransportFeedbackAdapter::TransportFeedbackAdapter( 44 TransportFeedbackAdapter::TransportFeedbackAdapter(
45 RtcEventLog* event_log, 45 RtcEventLog* event_log,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 int transport_overhead_bytes_per_packet) { 103 int transport_overhead_bytes_per_packet) {
104 rtc::CritScope cs(&lock_); 104 rtc::CritScope cs(&lock_);
105 transport_overhead_bytes_per_packet_ = transport_overhead_bytes_per_packet; 105 transport_overhead_bytes_per_packet_ = transport_overhead_bytes_per_packet;
106 } 106 }
107 107
108 int64_t TransportFeedbackAdapter::GetProbingIntervalMs() const { 108 int64_t TransportFeedbackAdapter::GetProbingIntervalMs() const {
109 rtc::CritScope cs(&bwe_lock_); 109 rtc::CritScope cs(&bwe_lock_);
110 return delay_based_bwe_->GetProbingIntervalMs(); 110 return delay_based_bwe_->GetProbingIntervalMs();
111 } 111 }
112 112
113 std::vector<PacketInfo> TransportFeedbackAdapter::GetPacketFeedbackVector( 113 std::vector<PacketFeedback> TransportFeedbackAdapter::GetPacketFeedbackVector(
114 const rtcp::TransportFeedback& feedback) { 114 const rtcp::TransportFeedback& feedback) {
115 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 115 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
116 int64_t timestamp_us = feedback.GetBaseTimeUs(); 116 int64_t timestamp_us = feedback.GetBaseTimeUs();
117 // Add timestamp deltas to a local time base selected on first packet arrival. 117 // Add timestamp deltas to a local time base selected on first packet arrival.
118 // This won't be the true time base, but makes it easier to manually inspect 118 // This won't be the true time base, but makes it easier to manually inspect
119 // time stamps. 119 // time stamps.
120 if (last_timestamp_us_ == kNoTimestamp) { 120 if (last_timestamp_us_ == kNoTimestamp) {
121 current_offset_ms_ = clock_->TimeInMilliseconds(); 121 current_offset_ms_ = clock_->TimeInMilliseconds();
122 } else { 122 } else {
123 int64_t delta = timestamp_us - last_timestamp_us_; 123 int64_t delta = timestamp_us - last_timestamp_us_;
124 124
125 // Detect and compensate for wrap-arounds in base time. 125 // Detect and compensate for wrap-arounds in base time.
126 if (std::abs(delta - kBaseTimestampRangeSizeUs) < std::abs(delta)) { 126 if (std::abs(delta - kBaseTimestampRangeSizeUs) < std::abs(delta)) {
127 delta -= kBaseTimestampRangeSizeUs; // Wrap backwards. 127 delta -= kBaseTimestampRangeSizeUs; // Wrap backwards.
128 } else if (std::abs(delta + kBaseTimestampRangeSizeUs) < std::abs(delta)) { 128 } else if (std::abs(delta + kBaseTimestampRangeSizeUs) < std::abs(delta)) {
129 delta += kBaseTimestampRangeSizeUs; // Wrap forwards. 129 delta += kBaseTimestampRangeSizeUs; // Wrap forwards.
130 } 130 }
131 131
132 current_offset_ms_ += delta / 1000; 132 current_offset_ms_ += delta / 1000;
133 } 133 }
134 last_timestamp_us_ = timestamp_us; 134 last_timestamp_us_ = timestamp_us;
135 135
136 auto received_packets = feedback.GetReceivedPackets(); 136 auto received_packets = feedback.GetReceivedPackets();
137 std::vector<PacketInfo> packet_feedback_vector; 137 std::vector<PacketFeedback> packet_feedback_vector;
138 packet_feedback_vector.reserve(received_packets.size()); 138 packet_feedback_vector.reserve(received_packets.size());
139 if (received_packets.empty()) { 139 if (received_packets.empty()) {
140 LOG(LS_INFO) << "Empty transport feedback packet received."; 140 LOG(LS_INFO) << "Empty transport feedback packet received.";
141 return packet_feedback_vector; 141 return packet_feedback_vector;
142 } 142 }
143 { 143 {
144 rtc::CritScope cs(&lock_); 144 rtc::CritScope cs(&lock_);
145 size_t failed_lookups = 0; 145 size_t failed_lookups = 0;
146 int64_t offset_us = 0; 146 int64_t offset_us = 0;
147 int64_t timestamp_ms = 0; 147 int64_t timestamp_ms = 0;
148 for (const auto& packet : feedback.GetReceivedPackets()) { 148 for (const auto& packet : feedback.GetReceivedPackets()) {
149 offset_us += packet.delta_us(); 149 offset_us += packet.delta_us();
150 timestamp_ms = current_offset_ms_ + (offset_us / 1000); 150 timestamp_ms = current_offset_ms_ + (offset_us / 1000);
151 PacketInfo info(timestamp_ms, packet.sequence_number()); 151 PacketFeedback packet_feedback(timestamp_ms, packet.sequence_number());
152 if (!send_time_history_.GetInfo(&info, true)) 152 if (!send_time_history_.GetFeedback(&packet_feedback, true))
153 ++failed_lookups; 153 ++failed_lookups;
154 packet_feedback_vector.push_back(info); 154 packet_feedback_vector.push_back(packet_feedback);
155 } 155 }
156 std::sort(packet_feedback_vector.begin(), packet_feedback_vector.end(), 156 std::sort(packet_feedback_vector.begin(), packet_feedback_vector.end(),
157 PacketInfoComparator()); 157 PacketFeedbackComparator());
158 if (failed_lookups > 0) { 158 if (failed_lookups > 0) {
159 LOG(LS_WARNING) << "Failed to lookup send time for " << failed_lookups 159 LOG(LS_WARNING) << "Failed to lookup send time for " << failed_lookups
160 << " packet" << (failed_lookups > 1 ? "s" : "") 160 << " packet" << (failed_lookups > 1 ? "s" : "")
161 << ". Send time history too small?"; 161 << ". Send time history too small?";
162 } 162 }
163 } 163 }
164 return packet_feedback_vector; 164 return packet_feedback_vector;
165 } 165 }
166 166
167 void TransportFeedbackAdapter::OnTransportFeedback( 167 void TransportFeedbackAdapter::OnTransportFeedback(
168 const rtcp::TransportFeedback& feedback) { 168 const rtcp::TransportFeedback& feedback) {
169 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 169 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
170 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback); 170 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback);
171 DelayBasedBwe::Result result; 171 DelayBasedBwe::Result result;
172 { 172 {
173 rtc::CritScope cs(&bwe_lock_); 173 rtc::CritScope cs(&bwe_lock_);
174 result = delay_based_bwe_->IncomingPacketFeedbackVector( 174 result = delay_based_bwe_->IncomingPacketFeedbackVector(
175 last_packet_feedback_vector_); 175 last_packet_feedback_vector_);
176 } 176 }
177 if (result.updated) 177 if (result.updated)
178 bitrate_controller_->OnDelayBasedBweResult(result); 178 bitrate_controller_->OnDelayBasedBweResult(result);
179 } 179 }
180 180
181 std::vector<PacketInfo> TransportFeedbackAdapter::GetTransportFeedbackVector() 181 std::vector<PacketFeedback>
182 const { 182 TransportFeedbackAdapter::GetTransportFeedbackVector() const {
183 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); 183 RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
184 return last_packet_feedback_vector_; 184 return last_packet_feedback_vector_;
185 } 185 }
186 186
187 void TransportFeedbackAdapter::OnRttUpdate(int64_t avg_rtt_ms, 187 void TransportFeedbackAdapter::OnRttUpdate(int64_t avg_rtt_ms,
188 int64_t max_rtt_ms) { 188 int64_t max_rtt_ms) {
189 RTC_DCHECK(module_process_thread_checker_.CalledOnValidThread()); 189 RTC_DCHECK(module_process_thread_checker_.CalledOnValidThread());
190 rtc::CritScope cs(&bwe_lock_); 190 rtc::CritScope cs(&bwe_lock_);
191 delay_based_bwe_->OnRttUpdate(avg_rtt_ms, max_rtt_ms); 191 delay_based_bwe_->OnRttUpdate(avg_rtt_ms, max_rtt_ms);
192 } 192 }
193 193
194 } // namespace webrtc 194 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698