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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc

Issue 2766323006: Correcting the amount of padding when send side bwe includes RTP overhead.
Patch Set: on comments` 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 stored_packets_[index].send_time = clock_->TimeInMilliseconds(); 155 stored_packets_[index].send_time = clock_->TimeInMilliseconds();
156 return GetPacket(index); 156 return GetPacket(index);
157 } 157 }
158 158
159 std::unique_ptr<RtpPacketToSend> RtpPacketHistory::GetPacket(int index) const { 159 std::unique_ptr<RtpPacketToSend> RtpPacketHistory::GetPacket(int index) const {
160 const RtpPacketToSend& stored = *stored_packets_[index].packet; 160 const RtpPacketToSend& stored = *stored_packets_[index].packet;
161 return std::unique_ptr<RtpPacketToSend>(new RtpPacketToSend(stored)); 161 return std::unique_ptr<RtpPacketToSend>(new RtpPacketToSend(stored));
162 } 162 }
163 163
164 std::unique_ptr<RtpPacketToSend> RtpPacketHistory::GetBestFittingPacket( 164 std::unique_ptr<RtpPacketToSend> RtpPacketHistory::GetBestFittingPacket(
165 size_t packet_length) const { 165 size_t packet_length,
166 bool include_header) const {
166 rtc::CritScope cs(&critsect_); 167 rtc::CritScope cs(&critsect_);
167 if (!store_) 168 if (!store_)
168 return nullptr; 169 return nullptr;
169 int index = FindBestFittingPacket(packet_length); 170 int index = FindBestFittingPacket(packet_length, include_header);
170 if (index < 0) 171 if (index < 0)
171 return nullptr; 172 return nullptr;
172 return GetPacket(index); 173 return GetPacket(index);
173 } 174 }
174 175
175 bool RtpPacketHistory::FindSeqNum(uint16_t sequence_number, int* index) const { 176 bool RtpPacketHistory::FindSeqNum(uint16_t sequence_number, int* index) const {
176 if (prev_index_ > 0) { 177 if (prev_index_ > 0) {
177 *index = prev_index_ - 1; 178 *index = prev_index_ - 1;
178 } else { 179 } else {
179 *index = stored_packets_.size() - 1; // Wrap. 180 *index = stored_packets_.size() - 1; // Wrap.
(...skipping 13 matching lines...) Expand all
193 *index = m; 194 *index = m;
194 temp_sequence_number = stored_packets_[*index].sequence_number; 195 temp_sequence_number = stored_packets_[*index].sequence_number;
195 break; 196 break;
196 } 197 }
197 } 198 }
198 } 199 }
199 return temp_sequence_number == sequence_number && 200 return temp_sequence_number == sequence_number &&
200 stored_packets_[*index].packet; 201 stored_packets_[*index].packet;
201 } 202 }
202 203
203 int RtpPacketHistory::FindBestFittingPacket(size_t size) const { 204 int RtpPacketHistory::FindBestFittingPacket(size_t size,
205 bool include_header) const {
204 if (size < kMinPacketRequestBytes || stored_packets_.empty()) 206 if (size < kMinPacketRequestBytes || stored_packets_.empty())
205 return -1; 207 return -1;
206 size_t min_diff = std::numeric_limits<size_t>::max(); 208 size_t min_diff = std::numeric_limits<size_t>::max();
207 int best_index = -1; // Returned unchanged if we don't find anything. 209 int best_index = -1; // Returned unchanged if we don't find anything.
208 for (size_t i = 0; i < stored_packets_.size(); ++i) { 210 for (size_t i = 0; i < stored_packets_.size(); ++i) {
209 if (!stored_packets_[i].packet) 211 if (!stored_packets_[i].packet)
210 continue; 212 continue;
211 size_t stored_size = stored_packets_[i].packet->size(); 213 size_t stored_size = include_header
214 ? stored_packets_[i].packet->size()
215 : stored_packets_[i].packet->size() -
216 stored_packets_[i].packet->headers_size();
212 size_t diff = 217 size_t diff =
213 (stored_size > size) ? (stored_size - size) : (size - stored_size); 218 (stored_size > size) ? (stored_size - size) : (size - stored_size);
214 if (diff < min_diff) { 219 if (diff < min_diff) {
215 min_diff = diff; 220 min_diff = diff;
216 best_index = static_cast<int>(i); 221 best_index = static_cast<int>(i);
217 } 222 }
218 } 223 }
219 return best_index; 224 return best_index;
220 } 225 }
221 226
222 } // namespace webrtc 227 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698