Drop support of sending generic frame descriptor v1

Instead dependency descriptor can be used to communicate discardability

Bug: webrtc:11358
Change-Id: I46b4f551acd002d4355d18033e03d8181ec94c6e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172922
Reviewed-by: Markus Handell <handellm@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31004}
This commit is contained in:
Danil Chapovalov 2020-04-06 11:34:34 +02:00 committed by Commit Bot
parent d278a1ddc6
commit 9d287bff78
2 changed files with 14 additions and 57 deletions

View File

@ -403,11 +403,8 @@ void RTPSenderVideo::AddRtpHeaderExtensions(
}
}
if (!packet->SetExtension<RtpGenericFrameDescriptorExtension01>(
generic_descriptor)) {
packet->SetExtension<RtpGenericFrameDescriptorExtension00>(
generic_descriptor);
}
packet->SetExtension<RtpGenericFrameDescriptorExtension00>(
generic_descriptor);
}
}
}
@ -502,23 +499,12 @@ bool RTPSenderVideo::SendVideo(
limits.last_packet_reduction_len =
last_packet->headers_size() - middle_packet->headers_size();
bool has_generic_descriptor_00 =
first_packet->HasExtension<RtpGenericFrameDescriptorExtension00>();
bool has_generic_descriptor_01 =
first_packet->HasExtension<RtpGenericFrameDescriptorExtension01>();
bool has_dependency_descriptor =
bool has_generic_descriptor =
first_packet->HasExtension<RtpGenericFrameDescriptorExtension00>() ||
first_packet->HasExtension<RtpDependencyDescriptorExtension>();
if (has_generic_descriptor_00 && has_generic_descriptor_01) {
RTC_LOG(LS_WARNING) << "Two versions of GFD extension used.";
return false;
}
// Minimization of the vp8 descriptor may erase temporal_id, so save it.
const uint8_t temporal_id = GetTemporalId(video_header);
bool has_generic_descriptor = has_generic_descriptor_00 ||
has_generic_descriptor_01 ||
has_dependency_descriptor;
if (has_generic_descriptor) {
MinimizeDescriptor(&video_header);
}

View File

@ -54,8 +54,7 @@ using ::testing::WithArgs;
enum : int { // The first valid value is 1.
kAbsoluteSendTimeExtensionId = 1,
kFrameMarkingExtensionId,
kGenericDescriptorId00,
kGenericDescriptorId01,
kGenericDescriptorId,
kDependencyDescriptorId,
kTransmissionTimeOffsetExtensionId,
kTransportSequenceNumberExtensionId,
@ -87,9 +86,7 @@ class LoopbackTransportTest : public webrtc::Transport {
receivers_extensions_.Register<VideoTimingExtension>(
kVideoTimingExtensionId);
receivers_extensions_.Register<RtpGenericFrameDescriptorExtension00>(
kGenericDescriptorId00);
receivers_extensions_.Register<RtpGenericFrameDescriptorExtension01>(
kGenericDescriptorId01);
kGenericDescriptorId);
receivers_extensions_.Register<RtpDependencyDescriptorExtension>(
kDependencyDescriptorId);
receivers_extensions_.Register<FrameMarkingExtension>(
@ -185,8 +182,6 @@ class RtpSenderVideoTest : public ::testing::TestWithParam<bool> {
rtp_module_->SetStartTimestamp(0);
}
void PopulateGenericFrameDescriptor(int version);
void UsesMinimalVp8DescriptorWhenGenericFrameDescriptorExtensionIsUsed(
int version);
@ -727,16 +722,11 @@ TEST_P(RtpSenderVideoTest,
.HasExtension<RtpDependencyDescriptorExtension>());
}
void RtpSenderVideoTest::PopulateGenericFrameDescriptor(int version) {
const absl::string_view ext_uri =
(version == 0) ? RtpGenericFrameDescriptorExtension00::kUri
: RtpGenericFrameDescriptorExtension01::kUri;
const int ext_id =
(version == 0) ? kGenericDescriptorId00 : kGenericDescriptorId01;
TEST_P(RtpSenderVideoTest, PopulateGenericFrameDescriptor) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension(ext_uri, ext_id);
rtp_module_->RegisterRtpHeaderExtension(
RtpGenericFrameDescriptorExtension00::kUri, kGenericDescriptorId);
RTPVideoHeader hdr;
RTPVideoHeader::GenericDescriptorInfo& generic = hdr.generic.emplace();
@ -751,29 +741,15 @@ void RtpSenderVideoTest::PopulateGenericFrameDescriptor(int version) {
RtpGenericFrameDescriptor descriptor_wire;
EXPECT_EQ(1, transport_.packets_sent());
if (version == 0) {
ASSERT_TRUE(transport_.last_sent_packet()
.GetExtension<RtpGenericFrameDescriptorExtension00>(
&descriptor_wire));
} else {
ASSERT_TRUE(transport_.last_sent_packet()
.GetExtension<RtpGenericFrameDescriptorExtension01>(
&descriptor_wire));
}
ASSERT_TRUE(transport_.last_sent_packet()
.GetExtension<RtpGenericFrameDescriptorExtension00>(
&descriptor_wire));
EXPECT_EQ(static_cast<uint16_t>(generic.frame_id), descriptor_wire.FrameId());
EXPECT_EQ(generic.temporal_index, descriptor_wire.TemporalLayer());
EXPECT_THAT(descriptor_wire.FrameDependenciesDiffs(), ElementsAre(1, 500));
EXPECT_EQ(descriptor_wire.SpatialLayersBitmask(), 0b0000'0100);
}
TEST_P(RtpSenderVideoTest, PopulateGenericFrameDescriptor00) {
PopulateGenericFrameDescriptor(0);
}
TEST_P(RtpSenderVideoTest, PopulateGenericFrameDescriptor01) {
PopulateGenericFrameDescriptor(1);
}
void RtpSenderVideoTest::
UsesMinimalVp8DescriptorWhenGenericFrameDescriptorExtensionIsUsed(
int version) {
@ -781,13 +757,8 @@ void RtpSenderVideoTest::
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
if (version == 0) {
rtp_module_->RegisterRtpHeaderExtension(
RtpGenericFrameDescriptorExtension00::kUri, kGenericDescriptorId00);
} else {
rtp_module_->RegisterRtpHeaderExtension(
RtpGenericFrameDescriptorExtension01::kUri, kGenericDescriptorId01);
}
rtp_module_->RegisterRtpHeaderExtension(
RtpGenericFrameDescriptorExtension00::kUri, kGenericDescriptorId);
RTPVideoHeader hdr;
hdr.codec = kVideoCodecVP8;