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

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

Powered by Google App Engine
This is Rietveld 408576698