Merge RtpPacket HasExtension and IsExtensionReserved functions

RtpPacket doesn't keep difference between reserved and set extension.

Bug: None
Change-Id: I1c79f4ebd7ba20ae5da0194c3faa418050db7d8e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166340
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30316}
This commit is contained in:
Danil Chapovalov 2020-01-16 18:59:01 +01:00 committed by Commit Bot
parent f5c1f79a28
commit 629de6f7ed
6 changed files with 16 additions and 30 deletions

View File

@ -139,7 +139,7 @@ void PacketRouter::SendPacket(std::unique_ptr<RtpPacketToSend> packet,
rtc::CritScope cs(&modules_crit_);
// With the new pacer code path, transport sequence numbers are only set here,
// on the pacer thread. Therefore we don't need atomics/synchronization.
if (packet->IsExtensionReserved<TransportSequenceNumber>()) {
if (packet->HasExtension<TransportSequenceNumber>()) {
packet->SetExtension<TransportSequenceNumber>((++transport_seq_) & 0xFFFF);
}

View File

@ -618,11 +618,6 @@ rtc::ArrayView<uint8_t> RtpPacket::AllocateExtension(ExtensionType type,
}
bool RtpPacket::HasExtension(ExtensionType type) const {
// TODO(webrtc:7990): Add support for empty extensions (length==0).
return !FindExtension(type).empty();
}
bool RtpPacket::IsExtensionReserved(ExtensionType type) const {
uint8_t id = extensions_.GetId(type);
if (id == ExtensionManager::kInvalidId) {
// Extension not registered.

View File

@ -112,10 +112,6 @@ class RtpPacket {
bool HasExtension() const;
bool HasExtension(ExtensionType type) const;
template <typename Extension>
bool IsExtensionReserved() const;
bool IsExtensionReserved(ExtensionType type) const;
template <typename Extension, typename FirstValue, typename... Values>
bool GetExtension(FirstValue, Values...) const;
@ -207,11 +203,6 @@ bool RtpPacket::HasExtension() const {
return HasExtension(Extension::kId);
}
template <typename Extension>
bool RtpPacket::IsExtensionReserved() const {
return IsExtensionReserved(Extension::kId);
}
template <typename Extension, typename FirstValue, typename... Values>
bool RtpPacket::GetExtension(FirstValue first, Values... values) const {
auto raw = FindExtension(Extension::kId);

View File

@ -996,7 +996,7 @@ TEST(RtpPacketTest,
kFeedbackRequest->sequence_count);
}
TEST(RtpPacketTest, IsExtensionReserved) {
TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
// Register two extensions.
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
@ -1011,9 +1011,9 @@ TEST(RtpPacketTest, IsExtensionReserved) {
// Only the extension that is both registered and reserved matches
// IsExtensionReserved().
EXPECT_FALSE(packet.IsExtensionReserved<VideoContentTypeExtension>());
EXPECT_FALSE(packet.IsExtensionReserved<AudioLevel>());
EXPECT_TRUE(packet.IsExtensionReserved<TransmissionOffset>());
EXPECT_FALSE(packet.HasExtension<VideoContentTypeExtension>());
EXPECT_FALSE(packet.HasExtension<AudioLevel>());
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
}
// Tests that RtpPacket::RemoveExtension can successfully remove extensions.

View File

@ -124,10 +124,10 @@ void RtpSenderEgress::SendPacket(RtpPacketToSend* packet,
// data after rtp header may be corrupted if these packets are protected by
// the FEC.
int64_t diff_ms = now_ms - packet->capture_time_ms();
if (packet->IsExtensionReserved<TransmissionOffset>()) {
if (packet->HasExtension<TransmissionOffset>()) {
packet->SetExtension<TransmissionOffset>(kTimestampTicksPerMs * diff_ms);
}
if (packet->IsExtensionReserved<AbsoluteSendTime>()) {
if (packet->HasExtension<AbsoluteSendTime>()) {
packet->SetExtension<AbsoluteSendTime>(
AbsoluteSendTime::MsTo24Bits(now_ms));
}

View File

@ -2239,9 +2239,9 @@ TEST_P(RtpSenderTest, GeneratePaddingResendsOldPacketsWithRtx) {
EXPECT_EQ(padding_packet->Ssrc(), kRtxSsrc);
EXPECT_EQ(padding_packet->payload_size(),
kPayloadPacketSize + kRtxHeaderSize);
EXPECT_TRUE(padding_packet->IsExtensionReserved<TransportSequenceNumber>());
EXPECT_TRUE(padding_packet->IsExtensionReserved<AbsoluteSendTime>());
EXPECT_TRUE(padding_packet->IsExtensionReserved<TransmissionOffset>());
EXPECT_TRUE(padding_packet->HasExtension<TransportSequenceNumber>());
EXPECT_TRUE(padding_packet->HasExtension<AbsoluteSendTime>());
EXPECT_TRUE(padding_packet->HasExtension<TransmissionOffset>());
// Verify all header extensions are received.
rtp_egress()->SendPacket(padding_packet.get(), PacedPacketInfo());
@ -2265,9 +2265,9 @@ TEST_P(RtpSenderTest, GeneratePaddingResendsOldPacketsWithRtx) {
EXPECT_GT(packet->padding_size(), 0u);
padding_bytes_generated += packet->padding_size();
EXPECT_TRUE(packet->IsExtensionReserved<TransportSequenceNumber>());
EXPECT_TRUE(packet->IsExtensionReserved<AbsoluteSendTime>());
EXPECT_TRUE(packet->IsExtensionReserved<TransmissionOffset>());
EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
EXPECT_TRUE(packet->HasExtension<TransmissionOffset>());
// Verify all header extensions are received.
rtp_egress()->SendPacket(packet.get(), PacedPacketInfo());
@ -2323,9 +2323,9 @@ TEST_P(RtpSenderTest, GeneratePaddingCreatesPurePaddingWithoutRtx) {
EXPECT_EQ(packet->payload_size(), 0u);
EXPECT_GT(packet->padding_size(), 0u);
padding_bytes_generated += packet->padding_size();
EXPECT_TRUE(packet->IsExtensionReserved<TransportSequenceNumber>());
EXPECT_TRUE(packet->IsExtensionReserved<AbsoluteSendTime>());
EXPECT_TRUE(packet->IsExtensionReserved<TransmissionOffset>());
EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
EXPECT_TRUE(packet->HasExtension<TransmissionOffset>());
// Verify all header extensions are received.
rtp_egress()->SendPacket(packet.get(), PacedPacketInfo());