Inline one-line RtpPacket getters

inlining these accessors both reduce binary size and, likely, slightly improve performance.

Bug: None
Change-Id: I4d1f3285afb044946b9611ad36d5d093299c19a9
Reviewed-on: https://webrtc-review.googlesource.com/94146
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24286}
This commit is contained in:
Danil Chapovalov 2018-08-14 17:18:07 +02:00 committed by Commit Bot
parent 20317f9ca4
commit 7d2df3f848
2 changed files with 23 additions and 95 deletions

View file

@ -107,32 +107,6 @@ bool RtpPacket::Parse(rtc::CopyOnWriteBuffer buffer) {
return true;
}
bool RtpPacket::Marker() const {
RTC_DCHECK_EQ(marker_, (data()[1] & 0x80) != 0);
return marker_;
}
uint8_t RtpPacket::PayloadType() const {
RTC_DCHECK_EQ(payload_type_, data()[1] & 0x7f);
return payload_type_;
}
uint16_t RtpPacket::SequenceNumber() const {
RTC_DCHECK_EQ(sequence_number_,
ByteReader<uint16_t>::ReadBigEndian(data() + 2));
return sequence_number_;
}
uint32_t RtpPacket::Timestamp() const {
RTC_DCHECK_EQ(timestamp_, ByteReader<uint32_t>::ReadBigEndian(data() + 4));
return timestamp_;
}
uint32_t RtpPacket::Ssrc() const {
RTC_DCHECK_EQ(ssrc_, ByteReader<uint32_t>::ReadBigEndian(data() + 8));
return ssrc_;
}
std::vector<uint32_t> RtpPacket::Csrcs() const {
size_t num_csrc = data()[0] & 0x0F;
RTC_DCHECK_GE(capacity(), kFixedHeaderSize + num_csrc * 4);
@ -144,48 +118,6 @@ std::vector<uint32_t> RtpPacket::Csrcs() const {
return csrcs;
}
size_t RtpPacket::headers_size() const {
return payload_offset_;
}
size_t RtpPacket::payload_size() const {
return payload_size_;
}
size_t RtpPacket::padding_size() const {
return padding_size_;
}
rtc::ArrayView<const uint8_t> RtpPacket::payload() const {
return rtc::MakeArrayView(data() + payload_offset_, payload_size_);
}
rtc::CopyOnWriteBuffer RtpPacket::Buffer() const {
return buffer_;
}
size_t RtpPacket::capacity() const {
return buffer_.capacity();
}
size_t RtpPacket::size() const {
size_t ret = payload_offset_ + payload_size_ + padding_size_;
RTC_DCHECK_EQ(buffer_.size(), ret);
return ret;
}
const uint8_t* RtpPacket::data() const {
return buffer_.cdata();
}
size_t RtpPacket::FreeCapacity() const {
return capacity() - size();
}
size_t RtpPacket::MaxPayloadSize() const {
return capacity() - payload_offset_;
}
void RtpPacket::CopyHeaderFrom(const RtpPacket& packet) {
RTC_DCHECK_GE(capacity(), packet.headers_size());
@ -235,7 +167,7 @@ void RtpPacket::SetSsrc(uint32_t ssrc) {
ByteWriter<uint32_t>::WriteBigEndian(WriteAt(8), ssrc);
}
void RtpPacket::SetCsrcs(const std::vector<uint32_t>& csrcs) {
void RtpPacket::SetCsrcs(rtc::ArrayView<const uint32_t> csrcs) {
RTC_DCHECK_EQ(extensions_size_, 0);
RTC_DCHECK_EQ(payload_size_, 0);
RTC_DCHECK_EQ(padding_size_, 0);
@ -517,12 +449,4 @@ rtc::ArrayView<uint8_t> RtpPacket::AllocateExtension(ExtensionType type,
return nullptr;
}
uint8_t* RtpPacket::WriteAt(size_t offset) {
return buffer_.data() + offset;
}
void RtpPacket::WriteAt(size_t offset, uint8_t byte) {
buffer_.data()[offset] = byte;
}
} // namespace webrtc

View file

@ -51,27 +51,31 @@ class RtpPacket {
void IdentifyExtensions(const ExtensionManager& extensions);
// Header.
bool Marker() const;
uint8_t PayloadType() const;
uint16_t SequenceNumber() const;
uint32_t Timestamp() const;
uint32_t Ssrc() const;
bool Marker() const { return marker_; }
uint8_t PayloadType() const { return payload_type_; }
uint16_t SequenceNumber() const { return sequence_number_; }
uint32_t Timestamp() const { return timestamp_; }
uint32_t Ssrc() const { return ssrc_; }
std::vector<uint32_t> Csrcs() const;
size_t headers_size() const;
size_t headers_size() const { return payload_offset_; }
// Payload.
size_t payload_size() const;
size_t padding_size() const;
rtc::ArrayView<const uint8_t> payload() const;
size_t payload_size() const { return payload_size_; }
size_t padding_size() const { return padding_size_; }
rtc::ArrayView<const uint8_t> payload() const {
return rtc::MakeArrayView(data() + payload_offset_, payload_size_);
}
// Buffer.
rtc::CopyOnWriteBuffer Buffer() const;
size_t capacity() const;
size_t size() const;
const uint8_t* data() const;
size_t FreeCapacity() const;
size_t MaxPayloadSize() const;
rtc::CopyOnWriteBuffer Buffer() const { return buffer_; }
size_t capacity() const { return buffer_.capacity(); }
size_t size() const {
return payload_offset_ + payload_size_ + padding_size_;
}
const uint8_t* data() const { return buffer_.cdata(); }
size_t FreeCapacity() const { return capacity() - size(); }
size_t MaxPayloadSize() const { return capacity() - headers_size(); }
// Reset fields and buffer.
void Clear();
@ -87,7 +91,7 @@ class RtpPacket {
// Writes csrc list. Assumes:
// a) There is enough room left in buffer.
// b) Extension headers, payload or padding data has not already been added.
void SetCsrcs(const std::vector<uint32_t>& csrcs);
void SetCsrcs(rtc::ArrayView<const uint32_t> csrcs);
// Header extensions.
template <typename Extension>
@ -131,8 +135,8 @@ class RtpPacket {
// to write raw extension to or an empty view on failure.
rtc::ArrayView<uint8_t> AllocateExtension(ExtensionType type, size_t length);
uint8_t* WriteAt(size_t offset);
void WriteAt(size_t offset, uint8_t byte);
uint8_t* WriteAt(size_t offset) { return buffer_.data() + offset; }
void WriteAt(size_t offset, uint8_t byte) { buffer_.data()[offset] = byte; }
// Header.
bool marker_;