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

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

Issue 2785713002: Allow RtpPacket::SetPayloadSize to increase payload size (Closed)
Patch Set: Tweaked comment. 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) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 WriteAt(0, (data()[0] & 0xF0) | csrcs.size()); 267 WriteAt(0, (data()[0] & 0xF0) | csrcs.size());
268 size_t offset = kFixedHeaderSize; 268 size_t offset = kFixedHeaderSize;
269 for (uint32_t csrc : csrcs) { 269 for (uint32_t csrc : csrcs) {
270 ByteWriter<uint32_t>::WriteBigEndian(WriteAt(offset), csrc); 270 ByteWriter<uint32_t>::WriteBigEndian(WriteAt(offset), csrc);
271 offset += 4; 271 offset += 4;
272 } 272 }
273 buffer_.SetSize(payload_offset_); 273 buffer_.SetSize(payload_offset_);
274 } 274 }
275 275
276 uint8_t* Packet::AllocatePayload(size_t size_bytes) { 276 uint8_t* Packet::AllocatePayload(size_t size_bytes) {
277 // Reset payload size to 0. If CopyOnWrite buffer_ was shared, this will cause
278 // reallocation and memcpy. Keeping just header reduces memcpy size.
279 SetPayloadSize(0);
280 return SetPayloadSize(size_bytes);
281 }
282
283 uint8_t* Packet::SetPayloadSize(size_t size_bytes) {
277 RTC_DCHECK_EQ(padding_size_, 0); 284 RTC_DCHECK_EQ(padding_size_, 0);
278 if (payload_offset_ + size_bytes > capacity()) { 285 if (payload_offset_ + size_bytes > capacity()) {
279 LOG(LS_WARNING) << "Cannot set payload, not enough space in buffer."; 286 LOG(LS_WARNING) << "Cannot set payload, not enough space in buffer.";
280 return nullptr; 287 return nullptr;
281 } 288 }
282 // Reset payload size to 0. If CopyOnWrite buffer_ was shared, this will cause
283 // reallocation and memcpy. Setting size to just headers reduces memcpy size.
284 buffer_.SetSize(payload_offset_);
285 payload_size_ = size_bytes; 289 payload_size_ = size_bytes;
286 buffer_.SetSize(payload_offset_ + payload_size_); 290 buffer_.SetSize(payload_offset_ + payload_size_);
287 return WriteAt(payload_offset_); 291 return WriteAt(payload_offset_);
288 } 292 }
289 293
290 void Packet::SetPayloadSize(size_t size_bytes) {
291 RTC_DCHECK_EQ(padding_size_, 0);
292 RTC_DCHECK_LE(size_bytes, payload_size_);
293 payload_size_ = size_bytes;
294 buffer_.SetSize(payload_offset_ + payload_size_);
295 }
296
297 bool Packet::SetPadding(uint8_t size_bytes, Random* random) { 294 bool Packet::SetPadding(uint8_t size_bytes, Random* random) {
298 RTC_DCHECK(random); 295 RTC_DCHECK(random);
299 if (payload_offset_ + payload_size_ + size_bytes > capacity()) { 296 if (payload_offset_ + payload_size_ + size_bytes > capacity()) {
300 LOG(LS_WARNING) << "Cannot set padding size " << size_bytes << ", only " 297 LOG(LS_WARNING) << "Cannot set padding size " << size_bytes << ", only "
301 << (capacity() - payload_offset_ - payload_size_) 298 << (capacity() - payload_offset_ - payload_size_)
302 << " bytes left in buffer."; 299 << " bytes left in buffer.";
303 return false; 300 return false;
304 } 301 }
305 padding_size_ = size_bytes; 302 padding_size_ = size_bytes;
306 buffer_.SetSize(payload_offset_ + payload_size_ + padding_size_); 303 buffer_.SetSize(payload_offset_ + payload_size_ + padding_size_);
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 uint8_t* Packet::WriteAt(size_t offset) { 545 uint8_t* Packet::WriteAt(size_t offset) {
549 return buffer_.data() + offset; 546 return buffer_.data() + offset;
550 } 547 }
551 548
552 void Packet::WriteAt(size_t offset, uint8_t byte) { 549 void Packet::WriteAt(size_t offset, uint8_t byte) {
553 buffer_.data()[offset] = byte; 550 buffer_.data()[offset] = byte;
554 } 551 }
555 552
556 } // namespace rtp 553 } // namespace rtp
557 } // namespace webrtc 554 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_packet_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698