Delete generic frame descriptor v1 trait and enum value

Bug: webrtc:11358
Change-Id: I272a45881f8ef9963b502c6d17edc97e7d9fbc8e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173582
Reviewed-by: Markus Handell <handellm@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31089}
diff --git a/modules/rtp_rtcp/include/rtp_rtcp_defines.h b/modules/rtp_rtcp/include/rtp_rtcp_defines.h
index a95ac99..48bb842 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp_defines.h
+++ b/modules/rtp_rtcp/include/rtp_rtcp_defines.h
@@ -70,7 +70,6 @@
   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 1b83307..8760acc 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 @@
   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<bool> 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 @@
   bool beginning_of_subframe_ = false;
   bool end_of_subframe_ = false;
 
-  absl::optional<bool> 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 a705b5a..ca46fa6 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 @@
 
 // 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 RTPExtensionType RtpGenericFrameDescriptorExtension00::kId;
+constexpr char RtpGenericFrameDescriptorExtension00::kUri[];
 
-bool RtpGenericFrameDescriptorExtensionParse(
-    size_t version,
+bool RtpGenericFrameDescriptorExtension00::Parse(
     rtc::ArrayView<const uint8_t> data,
     RtpGenericFrameDescriptor* descriptor) {
   if (data.empty()) {
@@ -71,10 +70,6 @@
   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 @@
   return true;
 }
 
-size_t RtpGenericFrameDescriptorExtensionValueSize(
+size_t RtpGenericFrameDescriptorExtension00::ValueSize(
     const RtpGenericFrameDescriptor& descriptor) {
   if (!descriptor.FirstPacketInSubFrame())
     return 1;
@@ -132,23 +127,15 @@
   return size;
 }
 
-bool RtpGenericFrameDescriptorExtensionWrite(
-    size_t version,
+bool RtpGenericFrameDescriptorExtension00::Write(
     rtc::ArrayView<uint8_t> 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<bool> 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 @@
   return true;
 }
 
-}  // namespace
-
-constexpr RTPExtensionType RtpGenericFrameDescriptorExtension00::kId;
-constexpr char RtpGenericFrameDescriptorExtension00::kUri[];
-
-bool RtpGenericFrameDescriptorExtension00::Parse(
-    rtc::ArrayView<const uint8_t> 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<uint8_t> data,
-    const RtpGenericFrameDescriptor& descriptor) {
-  return RtpGenericFrameDescriptorExtensionWrite(0, data, descriptor);
-}
-
-constexpr RTPExtensionType RtpGenericFrameDescriptorExtension01::kId;
-constexpr char RtpGenericFrameDescriptorExtension01::kUri[];
-
-bool RtpGenericFrameDescriptorExtension01::Parse(
-    rtc::ArrayView<const uint8_t> 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<uint8_t> 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 a52588e..ac7afb4 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 @@
                     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<const uint8_t> data,
-                    RtpGenericFrameDescriptor* descriptor);
-  static size_t ValueSize(const RtpGenericFrameDescriptor& descriptor);
-  static bool Write(rtc::ArrayView<uint8_t> 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 3ce46fd..d7f8e1e 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 @@
 
 // TODO(danilchap): Add fuzzer to test for various invalid inputs.
 
-class RtpGenericFrameDescriptorExtensionTest
-    : public ::testing::Test,
-      public ::testing::WithParamInterface<int> {
- public:
-  RtpGenericFrameDescriptorExtensionTest() : version_(GetParam()) {}
-
-  bool Parse(rtc::ArrayView<const uint8_t> 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<uint8_t> 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<bool> 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 @@
   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<bool> 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<bool> 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 06f2e92..f59f9c4 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 @@
     CreateExtensionInfo<RepairedRtpStreamId>(),
     CreateExtensionInfo<RtpMid>(),
     CreateExtensionInfo<RtpGenericFrameDescriptorExtension00>(),
-    CreateExtensionInfo<RtpGenericFrameDescriptorExtension01>(),
     CreateExtensionInfo<RtpDependencyDescriptorExtension>(),
     CreateExtensionInfo<ColorSpaceExtension>(),
     CreateExtensionInfo<InbandComfortNoiseExtension>(),
diff --git a/modules/rtp_rtcp/source/rtp_packet.cc b/modules/rtp_rtcp/source/rtp_packet.cc
index 5643828..e054bb8 100644
--- a/modules/rtp_rtcp/source/rtp_packet.cc
+++ b/modules/rtp_rtcp/source/rtp_packet.cc
@@ -190,7 +190,6 @@
       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 5ed7e59..76fc74a 100644
--- a/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/modules/rtp_rtcp/source/rtp_sender.cc
@@ -82,8 +82,6 @@
     CreateMaxExtensionSize<RtpMid>(),
     {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 4f819cd..7dd9fdf 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -47,8 +47,7 @@
 enum : int {  // The first valid value is 1.
   kAbsoluteSendTimeExtensionId = 1,
   kAudioLevelExtensionId,
-  kGenericDescriptorId00,
-  kGenericDescriptorId01,
+  kGenericDescriptorId,
   kMidExtensionId,
   kRepairedRidExtensionId,
   kRidExtensionId,
@@ -109,9 +108,7 @@
         kVideoTimingExtensionId);
     receivers_extensions_.Register<RtpMid>(kMidExtensionId);
     receivers_extensions_.Register<RtpGenericFrameDescriptorExtension00>(
-        kGenericDescriptorId00);
-    receivers_extensions_.Register<RtpGenericFrameDescriptorExtension01>(
-        kGenericDescriptorId01);
+        kGenericDescriptorId);
     receivers_extensions_.Register<RtpStreamId>(kRidExtensionId);
     receivers_extensions_.Register<RepairedRtpStreamId>(
         kRepairedRidExtensionId);
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index 98e2258..9ac4cde 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -358,12 +358,11 @@
       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 75ee052..f76d7d0 100644
--- a/modules/rtp_rtcp/source/rtp_utility.cc
+++ b/modules/rtp_rtcp/source/rtp_utility.cc
@@ -534,7 +534,6 @@
           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 774be08..6a4f5e7 100644
--- a/test/fuzzers/rtp_packet_fuzzer.cc
+++ b/test/fuzzers/rtp_packet_fuzzer.cc
@@ -136,11 +136,6 @@
         packet.GetExtension<RtpGenericFrameDescriptorExtension00>(&descriptor);
         break;
       }
-      case kRtpExtensionGenericFrameDescriptor01: {
-        RtpGenericFrameDescriptor descriptor;
-        packet.GetExtension<RtpGenericFrameDescriptorExtension01>(&descriptor);
-        break;
-      }
       case kRtpExtensionColorSpace: {
         ColorSpace color_space;
         packet.GetExtension<ColorSpaceExtension>(&color_space);