diff --git a/modules/rtp_rtcp/include/rtp_rtcp_defines.h b/modules/rtp_rtcp/include/rtp_rtcp_defines.h index a95ac996a2..48bb842d29 100644 --- a/modules/rtp_rtcp/include/rtp_rtcp_defines.h +++ b/modules/rtp_rtcp/include/rtp_rtcp_defines.h @@ -70,7 +70,6 @@ enum RTPExtensionType : int { kRtpExtensionMid, kRtpExtensionGenericFrameDescriptor00, kRtpExtensionGenericFrameDescriptor = kRtpExtensionGenericFrameDescriptor00, - kRtpExtensionGenericFrameDescriptor01, kRtpExtensionGenericFrameDescriptor02, kRtpExtensionColorSpace, kRtpExtensionNumberOfExtensions // Must be the last entity in the enum. diff --git a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h index 1b83307849..8760acca2a 100644 --- a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h +++ b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h @@ -38,15 +38,6 @@ class RtpGenericFrameDescriptor { bool LastPacketInSubFrame() const { return end_of_subframe_; } void SetLastPacketInSubFrame(bool last) { end_of_subframe_ = last; } - // Denotes whether the frame is discardable. That is, whether skipping it - // would have no effect on the decodability of subsequent frames. - // An absl::optional is used because version 0 of the extension did not - // support this flag. (The optional aspect is relevant only when parsing.) - // TODO(bugs.webrtc.org/10243): Make this into a plain bool when v00 of - // the extension is deprecated. - absl::optional Discardable() const { return discardable_; } - void SetDiscardable(bool discardable) { discardable_ = discardable; } - // Properties below undefined if !FirstPacketInSubFrame() // Valid range for temporal layer: [0, 7] int TemporalLayer() const; @@ -74,8 +65,6 @@ class RtpGenericFrameDescriptor { bool beginning_of_subframe_ = false; bool end_of_subframe_ = false; - absl::optional discardable_; - uint16_t frame_id_ = 0; uint8_t spatial_layers_ = 1; uint8_t temporal_layer_ = 0; diff --git a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.cc b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.cc index a705b5aa7e..ca46fa6217 100644 --- a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.cc +++ b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.cc @@ -20,18 +20,16 @@ constexpr uint8_t kFlagEndOfSubframe = 0x40; // In version 00, the flags F and L in the first byte correspond to // kFlagFirstSubframeV00 and kFlagLastSubframeV00. In practice, they were -// always set to |true|. In version 01, these flags are deprecated, and we use -// one of their bits for the discardability flag. +// always set to |true|. constexpr uint8_t kFlagFirstSubframeV00 = 0x20; constexpr uint8_t kFlagLastSubframeV00 = 0x10; -constexpr uint8_t kFlagDiscardableV01 = 0x10; constexpr uint8_t kFlagDependencies = 0x08; constexpr uint8_t kMaskTemporalLayer = 0x07; constexpr uint8_t kFlagMoreDependencies = 0x01; constexpr uint8_t kFlageXtendedOffset = 0x02; - +} // namespace // 0 1 2 3 4 5 6 7 // +-+-+-+-+-+-+-+-+ // |B|E|F|L|D| T | @@ -58,9 +56,10 @@ constexpr uint8_t kFlageXtendedOffset = 0x02; // +---------------+ // | ... | // +-+-+-+-+-+-+-+-+ +constexpr RTPExtensionType RtpGenericFrameDescriptorExtension00::kId; +constexpr char RtpGenericFrameDescriptorExtension00::kUri[]; -bool RtpGenericFrameDescriptorExtensionParse( - size_t version, +bool RtpGenericFrameDescriptorExtension00::Parse( rtc::ArrayView data, RtpGenericFrameDescriptor* descriptor) { if (data.empty()) { @@ -71,10 +70,6 @@ bool RtpGenericFrameDescriptorExtensionParse( descriptor->SetFirstPacketInSubFrame(begins_subframe); descriptor->SetLastPacketInSubFrame((data[0] & kFlagEndOfSubframe) != 0); - if (version >= 1) { - descriptor->SetDiscardable((data[0] & kFlagDiscardableV01) != 0); - } - // Parse Subframe details provided in 1st packet of subframe. if (!begins_subframe) { return data.size() == 1; @@ -115,7 +110,7 @@ bool RtpGenericFrameDescriptorExtensionParse( return true; } -size_t RtpGenericFrameDescriptorExtensionValueSize( +size_t RtpGenericFrameDescriptorExtension00::ValueSize( const RtpGenericFrameDescriptor& descriptor) { if (!descriptor.FirstPacketInSubFrame()) return 1; @@ -132,23 +127,15 @@ size_t RtpGenericFrameDescriptorExtensionValueSize( return size; } -bool RtpGenericFrameDescriptorExtensionWrite( - size_t version, +bool RtpGenericFrameDescriptorExtension00::Write( rtc::ArrayView data, const RtpGenericFrameDescriptor& descriptor) { - RTC_CHECK_EQ(data.size(), - - RtpGenericFrameDescriptorExtensionValueSize(descriptor)); + RTC_CHECK_EQ(data.size(), ValueSize(descriptor)); uint8_t base_header = (descriptor.FirstPacketInSubFrame() ? kFlagBeginOfSubframe : 0) | (descriptor.LastPacketInSubFrame() ? kFlagEndOfSubframe : 0); - if (version == 0) { - base_header |= kFlagFirstSubframeV00; - base_header |= kFlagLastSubframeV00; - } else if (version >= 1) { - const absl::optional discardable = descriptor.Discardable(); - base_header |= (discardable.value_or(false) ? kFlagDiscardableV01 : 0); - } + base_header |= kFlagFirstSubframeV00; + base_header |= kFlagLastSubframeV00; if (!descriptor.FirstPacketInSubFrame()) { data[0] = base_header; @@ -184,48 +171,4 @@ bool RtpGenericFrameDescriptorExtensionWrite( return true; } -} // namespace - -constexpr RTPExtensionType RtpGenericFrameDescriptorExtension00::kId; -constexpr char RtpGenericFrameDescriptorExtension00::kUri[]; - -bool RtpGenericFrameDescriptorExtension00::Parse( - rtc::ArrayView data, - RtpGenericFrameDescriptor* descriptor) { - return RtpGenericFrameDescriptorExtensionParse(0, data, descriptor); -} - -size_t RtpGenericFrameDescriptorExtension00::ValueSize( - const RtpGenericFrameDescriptor& descriptor) { - // No difference between existing versions. - return RtpGenericFrameDescriptorExtensionValueSize(descriptor); -} - -bool RtpGenericFrameDescriptorExtension00::Write( - rtc::ArrayView data, - const RtpGenericFrameDescriptor& descriptor) { - return RtpGenericFrameDescriptorExtensionWrite(0, data, descriptor); -} - -constexpr RTPExtensionType RtpGenericFrameDescriptorExtension01::kId; -constexpr char RtpGenericFrameDescriptorExtension01::kUri[]; - -bool RtpGenericFrameDescriptorExtension01::Parse( - rtc::ArrayView data, - RtpGenericFrameDescriptor* descriptor) { - return RtpGenericFrameDescriptorExtensionParse(1, data, descriptor); -} - -size_t RtpGenericFrameDescriptorExtension01::ValueSize( - const RtpGenericFrameDescriptor& descriptor) { - // No difference between existing versions. - return RtpGenericFrameDescriptorExtensionValueSize(descriptor); -} - -bool RtpGenericFrameDescriptorExtension01::Write( - rtc::ArrayView data, - const RtpGenericFrameDescriptor& descriptor) { - return RtpGenericFrameDescriptorExtensionWrite(1, data, descriptor); -} - } // namespace webrtc diff --git a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h index a52588ee3a..ac7afb489b 100644 --- a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h +++ b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h @@ -35,22 +35,6 @@ class RtpGenericFrameDescriptorExtension00 { const RtpGenericFrameDescriptor& descriptor); }; -class RtpGenericFrameDescriptorExtension01 { - public: - using value_type = RtpGenericFrameDescriptor; - static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor01; - static constexpr char kUri[] = - "http://www.webrtc.org/experiments/rtp-hdrext/" - "generic-frame-descriptor-01"; - static constexpr int kMaxSizeBytes = 16; - - static bool Parse(rtc::ArrayView data, - RtpGenericFrameDescriptor* descriptor); - static size_t ValueSize(const RtpGenericFrameDescriptor& descriptor); - static bool Write(rtc::ArrayView data, - const RtpGenericFrameDescriptor& descriptor); -}; - } // namespace webrtc #endif // MODULES_RTP_RTCP_SOURCE_RTP_GENERIC_FRAME_DESCRIPTOR_EXTENSION_H_ diff --git a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension_unittest.cc b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension_unittest.cc index 3ce46fd8ff..d7f8e1e906 100644 --- a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension_unittest.cc @@ -23,87 +23,27 @@ constexpr uint8_t kDeprecatedFlags = 0x30; // TODO(danilchap): Add fuzzer to test for various invalid inputs. -class RtpGenericFrameDescriptorExtensionTest - : public ::testing::Test, - public ::testing::WithParamInterface { - public: - RtpGenericFrameDescriptorExtensionTest() : version_(GetParam()) {} - - bool Parse(rtc::ArrayView data, - RtpGenericFrameDescriptor* descriptor) const { - switch (version_) { - case 0: - return RtpGenericFrameDescriptorExtension00::Parse(data, descriptor); - case 1: - return RtpGenericFrameDescriptorExtension01::Parse(data, descriptor); - } - RTC_NOTREACHED(); - return false; - } - - size_t ValueSize(const RtpGenericFrameDescriptor& descriptor) const { - switch (version_) { - case 0: - return RtpGenericFrameDescriptorExtension00::ValueSize(descriptor); - case 1: - return RtpGenericFrameDescriptorExtension01::ValueSize(descriptor); - } - RTC_NOTREACHED(); - return 0; - } - - bool Write(rtc::ArrayView data, - const RtpGenericFrameDescriptor& descriptor) const { - switch (version_) { - case 0: - return RtpGenericFrameDescriptorExtension00::Write(data, descriptor); - case 1: - return RtpGenericFrameDescriptorExtension01::Write(data, descriptor); - } - RTC_NOTREACHED(); - return false; - } - - protected: - const int version_; -}; - -INSTANTIATE_TEST_SUITE_P(All, - RtpGenericFrameDescriptorExtensionTest, - ::testing::Values(0, 1)); - -TEST_P(RtpGenericFrameDescriptorExtensionTest, - ParseFirstPacketOfIndependenSubFrame) { +TEST(RtpGenericFrameDescriptorExtensionTest, + ParseFirstPacketOfIndependenSubFrame) { const int kTemporalLayer = 5; constexpr uint8_t kRaw[] = {0x80 | kTemporalLayer, 0x49, 0x12, 0x34}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); EXPECT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_FALSE(descriptor.LastPacketInSubFrame()); - const absl::optional discardable = descriptor.Discardable(); - if (version_ == 0) { - ASSERT_FALSE(discardable.has_value()); - } else { - ASSERT_TRUE(discardable.has_value()); - EXPECT_FALSE(discardable.value()); - } - EXPECT_THAT(descriptor.FrameDependenciesDiffs(), IsEmpty()); EXPECT_EQ(descriptor.TemporalLayer(), kTemporalLayer); EXPECT_EQ(descriptor.SpatialLayersBitmask(), 0x49); EXPECT_EQ(descriptor.FrameId(), 0x3412); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, - WriteFirstPacketOfIndependenSubFrame) { +TEST(RtpGenericFrameDescriptorExtensionTest, + WriteFirstPacketOfIndependenSubFrame) { const int kTemporalLayer = 5; - uint8_t kRaw[] = {0x80 | kTemporalLayer, 0x49, 0x12, 0x34}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = {0x80 | kTemporalLayer | kDeprecatedFlags, 0x49, 0x12, 0x34}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); @@ -111,263 +51,215 @@ TEST_P(RtpGenericFrameDescriptorExtensionTest, descriptor.SetSpatialLayersBitmask(0x49); descriptor.SetFrameId(0x3412); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseLastPacketOfSubFrame) { +TEST(RtpGenericFrameDescriptorExtensionTest, ParseLastPacketOfSubFrame) { constexpr uint8_t kRaw[] = {0x40}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); EXPECT_FALSE(descriptor.FirstPacketInSubFrame()); - - const absl::optional discardable = descriptor.Discardable(); - if (version_ == 0) { - ASSERT_FALSE(discardable.has_value()); - } else { - ASSERT_TRUE(discardable.has_value()); - EXPECT_FALSE(discardable.value()); - } - EXPECT_TRUE(descriptor.LastPacketInSubFrame()); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteLastPacketOfSubFrame) { - uint8_t kRaw[] = {0x40}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } +TEST(RtpGenericFrameDescriptorExtensionTest, WriteLastPacketOfSubFrame) { + uint8_t kRaw[] = {0x40 | kDeprecatedFlags}; RtpGenericFrameDescriptor descriptor; descriptor.SetLastPacketInSubFrame(true); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseDiscardable) { - if (version_ == 0) { - return; - } - - constexpr uint8_t kRaw[] = {0x10}; - RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); - const absl::optional discardable = descriptor.Discardable(); - ASSERT_TRUE(discardable.has_value()); - EXPECT_TRUE(discardable.value()); -} - -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteDiscardable) { - if (version_ == 0) { - return; - } - - constexpr uint8_t kRaw[] = {0x10}; - RtpGenericFrameDescriptor descriptor; - descriptor.SetDiscardable(true); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); - uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); - EXPECT_THAT(buffer, ElementsAreArray(kRaw)); -} - -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseMinShortFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, ParseMinShortFrameDependencies) { constexpr uint16_t kDiff = 1; constexpr uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, 0x04}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); ASSERT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_THAT(descriptor.FrameDependenciesDiffs(), ElementsAre(kDiff)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteMinShortFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, WriteMinShortFrameDependencies) { constexpr uint16_t kDiff = 1; - uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, 0x04}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = {0x88 | kDeprecatedFlags, 0x01, 0x00, 0x00, 0x04}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.AddFrameDependencyDiff(kDiff); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseMaxShortFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, ParseMaxShortFrameDependencies) { constexpr uint16_t kDiff = 0x3f; constexpr uint8_t kRaw[] = {0xb8, 0x01, 0x00, 0x00, 0xfc}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); ASSERT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_THAT(descriptor.FrameDependenciesDiffs(), ElementsAre(kDiff)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteMaxShortFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, WriteMaxShortFrameDependencies) { constexpr uint16_t kDiff = 0x3f; - uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, 0xfc}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = {0x88 | kDeprecatedFlags, 0x01, 0x00, 0x00, 0xfc}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.AddFrameDependencyDiff(kDiff); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseMinLongFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, ParseMinLongFrameDependencies) { constexpr uint16_t kDiff = 0x40; constexpr uint8_t kRaw[] = {0xb8, 0x01, 0x00, 0x00, 0x02, 0x01}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); ASSERT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_THAT(descriptor.FrameDependenciesDiffs(), ElementsAre(kDiff)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteMinLongFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, WriteMinLongFrameDependencies) { constexpr uint16_t kDiff = 0x40; - uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, 0x02, 0x01}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = {0x88 | kDeprecatedFlags, 0x01, 0x00, 0x00, 0x02, 0x01}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.AddFrameDependencyDiff(kDiff); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, - ParseLongFrameDependenciesAsBigEndian) { +TEST(RtpGenericFrameDescriptorExtensionTest, + ParseLongFrameDependenciesAsBigEndian) { constexpr uint16_t kDiff = 0x7654 >> 2; constexpr uint8_t kRaw[] = {0xb8, 0x01, 0x00, 0x00, 0x54 | 0x02, 0x76}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); ASSERT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_THAT(descriptor.FrameDependenciesDiffs(), ElementsAre(kDiff)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, - WriteLongFrameDependenciesAsBigEndian) { +TEST(RtpGenericFrameDescriptorExtensionTest, + WriteLongFrameDependenciesAsBigEndian) { constexpr uint16_t kDiff = 0x7654 >> 2; - uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, 0x54 | 0x02, 0x76}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = { + 0x88 | kDeprecatedFlags, 0x01, 0x00, 0x00, 0x54 | 0x02, 0x76}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.AddFrameDependencyDiff(kDiff); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseMaxLongFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, ParseMaxLongFrameDependencies) { constexpr uint16_t kDiff = 0x3fff; constexpr uint8_t kRaw[] = {0xb8, 0x01, 0x00, 0x00, 0xfe, 0xff}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); ASSERT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_THAT(descriptor.FrameDependenciesDiffs(), ElementsAre(kDiff)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteMaxLongFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, WriteMaxLongFrameDependencies) { constexpr uint16_t kDiff = 0x3fff; - uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, 0xfe, 0xff}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = {0x88 | kDeprecatedFlags, 0x01, 0x00, 0x00, 0xfe, 0xff}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.AddFrameDependencyDiff(kDiff); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, ParseTwoFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, ParseTwoFrameDependencies) { constexpr uint16_t kDiff1 = 9; constexpr uint16_t kDiff2 = 15; constexpr uint8_t kRaw[] = { 0xb8, 0x01, 0x00, 0x00, (kDiff1 << 2) | 0x01, kDiff2 << 2}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); ASSERT_TRUE(descriptor.FirstPacketInSubFrame()); EXPECT_THAT(descriptor.FrameDependenciesDiffs(), ElementsAre(kDiff1, kDiff2)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, WriteTwoFrameDependencies) { +TEST(RtpGenericFrameDescriptorExtensionTest, WriteTwoFrameDependencies) { constexpr uint16_t kDiff1 = 9; constexpr uint16_t kDiff2 = 15; - uint8_t kRaw[] = {0x88, 0x01, 0x00, 0x00, (kDiff1 << 2) | 0x01, kDiff2 << 2}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = {0x88 | kDeprecatedFlags, 0x01, 0x00, 0x00, + (kDiff1 << 2) | 0x01, kDiff2 << 2}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.AddFrameDependencyDiff(kDiff1); descriptor.AddFrameDependencyDiff(kDiff2); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, - ParseResolutionOnIndependentFrame) { +TEST(RtpGenericFrameDescriptorExtensionTest, + ParseResolutionOnIndependentFrame) { constexpr int kWidth = 0x2468; constexpr int kHeight = 0x6543; constexpr uint8_t kRaw[] = {0xb0, 0x01, 0x00, 0x00, 0x24, 0x68, 0x65, 0x43}; RtpGenericFrameDescriptor descriptor; - ASSERT_TRUE(Parse(kRaw, &descriptor)); + ASSERT_TRUE(RtpGenericFrameDescriptorExtension00::Parse(kRaw, &descriptor)); EXPECT_EQ(descriptor.Width(), kWidth); EXPECT_EQ(descriptor.Height(), kHeight); } -TEST_P(RtpGenericFrameDescriptorExtensionTest, - WriteResolutionOnIndependentFrame) { +TEST(RtpGenericFrameDescriptorExtensionTest, + WriteResolutionOnIndependentFrame) { constexpr int kWidth = 0x2468; constexpr int kHeight = 0x6543; - uint8_t kRaw[] = {0x80, 0x01, 0x00, 0x00, 0x24, 0x68, 0x65, 0x43}; - if (version_ == 0) { - kRaw[0] |= kDeprecatedFlags; - } + uint8_t kRaw[] = { + 0x80 | kDeprecatedFlags, 0x01, 0x00, 0x00, 0x24, 0x68, 0x65, 0x43}; RtpGenericFrameDescriptor descriptor; descriptor.SetFirstPacketInSubFrame(true); descriptor.SetResolution(kWidth, kHeight); - ASSERT_EQ(ValueSize(descriptor), sizeof(kRaw)); + ASSERT_EQ(RtpGenericFrameDescriptorExtension00::ValueSize(descriptor), + sizeof(kRaw)); uint8_t buffer[sizeof(kRaw)]; - EXPECT_TRUE(Write(buffer, descriptor)); + EXPECT_TRUE(RtpGenericFrameDescriptorExtension00::Write(buffer, descriptor)); EXPECT_THAT(buffer, ElementsAreArray(kRaw)); } } // namespace diff --git a/modules/rtp_rtcp/source/rtp_header_extension_map.cc b/modules/rtp_rtcp/source/rtp_header_extension_map.cc index 06f2e928f9..f59f9c4ebb 100644 --- a/modules/rtp_rtcp/source/rtp_header_extension_map.cc +++ b/modules/rtp_rtcp/source/rtp_header_extension_map.cc @@ -46,7 +46,6 @@ constexpr ExtensionInfo kExtensions[] = { CreateExtensionInfo(), CreateExtensionInfo(), CreateExtensionInfo(), - CreateExtensionInfo(), CreateExtensionInfo(), CreateExtensionInfo(), CreateExtensionInfo(), diff --git a/modules/rtp_rtcp/source/rtp_packet.cc b/modules/rtp_rtcp/source/rtp_packet.cc index 56438283e4..e054bb8306 100644 --- a/modules/rtp_rtcp/source/rtp_packet.cc +++ b/modules/rtp_rtcp/source/rtp_packet.cc @@ -190,7 +190,6 @@ void RtpPacket::ZeroMutableExtensions() { case RTPExtensionType::kRtpExtensionColorSpace: case RTPExtensionType::kRtpExtensionFrameMarking: case RTPExtensionType::kRtpExtensionGenericFrameDescriptor00: - case RTPExtensionType::kRtpExtensionGenericFrameDescriptor01: case RTPExtensionType::kRtpExtensionGenericFrameDescriptor02: case RTPExtensionType::kRtpExtensionMid: case RTPExtensionType::kRtpExtensionNumberOfExtensions: diff --git a/modules/rtp_rtcp/source/rtp_sender.cc b/modules/rtp_rtcp/source/rtp_sender.cc index 5ed7e59267..76fc74a2b9 100644 --- a/modules/rtp_rtcp/source/rtp_sender.cc +++ b/modules/rtp_rtcp/source/rtp_sender.cc @@ -82,8 +82,6 @@ constexpr RtpExtensionSize kVideoExtensionSizes[] = { CreateMaxExtensionSize(), {RtpGenericFrameDescriptorExtension00::kId, RtpGenericFrameDescriptorExtension00::kMaxSizeBytes}, - {RtpGenericFrameDescriptorExtension01::kId, - RtpGenericFrameDescriptorExtension01::kMaxSizeBytes}, }; bool HasBweExtension(const RtpHeaderExtensionMap& extensions_map) { diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc index 4f819cdaad..7dd9fdf420 100644 --- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc @@ -47,8 +47,7 @@ namespace { enum : int { // The first valid value is 1. kAbsoluteSendTimeExtensionId = 1, kAudioLevelExtensionId, - kGenericDescriptorId00, - kGenericDescriptorId01, + kGenericDescriptorId, kMidExtensionId, kRepairedRidExtensionId, kRidExtensionId, @@ -109,9 +108,7 @@ class LoopbackTransportTest : public webrtc::Transport { kVideoTimingExtensionId); receivers_extensions_.Register(kMidExtensionId); receivers_extensions_.Register( - kGenericDescriptorId00); - receivers_extensions_.Register( - kGenericDescriptorId01); + kGenericDescriptorId); receivers_extensions_.Register(kRidExtensionId); receivers_extensions_.Register( kRepairedRidExtensionId); diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc index 98e2258939..9ac4cdeb74 100644 --- a/modules/rtp_rtcp/source/rtp_sender_video.cc +++ b/modules/rtp_rtcp/source/rtp_sender_video.cc @@ -358,12 +358,11 @@ void RTPSenderVideo::AddRtpHeaderExtensions( descriptor.attached_structure.release(); } - // Do not use v0/v1 generic frame descriptor when v2 is stored. + // Do not use generic frame descriptor when dependency descriptor is stored. if (!extension_is_set) { RtpGenericFrameDescriptor generic_descriptor; generic_descriptor.SetFirstPacketInSubFrame(first_packet); generic_descriptor.SetLastPacketInSubFrame(last_packet); - generic_descriptor.SetDiscardable(video_header.generic->discardable); if (first_packet) { generic_descriptor.SetFrameId( diff --git a/modules/rtp_rtcp/source/rtp_utility.cc b/modules/rtp_rtcp/source/rtp_utility.cc index 75ee052b7c..f76d7d0f0b 100644 --- a/modules/rtp_rtcp/source/rtp_utility.cc +++ b/modules/rtp_rtcp/source/rtp_utility.cc @@ -534,7 +534,6 @@ void RtpHeaderParser::ParseOneByteExtensionHeader( break; } case kRtpExtensionGenericFrameDescriptor00: - case kRtpExtensionGenericFrameDescriptor01: case kRtpExtensionGenericFrameDescriptor02: RTC_LOG(WARNING) << "RtpGenericFrameDescriptor unsupported by rtp header parser."; diff --git a/test/fuzzers/rtp_packet_fuzzer.cc b/test/fuzzers/rtp_packet_fuzzer.cc index 774be0871e..6a4f5e7893 100644 --- a/test/fuzzers/rtp_packet_fuzzer.cc +++ b/test/fuzzers/rtp_packet_fuzzer.cc @@ -136,11 +136,6 @@ void FuzzOneInput(const uint8_t* data, size_t size) { packet.GetExtension(&descriptor); break; } - case kRtpExtensionGenericFrameDescriptor01: { - RtpGenericFrameDescriptor descriptor; - packet.GetExtension(&descriptor); - break; - } case kRtpExtensionColorSpace: { ColorSpace color_space; packet.GetExtension(&color_space);