RtpHeaderExtensionId: Clean up usage in remaining tests and build files

Bug: webrtc:42232595
Change-Id: I84a1e1fbfeffae22a3c9921bb63cf7c18e6bbda4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/477764
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47871}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index c923431..17c40ab 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -343,6 +343,7 @@
     ":payload_type",
     ":ref_count",
     ":rtc_error",
+    ":rtp_header_extension_id",
     ":rtp_parameters",
     ":rtp_transceiver_direction",
     ":sctp_transport_interface",
diff --git a/api/rtp_packet_info_unittest.cc b/api/rtp_packet_info_unittest.cc
index c61d1bd..d227290 100644
--- a/api/rtp_packet_info_unittest.cc
+++ b/api/rtp_packet_info_unittest.cc
@@ -14,6 +14,7 @@
 #include <optional>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
@@ -34,7 +35,7 @@
           typename ExtensionValue = ExtensionType::value_type>
 RtpPacketReceived CreateRtpPacketReceivedWithExtension(ExtensionValue value) {
   RtpHeaderExtensionMap extensions;
-  extensions.Register<ExtensionType>(5);
+  extensions.Register<ExtensionType>(RtpHeaderExtensionId(5));
   RtpPacketReceived packet(&extensions);
   RTC_CHECK(packet.SetExtension<ExtensionType>(value))
       << "Unable to set extension.";
diff --git a/api/video/BUILD.gn b/api/video/BUILD.gn
index 83a9e38..f8b8c22 100644
--- a/api/video/BUILD.gn
+++ b/api/video/BUILD.gn
@@ -220,6 +220,7 @@
     ":encoded_frame",
     ":rtp_video_frame_assembler",
     ":video_frame_type",
+    "..:rtp_header_extension_id",
     "../../modules/rtp_rtcp",
     "../../modules/rtp_rtcp:rtp_packetizer_av1_test_helper",
     "../../modules/rtp_rtcp:rtp_rtcp_format",
diff --git a/api/webrtc_sdp.cc b/api/webrtc_sdp.cc
index 5647314..e090464 100644
--- a/api/webrtc_sdp.cc
+++ b/api/webrtc_sdp.cc
@@ -35,6 +35,7 @@
 #include "api/media_types.h"
 #include "api/payload_type.h"
 #include "api/rtc_error.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/rtp_transceiver_direction.h"
 #include "api/sctp_transport_interface.h"
@@ -799,7 +800,7 @@
     }
   }
 
-  *extmap = RtpExtension(uri, value, encrypted);
+  *extmap = RtpExtension(uri, RtpHeaderExtensionId(value), encrypted);
   return true;
 }
 
diff --git a/api/webrtc_sdp_unittest.cc b/api/webrtc_sdp_unittest.cc
index 2763ef0..359a6c5 100644
--- a/api/webrtc_sdp_unittest.cc
+++ b/api/webrtc_sdp_unittest.cc
@@ -83,7 +83,7 @@
     "a=fingerprint:sha-1 "
     "4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB\r\n";
 constexpr char kExtmapAllowMixed[] = "a=extmap-allow-mixed\r\n";
-constexpr int kExtmapId = 1;
+constexpr RtpHeaderExtensionId kExtmapId(1);
 constexpr char kExtmapUri[] = "http://example.com/082005/ext.htm#ttime";
 constexpr char kExtmap[] =
     "a=extmap:1 http://example.com/082005/ext.htm#ttime\r\n";
diff --git a/call/BUILD.gn b/call/BUILD.gn
index 69eff3f..930be8e 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -542,6 +542,7 @@
         "../api:mock_frame_transformer",
         "../api:mock_video_codec_factory",
         "../api:payload_type",
+        "../api:rtp_header_extension_id",
         "../api:rtp_headers",
         "../api:rtp_parameters",
         "../api:scoped_refptr",
@@ -738,6 +739,7 @@
         ":call_interfaces",
         ":mock_rtp_interfaces",
         ":rtp_receiver",
+        "../api:rtp_header_extension_id",
         "../modules/rtp_rtcp:rtp_rtcp_format",
         "../rtc_base:checks",
         "../rtc_base:safe_conversions",
@@ -802,6 +804,7 @@
         "../api:frame_transformer_interface",
         "../api:make_ref_counted",
         "../api:mock_frame_transformer",
+        "../api:rtp_header_extension_id",
         "../api:rtp_parameters",
         "../api:scoped_refptr",
         "../api:transport_api",
@@ -848,6 +851,7 @@
         ":call_interfaces",
         ":mock_rtp_interfaces",
         ":rtp_receiver",
+        "../api:rtp_header_extension_id",
         "../api/environment",
         "../api/rtc_event_log",
         "../api/units:timestamp",
@@ -893,6 +897,7 @@
         "../api:field_trials_view",
         "../api:make_ref_counted",
         "../api:rtc_event_log_output_file",
+        "../api:rtp_header_extension_id",
         "../api:rtp_parameters",
         "../api:scoped_refptr",
         "../api:sequence_checker",
@@ -1034,6 +1039,7 @@
     sources = [ "fake_network_pipe_unittest.cc" ]
     deps = [
       ":fake_network",
+      "../api:rtp_header_extension_id",
       "../api:simulated_network_api",
       "../api/units:data_rate",
       "../api/units:time_delta",
diff --git a/call/bitrate_estimator_tests.cc b/call/bitrate_estimator_tests.cc
index 7e71efb..253e115 100644
--- a/call/bitrate_estimator_tests.cc
+++ b/call/bitrate_estimator_tests.cc
@@ -16,6 +16,7 @@
 
 #include "absl/strings/match.h"
 #include "absl/strings/string_view.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/create_frame_generator.h"
 #include "api/test/simulated_network.h"
@@ -108,10 +109,9 @@
 
   Callback callback_;
 };
-}  // namespace
 
-static const int kTOFExtensionId = 4;
-static const int kASTExtensionId = 5;
+constexpr RtpHeaderExtensionId kTOFExtensionId(4);
+constexpr RtpHeaderExtensionId kASTExtensionId(5);
 
 class BitrateEstimatorTest : public test::CallTest {
  public:
@@ -331,4 +331,5 @@
   });
   EXPECT_TRUE(receiver_log_.Wait());
 }
+}  // namespace
 }  // namespace webrtc
diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc
index f6830a9..9930bb2 100644
--- a/call/call_perf_tests.cc
+++ b/call/call_perf_tests.cc
@@ -30,6 +30,7 @@
 #include "api/field_trials_view.h"
 #include "api/make_ref_counted.h"
 #include "api/numerics/samples_stats_counter.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/scoped_refptr.h"
 #include "api/task_queue/pending_task_safety_flag.h"
@@ -92,11 +93,7 @@
 using test::ImprovementDirection;
 using test::Unit;
 
-enum : int {  // The first valid value is 1.
-  kTransportSequenceNumberExtensionId = 1,
-};
-
-}  // namespace
+constexpr RtpHeaderExtensionId kTransportSequenceNumberExtensionId(1);
 
 class CallPerfTest : public test::CallTest {
  public:
@@ -1081,4 +1078,5 @@
                       /*max_framerates=*/{14, 20});
 }
 
+}  // namespace
 }  // namespace webrtc
diff --git a/call/fake_network_pipe_unittest.cc b/call/fake_network_pipe_unittest.cc
index dc8c0ca..f4d1911 100644
--- a/call/fake_network_pipe_unittest.cc
+++ b/call/fake_network_pipe_unittest.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/test/simulated_network.h"
 #include "api/units/data_rate.h"
 #include "api/units/time_delta.h"
@@ -470,7 +471,7 @@
   std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe(
       &fake_clock_, std::move(simulated_network), &receiver));
   RtpHeaderExtensionMap extension_map;
-  extension_map.Register<TransportSequenceNumber>(/*id=*/7);
+  extension_map.Register<TransportSequenceNumber>(RtpHeaderExtensionId(7));
 
   RtpPacketReceived packet(&extension_map, fake_clock_.CurrentTime());
   packet.SetExtension<TransportSequenceNumber>(123);
diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc
index d7d30df..e7a6e85 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -27,6 +27,7 @@
 #include "api/field_trials.h"
 #include "api/frame_transformer_interface.h"
 #include "api/make_ref_counted.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/scoped_refptr.h"
 #include "api/test/mock_frame_transformer.h"
@@ -97,8 +98,8 @@
 constexpr int16_t kInitialTl0PicIdx1 = 99;
 constexpr int16_t kInitialTl0PicIdx2 = 199;
 constexpr int64_t kRetransmitWindowSizeMs = 500;
-constexpr int kTransportsSequenceExtensionId = 7;
-constexpr int kDependencyDescriptorExtensionId = 8;
+constexpr RtpHeaderExtensionId kTransportsSequenceExtensionId(7);
+constexpr RtpHeaderExtensionId kDependencyDescriptorExtensionId(8);
 
 class MockRtcpIntraFrameObserver : public RtcpIntraFrameObserver {
  public:
diff --git a/call/rtx_receive_stream_unittest.cc b/call/rtx_receive_stream_unittest.cc
index 9a30cc4..e94a3be 100644
--- a/call/rtx_receive_stream_unittest.cc
+++ b/call/rtx_receive_stream_unittest.cc
@@ -18,6 +18,7 @@
 
 #include "api/environment/environment.h"
 #include "api/rtc_event_log/rtc_event.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/units/timestamp.h"
 #include "api/video/video_rotation.h"
 #include "call/test/mock_rtp_packet_sink_interface.h"
@@ -193,7 +194,8 @@
   Environment env = CreateTestEnvironment();
   RtxReceiveStream rtx_sink(env, &media_sink, PayloadTypeMapping(), kMediaSSRC);
   RtpHeaderExtensionMap extension_map;
-  extension_map.RegisterByType(3, kRtpExtensionVideoRotation);
+  extension_map.RegisterByType(RtpHeaderExtensionId(3),
+                               kRtpExtensionVideoRotation);
   RtpPacketReceived rtx_packet(&extension_map);
   EXPECT_TRUE(rtx_packet.Parse(std::span<const uint8_t>(kRtxPacketWithCVO)));
 
diff --git a/logging/BUILD.gn b/logging/BUILD.gn
index 3a5c1d4..880d6bb 100644
--- a/logging/BUILD.gn
+++ b/logging/BUILD.gn
@@ -514,6 +514,7 @@
       "../api:candidate",
       "../api:dtls_transport_interface",
       "../api:function_view",
+      "../api:rtp_header_extension_id",
       "../api:rtp_headers",
       "../api:rtp_parameters",
       "../api/rtc_event_log",
diff --git a/media/BUILD.gn b/media/BUILD.gn
index e303ae3..5556284 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -606,6 +606,7 @@
     "../api:payload_type",
     "../api:priority",
     "../api:rtc_error",
+    "../api:rtp_header_extension_id",
     "../api:rtp_headers",
     "../api:rtp_parameters",
     "../api:rtp_sender_interface",
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index 14e0ce7..393692b 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -42,6 +42,7 @@
 #include "api/payload_type.h"
 #include "api/priority.h"
 #include "api/rtc_error.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/rtp_parameters.h"
 #include "api/rtp_sender_interface.h"
@@ -871,7 +872,7 @@
   std::vector<RtpHeaderExtensionCapability> result;
   // id is *not* incremented for non-default extensions. Conflicting IDs
   // need to be resolved.
-  int id = 1;
+  RtpHeaderExtensionId id(1);
   for (const auto& uri :
        {RtpExtension::kTimestampOffsetUri, RtpExtension::kAbsSendTimeUri,
         RtpExtension::kVideoRotationUri,
@@ -880,11 +881,13 @@
         RtpExtension::kVideoTimingUri, RtpExtension::kColorSpaceUri,
         RtpExtension::kMidUri, RtpExtension::kRidUri,
         RtpExtension::kRepairedRidUri}) {
-    result.emplace_back(uri, id++, RtpTransceiverDirection::kSendRecv);
+    result.emplace_back(uri, id, RtpTransceiverDirection::kSendRecv);
+    id = RtpHeaderExtensionId(id.value() + 1);
   }
-  result.emplace_back(RtpExtension::kCorruptionDetectionUri, id++,
+  result.emplace_back(RtpExtension::kCorruptionDetectionUri, id,
                       /*preferred_encrypt=*/true,
                       RtpTransceiverDirection::kStopped);
+  id = RtpHeaderExtensionId(id.value() + 1);
   for (const auto& uri : {RtpExtension::kAbsoluteCaptureTimeUri}) {
     result.emplace_back(uri, id, RtpTransceiverDirection::kStopped);
   }
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index 48ff064..7ae395d 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -54,6 +54,7 @@
 #include "api/payload_type.h"
 #include "api/priority.h"
 #include "api/rtc_error.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/rtp_parameters.h"
 #include "api/rtp_sender_interface.h"
@@ -764,11 +765,12 @@
   std::vector<RtpHeaderExtensionCapability> result;
   // id is *not* incremented for non-default extensions. Conflicting IDs
   // need to be resolved.
-  int id = 1;
+  RtpHeaderExtensionId id(1);
   for (const auto& uri :
        {RtpExtension::kAudioLevelUri, RtpExtension::kAbsSendTimeUri,
         RtpExtension::kTransportSequenceNumberUri, RtpExtension::kMidUri}) {
-    result.emplace_back(uri, id++, RtpTransceiverDirection::kSendRecv);
+    result.emplace_back(uri, id, RtpTransceiverDirection::kSendRecv);
+    id = RtpHeaderExtensionId(id.value() + 1);
   }
   for (const auto& uri : {RtpExtension::kAbsoluteCaptureTimeUri}) {
     result.emplace_back(uri, id, RtpTransceiverDirection::kStopped);
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index afe7378..01affaa 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -593,6 +593,7 @@
     ":neteq_tools",
     ":neteq_tools_minimal",
     ":pcm16b",
+    "../../api:rtp_header_extension_id",
     "../../api:rtp_headers",
     "../../api/units:timestamp",
     "../../common_audio",
@@ -1208,6 +1209,7 @@
 
       deps = [
         ":neteq_test_tools",
+        "../../api:rtp_header_extension_id",
         "../../api:rtp_headers",
         "../../rtc_base:checks",
         "../rtp_rtcp:rtp_rtcp_format",
diff --git a/modules/audio_coding/neteq/tools/neteq_rtp_dump_input.cc b/modules/audio_coding/neteq/tools/neteq_rtp_dump_input.cc
index 50688e8..6af2271 100644
--- a/modules/audio_coding/neteq/tools/neteq_rtp_dump_input.cc
+++ b/modules/audio_coding/neteq/tools/neteq_rtp_dump_input.cc
@@ -17,6 +17,7 @@
 #include <utility>
 
 #include "absl/strings/string_view.h"
+#include "api/rtp_header_extension_id.h"
 #include "modules/audio_coding/neteq/tools/neteq_input.h"
 #include "modules/audio_coding/neteq/tools/rtp_file_source.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@@ -34,7 +35,8 @@
                     std::optional<uint32_t> ssrc_filter)
       : source_(RtpFileSource::Create(file_name, ssrc_filter)) {
     for (const auto& ext_pair : hdr_ext_map) {
-      source_->RegisterRtpHeaderExtension(ext_pair.second, ext_pair.first);
+      source_->RegisterRtpHeaderExtension(ext_pair.second,
+                                          RtpHeaderExtensionId(ext_pair.first));
     }
     packet_ = source_->NextPacket();
   }
diff --git a/modules/audio_coding/neteq/tools/rtp_analyze.cc b/modules/audio_coding/neteq/tools/rtp_analyze.cc
index 26df8f0..58dcf18 100644
--- a/modules/audio_coding/neteq/tools/rtp_analyze.cc
+++ b/modules/audio_coding/neteq/tools/rtp_analyze.cc
@@ -17,6 +17,7 @@
 
 #include "absl/flags/flag.h"
 #include "absl/flags/parse.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "modules/audio_coding/neteq/tools/rtp_file_source.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@@ -114,15 +115,16 @@
   bool print_audio_level = false;
   if (absl::GetFlag(FLAGS_audio_level) != -1) {
     print_audio_level = true;
-    file_source->RegisterRtpHeaderExtension(webrtc::kRtpExtensionAudioLevel,
-                                            absl::GetFlag(FLAGS_audio_level));
+    file_source->RegisterRtpHeaderExtension(
+        webrtc::kRtpExtensionAudioLevel,
+        webrtc::RtpHeaderExtensionId(absl::GetFlag(FLAGS_audio_level)));
   }
   bool print_abs_send_time = false;
   if (absl::GetFlag(FLAGS_abs_send_time) != -1) {
     print_abs_send_time = true;
     file_source->RegisterRtpHeaderExtension(
         webrtc::kRtpExtensionAbsoluteSendTime,
-        absl::GetFlag(FLAGS_abs_send_time));
+        webrtc::RtpHeaderExtensionId(absl::GetFlag(FLAGS_abs_send_time)));
   }
 
   FILE* out_file;
diff --git a/modules/audio_coding/neteq/tools/rtp_file_source.cc b/modules/audio_coding/neteq/tools/rtp_file_source.cc
index a6485da..26d6fae 100644
--- a/modules/audio_coding/neteq/tools/rtp_file_source.cc
+++ b/modules/audio_coding/neteq/tools/rtp_file_source.cc
@@ -17,6 +17,7 @@
 #include <optional>
 
 #include "absl/strings/string_view.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/units/timestamp.h"
 #include "modules/audio_coding/neteq/tools/packet_source.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@@ -49,7 +50,7 @@
 RtpFileSource::~RtpFileSource() {}
 
 bool RtpFileSource::RegisterRtpHeaderExtension(RTPExtensionType type,
-                                               uint8_t id) {
+                                               RtpHeaderExtensionId id) {
   return rtp_header_extension_map_.RegisterByType(id, type);
 }
 
diff --git a/modules/audio_coding/neteq/tools/rtp_file_source.h b/modules/audio_coding/neteq/tools/rtp_file_source.h
index f7c0a42..0f5266b 100644
--- a/modules/audio_coding/neteq/tools/rtp_file_source.h
+++ b/modules/audio_coding/neteq/tools/rtp_file_source.h
@@ -18,6 +18,7 @@
 #include <optional>
 
 #include "absl/strings/string_view.h"
+#include "api/rtp_header_extension_id.h"
 #include "modules/audio_coding/neteq/tools/packet_source.h"
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@@ -47,7 +48,8 @@
   RtpFileSource& operator=(const RtpFileSource&) = delete;
 
   // Registers an RTP header extension and binds it to `id`.
-  virtual bool RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id);
+  virtual bool RegisterRtpHeaderExtension(RTPExtensionType type,
+                                          RtpHeaderExtensionId id);
 
   std::unique_ptr<RtpPacketReceived> NextPacket() override;
 
diff --git a/modules/congestion_controller/BUILD.gn b/modules/congestion_controller/BUILD.gn
index dc11568..4d16a2e 100644
--- a/modules/congestion_controller/BUILD.gn
+++ b/modules/congestion_controller/BUILD.gn
@@ -52,6 +52,7 @@
     deps = [
       ":congestion_controller",
       "../../api:field_trials",
+      "../../api:rtp_header_extension_id",
       "../../api:rtp_parameters",
       "../../api/environment:environment_factory",
       "../../api/test/network_emulation",
diff --git a/modules/congestion_controller/receive_side_congestion_controller_unittest.cc b/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
index 1b2d252..4f74592 100644
--- a/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
@@ -17,6 +17,7 @@
 #include "api/environment/environment_factory.h"
 #include "api/field_trials.h"
 #include "api/media_types.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/network_emulation/create_cross_traffic.h"
 #include "api/test/network_emulation/cross_traffic.h"
@@ -63,7 +64,7 @@
                                              remb_sender.AsStdFunction());
 
   RtpHeaderExtensionMap extensions;
-  extensions.Register<AbsoluteSendTime>(1);
+  extensions.Register<AbsoluteSendTime>(RtpHeaderExtensionId(1));
   RtpPacketReceived packet(&extensions);
   packet.SetSsrc(0x11eb21c);
   packet.ReserveExtension<AbsoluteSendTime>();
@@ -191,7 +192,7 @@
   EXPECT_CALL(remb_sender, Call).Times(0);
 
   RtpHeaderExtensionMap extensions;
-  extensions.Register<TransportSequenceNumber>(1);
+  extensions.Register<TransportSequenceNumber>(RtpHeaderExtensionId(1));
   RtpPacketReceived packet(&extensions);
   packet.set_arrival_time(clock.CurrentTime());
   packet.SetExtension<TransportSequenceNumber>(123);
diff --git a/modules/pacing/BUILD.gn b/modules/pacing/BUILD.gn
index 083b6ec..95ddc8d 100644
--- a/modules/pacing/BUILD.gn
+++ b/modules/pacing/BUILD.gn
@@ -87,6 +87,7 @@
       ":interval_budget",
       ":pacing",
       "../../api:field_trials",
+      "../../api:rtp_header_extension_id",
       "../../api:rtp_headers",
       "../../api:sequence_checker",
       "../../api/task_queue",
diff --git a/modules/pacing/packet_router_unittest.cc b/modules/pacing/packet_router_unittest.cc
index d0143c2..792f590 100644
--- a/modules/pacing/packet_router_unittest.cc
+++ b/modules/pacing/packet_router_unittest.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/transport/network_types.h"
 #include "api/units/data_size.h"
@@ -57,7 +58,8 @@
 class PacketRouterTest : public ::testing::Test {
  public:
   PacketRouterTest() {
-    extension_manager.Register<TransportSequenceNumber>(/*id=*/1);
+    extension_manager.Register<TransportSequenceNumber>(
+        RtpHeaderExtensionId(1));
   }
 
  protected:
diff --git a/modules/remote_bitrate_estimator/BUILD.gn b/modules/remote_bitrate_estimator/BUILD.gn
index 765ebda..bfb5a51 100644
--- a/modules/remote_bitrate_estimator/BUILD.gn
+++ b/modules/remote_bitrate_estimator/BUILD.gn
@@ -130,6 +130,7 @@
       "tools/bwe_rtp.h",
     ]
     deps = [
+      "../../api:rtp_header_extension_id",
       "../../test:rtp_test_utils",
       "../rtp_rtcp:rtp_rtcp_format",
       "//third_party/abseil-cpp/absl/flags:flag",
@@ -174,6 +175,7 @@
       ":transport_sequence_number_feedback_generator",
       "..:module_api_public",
       "../../api:field_trials",
+      "../../api:rtp_header_extension_id",
       "../../api:rtp_headers",
       "../../api/environment:environment_factory",
       "../../api/transport:bandwidth_usage",
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.cc
index 2d34ed6..3ba3ad5 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.cc
@@ -16,6 +16,7 @@
 #include <utility>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/units/data_rate.h"
 #include "api/units/timestamp.h"
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
@@ -239,7 +240,7 @@
                                                 uint32_t rtp_timestamp,
                                                 uint32_t absolute_send_time) {
   RtpHeaderExtensionMap extensions;
-  extensions.Register<AbsoluteSendTime>(1);
+  extensions.Register<AbsoluteSendTime>(RtpHeaderExtensionId(1));
   RtpPacketReceived rtp_packet(&extensions);
   rtp_packet.SetSsrc(ssrc);
   rtp_packet.SetTimestamp(rtp_timestamp);
diff --git a/modules/remote_bitrate_estimator/tools/bwe_rtp.cc b/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
index 7f05e17..3be6ac1 100644
--- a/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
+++ b/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
@@ -21,6 +21,7 @@
 #include "absl/strings/numbers.h"
 #include "absl/strings/str_split.h"
 #include "absl/strings/string_view.h"
+#include "api/rtp_header_extension_id.h"
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "test/rtp_file_reader.h"
@@ -106,7 +107,8 @@
     return false;
   }
 
-  rtp_header_extensions.RegisterByType(ExtensionId(), extension);
+  rtp_header_extensions.RegisterByType(
+      webrtc::RtpHeaderExtensionId(ExtensionId()), extension);
 
   return true;
 }
diff --git a/modules/remote_bitrate_estimator/transport_sequence_number_feedback_generator_unittest.cc b/modules/remote_bitrate_estimator/transport_sequence_number_feedback_generator_unittest.cc
index 4e26fd5..c42425b 100644
--- a/modules/remote_bitrate_estimator/transport_sequence_number_feedback_generator_unittest.cc
+++ b/modules/remote_bitrate_estimator/transport_sequence_number_feedback_generator_unittest.cc
@@ -15,6 +15,7 @@
 #include <optional>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/units/data_rate.h"
 #include "api/units/data_size.h"
@@ -88,8 +89,8 @@
                       Timestamp arrival_time,
                       std::optional<uint32_t> abs_send_time = std::nullopt) {
     RtpHeaderExtensionMap map;
-    map.Register<TransportSequenceNumber>(1);
-    map.Register<AbsoluteSendTime>(2);
+    map.Register<TransportSequenceNumber>(RtpHeaderExtensionId(1));
+    map.Register<AbsoluteSendTime>(RtpHeaderExtensionId(2));
     RtpPacketReceived packet(&map, arrival_time);
     packet.SetSsrc(kMediaSsrc);
     packet.SetExtension<TransportSequenceNumber>(seq);
@@ -104,7 +105,7 @@
       Timestamp arrival_time,
       std::optional<FeedbackRequest> feedback_request = std::nullopt) {
     RtpHeaderExtensionMap map;
-    map.Register<TransportSequenceNumberV2>(1);
+    map.Register<TransportSequenceNumberV2>(RtpHeaderExtensionId(1));
     RtpPacketReceived packet(&map, arrival_time);
     packet.SetSsrc(kMediaSsrc);
     packet.SetExtension<TransportSequenceNumberV2>(seq, feedback_request);
diff --git a/modules/rtp_rtcp/source/rtp_packet.cc b/modules/rtp_rtcp/source/rtp_packet.cc
index 0c5d25a..a003a9d 100644
--- a/modules/rtp_rtcp/source/rtp_packet.cc
+++ b/modules/rtp_rtcp/source/rtp_packet.cc
@@ -168,7 +168,7 @@
 
 void RtpPacket::ZeroMutableExtensions() {
   for (const ExtensionInfo& extension : extension_entries_) {
-    switch (extensions_.GetType(extension.id)) {
+    switch (extensions_.GetType(RtpHeaderExtensionId(extension.id))) {
       case RTPExtensionType::kRtpExtensionNone: {
         RTC_LOG(LS_WARNING) << "Unidentified extension in the packet.";
         break;
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 173bc47..d4223dc 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -3540,6 +3540,7 @@
       "../api:peer_connection_interface",
       "../api:rtc_error",
       "../api:rtc_error_matchers",
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api:rtp_transceiver_direction",
       "../api:scoped_refptr",
@@ -4111,6 +4112,7 @@
       "../api:enable_media_with_defaults",
       "../api:jsep",
       "../api:peer_connection_interface",
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api:scoped_refptr",
       "../api/environment:environment_factory",
diff --git a/pc/peer_connection_field_trial_tests.cc b/pc/peer_connection_field_trial_tests.cc
index 0c3026e..960dbee 100644
--- a/pc/peer_connection_field_trial_tests.cc
+++ b/pc/peer_connection_field_trial_tests.cc
@@ -23,6 +23,7 @@
 #include "api/jsep.h"
 #include "api/media_types.h"
 #include "api/peer_connection_interface.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/scoped_refptr.h"
 #include "pc/peer_connection_wrapper.h"
@@ -177,7 +178,7 @@
   }
 
   rtp_header_extensions1.emplace_back(RtpExtension::kDependencyDescriptorUri,
-                                      insert_id);
+                                      RtpHeaderExtensionId(insert_id));
   media_description1->set_rtp_header_extensions(rtp_header_extensions1);
 
   caller->SetLocalDescription(offer->Clone());
diff --git a/pc/rtp_parameters_conversion_unittest.cc b/pc/rtp_parameters_conversion_unittest.cc
index dadb8c9..84d55b4 100644
--- a/pc/rtp_parameters_conversion_unittest.cc
+++ b/pc/rtp_parameters_conversion_unittest.cc
@@ -153,7 +153,9 @@
   Codec rtx2 = CreateVideoRtxCodec(105, 109);
 
   RtpCapabilities capabilities =
-      ToRtpCapabilities({vp8, ulpfec, rtx, rtx2}, {{"uri", 1}, {"uri2", 3}});
+      ToRtpCapabilities({vp8, ulpfec, rtx, rtx2},
+                        {RtpExtension("uri", RtpHeaderExtensionId(1)),
+                         RtpExtension("uri2", RtpHeaderExtensionId(3))});
   ASSERT_EQ(3u, capabilities.codecs.size());
   EXPECT_EQ("VP8", capabilities.codecs[0].name);
   EXPECT_EQ("ulpfec", capabilities.codecs[1].name);
diff --git a/pc/sdp_munging_detector_unittest.cc b/pc/sdp_munging_detector_unittest.cc
index 38e8358..75ac24a 100644
--- a/pc/sdp_munging_detector_unittest.cc
+++ b/pc/sdp_munging_detector_unittest.cc
@@ -1184,8 +1184,8 @@
   auto* media_description = contents[0].media_description();
   ASSERT_THAT(media_description, Not(IsNull()));
   // VLA is off by default, id=42 should be unused.
-  media_description->AddRtpHeaderExtension(
-      {RtpExtension::kVideoLayersAllocationUri, 42});
+  media_description->AddRtpHeaderExtension(RtpExtension(
+      RtpExtension::kVideoLayersAllocationUri, RtpHeaderExtensionId(42)));
 
   RTCError error;
   EXPECT_TRUE(pc->SetLocalDescription(std::move(offer), &error));
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn
index b964e43..41ee14d 100644
--- a/rtc_tools/BUILD.gn
+++ b/rtc_tools/BUILD.gn
@@ -167,6 +167,7 @@
     deps = [
       "../api:field_trials",
       "../api:field_trials_view",
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api/environment",
       "../api/environment:environment_factory",
@@ -311,6 +312,7 @@
         "../api:field_trials_view",
         "../api:function_view",
         "../api:make_ref_counted",
+        "../api:rtp_header_extension_id",
         "../api:rtp_headers",
         "../api:rtp_parameters",
         "../api:scoped_refptr",
diff --git a/rtc_tools/rtc_event_log_visualizer/analyze_bwe.cc b/rtc_tools/rtc_event_log_visualizer/analyze_bwe.cc
index 53b73aa..3147cd6 100644
--- a/rtc_tools/rtc_event_log_visualizer/analyze_bwe.cc
+++ b/rtc_tools/rtc_event_log_visualizer/analyze_bwe.cc
@@ -30,6 +30,7 @@
 #include "api/field_trials.h"
 #include "api/function_view.h"
 #include "api/media_types.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/transport/bandwidth_usage.h"
 #include "api/transport/goog_cc_factory.h"
@@ -180,12 +181,13 @@
   RtpHeaderExtensionMap rtp_header_extensions(/*extmap_allow_mixed=*/true);
   // ReceiveSideCongestionController doesn't need to know extensions ids as
   // long as it able to get extensions by type. So any ids would work here.
-  rtp_header_extensions.Register<TransmissionOffset>(1);
-  rtp_header_extensions.Register<AbsoluteSendTime>(2);
-  rtp_header_extensions.Register<TransportSequenceNumber>(3);
-  rtp_header_extensions.Register<FakeExtensionSmall>(4);
+  rtp_header_extensions.Register<TransmissionOffset>(RtpHeaderExtensionId(1));
+  rtp_header_extensions.Register<AbsoluteSendTime>(RtpHeaderExtensionId(2));
+  rtp_header_extensions.Register<TransportSequenceNumber>(
+      RtpHeaderExtensionId(3));
+  rtp_header_extensions.Register<FakeExtensionSmall>(RtpHeaderExtensionId(4));
   // Use id > 14 to force two byte header per rtp header when this one is used.
-  rtp_header_extensions.Register<FakeExtensionLarge>(16);
+  rtp_header_extensions.Register<FakeExtensionLarge>(RtpHeaderExtensionId(16));
 
   RtpPacketReceived rtp_packet(&rtp_header_extensions);
   // Set only fields that might be relevant for the bandwidth estimatior.
diff --git a/rtc_tools/video_replay.cc b/rtc_tools/video_replay.cc
index 2f7a1b5..14465cb 100644
--- a/rtc_tools/video_replay.cc
+++ b/rtc_tools/video_replay.cc
@@ -28,6 +28,7 @@
 #include "api/field_trials.h"
 #include "api/field_trials_view.h"
 #include "api/media_types.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/task_queue/task_queue_factory.h"
@@ -598,7 +599,8 @@
       std::pair<std::string, std::string> ext = absl::StrSplit(extension, ':');
       if (auto it = kKnownExtensions.find(ext.first);
           it != kKnownExtensions.end()) {
-        res.RegisterByUri(std::stoi(ext.second), it->second);
+        res.RegisterByUri(RtpHeaderExtensionId(std::stoi(ext.second)),
+                          it->second);
       } else {
         RTC_DCHECK_NOTREACHED() << "Unknown extension \"" << ext.first << "\"";
       }
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index ec99e60..b6e7231 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -90,6 +90,7 @@
       "../../api:libjingle_logging_api",
       "../../api:make_ref_counted",
       "../../api:network_emulation_manager_api",
+      "../../api:rtp_header_extension_id",
       "../../api:rtp_headers",
       "../../api:rtp_parameters",
       "../../api:scoped_refptr",
diff --git a/video/BUILD.gn b/video/BUILD.gn
index e8d61bc..1359128 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -553,6 +553,7 @@
         "../api:frame_generator_api",
         "../api:make_ref_counted",
         "../api:rtc_event_log_output_file",
+        "../api:rtp_header_extension_id",
         "../api:rtp_parameters",
         "../api:scoped_refptr",
         "../api:simulated_network_api",
@@ -932,6 +933,7 @@
   rtc_cc_test("bandwidth_tests") {
     sources = [ "end_to_end_tests/bandwidth_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_headers",
       "../api:rtp_parameters",
       "../api:simulated_network_api",
@@ -990,6 +992,7 @@
   rtc_cc_test("codec_tests") {
     sources = [ "end_to_end_tests/codec_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api/environment",
       "../api/test/video:function_video_factory",
@@ -1032,6 +1035,7 @@
   rtc_cc_test("corruption_detection_tests") {
     sources = [ "end_to_end_tests/corruption_detection_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api/environment",
       "../api/task_queue",
@@ -1056,6 +1060,7 @@
   rtc_cc_test("extended_reports_tests") {
     sources = [ "end_to_end_tests/extended_reports_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_headers",
       "../api:rtp_parameters",
       "../api:simulated_network_api",
@@ -1083,6 +1088,7 @@
   rtc_cc_test("fec_tests") {
     sources = [ "end_to_end_tests/fec_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api:simulated_network_api",
       "../api/environment",
@@ -1118,6 +1124,7 @@
       "../api:fake_frame_decryptor",
       "../api:fake_frame_encryptor",
       "../api:make_ref_counted",
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api/environment",
       "../api/test/video:function_video_factory",
@@ -1140,6 +1147,7 @@
   rtc_cc_test("histogram_tests") {
     sources = [ "end_to_end_tests/histogram_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api/environment",
       "../api/test/video:function_video_factory",
@@ -1250,6 +1258,7 @@
   rtc_cc_test("retransmission_tests") {
     sources = [ "end_to_end_tests/retransmission_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api:transport_api",
       "../api/environment",
@@ -1318,6 +1327,7 @@
   rtc_cc_test("ssrc_tests") {
     sources = [ "end_to_end_tests/ssrc_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api:simulated_network_api",
       "../api/task_queue",
@@ -1343,6 +1353,7 @@
   rtc_cc_test("stats_tests") {
     sources = [ "end_to_end_tests/stats_tests.cc" ]
     deps = [
+      "../api:rtp_header_extension_id",
       "../api:rtp_headers",
       "../api:rtp_parameters",
       "../api:scoped_refptr",
@@ -1386,6 +1397,7 @@
     deps = [
       ":multi_stream_tester",
       ":multi_stream_tests",
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api:simulated_network_api",
       "../api:transport_api",
@@ -1645,6 +1657,7 @@
       "../api:frame_transformer_interface",
       "../api:make_ref_counted",
       "../api:mock_frame_transformer",
+      "../api:rtp_header_extension_id",
       "../api:rtp_headers",
       "../api:rtp_parameters",
       "../api:scoped_refptr",
@@ -1850,6 +1863,7 @@
       "../api:bitrate_allocation",
       "../api:field_trials",
       "../api:field_trials_view",
+      "../api:rtp_header_extension_id",
       "../api:rtp_parameters",
       "../api/environment:environment_factory",
       "../api/rtc_event_log",
@@ -1891,6 +1905,7 @@
       "../api:field_trials",
       "../api:field_trials_view",
       "../api:make_ref_counted",
+      "../api:rtp_header_extension_id",
       "../api:rtp_headers",
       "../api:rtp_parameters",
       "../api:scoped_refptr",
diff --git a/video/end_to_end_tests/bandwidth_tests.cc b/video/end_to_end_tests/bandwidth_tests.cc
index 47396b5..bc27f9e 100644
--- a/video/end_to_end_tests/bandwidth_tests.cc
+++ b/video/end_to_end_tests/bandwidth_tests.cc
@@ -15,6 +15,7 @@
 
 #include "api/environment/environment.h"
 #include "api/environment/environment_factory.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/rtp_parameters.h"
 #include "api/task_queue/task_queue_base.h"
@@ -47,11 +48,9 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kAbsSendTimeExtensionId = 1,
-  kTransportSequenceNumberId,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kAbsSendTimeExtensionId(1);
+constexpr RtpHeaderExtensionId kTransportSequenceNumberId(2);
+constexpr int kMaxBitrateBps = 3000000;
 
 class BandwidthEndToEndTest : public test::CallTest {
  public:
@@ -181,7 +180,6 @@
   }
 
  private:
-  static const int kMaxBitrateBps = 3000000;
   Call* sender_call_;
   Call* receiver_call_;
   bool has_seen_pacer_delay_;
@@ -412,4 +410,5 @@
 
   RunBaseTest(&test);
 }
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/codec_tests.cc b/video/end_to_end_tests/codec_tests.cc
index eed02f6..18710c5 100644
--- a/video/end_to_end_tests/codec_tests.cc
+++ b/video/end_to_end_tests/codec_tests.cc
@@ -13,6 +13,7 @@
 #include <vector>
 
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/video/function_video_decoder_factory.h"
 #include "api/test/video/function_video_encoder_factory.h"
@@ -39,11 +40,8 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kColorSpaceExtensionId = 1,
-  kVideoRotationExtensionId,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kColorSpaceExtensionId(1);
+constexpr RtpHeaderExtensionId kVideoRotationExtensionId(2);
 
 class CodecEndToEndTest : public test::CallTest {
  public:
@@ -281,4 +279,5 @@
 }
 #endif  // defined(WEBRTC_USE_H264)
 
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/corruption_detection_tests.cc b/video/end_to_end_tests/corruption_detection_tests.cc
index 3a117c0..01e147c 100644
--- a/video/end_to_end_tests/corruption_detection_tests.cc
+++ b/video/end_to_end_tests/corruption_detection_tests.cc
@@ -12,6 +12,7 @@
 #include <vector>
 
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/test/video/function_video_decoder_factory.h"
@@ -33,7 +34,7 @@
 namespace {
 RtpExtension GetCorruptionExtension() {
   return RtpExtension(RtpExtension::kCorruptionDetectionUri,
-                      /*extension_id=*/1,
+                      RtpHeaderExtensionId(1),
                       /*encrypt=*/true);
 }
 }  // namespace
diff --git a/video/end_to_end_tests/extended_reports_tests.cc b/video/end_to_end_tests/extended_reports_tests.cc
index fd14163..124cbc3 100644
--- a/video/end_to_end_tests/extended_reports_tests.cc
+++ b/video/end_to_end_tests/extended_reports_tests.cc
@@ -15,6 +15,7 @@
 #include <string>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/rtp_parameters.h"
 #include "api/test/simulated_network.h"
@@ -38,11 +39,7 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kColorSpaceExtensionId = 1,
-  kTransportSequenceNumberExtensionId,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kTransportSequenceNumberExtensionId(2);
 
 class ExtendedReportsEndToEndTest : public test::CallTest {
  public:
@@ -257,4 +254,5 @@
                       test::VideoTestConstants::kLongTimeout);
   RunBaseTest(&test);
 }
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/fec_tests.cc b/video/end_to_end_tests/fec_tests.cc
index 628237a..5958dd3 100644
--- a/video/end_to_end_tests/fec_tests.cc
+++ b/video/end_to_end_tests/fec_tests.cc
@@ -16,6 +16,7 @@
 #include <vector>
 
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/simulated_network.h"
 #include "api/test/video/function_video_encoder_factory.h"
@@ -52,11 +53,8 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kTransportSequenceNumberExtensionId = 1,
-  kVideoRotationExtensionId,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kTransportSequenceNumberExtensionId(1);
+constexpr RtpHeaderExtensionId kVideoRotationExtensionId(2);
 
 class FecEndToEndTest : public test::CallTest {
  public:
@@ -546,4 +544,5 @@
 
   RunBaseTest(&test);
 }
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/frame_encryption_tests.cc b/video/end_to_end_tests/frame_encryption_tests.cc
index efdb1d8..3840175 100644
--- a/video/end_to_end_tests/frame_encryption_tests.cc
+++ b/video/end_to_end_tests/frame_encryption_tests.cc
@@ -13,6 +13,7 @@
 
 #include "api/environment/environment.h"
 #include "api/make_ref_counted.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/fake_frame_decryptor.h"
 #include "api/test/fake_frame_encryptor.h"
@@ -37,9 +38,7 @@
 
 using FrameEncryptionEndToEndTest = test::CallTest;
 
-enum : int {  // The first valid value is 1.
-  kGenericDescriptorExtensionId = 1,
-};
+constexpr RtpHeaderExtensionId kGenericDescriptorExtensionId(1);
 
 class DecryptedFrameObserver : public test::EndToEndTest,
                                public VideoSinkInterface<VideoFrame> {
diff --git a/video/end_to_end_tests/histogram_tests.cc b/video/end_to_end_tests/histogram_tests.cc
index b85f7ee..a2a049b 100644
--- a/video/end_to_end_tests/histogram_tests.cc
+++ b/video/end_to_end_tests/histogram_tests.cc
@@ -15,6 +15,7 @@
 #include <vector>
 
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/video/function_video_encoder_factory.h"
 #include "api/units/timestamp.h"
@@ -37,11 +38,8 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kTransportSequenceNumberExtensionId = 1,
-  kVideoContentTypeExtensionId,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kTransportSequenceNumberExtensionId(1);
+constexpr RtpHeaderExtensionId kVideoContentTypeExtensionId(2);
 
 class HistogramTest : public test::CallTest {
  public:
@@ -343,4 +341,5 @@
   VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
 }
 
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/retransmission_tests.cc b/video/end_to_end_tests/retransmission_tests.cc
index 343c406..39983c6 100644
--- a/video/end_to_end_tests/retransmission_tests.cc
+++ b/video/end_to_end_tests/retransmission_tests.cc
@@ -18,6 +18,7 @@
 
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/test/video/function_video_encoder_factory.h"
@@ -50,10 +51,7 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kVideoRotationExtensionId = 1,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kVideoRotationExtensionId(1);
 
 class RetransmissionEndToEndTest : public test::CallTest {
  public:
@@ -546,4 +544,5 @@
   DecodesRetransmittedFrame(true, true);
 }
 
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/ssrc_tests.cc b/video/end_to_end_tests/ssrc_tests.cc
index fb3438c..22ae8b5 100644
--- a/video/end_to_end_tests/ssrc_tests.cc
+++ b/video/end_to_end_tests/ssrc_tests.cc
@@ -16,6 +16,7 @@
 #include <utility>
 #include <vector>
 
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/test/simulated_network.h"
@@ -41,8 +42,8 @@
 class SsrcEndToEndTest : public test::CallTest {
  public:
   SsrcEndToEndTest() {
-    RegisterRtpExtension(
-        RtpExtension(RtpExtension::kTransportSequenceNumberUri, 1));
+    RegisterRtpExtension(RtpExtension(RtpExtension::kTransportSequenceNumberUri,
+                                      RtpHeaderExtensionId(1)));
   }
 
  protected:
diff --git a/video/end_to_end_tests/stats_tests.cc b/video/end_to_end_tests/stats_tests.cc
index 8fa3573..2147732 100644
--- a/video/end_to_end_tests/stats_tests.cc
+++ b/video/end_to_end_tests/stats_tests.cc
@@ -21,6 +21,7 @@
 
 #include "absl/algorithm/container.h"
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_headers.h"
 #include "api/rtp_parameters.h"
 #include "api/scoped_refptr.h"
@@ -60,10 +61,7 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kVideoContentTypeExtensionId = 1,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kVideoContentTypeExtensionId(1);
 
 class StatsEndToEndTest : public test::CallTest {
  public:
@@ -392,7 +390,7 @@
 }
 
 TEST_F(StatsEndToEndTest, TimingFramesAreReported) {
-  static const int kExtensionId = 5;
+  static constexpr RtpHeaderExtensionId kExtensionId(5);
   RegisterRtpExtension(
       RtpExtension(RtpExtension::kVideoTimingUri, kExtensionId));
 
@@ -788,4 +786,5 @@
     DestroyCalls();
   });
 }
+}  // namespace
 }  // namespace webrtc
diff --git a/video/end_to_end_tests/transport_feedback_tests.cc b/video/end_to_end_tests/transport_feedback_tests.cc
index 43c1826..4cd7946 100644
--- a/video/end_to_end_tests/transport_feedback_tests.cc
+++ b/video/end_to_end_tests/transport_feedback_tests.cc
@@ -18,6 +18,7 @@
 
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
+#include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
 #include "api/test/simulated_network.h"
 #include "api/transport/bitrate_settings.h"
@@ -52,10 +53,7 @@
 
 namespace webrtc {
 namespace {
-enum : int {  // The first valid value is 1.
-  kTransportSequenceNumberExtensionId = 1,
-};
-}  // namespace
+constexpr RtpHeaderExtensionId kTransportSequenceNumberExtensionId(1);
 
 TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) {
   static constexpr int kSendRtxPayloadType = 98;
@@ -504,4 +502,5 @@
   // message when the test fail.
   test.ExpectSuccessful();
 }
+}  // namespace
 }  // namespace webrtc