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:
parent
d278a1ddc6
commit
9d287bff78
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user