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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_packet.cc

Issue 1945773002: RtpPacketHistory rewritten to use RtpPacket class. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_packet_history.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtp_packet.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtp_packet.cc
index 07aeb7130d586da3d145b497f14dffebff34149a..8c8fa0e79ad62d47cff2dc3dfd0b6c9fc70e260e 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_packet.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_packet.cc
@@ -78,18 +78,19 @@ bool Packet::Parse(const uint8_t* buffer, size_t buffer_size) {
Clear();
return false;
}
- RTC_DCHECK_EQ(size(), buffer_size);
buffer_.SetData(buffer, buffer_size);
+ RTC_DCHECK_EQ(size(), buffer_size);
return true;
}
-bool Packet::Parse(rtc::Buffer buffer) {
- if (!ParseBuffer(buffer.data(), buffer.size())) {
+bool Packet::Parse(rtc::CopyOnWriteBuffer buffer) {
+ if (!ParseBuffer(buffer.cdata(), buffer.size())) {
Clear();
return false;
}
- RTC_DCHECK_EQ(size(), buffer.size());
+ size_t buffer_size = buffer.size();
buffer_ = std::move(buffer);
+ RTC_DCHECK_EQ(size(), buffer_size);
return true;
}
@@ -174,16 +175,22 @@ const uint8_t* Packet::payload() const {
return data() + payload_offset_;
}
+rtc::CopyOnWriteBuffer Packet::Buffer() const {
+ return buffer_;
+}
+
size_t Packet::capacity() const {
- return buffer_.size();
+ return buffer_.capacity();
}
size_t Packet::size() const {
- return payload_offset_ + payload_size_ + padding_size_;
+ size_t ret = payload_offset_ + payload_size_ + padding_size_;
+ RTC_DCHECK_EQ(buffer_.size(), ret);
+ return ret;
}
const uint8_t* Packet::data() const {
- return buffer_.data();
+ return buffer_.cdata();
}
size_t Packet::FreeCapacity() const {
@@ -194,7 +201,7 @@ size_t Packet::MaxPayloadSize() const {
return capacity() - payload_offset_;
}
-void Packet::CopyHeader(const Packet& packet) {
+void Packet::CopyHeaderFrom(const Packet& packet) {
RTC_DCHECK_GE(capacity(), packet.headers_size());
marker_ = packet.marker_;
@@ -257,6 +264,7 @@ void Packet::SetCsrcs(const std::vector<uint32_t>& csrcs) {
ByteWriter<uint32_t>::WriteBigEndian(WriteAt(offset), csrc);
offset += 4;
}
+ buffer_.SetSize(payload_offset_);
}
uint8_t* Packet::AllocatePayload(size_t size_bytes) {
@@ -266,6 +274,7 @@ uint8_t* Packet::AllocatePayload(size_t size_bytes) {
return nullptr;
}
payload_size_ = size_bytes;
+ buffer_.SetSize(payload_offset_ + payload_size_);
return WriteAt(payload_offset_);
}
@@ -273,6 +282,7 @@ void Packet::SetPayloadSize(size_t size_bytes) {
RTC_DCHECK_EQ(padding_size_, 0u);
RTC_DCHECK_LE(size_bytes, payload_size_);
payload_size_ = size_bytes;
+ buffer_.SetSize(payload_offset_ + payload_size_);
}
bool Packet::SetPadding(uint8_t size_bytes, Random* random) {
@@ -284,6 +294,7 @@ bool Packet::SetPadding(uint8_t size_bytes, Random* random) {
return false;
}
padding_size_ = size_bytes;
+ buffer_.SetSize(payload_offset_ + payload_size_ + padding_size_);
if (padding_size_ > 0) {
size_t padding_offset = payload_offset_ + payload_size_;
size_t padding_end = padding_offset + padding_size_;
@@ -311,6 +322,7 @@ void Packet::Clear() {
extensions_size_ = 0;
memset(WriteAt(0), 0, kFixedHeaderSize);
+ buffer_.SetSize(kFixedHeaderSize);
WriteAt(0, kRtpVersion << 6);
}
@@ -497,6 +509,7 @@ bool Packet::AllocateExtension(ExtensionType type,
memset(WriteAt(extensions_offset + extensions_size_), 0,
extension_padding_size);
payload_offset_ = extensions_offset + 4 * extensions_words;
+ buffer_.SetSize(payload_offset_);
return true;
}
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_packet_history.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698