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

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

Issue 2822153002: Remove rtcp::TransportFeedback::GetStatusVector/GetReceiveDeltas (Closed)
Patch Set: Rebase Created 3 years, 8 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
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 if (std::abs(delta - kBaseTimestampRangeSizeUs) < std::abs(delta)) { 115 if (std::abs(delta - kBaseTimestampRangeSizeUs) < std::abs(delta)) {
116 delta -= kBaseTimestampRangeSizeUs; // Wrap backwards. 116 delta -= kBaseTimestampRangeSizeUs; // Wrap backwards.
117 } else if (std::abs(delta + kBaseTimestampRangeSizeUs) < std::abs(delta)) { 117 } else if (std::abs(delta + kBaseTimestampRangeSizeUs) < std::abs(delta)) {
118 delta += kBaseTimestampRangeSizeUs; // Wrap forwards. 118 delta += kBaseTimestampRangeSizeUs; // Wrap forwards.
119 } 119 }
120 120
121 current_offset_ms_ += delta / 1000; 121 current_offset_ms_ += delta / 1000;
122 } 122 }
123 last_timestamp_us_ = timestamp_us; 123 last_timestamp_us_ = timestamp_us;
124 124
125 auto received_packets = feedback.GetReceivedPackets();
126 std::vector<PacketFeedback> packet_feedback_vector; 125 std::vector<PacketFeedback> packet_feedback_vector;
127 if (received_packets.empty()) { 126 if (feedback.GetPacketStatusCount() == 0) {
128 LOG(LS_INFO) << "Empty transport feedback packet received."; 127 LOG(LS_INFO) << "Empty transport feedback packet received.";
129 return packet_feedback_vector; 128 return packet_feedback_vector;
130 } 129 }
131 const uint16_t last_sequence_number = 130 packet_feedback_vector.reserve(feedback.GetPacketStatusCount());
132 received_packets.back().sequence_number();
133 const size_t packet_count =
134 1 + ForwardDiff(feedback.GetBaseSequence(), last_sequence_number);
135 packet_feedback_vector.reserve(packet_count);
136 // feedback.GetStatusVector().size() is a less efficient way to reach what
137 // should be the same value.
138 RTC_DCHECK_EQ(packet_count, feedback.GetStatusVector().size());
139 131
140 { 132 {
141 rtc::CritScope cs(&lock_); 133 rtc::CritScope cs(&lock_);
142 size_t failed_lookups = 0; 134 size_t failed_lookups = 0;
143 int64_t offset_us = 0; 135 int64_t offset_us = 0;
144 int64_t timestamp_ms = 0; 136 int64_t timestamp_ms = 0;
145 uint16_t seq_num = feedback.GetBaseSequence(); 137 uint16_t seq_num = feedback.GetBaseSequence();
146 for (const auto& packet : received_packets) { 138 for (const auto& packet : feedback.GetReceivedPackets()) {
147 // Insert into the vector those unreceived packets which precede this 139 // Insert into the vector those unreceived packets which precede this
148 // iteration's received packet. 140 // iteration's received packet.
149 for (; seq_num != packet.sequence_number(); ++seq_num) { 141 for (; seq_num != packet.sequence_number(); ++seq_num) {
150 PacketFeedback packet_feedback(PacketFeedback::kNotReceived, seq_num); 142 PacketFeedback packet_feedback(PacketFeedback::kNotReceived, seq_num);
151 // Note: Element not removed from history because it might be reported 143 // Note: Element not removed from history because it might be reported
152 // as received by another feedback. 144 // as received by another feedback.
153 if (!send_time_history_.GetFeedback(&packet_feedback, false)) 145 if (!send_time_history_.GetFeedback(&packet_feedback, false))
154 ++failed_lookups; 146 ++failed_lookups;
155 if (packet_feedback.local_net_id == local_net_id_ && 147 if (packet_feedback.local_net_id == local_net_id_ &&
156 packet_feedback.remote_net_id == remote_net_id_) { 148 packet_feedback.remote_net_id == remote_net_id_) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 observer->OnPacketFeedbackVector(last_packet_feedback_vector_); 182 observer->OnPacketFeedbackVector(last_packet_feedback_vector_);
191 } 183 }
192 } 184 }
193 } 185 }
194 186
195 std::vector<PacketFeedback> 187 std::vector<PacketFeedback>
196 TransportFeedbackAdapter::GetTransportFeedbackVector() const { 188 TransportFeedbackAdapter::GetTransportFeedbackVector() const {
197 return last_packet_feedback_vector_; 189 return last_packet_feedback_vector_;
198 } 190 }
199 } // namespace webrtc 191 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698