Drop support for receiving generic frame descriptor v1
Bug: webrtc:11358 Change-Id: Ia94e33fe7a66ce9fd6a9a5aecc12e244d51f8c5f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172924 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31064}
This commit is contained in:

committed by
Commit Bot

parent
d2dcc580dc
commit
3e2809f4f0
@ -412,19 +412,9 @@ RtpVideoStreamReceiver::ParseGenericDependenciesExtension(
|
|||||||
return kHasGenericDescriptor;
|
return kHasGenericDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtp_packet.HasExtension<RtpGenericFrameDescriptorExtension00>() &&
|
|
||||||
rtp_packet.HasExtension<RtpGenericFrameDescriptorExtension01>()) {
|
|
||||||
RTC_LOG(LS_WARNING) << "RTP packet had two different GFD versions.";
|
|
||||||
return kDropPacket;
|
|
||||||
}
|
|
||||||
|
|
||||||
RtpGenericFrameDescriptor generic_frame_descriptor;
|
RtpGenericFrameDescriptor generic_frame_descriptor;
|
||||||
bool has_generic_descriptor =
|
if (!rtp_packet.GetExtension<RtpGenericFrameDescriptorExtension00>(
|
||||||
rtp_packet.GetExtension<RtpGenericFrameDescriptorExtension01>(
|
&generic_frame_descriptor)) {
|
||||||
&generic_frame_descriptor) ||
|
|
||||||
rtp_packet.GetExtension<RtpGenericFrameDescriptorExtension00>(
|
|
||||||
&generic_frame_descriptor);
|
|
||||||
if (!has_generic_descriptor) {
|
|
||||||
return kNoGenericDescriptor;
|
return kNoGenericDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,8 +437,6 @@ RtpVideoStreamReceiver::ParseGenericDependenciesExtension(
|
|||||||
generic_frame_descriptor.SpatialLayer();
|
generic_frame_descriptor.SpatialLayer();
|
||||||
generic_descriptor_info.temporal_index =
|
generic_descriptor_info.temporal_index =
|
||||||
generic_frame_descriptor.TemporalLayer();
|
generic_frame_descriptor.TemporalLayer();
|
||||||
generic_descriptor_info.discardable =
|
|
||||||
generic_frame_descriptor.Discardable().value_or(false);
|
|
||||||
for (uint16_t fdiff : generic_frame_descriptor.FrameDependenciesDiffs()) {
|
for (uint16_t fdiff : generic_frame_descriptor.FrameDependenciesDiffs()) {
|
||||||
generic_descriptor_info.dependencies.push_back(frame_id - fdiff);
|
generic_descriptor_info.dependencies.push_back(frame_id - fdiff);
|
||||||
}
|
}
|
||||||
|
@ -774,58 +774,14 @@ TEST_F(RtpVideoStreamReceiverTest,
|
|||||||
rtp_video_stream_receiver_->RemoveSecondarySink(&secondary_sink);
|
rtp_video_stream_receiver_->RemoveSecondarySink(&secondary_sink);
|
||||||
}
|
}
|
||||||
|
|
||||||
class RtpVideoStreamReceiverGenericDescriptorTest
|
TEST_F(RtpVideoStreamReceiverTest, ParseGenericDescriptorOnePacket) {
|
||||||
: public RtpVideoStreamReceiverTest,
|
|
||||||
public ::testing::WithParamInterface<int> {
|
|
||||||
public:
|
|
||||||
void RegisterRtpGenericFrameDescriptorExtension(
|
|
||||||
RtpHeaderExtensionMap* extension_map,
|
|
||||||
int version) {
|
|
||||||
constexpr int kId00 = 5;
|
|
||||||
constexpr int kId01 = 6;
|
|
||||||
switch (version) {
|
|
||||||
case 0:
|
|
||||||
extension_map->Register<RtpGenericFrameDescriptorExtension00>(kId00);
|
|
||||||
return;
|
|
||||||
case 1:
|
|
||||||
extension_map->Register<RtpGenericFrameDescriptorExtension01>(kId01);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
RTC_NOTREACHED();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SetExtensionRtpGenericFrameDescriptorExtension(
|
|
||||||
const RtpGenericFrameDescriptor& generic_descriptor,
|
|
||||||
RtpPacketReceived* rtp_packet,
|
|
||||||
int version) {
|
|
||||||
switch (version) {
|
|
||||||
case 0:
|
|
||||||
return rtp_packet->SetExtension<RtpGenericFrameDescriptorExtension00>(
|
|
||||||
generic_descriptor);
|
|
||||||
case 1:
|
|
||||||
return rtp_packet->SetExtension<RtpGenericFrameDescriptorExtension01>(
|
|
||||||
generic_descriptor);
|
|
||||||
}
|
|
||||||
RTC_NOTREACHED();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(All,
|
|
||||||
RtpVideoStreamReceiverGenericDescriptorTest,
|
|
||||||
Values(0, 1));
|
|
||||||
|
|
||||||
TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|
||||||
ParseGenericDescriptorOnePacket) {
|
|
||||||
const int version = GetParam();
|
|
||||||
|
|
||||||
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
||||||
const int kSpatialIndex = 1;
|
const int kSpatialIndex = 1;
|
||||||
|
|
||||||
rtp_video_stream_receiver_->StartReceive();
|
rtp_video_stream_receiver_->StartReceive();
|
||||||
|
|
||||||
RtpHeaderExtensionMap extension_map;
|
RtpHeaderExtensionMap extension_map;
|
||||||
RegisterRtpGenericFrameDescriptorExtension(&extension_map, version);
|
extension_map.Register<RtpGenericFrameDescriptorExtension00>(5);
|
||||||
RtpPacketReceived rtp_packet(&extension_map);
|
RtpPacketReceived rtp_packet(&extension_map);
|
||||||
rtp_packet.SetPayloadType(kPayloadType);
|
rtp_packet.SetPayloadType(kPayloadType);
|
||||||
|
|
||||||
@ -836,8 +792,8 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
generic_descriptor.SetSpatialLayersBitmask(1 << kSpatialIndex);
|
generic_descriptor.SetSpatialLayersBitmask(1 << kSpatialIndex);
|
||||||
generic_descriptor.AddFrameDependencyDiff(90);
|
generic_descriptor.AddFrameDependencyDiff(90);
|
||||||
generic_descriptor.AddFrameDependencyDiff(80);
|
generic_descriptor.AddFrameDependencyDiff(80);
|
||||||
ASSERT_TRUE(SetExtensionRtpGenericFrameDescriptorExtension(
|
ASSERT_TRUE(rtp_packet.SetExtension<RtpGenericFrameDescriptorExtension00>(
|
||||||
generic_descriptor, &rtp_packet, version));
|
generic_descriptor));
|
||||||
|
|
||||||
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
||||||
memcpy(payload, data.data(), data.size());
|
memcpy(payload, data.data(), data.size());
|
||||||
@ -861,17 +817,14 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
rtp_video_stream_receiver_->OnRtpPacket(rtp_packet);
|
rtp_video_stream_receiver_->OnRtpPacket(rtp_packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
TEST_F(RtpVideoStreamReceiverTest, ParseGenericDescriptorTwoPackets) {
|
||||||
ParseGenericDescriptorTwoPackets) {
|
|
||||||
const int version = GetParam();
|
|
||||||
|
|
||||||
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
||||||
const int kSpatialIndex = 1;
|
const int kSpatialIndex = 1;
|
||||||
|
|
||||||
rtp_video_stream_receiver_->StartReceive();
|
rtp_video_stream_receiver_->StartReceive();
|
||||||
|
|
||||||
RtpHeaderExtensionMap extension_map;
|
RtpHeaderExtensionMap extension_map;
|
||||||
RegisterRtpGenericFrameDescriptorExtension(&extension_map, version);
|
extension_map.Register<RtpGenericFrameDescriptorExtension00>(5);
|
||||||
RtpPacketReceived first_packet(&extension_map);
|
RtpPacketReceived first_packet(&extension_map);
|
||||||
|
|
||||||
RtpGenericFrameDescriptor first_packet_descriptor;
|
RtpGenericFrameDescriptor first_packet_descriptor;
|
||||||
@ -880,8 +833,8 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
first_packet_descriptor.SetFrameId(100);
|
first_packet_descriptor.SetFrameId(100);
|
||||||
first_packet_descriptor.SetSpatialLayersBitmask(1 << kSpatialIndex);
|
first_packet_descriptor.SetSpatialLayersBitmask(1 << kSpatialIndex);
|
||||||
first_packet_descriptor.SetResolution(480, 360);
|
first_packet_descriptor.SetResolution(480, 360);
|
||||||
ASSERT_TRUE(SetExtensionRtpGenericFrameDescriptorExtension(
|
ASSERT_TRUE(first_packet.SetExtension<RtpGenericFrameDescriptorExtension00>(
|
||||||
first_packet_descriptor, &first_packet, version));
|
first_packet_descriptor));
|
||||||
|
|
||||||
uint8_t* first_packet_payload = first_packet.SetPayloadSize(data.size());
|
uint8_t* first_packet_payload = first_packet.SetPayloadSize(data.size());
|
||||||
memcpy(first_packet_payload, data.data(), data.size());
|
memcpy(first_packet_payload, data.data(), data.size());
|
||||||
@ -897,8 +850,8 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
RtpGenericFrameDescriptor second_packet_descriptor;
|
RtpGenericFrameDescriptor second_packet_descriptor;
|
||||||
second_packet_descriptor.SetFirstPacketInSubFrame(false);
|
second_packet_descriptor.SetFirstPacketInSubFrame(false);
|
||||||
second_packet_descriptor.SetLastPacketInSubFrame(true);
|
second_packet_descriptor.SetLastPacketInSubFrame(true);
|
||||||
ASSERT_TRUE(SetExtensionRtpGenericFrameDescriptorExtension(
|
ASSERT_TRUE(second_packet.SetExtension<RtpGenericFrameDescriptorExtension00>(
|
||||||
second_packet_descriptor, &second_packet, version));
|
second_packet_descriptor));
|
||||||
|
|
||||||
second_packet.SetMarker(true);
|
second_packet.SetMarker(true);
|
||||||
second_packet.SetPayloadType(kPayloadType);
|
second_packet.SetPayloadType(kPayloadType);
|
||||||
@ -922,45 +875,7 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
rtp_video_stream_receiver_->OnRtpPacket(second_packet);
|
rtp_video_stream_receiver_->OnRtpPacket(second_packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(RtpVideoStreamReceiverGenericDescriptorTest,
|
TEST_F(RtpVideoStreamReceiverTest, ParseGenericDescriptorRawPayload) {
|
||||||
DropPacketsWithMultipleVersionsOfExtension) {
|
|
||||||
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
|
||||||
|
|
||||||
rtp_video_stream_receiver_->StartReceive();
|
|
||||||
|
|
||||||
RtpHeaderExtensionMap extension_map;
|
|
||||||
RegisterRtpGenericFrameDescriptorExtension(&extension_map, 0);
|
|
||||||
RegisterRtpGenericFrameDescriptorExtension(&extension_map, 1);
|
|
||||||
RtpPacketReceived rtp_packet(&extension_map);
|
|
||||||
|
|
||||||
RtpGenericFrameDescriptor generic_descriptors[2];
|
|
||||||
for (size_t i = 0; i < 2; ++i) {
|
|
||||||
generic_descriptors[i].SetFirstPacketInSubFrame(true);
|
|
||||||
generic_descriptors[i].SetLastPacketInSubFrame(true);
|
|
||||||
generic_descriptors[i].SetFrameId(100);
|
|
||||||
ASSERT_TRUE(SetExtensionRtpGenericFrameDescriptorExtension(
|
|
||||||
generic_descriptors[i], &rtp_packet, i));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
|
||||||
memcpy(payload, data.data(), data.size());
|
|
||||||
// The first byte is the header, so we ignore the first byte of |data|.
|
|
||||||
mock_on_complete_frame_callback_.AppendExpectedBitstream(data.data() + 1,
|
|
||||||
data.size() - 1);
|
|
||||||
|
|
||||||
rtp_packet.SetMarker(true);
|
|
||||||
rtp_packet.SetPayloadType(kPayloadType);
|
|
||||||
rtp_packet.SetSequenceNumber(1);
|
|
||||||
|
|
||||||
EXPECT_CALL(mock_on_complete_frame_callback_, DoOnCompleteFrame).Times(0);
|
|
||||||
|
|
||||||
rtp_video_stream_receiver_->OnRtpPacket(rtp_packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|
||||||
ParseGenericDescriptorRawPayload) {
|
|
||||||
const int version = GetParam();
|
|
||||||
|
|
||||||
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
||||||
const int kRawPayloadType = 123;
|
const int kRawPayloadType = 123;
|
||||||
|
|
||||||
@ -970,14 +885,14 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
rtp_video_stream_receiver_->StartReceive();
|
rtp_video_stream_receiver_->StartReceive();
|
||||||
|
|
||||||
RtpHeaderExtensionMap extension_map;
|
RtpHeaderExtensionMap extension_map;
|
||||||
RegisterRtpGenericFrameDescriptorExtension(&extension_map, version);
|
extension_map.Register<RtpGenericFrameDescriptorExtension00>(5);
|
||||||
RtpPacketReceived rtp_packet(&extension_map);
|
RtpPacketReceived rtp_packet(&extension_map);
|
||||||
|
|
||||||
RtpGenericFrameDescriptor generic_descriptor;
|
RtpGenericFrameDescriptor generic_descriptor;
|
||||||
generic_descriptor.SetFirstPacketInSubFrame(true);
|
generic_descriptor.SetFirstPacketInSubFrame(true);
|
||||||
generic_descriptor.SetLastPacketInSubFrame(true);
|
generic_descriptor.SetLastPacketInSubFrame(true);
|
||||||
ASSERT_TRUE(SetExtensionRtpGenericFrameDescriptorExtension(
|
ASSERT_TRUE(rtp_packet.SetExtension<RtpGenericFrameDescriptorExtension00>(
|
||||||
generic_descriptor, &rtp_packet, version));
|
generic_descriptor));
|
||||||
|
|
||||||
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
||||||
memcpy(payload, data.data(), data.size());
|
memcpy(payload, data.data(), data.size());
|
||||||
@ -992,8 +907,7 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest,
|
|||||||
rtp_video_stream_receiver_->OnRtpPacket(rtp_packet);
|
rtp_video_stream_receiver_->OnRtpPacket(rtp_packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(RtpVideoStreamReceiverGenericDescriptorTest, UnwrapsFrameId) {
|
TEST_F(RtpVideoStreamReceiverTest, UnwrapsFrameId) {
|
||||||
const int version = GetParam();
|
|
||||||
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
const std::vector<uint8_t> data = {0, 1, 2, 3, 4};
|
||||||
const int kPayloadType = 123;
|
const int kPayloadType = 123;
|
||||||
|
|
||||||
@ -1002,7 +916,7 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest, UnwrapsFrameId) {
|
|||||||
rtp_video_stream_receiver_->AddReceiveCodec(codec, {}, /*raw_payload=*/true);
|
rtp_video_stream_receiver_->AddReceiveCodec(codec, {}, /*raw_payload=*/true);
|
||||||
rtp_video_stream_receiver_->StartReceive();
|
rtp_video_stream_receiver_->StartReceive();
|
||||||
RtpHeaderExtensionMap extension_map;
|
RtpHeaderExtensionMap extension_map;
|
||||||
RegisterRtpGenericFrameDescriptorExtension(&extension_map, version);
|
extension_map.Register<RtpGenericFrameDescriptorExtension00>(5);
|
||||||
|
|
||||||
uint16_t rtp_sequence_number = 1;
|
uint16_t rtp_sequence_number = 1;
|
||||||
auto inject_packet = [&](uint16_t wrapped_frame_id) {
|
auto inject_packet = [&](uint16_t wrapped_frame_id) {
|
||||||
@ -1012,8 +926,8 @@ TEST_P(RtpVideoStreamReceiverGenericDescriptorTest, UnwrapsFrameId) {
|
|||||||
generic_descriptor.SetFirstPacketInSubFrame(true);
|
generic_descriptor.SetFirstPacketInSubFrame(true);
|
||||||
generic_descriptor.SetLastPacketInSubFrame(true);
|
generic_descriptor.SetLastPacketInSubFrame(true);
|
||||||
generic_descriptor.SetFrameId(wrapped_frame_id);
|
generic_descriptor.SetFrameId(wrapped_frame_id);
|
||||||
ASSERT_TRUE(SetExtensionRtpGenericFrameDescriptorExtension(
|
ASSERT_TRUE(rtp_packet.SetExtension<RtpGenericFrameDescriptorExtension00>(
|
||||||
generic_descriptor, &rtp_packet, version));
|
generic_descriptor));
|
||||||
|
|
||||||
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
uint8_t* payload = rtp_packet.SetPayloadSize(data.size());
|
||||||
ASSERT_TRUE(payload);
|
ASSERT_TRUE(payload);
|
||||||
|
Reference in New Issue
Block a user