Rename cricket::MEDIA_TYPE_(AUDIO/VIDEO)

to webrtc::MediaType::(AUDIO/VIDEO)
This was generated using multiple passes of git grep -l | sed.

No-Iwyu: https://issues.webrtc.org/406288660
Bug: webrtc:42222911
Change-Id: I9a697bb6f40c60ffe0e6b61a2a3e07120c2f619e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/382500
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44222}
diff --git a/api/crypto/BUILD.gn b/api/crypto/BUILD.gn
index d1f9b13..2970f34 100644
--- a/api/crypto/BUILD.gn
+++ b/api/crypto/BUILD.gn
@@ -34,6 +34,7 @@
   sources = [ "frame_decryptor_interface.h" ]
   deps = [
     "..:array_view",
+    "..:ref_count",
     "..:rtp_parameters",
     "../../rtc_base:refcount",
   ]
@@ -44,6 +45,7 @@
   sources = [ "frame_encryptor_interface.h" ]
   deps = [
     "..:array_view",
+    "..:ref_count",
     "..:rtp_parameters",
     "../../rtc_base:refcount",
   ]
diff --git a/api/crypto/frame_decryptor_interface.h b/api/crypto/frame_decryptor_interface.h
index f412300..d37ed91 100644
--- a/api/crypto/frame_decryptor_interface.h
+++ b/api/crypto/frame_decryptor_interface.h
@@ -11,11 +11,13 @@
 #ifndef API_CRYPTO_FRAME_DECRYPTOR_INTERFACE_H_
 #define API_CRYPTO_FRAME_DECRYPTOR_INTERFACE_H_
 
+#include <cstddef>
+#include <cstdint>
 #include <vector>
 
 #include "api/array_view.h"
 #include "api/media_types.h"
-#include "rtc_base/ref_count.h"
+#include "api/ref_count.h"
 
 namespace webrtc {
 
@@ -58,7 +60,7 @@
   // kRecoverable should be returned if the failure was due to something other
   // than a decryption failure. kFailedToDecrypt should be returned in all other
   // cases.
-  virtual Result Decrypt(cricket::MediaType media_type,
+  virtual Result Decrypt(webrtc::MediaType media_type,
                          const std::vector<uint32_t>& csrcs,
                          rtc::ArrayView<const uint8_t> additional_data,
                          rtc::ArrayView<const uint8_t> encrypted_frame,
@@ -67,7 +69,7 @@
   // Returns the total required length in bytes for the output of the
   // decryption. This can be larger than the actual number of bytes you need but
   // must never be smaller as it informs the size of the frame buffer.
-  virtual size_t GetMaxPlaintextByteSize(cricket::MediaType media_type,
+  virtual size_t GetMaxPlaintextByteSize(webrtc::MediaType media_type,
                                          size_t encrypted_frame_size) = 0;
 };
 
diff --git a/api/crypto/frame_encryptor_interface.h b/api/crypto/frame_encryptor_interface.h
index 99148bd..dd38356 100644
--- a/api/crypto/frame_encryptor_interface.h
+++ b/api/crypto/frame_encryptor_interface.h
@@ -11,9 +11,12 @@
 #ifndef API_CRYPTO_FRAME_ENCRYPTOR_INTERFACE_H_
 #define API_CRYPTO_FRAME_ENCRYPTOR_INTERFACE_H_
 
+#include <cstddef>
+#include <cstdint>
+
 #include "api/array_view.h"
 #include "api/media_types.h"
-#include "rtc_base/ref_count.h"
+#include "api/ref_count.h"
 
 namespace webrtc {
 
@@ -35,7 +38,7 @@
   // must set bytes_written to the number of bytes you wrote in the
   // encrypted_frame. 0 must be returned if successful all other numbers can be
   // selected by the implementer to represent error codes.
-  virtual int Encrypt(cricket::MediaType media_type,
+  virtual int Encrypt(webrtc::MediaType media_type,
                       uint32_t ssrc,
                       rtc::ArrayView<const uint8_t> additional_data,
                       rtc::ArrayView<const uint8_t> frame,
@@ -45,7 +48,7 @@
   // Returns the total required length in bytes for the output of the
   // encryption. This can be larger than the actual number of bytes you need but
   // must never be smaller as it informs the size of the encrypted_frame buffer.
-  virtual size_t GetMaxCiphertextByteSize(cricket::MediaType media_type,
+  virtual size_t GetMaxCiphertextByteSize(webrtc::MediaType media_type,
                                           size_t frame_size) = 0;
 };
 
diff --git a/api/media_types.h b/api/media_types.h
index 339c263..2e1ab86 100644
--- a/api/media_types.h
+++ b/api/media_types.h
@@ -23,7 +23,7 @@
   DATA,
   UNSUPPORTED,
   ANY,
-  // Backwards compatibility values for cricket::MediaType users
+  // Backwards compatibility values for webrtc::MediaType users
   // TODO: https://issues.webrtc.org/42222911 - deprecate and remove
   MEDIA_TYPE_AUDIO = AUDIO,
   MEDIA_TYPE_VIDEO = VIDEO,
@@ -56,7 +56,7 @@
 using webrtc::kMediaTypeVideo;
 using webrtc::MediaTypeToString;
 
-// Backwards compatibility values for cricket::MediaType users
+// Backwards compatibility values for webrtc::MediaType users
 // TODO: https://issues.webrtc.org/42222911 - deprecate and remove
 constexpr MediaType MEDIA_TYPE_AUDIO = webrtc::MediaType::AUDIO;
 constexpr MediaType MEDIA_TYPE_VIDEO = webrtc::MediaType::VIDEO;
diff --git a/api/media_types_unittest.cc b/api/media_types_unittest.cc
deleted file mode 100644
index aefb506..0000000
--- a/api/media_types_unittest.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Copyright (c) 2025 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "api/media_types.h"
-
-#include "test/gmock.h"
-#include "test/gtest.h"
-
-namespace {
-
-TEST(MediaTypeTest, Assignment) {
-  webrtc::MediaType type_w;
-  cricket::MediaType type_c;
-  // If this compiles, the test passes.
-  type_w = webrtc::MediaType::VIDEO;
-  type_c = webrtc::MediaType::VIDEO;
-  type_w = type_c;
-  type_c = type_w;
-  // The older constant names.
-  type_w = cricket::MediaType::MEDIA_TYPE_VIDEO;
-  type_w = cricket::MEDIA_TYPE_VIDEOO;
-  type_c = cricket::MediaType::MEDIA_TYPE_VIDEO;
-  type_c = cricket::MEDIA_TYPE_VIDEO;
-}
-
-TEST(MediaTypeTest, AutomaticConversionFromInteger) {
-  webrtc::MediaType type_w;
-  type_w = 4;
-}
-
-TEST(MediaTypeTest, AutomaticConversionToInteger) {
-  webrtc::MediaType type_w;
-  cricket::MediaType type_c;
-  int type_i;
-  // If this compiles, the test passes.
-  type_w = webrtc::MediaType::VIDEO;
-  type_c = webrtc::MediaType::VIDEO;
-  type_i = webrtc::MediaType::VIDEO;
-  // Explicitly invoking the converter works.
-  type_i = cricket::MediaTypeToInt(webrtc::MediaType::VIDEO);
-  type_i = type_w;
-  type_i = type_c;
-}
-
-}  // namespace
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index b8a12a6..0039dd2 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -861,15 +861,14 @@
   AddTransceiver(rtc::scoped_refptr<MediaStreamTrackInterface> track,
                  const RtpTransceiverInit& init) = 0;
 
-  // Adds a transceiver with the given kind. Can either be MEDIA_TYPE_AUDIO or
-  // MEDIA_TYPE_VIDEO.
-  // Errors:
-  // - INVALID_PARAMETER: `media_type` is not MEDIA_TYPE_AUDIO or
-  //                      MEDIA_TYPE_VIDEO.
+  // Adds a transceiver with the given kind. Can either be
+  // webrtc::MediaType::AUDIO or webrtc::MediaType::VIDEO. Errors:
+  // - INVALID_PARAMETER: `media_type` is not webrtc::MediaType::AUDIO or
+  //                      webrtc::MediaType::VIDEO.
   virtual RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>
-  AddTransceiver(cricket::MediaType media_type) = 0;
+  AddTransceiver(webrtc::MediaType media_type) = 0;
   virtual RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>
-  AddTransceiver(cricket::MediaType media_type,
+  AddTransceiver(webrtc::MediaType media_type,
                  const RtpTransceiverInit& init) = 0;
 
   // Creates a sender without a track. Can be used for "early media"/"warmup"
@@ -1541,14 +1540,16 @@
       PeerConnectionDependencies dependencies) = 0;
 
   // Returns the capabilities of an RTP sender of type `kind`.
-  // If for some reason you pass in MEDIA_TYPE_DATA, returns an empty structure.
+  // If for some reason you pass in webrtc::MediaType::DATA, returns an empty
+  // structure.
   virtual RtpCapabilities GetRtpSenderCapabilities(
-      cricket::MediaType kind) const = 0;
+      webrtc::MediaType kind) const = 0;
 
   // Returns the capabilities of an RTP receiver of type `kind`.
-  // If for some reason you pass in MEDIA_TYPE_DATA, returns an empty structure.
+  // If for some reason you pass in webrtc::MediaType::DATA, returns an empty
+  // structure.
   virtual RtpCapabilities GetRtpReceiverCapabilities(
-      cricket::MediaType kind) const = 0;
+      webrtc::MediaType kind) const = 0;
 
   virtual rtc::scoped_refptr<MediaStreamInterface> CreateLocalMediaStream(
       const std::string& stream_id) = 0;
diff --git a/api/rtp_parameters.h b/api/rtp_parameters.h
index a1fce6a..57d77f2 100644
--- a/api/rtp_parameters.h
+++ b/api/rtp_parameters.h
@@ -137,7 +137,7 @@
   std::string name;
 
   // The media type of this codec. Equivalent to MIME top-level type.
-  cricket::MediaType kind = cricket::MEDIA_TYPE_AUDIO;
+  webrtc::MediaType kind = webrtc::MediaType::AUDIO;
 
   // If unset, the implementation default is used.
   std::optional<int> clock_rate;
@@ -195,7 +195,7 @@
 
   template <typename Sink>
   friend void AbslStringify(Sink& sink, const RtpCodecCapability& cap) {
-    if (cap.kind == cricket::MEDIA_TYPE_AUDIO) {
+    if (cap.kind == webrtc::MediaType::AUDIO) {
       absl::Format(&sink, "[audio/%s/%d/%d]", cap.name,
                    cap.clock_rate.value_or(0), cap.num_channels.value_or(1));
     } else {
@@ -213,8 +213,9 @@
 // RtpHeaderExtensionParameters.
 //
 // Note that ORTC includes a "kind" field, but we omit this because it's
-// redundant; if you call "RtpReceiver::GetCapabilities(MEDIA_TYPE_AUDIO)",
-// you know you're getting audio capabilities.
+// redundant; if you call
+// "RtpReceiver::GetCapabilities(webrtc::MediaType::AUDIO)", you know you're
+// getting audio capabilities.
 struct RTC_EXPORT RtpHeaderExtensionCapability {
   // URI of this extension, as defined in RFC8285.
   std::string uri;
diff --git a/api/rtp_receiver_interface.h b/api/rtp_receiver_interface.h
index bad3d2c..a37d69a 100644
--- a/api/rtp_receiver_interface.h
+++ b/api/rtp_receiver_interface.h
@@ -40,7 +40,7 @@
   // In the future, it's likely that an RtpReceiver will only call
   // OnFirstPacketReceived when a packet is received specifically for its
   // SSRC/mid.
-  virtual void OnFirstPacketReceived(cricket::MediaType media_type) = 0;
+  virtual void OnFirstPacketReceived(webrtc::MediaType media_type) = 0;
 
  protected:
   virtual ~RtpReceiverObserverInterface() {}
@@ -68,7 +68,7 @@
   virtual std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams() const;
 
   // Audio or video receiver?
-  virtual cricket::MediaType media_type() const = 0;
+  virtual webrtc::MediaType media_type() const = 0;
 
   // Not to be confused with "mid", this is a field we can temporarily use
   // to uniquely identify a receiver until we implement Unified Plan SDP.
diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h
index 91d7b3c..524c654 100644
--- a/api/rtp_sender_interface.h
+++ b/api/rtp_sender_interface.h
@@ -40,7 +40,7 @@
  public:
   // The observer is called when the first media packet is sent for the observed
   // sender. It is called immediately if the first packet was already sent.
-  virtual void OnFirstPacketSent(cricket::MediaType media_type) = 0;
+  virtual void OnFirstPacketSent(webrtc::MediaType media_type) = 0;
 
  protected:
   virtual ~RtpSenderObserverInterface() {}
@@ -68,7 +68,7 @@
   virtual uint32_t ssrc() const = 0;
 
   // Audio or video sender?
-  virtual cricket::MediaType media_type() const = 0;
+  virtual webrtc::MediaType media_type() const = 0;
 
   // Not to be confused with "mid", this is a field we can temporarily use
   // to uniquely identify a receiver until we implement Unified Plan SDP.
diff --git a/api/rtp_transceiver_interface.h b/api/rtp_transceiver_interface.h
index 2d0bf29..c9c4145 100644
--- a/api/rtp_transceiver_interface.h
+++ b/api/rtp_transceiver_interface.h
@@ -63,7 +63,7 @@
  public:
   // Media type of the transceiver. Any sender(s)/receiver(s) will have this
   // type as well.
-  virtual cricket::MediaType media_type() const = 0;
+  virtual webrtc::MediaType media_type() const = 0;
 
   // The mid attribute is the mid negotiated and present in the local and
   // remote descriptions. Before negotiation is complete, the mid value may be
diff --git a/api/test/fake_frame_decryptor.cc b/api/test/fake_frame_decryptor.cc
index e5bcc57..4241d99 100644
--- a/api/test/fake_frame_decryptor.cc
+++ b/api/test/fake_frame_decryptor.cc
@@ -25,7 +25,7 @@
     : fake_key_(fake_key), expected_postfix_byte_(expected_postfix_byte) {}
 
 FakeFrameDecryptor::Result FakeFrameDecryptor::Decrypt(
-    cricket::MediaType /* media_type */,
+    webrtc::MediaType /* media_type */,
     const std::vector<uint32_t>& /* csrcs */,
     rtc::ArrayView<const uint8_t> /* additional_data */,
     rtc::ArrayView<const uint8_t> encrypted_frame,
@@ -47,7 +47,7 @@
 }
 
 size_t FakeFrameDecryptor::GetMaxPlaintextByteSize(
-    cricket::MediaType /* media_type */,
+    webrtc::MediaType /* media_type */,
     size_t encrypted_frame_size) {
   return encrypted_frame_size - 1;
 }
diff --git a/api/test/fake_frame_decryptor.h b/api/test/fake_frame_decryptor.h
index 783bc80..bbbeb39 100644
--- a/api/test/fake_frame_decryptor.h
+++ b/api/test/fake_frame_decryptor.h
@@ -34,13 +34,13 @@
                               uint8_t expected_postfix_byte = 255);
   // Fake decryption that just xors the payload with the 1 byte key and checks
   // the postfix byte. This will always fail if fail_decryption_ is set to true.
-  Result Decrypt(cricket::MediaType media_type,
+  Result Decrypt(webrtc::MediaType media_type,
                  const std::vector<uint32_t>& csrcs,
                  rtc::ArrayView<const uint8_t> additional_data,
                  rtc::ArrayView<const uint8_t> encrypted_frame,
                  rtc::ArrayView<uint8_t> frame) override;
   // Always returns 1 less than the size of the encrypted frame.
-  size_t GetMaxPlaintextByteSize(cricket::MediaType media_type,
+  size_t GetMaxPlaintextByteSize(webrtc::MediaType media_type,
                                  size_t encrypted_frame_size) override;
   // Sets the fake key to use for encryption.
   void SetFakeKey(uint8_t fake_key);
diff --git a/api/test/fake_frame_encryptor.cc b/api/test/fake_frame_encryptor.cc
index ec31596..cfa371e 100644
--- a/api/test/fake_frame_encryptor.cc
+++ b/api/test/fake_frame_encryptor.cc
@@ -23,7 +23,7 @@
 
 // FrameEncryptorInterface implementation
 int FakeFrameEncryptor::Encrypt(
-    cricket::MediaType /* media_type */,
+    webrtc::MediaType /* media_type */,
     uint32_t /* ssrc */,
     rtc::ArrayView<const uint8_t> /* additional_data */,
     rtc::ArrayView<const uint8_t> frame,
@@ -44,7 +44,7 @@
 }
 
 size_t FakeFrameEncryptor::GetMaxCiphertextByteSize(
-    cricket::MediaType /* media_type */,
+    webrtc::MediaType /* media_type */,
     size_t frame_size) {
   return frame_size + 1;
 }
diff --git a/api/test/fake_frame_encryptor.h b/api/test/fake_frame_encryptor.h
index 074981b..692f7ee 100644
--- a/api/test/fake_frame_encryptor.h
+++ b/api/test/fake_frame_encryptor.h
@@ -33,14 +33,14 @@
                               uint8_t postfix_byte = 255);
   // Simply xors each payload with the provided fake key and adds the postfix
   // bit to the end. This will always fail if fail_encryption_ is set to true.
-  int Encrypt(cricket::MediaType media_type,
+  int Encrypt(webrtc::MediaType media_type,
               uint32_t ssrc,
               rtc::ArrayView<const uint8_t> additional_data,
               rtc::ArrayView<const uint8_t> frame,
               rtc::ArrayView<uint8_t> encrypted_frame,
               size_t* bytes_written) override;
   // Always returns 1 more than the size of the frame.
-  size_t GetMaxCiphertextByteSize(cricket::MediaType media_type,
+  size_t GetMaxCiphertextByteSize(webrtc::MediaType media_type,
                                   size_t frame_size) override;
   // Sets the fake key to use during encryption.
   void SetFakeKey(uint8_t fake_key);
diff --git a/api/test/mock_frame_decryptor.h b/api/test/mock_frame_decryptor.h
index 3f762ff..5e060c8 100644
--- a/api/test/mock_frame_decryptor.h
+++ b/api/test/mock_frame_decryptor.h
@@ -26,7 +26,7 @@
  public:
   MOCK_METHOD(Result,
               Decrypt,
-              (cricket::MediaType,
+              (webrtc::MediaType,
                const std::vector<uint32_t>&,
                rtc::ArrayView<const uint8_t>,
                rtc::ArrayView<const uint8_t>,
@@ -35,7 +35,7 @@
 
   MOCK_METHOD(size_t,
               GetMaxPlaintextByteSize,
-              (cricket::MediaType, size_t encrypted_frame_size),
+              (webrtc::MediaType, size_t encrypted_frame_size),
               (override));
 };
 
diff --git a/api/test/mock_frame_encryptor.h b/api/test/mock_frame_encryptor.h
index 5e99dff..ab0875b 100644
--- a/api/test/mock_frame_encryptor.h
+++ b/api/test/mock_frame_encryptor.h
@@ -25,7 +25,7 @@
  public:
   MOCK_METHOD(int,
               Encrypt,
-              (cricket::MediaType,
+              (webrtc::MediaType,
                uint32_t,
                rtc::ArrayView<const uint8_t>,
                rtc::ArrayView<const uint8_t>,
@@ -35,7 +35,7 @@
 
   MOCK_METHOD(size_t,
               GetMaxCiphertextByteSize,
-              (cricket::MediaType media_type, size_t frame_size),
+              (webrtc::MediaType media_type, size_t frame_size),
               (override));
 };
 
diff --git a/api/test/mock_peer_connection_factory_interface.h b/api/test/mock_peer_connection_factory_interface.h
index 2d46fe6..c5b1256 100644
--- a/api/test/mock_peer_connection_factory_interface.h
+++ b/api/test/mock_peer_connection_factory_interface.h
@@ -44,11 +44,11 @@
               (override));
   MOCK_METHOD(RtpCapabilities,
               GetRtpSenderCapabilities,
-              (cricket::MediaType),
+              (webrtc::MediaType),
               (const, override));
   MOCK_METHOD(RtpCapabilities,
               GetRtpReceiverCapabilities,
-              (cricket::MediaType),
+              (webrtc::MediaType),
               (const, override));
   MOCK_METHOD(rtc::scoped_refptr<MediaStreamInterface>,
               CreateLocalMediaStream,
diff --git a/api/test/mock_peerconnectioninterface.h b/api/test/mock_peerconnectioninterface.h
index d0ea047..c1e9349 100644
--- a/api/test/mock_peerconnectioninterface.h
+++ b/api/test/mock_peerconnectioninterface.h
@@ -88,11 +88,11 @@
               (override));
   MOCK_METHOD(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              (cricket::MediaType),
+              (webrtc::MediaType),
               (override));
   MOCK_METHOD(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              (cricket::MediaType, const RtpTransceiverInit&),
+              (webrtc::MediaType, const RtpTransceiverInit&),
               (override));
   MOCK_METHOD(rtc::scoped_refptr<RtpSenderInterface>,
               CreateSender,
diff --git a/api/test/mock_rtp_transceiver.h b/api/test/mock_rtp_transceiver.h
index 8bc2a6f..77bdf00 100644
--- a/api/test/mock_rtp_transceiver.h
+++ b/api/test/mock_rtp_transceiver.h
@@ -37,7 +37,7 @@
     return rtc::make_ref_counted<MockRtpTransceiver>();
   }
 
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(std::optional<std::string>, mid, (), (const, override));
   MOCK_METHOD(rtc::scoped_refptr<RtpSenderInterface>,
               sender,
diff --git a/api/test/mock_rtpreceiver.h b/api/test/mock_rtpreceiver.h
index 8f8c3b4..3e88d2e 100644
--- a/api/test/mock_rtpreceiver.h
+++ b/api/test/mock_rtpreceiver.h
@@ -37,7 +37,7 @@
               streams,
               (),
               (const, override));
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(std::string, id, (), (const, override));
   MOCK_METHOD(RtpParameters, GetParameters, (), (const, override));
   MOCK_METHOD(bool,
diff --git a/api/test/mock_rtpsender.h b/api/test/mock_rtpsender.h
index ba1c7c0..144ce04 100644
--- a/api/test/mock_rtpsender.h
+++ b/api/test/mock_rtpsender.h
@@ -50,7 +50,7 @@
               (),
               (const, override));
   MOCK_METHOD(uint32_t, ssrc, (), (const, override));
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(std::string, id, (), (const, override));
   MOCK_METHOD(std::vector<std::string>, stream_ids, (), (const, override));
   MOCK_METHOD(void, SetStreams, (const std::vector<std::string>&), (override));
diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc
index 4d7e47d..6d32265 100644
--- a/audio/channel_receive.cc
+++ b/audio/channel_receive.cc
@@ -716,14 +716,14 @@
   rtc::Buffer decrypted_audio_payload;
   if (frame_decryptor_ != nullptr) {
     const size_t max_plaintext_size = frame_decryptor_->GetMaxPlaintextByteSize(
-        cricket::MEDIA_TYPE_AUDIO, payload_length);
+        webrtc::MediaType::AUDIO, payload_length);
     decrypted_audio_payload.SetSize(max_plaintext_size);
 
     const std::vector<uint32_t> csrcs(header.arrOfCSRCs,
                                       header.arrOfCSRCs + header.numCSRCs);
     const FrameDecryptorInterface::Result decrypt_result =
         frame_decryptor_->Decrypt(
-            cricket::MEDIA_TYPE_AUDIO, csrcs,
+            webrtc::MediaType::AUDIO, csrcs,
             /*additional_data=*/
             nullptr,
             rtc::ArrayView<const uint8_t>(payload, payload_data_length),
@@ -751,7 +751,7 @@
     char buf[1024];
     SimpleStringBuilder mime_type(buf);
     auto it = payload_type_map_.find(header.payloadType);
-    mime_type << cricket::MediaTypeToString(cricket::MEDIA_TYPE_AUDIO) << "/"
+    mime_type << webrtc::MediaTypeToString(webrtc::MediaType::AUDIO) << "/"
               << (it != payload_type_map_.end() ? it->second.name
                                                 : "x-unknown");
     frame_transformer_delegate_->Transform(payload_data, header, remote_ssrc_,
diff --git a/audio/channel_send.cc b/audio/channel_send.cc
index 994e843..1a487d9 100644
--- a/audio/channel_send.cc
+++ b/audio/channel_send.cc
@@ -385,7 +385,7 @@
     // is transformed, the delegate will call SendRtpAudio to send it.
     char buf[1024];
     SimpleStringBuilder mime_type(buf);
-    mime_type << cricket::MediaTypeToString(cricket::MEDIA_TYPE_AUDIO) << "/"
+    mime_type << webrtc::MediaTypeToString(webrtc::MediaType::AUDIO) << "/"
               << encoder_format_.name;
     frame_transformer_delegate_->Transform(
         frameType, payloadType, rtp_timestamp + rtp_rtcp_->StartTimestamp(),
@@ -417,15 +417,15 @@
       // TODO(benwright@webrtc.org) - Allocate enough to always encrypt inline.
       // Allocate a buffer to hold the maximum possible encrypted payload.
       size_t max_ciphertext_size = frame_encryptor_->GetMaxCiphertextByteSize(
-          cricket::MEDIA_TYPE_AUDIO, payload.size());
+          webrtc::MediaType::AUDIO, payload.size());
       encrypted_audio_payload.SetSize(max_ciphertext_size);
 
       // Encrypt the audio payload into the buffer.
       size_t bytes_written = 0;
-      int encrypt_status = frame_encryptor_->Encrypt(
-          cricket::MEDIA_TYPE_AUDIO, rtp_rtcp_->SSRC(),
-          /*additional_data=*/nullptr, payload, encrypted_audio_payload,
-          &bytes_written);
+      int encrypt_status =
+          frame_encryptor_->Encrypt(webrtc::MediaType::AUDIO, rtp_rtcp_->SSRC(),
+                                    /*additional_data=*/nullptr, payload,
+                                    encrypted_audio_payload, &bytes_written);
       if (encrypt_status != 0) {
         RTC_DLOG(LS_ERROR)
             << "Channel::SendData() failed encrypt audio payload: "
diff --git a/media/base/codec.cc b/media/base/codec.cc
index ac749e2..5eb8daa 100644
--- a/media/base/codec.cc
+++ b/media/base/codec.cc
@@ -203,11 +203,11 @@
   switch (type) {
     case Type::kAudio: {
       codec_params.num_channels = static_cast<int>(channels);
-      codec_params.kind = MEDIA_TYPE_AUDIO;
+      codec_params.kind = webrtc::MediaType::AUDIO;
       break;
     }
     case Type::kVideo: {
-      codec_params.kind = MEDIA_TYPE_VIDEO;
+      codec_params.kind = webrtc::MediaType::VIDEO;
       break;
     }
   }
diff --git a/media/base/codec_comparators.cc b/media/base/codec_comparators.cc
index 5420116..7cc55e4 100644
--- a/media/base/codec_comparators.cc
+++ b/media/base/codec_comparators.cc
@@ -403,14 +403,13 @@
   // Some video codecs are compatible with others (e.g. same profile but
   // different level). This comparison looks at the relevant parameters,
   // ignoring ones that are either irrelevant or unrecognized.
-  if (rtp_codec.kind == cricket::MediaType::MEDIA_TYPE_VIDEO &&
-      rtp_codec.IsMediaCodec()) {
+  if (rtp_codec.kind == webrtc::MediaType::VIDEO && rtp_codec.IsMediaCodec()) {
     return IsSameCodecSpecific(rtp_codec.name, params1, rtp_codec2.name,
                                params2);
   }
   // audio/RED should ignore the parameters which specify payload types so
   // can not be compared.
-  if (rtp_codec.kind == cricket::MediaType::MEDIA_TYPE_AUDIO &&
+  if (rtp_codec.kind == webrtc::MediaType::AUDIO &&
       rtp_codec.name == cricket::kRedCodecName) {
     return true;
   }
diff --git a/media/base/codec_unittest.cc b/media/base/codec_unittest.cc
index 4cb78fa..cfe2552 100644
--- a/media/base/codec_unittest.cc
+++ b/media/base/codec_unittest.cc
@@ -259,7 +259,7 @@
   v.SetParam("p1", "v1");
   webrtc::RtpCodecParameters codec_params_1 = v.ToCodecParameters();
   EXPECT_EQ(96, codec_params_1.payload_type);
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, codec_params_1.kind);
+  EXPECT_EQ(webrtc::MediaType::VIDEO, codec_params_1.kind);
   EXPECT_EQ("V", codec_params_1.name);
   EXPECT_EQ(cricket::kVideoCodecClockrate, codec_params_1.clock_rate);
   EXPECT_EQ(std::nullopt, codec_params_1.num_channels);
@@ -271,7 +271,7 @@
   a.SetParam("p1", "a1");
   webrtc::RtpCodecParameters codec_params_2 = a.ToCodecParameters();
   EXPECT_EQ(97, codec_params_2.payload_type);
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, codec_params_2.kind);
+  EXPECT_EQ(webrtc::MediaType::AUDIO, codec_params_2.kind);
   EXPECT_EQ("A", codec_params_2.name);
   EXPECT_EQ(44100, codec_params_2.clock_rate);
   EXPECT_EQ(2, codec_params_2.num_channels);
diff --git a/media/base/fake_media_engine.h b/media/base/fake_media_engine.h
index 5fac7cf..ee5a777 100644
--- a/media/base/fake_media_engine.h
+++ b/media/base/fake_media_engine.h
@@ -503,8 +503,8 @@
   VoiceMediaReceiveChannelInterface* AsVoiceReceiveChannel() override {
     return this;
   }
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_AUDIO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::AUDIO;
   }
 
   bool SetReceiverParameters(const AudioReceiverParameters& params) override;
@@ -595,8 +595,8 @@
     return nullptr;
   }
   VoiceMediaSendChannelInterface* AsVoiceSendChannel() override { return this; }
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_AUDIO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::AUDIO;
   }
 
   bool SetSenderParameters(const AudioSenderParameter& params) override;
@@ -673,8 +673,8 @@
   VoiceMediaReceiveChannelInterface* AsVoiceReceiveChannel() override {
     return nullptr;
   }
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_VIDEO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::VIDEO;
   }
 
   const std::vector<Codec>& recv_codecs() const;
@@ -747,8 +747,8 @@
   VoiceMediaSendChannelInterface* AsVoiceSendChannel() override {
     return nullptr;
   }
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_VIDEO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::VIDEO;
   }
 
   const std::vector<Codec>& send_codecs() const;
diff --git a/media/base/media_channel.h b/media/base/media_channel.h
index e1e8f54..e0cba40 100644
--- a/media/base/media_channel.h
+++ b/media/base/media_channel.h
@@ -191,7 +191,7 @@
   virtual VideoMediaSendChannelInterface* AsVideoSendChannel() = 0;
 
   virtual VoiceMediaSendChannelInterface* AsVoiceSendChannel() = 0;
-  virtual cricket::MediaType media_type() const = 0;
+  virtual webrtc::MediaType media_type() const = 0;
 
   // Gets the currently set codecs/payload types to be used for outgoing media.
   virtual std::optional<Codec> GetSendCodec() const = 0;
@@ -267,7 +267,7 @@
   virtual VideoMediaReceiveChannelInterface* AsVideoReceiveChannel() = 0;
   virtual VoiceMediaReceiveChannelInterface* AsVoiceReceiveChannel() = 0;
 
-  virtual cricket::MediaType media_type() const = 0;
+  virtual webrtc::MediaType media_type() const = 0;
   // Creates a new incoming media stream with SSRCs, CNAME as described
   // by sp. In the case of a sp without SSRCs, the unsignaled sp is cached
   // to be used later for unsignaled streams received.
diff --git a/media/engine/webrtc_video_engine.h b/media/engine/webrtc_video_engine.h
index 4844756..aab602a 100644
--- a/media/engine/webrtc_video_engine.h
+++ b/media/engine/webrtc_video_engine.h
@@ -170,7 +170,7 @@
       webrtc::VideoBitrateAllocatorFactory* bitrate_allocator_factory);
   ~WebRtcVideoSendChannel() override;
 
-  MediaType media_type() const override { return MEDIA_TYPE_VIDEO; }
+  MediaType media_type() const override { return webrtc::MediaType::VIDEO; }
   // Type manipulations
   VideoMediaSendChannelInterface* AsVideoSendChannel() override { return this; }
   VoiceMediaSendChannelInterface* AsVoiceSendChannel() override {
@@ -574,7 +574,7 @@
   ~WebRtcVideoReceiveChannel() override;
 
  public:
-  MediaType media_type() const override { return MEDIA_TYPE_VIDEO; }
+  MediaType media_type() const override { return webrtc::MediaType::VIDEO; }
   VideoMediaReceiveChannelInterface* AsVideoReceiveChannel() override {
     return this;
   }
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index 2429599..a7a7340 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -5108,7 +5108,7 @@
 
   webrtc::RtpCodec vp9_rtp_codec;
   vp9_rtp_codec.name = "VP9";
-  vp9_rtp_codec.kind = cricket::MEDIA_TYPE_VIDEO;
+  vp9_rtp_codec.kind = webrtc::MediaType::VIDEO;
   vp9_rtp_codec.clock_rate = 90000;
   initial_params.encodings[0].codec = vp9_rtp_codec;
 
diff --git a/media/engine/webrtc_voice_engine.h b/media/engine/webrtc_voice_engine.h
index 1f7f361..0f1be3e 100644
--- a/media/engine/webrtc_voice_engine.h
+++ b/media/engine/webrtc_voice_engine.h
@@ -200,7 +200,7 @@
 
   ~WebRtcVoiceSendChannel() override;
 
-  MediaType media_type() const override { return MEDIA_TYPE_AUDIO; }
+  MediaType media_type() const override { return webrtc::MediaType::AUDIO; }
   VideoMediaSendChannelInterface* AsVideoSendChannel() override {
     RTC_CHECK_NOTREACHED();
     return nullptr;
@@ -363,7 +363,7 @@
 
   ~WebRtcVoiceReceiveChannel() override;
 
-  MediaType media_type() const override { return MEDIA_TYPE_AUDIO; }
+  MediaType media_type() const override { return webrtc::MediaType::AUDIO; }
 
   VideoMediaReceiveChannelInterface* AsVideoReceiveChannel() override {
     RTC_CHECK_NOTREACHED();
diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc
index 74e3d1f..1db9c22 100644
--- a/media/engine/webrtc_voice_engine_unittest.cc
+++ b/media/engine/webrtc_voice_engine_unittest.cc
@@ -1449,7 +1449,7 @@
 
   webrtc::RtpCodec opus_rtp_codec;
   opus_rtp_codec.name = "opus";
-  opus_rtp_codec.kind = cricket::MEDIA_TYPE_AUDIO;
+  opus_rtp_codec.kind = webrtc::MediaType::AUDIO;
   opus_rtp_codec.num_channels = 2;
   opus_rtp_codec.clock_rate = 48000;
   initial_params.encodings[0].codec = opus_rtp_codec;
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index 6d6d804..c3eeced 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -669,7 +669,7 @@
   rtc::Buffer encrypted_video_payload;
   if (frame_encryptor_ != nullptr) {
     const size_t max_ciphertext_size =
-        frame_encryptor_->GetMaxCiphertextByteSize(cricket::MEDIA_TYPE_VIDEO,
+        frame_encryptor_->GetMaxCiphertextByteSize(webrtc::MediaType::VIDEO,
                                                    payload.size());
     encrypted_video_payload.SetSize(max_ciphertext_size);
 
@@ -682,7 +682,7 @@
     }
 
     if (frame_encryptor_->Encrypt(
-            cricket::MEDIA_TYPE_VIDEO, first_packet->Ssrc(), additional_data,
+            webrtc::MediaType::VIDEO, first_packet->Ssrc(), additional_data,
             payload, encrypted_video_payload, &bytes_written) != 0) {
       return false;
     }
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index c18cb39..24bf325 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -461,6 +461,7 @@
     "../media:codec_list",
     "../media:media_constants",
     "../media:media_engine",
+    "../rtc_base:logging",
     "//third_party/abseil-cpp/absl/strings:string_view",
   ]
 }
@@ -2630,6 +2631,7 @@
       "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/strings",
       "//third_party/abseil-cpp/absl/strings:string_view",
+      "//third_party/jsoncpp",
     ]
 
     # These deps are kept separately because they can't be automatically
diff --git a/pc/DEPS b/pc/DEPS
index 959885f..dd44ac1 100644
--- a/pc/DEPS
+++ b/pc/DEPS
@@ -16,3 +16,10 @@
   "+system_wrappers",
   "+absl/strings/str_cat.h",
 ]
+
+specific_include_rules = {
+  "rtc_stats_collector_unittest.cc": [
+    "+json/reader.h",
+    "+json/value.h",
+  ],
+}
\ No newline at end of file
diff --git a/pc/audio_rtp_receiver.h b/pc/audio_rtp_receiver.h
index e5942e7..d146bc8 100644
--- a/pc/audio_rtp_receiver.h
+++ b/pc/audio_rtp_receiver.h
@@ -82,8 +82,8 @@
   std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams()
       const override;
 
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_AUDIO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::AUDIO;
   }
 
   std::string id() const override { return id_; }
diff --git a/pc/channel.cc b/pc/channel.cc
index 012143d..889a894 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -100,8 +100,8 @@
     const RtpHeaderExtensions& extensions,
     bool is_stream_active,
     MediaChannelParameters* params) {
-  RTC_DCHECK(desc->type() == MEDIA_TYPE_AUDIO ||
-             desc->type() == MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(desc->type() == webrtc::MediaType::AUDIO ||
+             desc->type() == webrtc::MediaType::VIDEO);
   params->is_stream_active = is_stream_active;
   params->codecs = desc->codecs();
   // TODO(bugs.webrtc.org/11513): See if we really need
diff --git a/pc/channel.h b/pc/channel.h
index 3a3680f..7840693 100644
--- a/pc/channel.h
+++ b/pc/channel.h
@@ -412,8 +412,8 @@
     return receive_channel();
   }
 
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_AUDIO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::AUDIO;
   }
 
  private:
@@ -481,8 +481,8 @@
     return receive_channel();
   }
 
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_VIDEO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::VIDEO;
   }
 
  private:
diff --git a/pc/channel_interface.h b/pc/channel_interface.h
index 0500b87..7b8011d 100644
--- a/pc/channel_interface.h
+++ b/pc/channel_interface.h
@@ -49,7 +49,7 @@
 class ChannelInterface {
  public:
   virtual ~ChannelInterface() = default;
-  virtual cricket::MediaType media_type() const = 0;
+  virtual webrtc::MediaType media_type() const = 0;
 
   virtual VideoChannel* AsVideoChannel() = 0;
   virtual VoiceChannel* AsVoiceChannel() = 0;
diff --git a/pc/codec_vendor.cc b/pc/codec_vendor.cc
index 6db82b5..34e6edc 100644
--- a/pc/codec_vendor.cc
+++ b/pc/codec_vendor.cc
@@ -345,9 +345,9 @@
     if (!checked_codec_list.ok()) {
       RTC_LOG(LS_ERROR) << checked_codec_list.error();
     }
-    if (IsMediaContentOfType(content, MEDIA_TYPE_AUDIO)) {
+    if (IsMediaContentOfType(content, webrtc::MediaType::AUDIO)) {
       MergeCodecs(checked_codec_list.value(), audio_codecs, used_pltypes);
-    } else if (IsMediaContentOfType(content, MEDIA_TYPE_VIDEO)) {
+    } else if (IsMediaContentOfType(content, webrtc::MediaType::VIDEO)) {
       MergeCodecs(checked_codec_list.value(), video_codecs, used_pltypes);
     }
   }
@@ -387,7 +387,7 @@
   // Ideally this should be done for all codecs, but RFCs of other codecs
   // do not clear define the expected behavior for the level in the offer.
 #ifdef RTC_ENABLE_H265
-  if (media_description_options.type == MEDIA_TYPE_VIDEO) {
+  if (media_description_options.type == webrtc::MediaType::VIDEO) {
     std::unordered_map<webrtc::H265Profile, webrtc::H265Level>
         supported_h265_profiles;
     // The assumption here is that H.265 codecs with the same profile and tier
@@ -577,7 +577,7 @@
     const CodecList& codecs) {
   CodecList filtered_codecs;
   CodecList supported_codecs =
-      media_description_options.type == MEDIA_TYPE_AUDIO
+      media_description_options.type == webrtc::MediaType::AUDIO
           ? GetAudioCodecsForOffer(media_description_options.direction)
           : GetVideoCodecsForOffer(media_description_options.direction);
 
@@ -626,7 +626,7 @@
             !FindMatchingCodec(supported_codecs, filtered_codecs, codec)) {
           // Use the `found_codec` from `codecs` because it has the
           // correctly mapped payload type (most of the time).
-          if (media_description_options.type == MEDIA_TYPE_VIDEO &&
+          if (media_description_options.type == webrtc::MediaType::VIDEO &&
               found_codec->GetResiliencyType() == Codec::ResiliencyType::kRtx) {
             // For RTX we might need to adjust the apt parameter if we got a
             // remote offer without RTX for a codec for which we support RTX.
@@ -651,11 +651,11 @@
       }
     }
 
-    if (media_description_options.type == MEDIA_TYPE_AUDIO &&
+    if (media_description_options.type == webrtc::MediaType::AUDIO &&
         !session_options.vad_enabled) {
       // If application doesn't want CN codecs in offer.
       StripCNCodecs(filtered_codecs);
-    } else if (media_description_options.type == MEDIA_TYPE_VIDEO &&
+    } else if (media_description_options.type == webrtc::MediaType::VIDEO &&
                session_options.raw_packetization_for_video) {
       for (Codec& codec : filtered_codecs) {
         if (codec.IsMediaCodec()) {
@@ -693,7 +693,7 @@
   CodecList negotiated_codecs;
   if (media_description_options.codecs_to_include.empty()) {
     const CodecList& supported_codecs =
-        media_description_options.type == MEDIA_TYPE_AUDIO
+        media_description_options.type == webrtc::MediaType::AUDIO
             ? GetAudioCodecsForAnswer(offer_rtd, answer_rtd)
             : GetVideoCodecsForAnswer(offer_rtd, answer_rtd);
     if (!media_description_options.codec_preferences.empty()) {
@@ -738,11 +738,11 @@
       filtered_codecs = ComputeCodecsUnion(filtered_codecs, other_codecs);
     }
 
-    if (media_description_options.type == MEDIA_TYPE_AUDIO &&
+    if (media_description_options.type == webrtc::MediaType::AUDIO &&
         !session_options.vad_enabled) {
       // If application doesn't want CN codecs in offer.
       StripCNCodecs(filtered_codecs);
-    } else if (media_description_options.type == MEDIA_TYPE_VIDEO &&
+    } else if (media_description_options.type == webrtc::MediaType::VIDEO &&
                session_options.raw_packetization_for_video) {
       for (Codec& codec : filtered_codecs) {
         if (codec.IsMediaCodec()) {
@@ -780,16 +780,16 @@
   // the codecs are explicitly set by the test.
   if (media_engine) {
     audio_send_codecs_ =
-        TypedCodecVendor(media_engine, MEDIA_TYPE_AUDIO,
+        TypedCodecVendor(media_engine, webrtc::MediaType::AUDIO,
                          /* is_sender= */ true, rtx_enabled, trials);
     audio_recv_codecs_ =
-        TypedCodecVendor(media_engine, MEDIA_TYPE_AUDIO,
+        TypedCodecVendor(media_engine, webrtc::MediaType::AUDIO,
                          /* is_sender= */ false, rtx_enabled, trials);
     video_send_codecs_ =
-        TypedCodecVendor(media_engine, MEDIA_TYPE_VIDEO,
+        TypedCodecVendor(media_engine, webrtc::MediaType::VIDEO,
                          /* is_sender= */ true, rtx_enabled, trials);
     video_recv_codecs_ =
-        TypedCodecVendor(media_engine, MEDIA_TYPE_VIDEO,
+        TypedCodecVendor(media_engine, webrtc::MediaType::VIDEO,
                          /* is_sender= */ false, rtx_enabled, trials);
   }
 }
@@ -876,7 +876,7 @@
     if (!offered_codecs.ok()) {
       return offered_codecs.MoveError();
     }
-    if (IsMediaContentOfType(&content, MEDIA_TYPE_AUDIO)) {
+    if (IsMediaContentOfType(&content, webrtc::MediaType::AUDIO)) {
       for (const Codec& offered_audio_codec : offered_codecs.value()) {
         if (!FindMatchingCodec(offered_codecs.value(),
                                filtered_offered_audio_codecs,
@@ -886,7 +886,7 @@
           filtered_offered_audio_codecs.push_back(offered_audio_codec);
         }
       }
-    } else if (IsMediaContentOfType(&content, MEDIA_TYPE_VIDEO)) {
+    } else if (IsMediaContentOfType(&content, webrtc::MediaType::VIDEO)) {
       std::vector<Codec> pending_rtx_codecs;
       for (const Codec& offered_video_codec : offered_codecs.value()) {
         if (!FindMatchingCodec(offered_codecs.value(),
diff --git a/pc/legacy_stats_collector.cc b/pc/legacy_stats_collector.cc
index 300a4e1..398d620 100644
--- a/pc/legacy_stats_collector.cc
+++ b/pc/legacy_stats_collector.cc
@@ -15,9 +15,11 @@
 
 #include <algorithm>
 #include <cmath>
-#include <list>
+#include <map>
+#include <memory>
 #include <optional>
 #include <set>
+#include <string>
 #include <utility>
 #include <vector>
 
@@ -27,19 +29,24 @@
 #include "api/candidate.h"
 #include "api/data_channel_interface.h"
 #include "api/field_trials_view.h"
+#include "api/legacy_stats_types.h"
+#include "api/media_stream_interface.h"
 #include "api/media_types.h"
+#include "api/peer_connection_interface.h"
 #include "api/rtp_sender_interface.h"
 #include "api/scoped_refptr.h"
 #include "api/sequence_checker.h"
 #include "api/video/video_content_type.h"
-#include "api/video/video_timing.h"
 #include "call/call.h"
 #include "media/base/media_channel.h"
+#include "p2p/base/connection_info.h"
 #include "p2p/base/ice_transport_internal.h"
 #include "p2p/base/p2p_constants.h"
+#include "p2p/base/port.h"
 #include "pc/channel.h"
 #include "pc/channel_interface.h"
 #include "pc/data_channel_utils.h"
+#include "pc/peer_connection_internal.h"
 #include "pc/rtp_receiver.h"
 #include "pc/rtp_receiver_proxy.h"
 #include "pc/rtp_sender_proxy.h"
@@ -48,8 +55,10 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/ip_address.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/network_constants.h"
 #include "rtc_base/rtc_certificate.h"
 #include "rtc_base/socket_address.h"
+#include "rtc_base/ssl_certificate.h"
 #include "rtc_base/ssl_stream_adapter.h"
 #include "rtc_base/string_encode.h"
 #include "rtc_base/thread.h"
@@ -1060,7 +1069,7 @@
   auto transceivers = pc_->GetTransceiversInternal();
   std::vector<cricket::VideoMediaSendChannelInterface*> video_media_channels;
   for (const auto& transceiver : transceivers) {
-    if (transceiver->media_type() != cricket::MEDIA_TYPE_VIDEO) {
+    if (transceiver->media_type() != webrtc::MediaType::VIDEO) {
       continue;
     }
     auto* video_channel = transceiver->internal()->channel();
@@ -1193,11 +1202,11 @@
 std::unique_ptr<ChannelStatsGatherer> CreateChannelStatsGatherer(
     cricket::ChannelInterface* channel) {
   RTC_DCHECK(channel);
-  if (channel->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+  if (channel->media_type() == webrtc::MediaType::AUDIO) {
     return std::make_unique<VoiceChannelStatsGatherer>(
         channel->AsVoiceChannel());
   } else {
-    RTC_DCHECK_EQ(channel->media_type(), cricket::MEDIA_TYPE_VIDEO);
+    RTC_DCHECK_EQ(channel->media_type(), webrtc::MediaType::VIDEO);
     return std::make_unique<VideoChannelStatsGatherer>(
         channel->AsVideoChannel());
   }
diff --git a/pc/legacy_stats_collector_unittest.cc b/pc/legacy_stats_collector_unittest.cc
index 268eabf..9ab8511 100644
--- a/pc/legacy_stats_collector_unittest.cc
+++ b/pc/legacy_stats_collector_unittest.cc
@@ -13,23 +13,31 @@
 #include <stdio.h>
 
 #include <cstdint>
+#include <memory>
 #include <optional>
+#include <string>
+#include <utility>
+#include <vector>
 
 #include "absl/algorithm/container.h"
 #include "api/audio/audio_processing_statistics.h"
 #include "api/audio_codecs/audio_encoder.h"
 #include "api/candidate.h"
 #include "api/data_channel_interface.h"
+#include "api/legacy_stats_types.h"
+#include "api/make_ref_counted.h"
+#include "api/media_stream_interface.h"
 #include "api/media_stream_track.h"
 #include "api/media_types.h"
+#include "api/peer_connection_interface.h"
 #include "api/rtp_sender_interface.h"
 #include "api/scoped_refptr.h"
 #include "call/call.h"
 #include "media/base/media_channel.h"
+#include "p2p/base/connection_info.h"
 #include "p2p/base/ice_transport_internal.h"
 #include "pc/media_stream.h"
-#include "pc/rtp_receiver.h"
-#include "pc/rtp_sender.h"
+#include "pc/peer_connection_internal.h"
 #include "pc/sctp_data_channel.h"
 #include "pc/test/fake_peer_connection_for_stats.h"
 #include "pc/test/fake_video_track_source.h"
@@ -37,9 +45,11 @@
 #include "pc/test/mock_rtp_sender_internal.h"
 #include "pc/transport_stats.h"
 #include "pc/video_track.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/fake_ssl_identity.h"
 #include "rtc_base/message_digest.h"
 #include "rtc_base/net_helper.h"
+#include "rtc_base/network_constants.h"
 #include "rtc_base/null_socket_server.h"
 #include "rtc_base/rtc_certificate.h"
 #include "rtc_base/socket_address.h"
@@ -736,8 +746,8 @@
   EXPECT_CALL(*sender, media_type())
       .WillRepeatedly(
           Return(track->kind() == MediaStreamTrackInterface::kAudioKind
-                     ? cricket::MEDIA_TYPE_AUDIO
-                     : cricket::MEDIA_TYPE_VIDEO));
+                     ? webrtc::MediaType::AUDIO
+                     : webrtc::MediaType::VIDEO));
   EXPECT_CALL(*sender, SetMediaChannel(_)).Times(AtMost(2));
   EXPECT_CALL(*sender, SetTransceiverAsStopped()).Times(AtMost(1));
   EXPECT_CALL(*sender, Stop());
@@ -753,8 +763,8 @@
   EXPECT_CALL(*receiver, media_type())
       .WillRepeatedly(
           Return(track->kind() == MediaStreamTrackInterface::kAudioKind
-                     ? cricket::MEDIA_TYPE_AUDIO
-                     : cricket::MEDIA_TYPE_VIDEO));
+                     ? webrtc::MediaType::AUDIO
+                     : webrtc::MediaType::VIDEO));
   EXPECT_CALL(*receiver, SetMediaChannel(_)).WillRepeatedly(Return());
   EXPECT_CALL(*receiver, Stop()).WillRepeatedly(Return());
   return receiver;
diff --git a/pc/media_options.cc b/pc/media_options.cc
index 5ad8795..6326ebb 100644
--- a/pc/media_options.cc
+++ b/pc/media_options.cc
@@ -38,7 +38,7 @@
 void MediaDescriptionOptions::AddAudioSender(
     const std::string& track_id,
     const std::vector<std::string>& stream_ids) {
-  RTC_DCHECK(type == MEDIA_TYPE_AUDIO);
+  RTC_DCHECK(type == webrtc::MediaType::AUDIO);
   AddSenderInternal(track_id, stream_ids, {}, SimulcastLayerList(), 1);
 }
 
@@ -48,7 +48,7 @@
     const std::vector<RidDescription>& rids,
     const SimulcastLayerList& simulcast_layers,
     int num_sim_layers) {
-  RTC_DCHECK(type == MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(type == webrtc::MediaType::VIDEO);
   RTC_DCHECK(rids.empty() || num_sim_layers == 0)
       << "RIDs are the compliant way to indicate simulcast.";
   RTC_DCHECK(ValidateSimulcastLayers(rids, simulcast_layers));
diff --git a/pc/media_options.h b/pc/media_options.h
index c70e956..0e268e0 100644
--- a/pc/media_options.h
+++ b/pc/media_options.h
@@ -90,9 +90,13 @@
 struct MediaSessionOptions {
   MediaSessionOptions() {}
 
-  bool has_audio() const { return HasMediaDescription(MEDIA_TYPE_AUDIO); }
-  bool has_video() const { return HasMediaDescription(MEDIA_TYPE_VIDEO); }
-  bool has_data() const { return HasMediaDescription(MEDIA_TYPE_DATA); }
+  bool has_audio() const {
+    return HasMediaDescription(webrtc::MediaType::AUDIO);
+  }
+  bool has_video() const {
+    return HasMediaDescription(webrtc::MediaType::VIDEO);
+  }
+  bool has_data() const { return HasMediaDescription(webrtc::MediaType::DATA); }
 
   bool HasMediaDescription(MediaType type) const;
 
diff --git a/pc/media_session.cc b/pc/media_session.cc
index ab41adc..90110aa 100644
--- a/pc/media_session.cc
+++ b/pc/media_session.cc
@@ -145,7 +145,7 @@
 }
 
 bool IsMediaContentOfType(const ContentInfo* content,
-                          cricket::MediaType media_type) {
+                          webrtc::MediaType media_type) {
   if (!content || !content->media_description()) {
     return false;
   }
@@ -249,8 +249,8 @@
   RTC_DCHECK_EQ(1, description->streams().size())
       << "RIDs are only supported in Unified Plan semantics.";
   RTC_DCHECK_EQ(1, media_description_options.sender_options.size());
-  RTC_DCHECK(description->type() == cricket::MediaType::MEDIA_TYPE_AUDIO ||
-             description->type() == cricket::MediaType::MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(description->type() == webrtc::MediaType::AUDIO ||
+             description->type() == webrtc::MediaType::VIDEO);
 
   // One RID or less indicates that simulcast is not needed.
   if (description->streams()[0].rids().size() <= 1) {
@@ -556,8 +556,8 @@
     cricket::StreamParamsVec* current_streams,
     MediaContentDescription* answer,
     const FieldTrialsView& field_trials) {
-  RTC_DCHECK(offer->type() == cricket::MEDIA_TYPE_AUDIO ||
-             offer->type() == cricket::MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(offer->type() == webrtc::MediaType::AUDIO ||
+             offer->type() == webrtc::MediaType::VIDEO);
   answer->AddCodecs(local_codecs);
   answer->set_protocol(offer->protocol());
   if (!AddStreamParams(media_description_options.sender_options,
@@ -625,7 +625,7 @@
   return true;
 }
 
-bool IsMediaProtocolSupported(cricket::MediaType type,
+bool IsMediaProtocolSupported(webrtc::MediaType type,
                               const std::string& protocol,
                               bool secure_transport) {
   // Since not all applications serialize and deserialize the media protocol,
@@ -634,7 +634,7 @@
     return true;
   }
 
-  if (type == cricket::MEDIA_TYPE_DATA) {
+  if (type == webrtc::MediaType::DATA) {
     // Check for SCTP
     if (secure_transport) {
       // Most likely scenarios first.
@@ -763,26 +763,26 @@
       // Media type must match unless this media section is being recycled.
     }
     switch (media_description_options.type) {
-      case cricket::MEDIA_TYPE_AUDIO:
-      case cricket::MEDIA_TYPE_VIDEO:
+      case webrtc::MediaType::AUDIO:
+      case webrtc::MediaType::VIDEO:
         error = AddRtpContentForOffer(
             media_description_options, session_options, current_content,
             current_description,
-            media_description_options.type == cricket::MEDIA_TYPE_AUDIO
+            media_description_options.type == webrtc::MediaType::AUDIO
                 ? extensions_with_ids.audio
                 : extensions_with_ids.video,
-            media_description_options.type == cricket::MEDIA_TYPE_AUDIO
+            media_description_options.type == webrtc::MediaType::AUDIO
                 ? offer_audio_codecs
                 : offer_video_codecs,
             &current_streams, offer.get(), &ice_credentials);
         break;
-      case cricket::MEDIA_TYPE_DATA:
+      case webrtc::MediaType::DATA:
         error = AddDataContentForOffer(media_description_options,
                                        session_options, current_content,
                                        current_description, &current_streams,
                                        offer.get(), &ice_credentials);
         break;
-      case cricket::MEDIA_TYPE_UNSUPPORTED:
+      case webrtc::MediaType::UNSUPPORTED:
         error = AddUnsupportedContentForOffer(
             media_description_options, session_options, current_content,
             current_description, offer.get(), &ice_credentials);
@@ -959,24 +959,24 @@
         RtpHeaderExtensionsFromCapabilities(
             UnstoppedRtpHeaderExtensionCapabilities(header_extensions_in));
     switch (media_description_options.type) {
-      case cricket::MEDIA_TYPE_AUDIO:
-      case cricket::MEDIA_TYPE_VIDEO:
+      case webrtc::MediaType::AUDIO:
+      case webrtc::MediaType::VIDEO:
         error = AddRtpContentForAnswer(
             media_description_options, session_options, offer_content, offer,
             current_content, current_description, bundle_transport,
-            media_description_options.type == cricket::MEDIA_TYPE_AUDIO
+            media_description_options.type == webrtc::MediaType::AUDIO
                 ? answer_audio_codecs
                 : answer_video_codecs,
             header_extensions, &current_streams, answer.get(),
             &ice_credentials);
         break;
-      case cricket::MEDIA_TYPE_DATA:
+      case webrtc::MediaType::DATA:
         error = AddDataContentForAnswer(
             media_description_options, session_options, offer_content, offer,
             current_content, current_description, bundle_transport,
             &current_streams, answer.get(), &ice_credentials);
         break;
-      case cricket::MEDIA_TYPE_UNSUPPORTED:
+      case webrtc::MediaType::UNSUPPORTED:
         error = AddUnsupportedContentForAnswer(
             media_description_options, session_options, offer_content, offer,
             current_content, current_description, bundle_transport,
@@ -1094,12 +1094,12 @@
   // Add them to `used_ids` so the local ids are not reused if a new media
   // type is added.
   for (const cricket::ContentInfo* content : current_active_contents) {
-    if (IsMediaContentOfType(content, cricket::MEDIA_TYPE_AUDIO)) {
+    if (IsMediaContentOfType(content, webrtc::MediaType::AUDIO)) {
       MergeRtpHdrExts(content->media_description()->rtp_header_extensions(),
                       enable_encrypted_rtp_header_extensions_,
                       &offered_extensions.audio, &all_encountered_extensions,
                       &used_ids);
-    } else if (IsMediaContentOfType(content, cricket::MEDIA_TYPE_VIDEO)) {
+    } else if (IsMediaContentOfType(content, webrtc::MediaType::VIDEO)) {
       MergeRtpHdrExts(content->media_description()->rtp_header_extensions(),
                       enable_encrypted_rtp_header_extensions_,
                       &offered_extensions.video, &all_encountered_extensions,
@@ -1114,11 +1114,11 @@
     cricket::RtpHeaderExtensions filtered_extensions =
         filtered_rtp_header_extensions(UnstoppedOrPresentRtpHeaderExtensions(
             entry.header_extensions, all_encountered_extensions));
-    if (entry.type == cricket::MEDIA_TYPE_AUDIO)
+    if (entry.type == webrtc::MediaType::AUDIO)
       MergeRtpHdrExts(
           filtered_extensions, enable_encrypted_rtp_header_extensions_,
           &offered_extensions.audio, &all_encountered_extensions, &used_ids);
-    else if (entry.type == cricket::MEDIA_TYPE_VIDEO)
+    else if (entry.type == webrtc::MediaType::VIDEO)
       MergeRtpHdrExts(
           filtered_extensions, enable_encrypted_rtp_header_extensions_,
           &offered_extensions.video, &all_encountered_extensions, &used_ids);
@@ -1199,8 +1199,8 @@
     cricket::StreamParamsVec* current_streams,
     SessionDescription* session_description,
     cricket::IceCredentialsIterator* ice_credentials) const {
-  RTC_DCHECK(media_description_options.type == cricket::MEDIA_TYPE_AUDIO ||
-             media_description_options.type == cricket::MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(media_description_options.type == webrtc::MediaType::AUDIO ||
+             media_description_options.type == webrtc::MediaType::VIDEO);
 
   std::vector<cricket::Codec> codecs_to_include;
   std::string mid = media_description_options.mid;
@@ -1213,7 +1213,7 @@
   }
   codecs_to_include = error_or_filtered_codecs.MoveValue();
   std::unique_ptr<MediaContentDescription> content_description;
-  if (media_description_options.type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_description_options.type == webrtc::MediaType::AUDIO) {
     content_description = std::make_unique<AudioContentDescription>();
   } else {
     content_description = std::make_unique<VideoContentDescription>();
@@ -1292,7 +1292,7 @@
     SessionDescription* desc,
     cricket::IceCredentialsIterator* ice_credentials) const {
   RTC_CHECK(
-      IsMediaContentOfType(current_content, cricket::MEDIA_TYPE_UNSUPPORTED));
+      IsMediaContentOfType(current_content, webrtc::MediaType::UNSUPPORTED));
 
   const UnsupportedContentDescription* current_unsupported_description =
       current_content->media_description()->as_unsupported();
@@ -1332,12 +1332,12 @@
     cricket::StreamParamsVec* current_streams,
     SessionDescription* answer,
     cricket::IceCredentialsIterator* ice_credentials) const {
-  RTC_DCHECK(media_description_options.type == cricket::MEDIA_TYPE_AUDIO ||
-             media_description_options.type == cricket::MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(media_description_options.type == webrtc::MediaType::AUDIO ||
+             media_description_options.type == webrtc::MediaType::VIDEO);
   RTC_CHECK(
       IsMediaContentOfType(offer_content, media_description_options.type));
   const RtpMediaContentDescription* offer_content_description;
-  if (media_description_options.type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_description_options.type == webrtc::MediaType::AUDIO) {
     offer_content_description = offer_content->media_description()->as_audio();
   } else {
     offer_content_description = offer_content->media_description()->as_video();
@@ -1387,7 +1387,7 @@
       offer_description->HasGroup(cricket::GROUP_TYPE_BUNDLE) &&
       session_options.bundle_enabled;
   std::unique_ptr<MediaContentDescription> answer_content;
-  if (media_description_options.type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_description_options.type == webrtc::MediaType::AUDIO) {
     answer_content = std::make_unique<AudioContentDescription>();
   } else {
     answer_content = std::make_unique<VideoContentDescription>();
@@ -1424,7 +1424,7 @@
                                  : transport->secure();
   bool rejected = media_description_options.stopped ||
                   offer_content->rejected || !has_usable_media_codecs ||
-                  !IsMediaProtocolSupported(cricket::MEDIA_TYPE_AUDIO,
+                  !IsMediaProtocolSupported(webrtc::MediaType::AUDIO,
                                             answer_content->protocol(), secure);
   if (rejected) {
     RTC_LOG(LS_INFO) << "m= section '" << media_description_options.mid
@@ -1468,7 +1468,7 @@
   bool bundle_enabled =
       offer_description->HasGroup(cricket::GROUP_TYPE_BUNDLE) &&
       session_options.bundle_enabled;
-  RTC_CHECK(IsMediaContentOfType(offer_content, cricket::MEDIA_TYPE_DATA));
+  RTC_CHECK(IsMediaContentOfType(offer_content, webrtc::MediaType::DATA));
   std::unique_ptr<MediaContentDescription> data_answer;
   if (offer_content->media_description()->as_sctp()) {
     // SCTP data content
@@ -1509,7 +1509,7 @@
 
   bool rejected = media_description_options.stopped ||
                   offer_content->rejected ||
-                  !IsMediaProtocolSupported(cricket::MEDIA_TYPE_DATA,
+                  !IsMediaProtocolSupported(webrtc::MediaType::DATA,
                                             data_answer->protocol(), secure);
   auto error = AddTransportAnswer(media_description_options.mid,
                                   *data_transport, answer);
@@ -1543,7 +1543,7 @@
         "Failed to create transport answer, unsupported transport is missing");
   }
   RTC_CHECK(
-      IsMediaContentOfType(offer_content, cricket::MEDIA_TYPE_UNSUPPORTED));
+      IsMediaContentOfType(offer_content, webrtc::MediaType::UNSUPPORTED));
 
   const UnsupportedContentDescription* offer_unsupported_description =
       offer_content->media_description()->as_unsupported();
@@ -1569,23 +1569,23 @@
 }
 
 bool IsAudioContent(const ContentInfo* content) {
-  return IsMediaContentOfType(content, cricket::MEDIA_TYPE_AUDIO);
+  return IsMediaContentOfType(content, webrtc::MediaType::AUDIO);
 }
 
 bool IsVideoContent(const ContentInfo* content) {
-  return IsMediaContentOfType(content, cricket::MEDIA_TYPE_VIDEO);
+  return IsMediaContentOfType(content, webrtc::MediaType::VIDEO);
 }
 
 bool IsDataContent(const ContentInfo* content) {
-  return IsMediaContentOfType(content, cricket::MEDIA_TYPE_DATA);
+  return IsMediaContentOfType(content, webrtc::MediaType::DATA);
 }
 
 bool IsUnsupportedContent(const ContentInfo* content) {
-  return IsMediaContentOfType(content, cricket::MEDIA_TYPE_UNSUPPORTED);
+  return IsMediaContentOfType(content, webrtc::MediaType::UNSUPPORTED);
 }
 
 const ContentInfo* GetFirstMediaContent(const cricket::ContentInfos& contents,
-                                        cricket::MediaType media_type) {
+                                        webrtc::MediaType media_type) {
   for (const cricket::ContentInfo& content : contents) {
     if (IsMediaContentOfType(&content, media_type)) {
       return &content;
@@ -1595,19 +1595,19 @@
 }
 
 const ContentInfo* GetFirstAudioContent(const cricket::ContentInfos& contents) {
-  return GetFirstMediaContent(contents, cricket::MEDIA_TYPE_AUDIO);
+  return GetFirstMediaContent(contents, webrtc::MediaType::AUDIO);
 }
 
 const ContentInfo* GetFirstVideoContent(const cricket::ContentInfos& contents) {
-  return GetFirstMediaContent(contents, cricket::MEDIA_TYPE_VIDEO);
+  return GetFirstMediaContent(contents, webrtc::MediaType::VIDEO);
 }
 
 const ContentInfo* GetFirstDataContent(const cricket::ContentInfos& contents) {
-  return GetFirstMediaContent(contents, cricket::MEDIA_TYPE_DATA);
+  return GetFirstMediaContent(contents, webrtc::MediaType::DATA);
 }
 
 const ContentInfo* GetFirstMediaContent(const SessionDescription* sdesc,
-                                        cricket::MediaType media_type) {
+                                        webrtc::MediaType media_type) {
   if (sdesc == nullptr) {
     return nullptr;
   }
@@ -1616,39 +1616,39 @@
 }
 
 const ContentInfo* GetFirstAudioContent(const SessionDescription* sdesc) {
-  return GetFirstMediaContent(sdesc, cricket::MEDIA_TYPE_AUDIO);
+  return GetFirstMediaContent(sdesc, webrtc::MediaType::AUDIO);
 }
 
 const ContentInfo* GetFirstVideoContent(const SessionDescription* sdesc) {
-  return GetFirstMediaContent(sdesc, cricket::MEDIA_TYPE_VIDEO);
+  return GetFirstMediaContent(sdesc, webrtc::MediaType::VIDEO);
 }
 
 const ContentInfo* GetFirstDataContent(const SessionDescription* sdesc) {
-  return GetFirstMediaContent(sdesc, cricket::MEDIA_TYPE_DATA);
+  return GetFirstMediaContent(sdesc, webrtc::MediaType::DATA);
 }
 
 const MediaContentDescription* GetFirstMediaContentDescription(
     const SessionDescription* sdesc,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   const ContentInfo* content = GetFirstMediaContent(sdesc, media_type);
   return (content ? content->media_description() : nullptr);
 }
 
 const AudioContentDescription* GetFirstAudioContentDescription(
     const SessionDescription* sdesc) {
-  auto desc = GetFirstMediaContentDescription(sdesc, cricket::MEDIA_TYPE_AUDIO);
+  auto desc = GetFirstMediaContentDescription(sdesc, webrtc::MediaType::AUDIO);
   return desc ? desc->as_audio() : nullptr;
 }
 
 const VideoContentDescription* GetFirstVideoContentDescription(
     const SessionDescription* sdesc) {
-  auto desc = GetFirstMediaContentDescription(sdesc, cricket::MEDIA_TYPE_VIDEO);
+  auto desc = GetFirstMediaContentDescription(sdesc, webrtc::MediaType::VIDEO);
   return desc ? desc->as_video() : nullptr;
 }
 
 const SctpDataContentDescription* GetFirstSctpDataContentDescription(
     const SessionDescription* sdesc) {
-  auto desc = GetFirstMediaContentDescription(sdesc, cricket::MEDIA_TYPE_DATA);
+  auto desc = GetFirstMediaContentDescription(sdesc, webrtc::MediaType::DATA);
   return desc ? desc->as_sctp() : nullptr;
 }
 
@@ -1657,7 +1657,7 @@
 //
 
 ContentInfo* GetFirstMediaContent(cricket::ContentInfos* contents,
-                                  cricket::MediaType media_type) {
+                                  webrtc::MediaType media_type) {
   for (cricket::ContentInfo& content : *contents) {
     if (IsMediaContentOfType(&content, media_type)) {
       return &content;
@@ -1667,19 +1667,19 @@
 }
 
 ContentInfo* GetFirstAudioContent(cricket::ContentInfos* contents) {
-  return GetFirstMediaContent(contents, cricket::MEDIA_TYPE_AUDIO);
+  return GetFirstMediaContent(contents, webrtc::MediaType::AUDIO);
 }
 
 ContentInfo* GetFirstVideoContent(cricket::ContentInfos* contents) {
-  return GetFirstMediaContent(contents, cricket::MEDIA_TYPE_VIDEO);
+  return GetFirstMediaContent(contents, webrtc::MediaType::VIDEO);
 }
 
 ContentInfo* GetFirstDataContent(cricket::ContentInfos* contents) {
-  return GetFirstMediaContent(contents, cricket::MEDIA_TYPE_DATA);
+  return GetFirstMediaContent(contents, webrtc::MediaType::DATA);
 }
 
 ContentInfo* GetFirstMediaContent(SessionDescription* sdesc,
-                                  cricket::MediaType media_type) {
+                                  webrtc::MediaType media_type) {
   if (sdesc == nullptr) {
     return nullptr;
   }
@@ -1688,39 +1688,39 @@
 }
 
 ContentInfo* GetFirstAudioContent(SessionDescription* sdesc) {
-  return GetFirstMediaContent(sdesc, cricket::MEDIA_TYPE_AUDIO);
+  return GetFirstMediaContent(sdesc, webrtc::MediaType::AUDIO);
 }
 
 ContentInfo* GetFirstVideoContent(SessionDescription* sdesc) {
-  return GetFirstMediaContent(sdesc, cricket::MEDIA_TYPE_VIDEO);
+  return GetFirstMediaContent(sdesc, webrtc::MediaType::VIDEO);
 }
 
 ContentInfo* GetFirstDataContent(SessionDescription* sdesc) {
-  return GetFirstMediaContent(sdesc, cricket::MEDIA_TYPE_DATA);
+  return GetFirstMediaContent(sdesc, webrtc::MediaType::DATA);
 }
 
 MediaContentDescription* GetFirstMediaContentDescription(
     SessionDescription* sdesc,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   ContentInfo* content = GetFirstMediaContent(sdesc, media_type);
   return (content ? content->media_description() : nullptr);
 }
 
 AudioContentDescription* GetFirstAudioContentDescription(
     SessionDescription* sdesc) {
-  auto desc = GetFirstMediaContentDescription(sdesc, cricket::MEDIA_TYPE_AUDIO);
+  auto desc = GetFirstMediaContentDescription(sdesc, webrtc::MediaType::AUDIO);
   return desc ? desc->as_audio() : nullptr;
 }
 
 VideoContentDescription* GetFirstVideoContentDescription(
     SessionDescription* sdesc) {
-  auto desc = GetFirstMediaContentDescription(sdesc, cricket::MEDIA_TYPE_VIDEO);
+  auto desc = GetFirstMediaContentDescription(sdesc, webrtc::MediaType::VIDEO);
   return desc ? desc->as_video() : nullptr;
 }
 
 SctpDataContentDescription* GetFirstSctpDataContentDescription(
     SessionDescription* sdesc) {
-  auto desc = GetFirstMediaContentDescription(sdesc, cricket::MEDIA_TYPE_DATA);
+  auto desc = GetFirstMediaContentDescription(sdesc, webrtc::MediaType::DATA);
   return desc ? desc->as_sctp() : nullptr;
 }
 
diff --git a/pc/media_session.h b/pc/media_session.h
index ce2e19f..fcd4aea 100644
--- a/pc/media_session.h
+++ b/pc/media_session.h
@@ -197,12 +197,12 @@
 bool IsDataContent(const ContentInfo* content);
 bool IsUnsupportedContent(const ContentInfo* content);
 const ContentInfo* GetFirstMediaContent(const cricket::ContentInfos& contents,
-                                        cricket::MediaType media_type);
+                                        webrtc::MediaType media_type);
 const ContentInfo* GetFirstAudioContent(const cricket::ContentInfos& contents);
 const ContentInfo* GetFirstVideoContent(const cricket::ContentInfos& contents);
 const ContentInfo* GetFirstDataContent(const cricket::ContentInfos& contents);
 const ContentInfo* GetFirstMediaContent(const SessionDescription* sdesc,
-                                        cricket::MediaType media_type);
+                                        webrtc::MediaType media_type);
 const ContentInfo* GetFirstAudioContent(const SessionDescription* sdesc);
 const ContentInfo* GetFirstVideoContent(const SessionDescription* sdesc);
 const ContentInfo* GetFirstDataContent(const SessionDescription* sdesc);
@@ -215,12 +215,12 @@
 // Non-const versions of the above functions.
 // Useful when modifying an existing description.
 ContentInfo* GetFirstMediaContent(cricket::ContentInfos* contents,
-                                  cricket::MediaType media_type);
+                                  webrtc::MediaType media_type);
 ContentInfo* GetFirstAudioContent(cricket::ContentInfos* contents);
 ContentInfo* GetFirstVideoContent(cricket::ContentInfos* contents);
 ContentInfo* GetFirstDataContent(cricket::ContentInfos* contents);
 ContentInfo* GetFirstMediaContent(SessionDescription* sdesc,
-                                  cricket::MediaType media_type);
+                                  webrtc::MediaType media_type);
 ContentInfo* GetFirstAudioContent(SessionDescription* sdesc);
 ContentInfo* GetFirstVideoContent(SessionDescription* sdesc);
 ContentInfo* GetFirstDataContent(SessionDescription* sdesc);
diff --git a/pc/media_session_unittest.cc b/pc/media_session_unittest.cc
index cf79144..b558922 100644
--- a/pc/media_session_unittest.cc
+++ b/pc/media_session_unittest.cc
@@ -400,7 +400,7 @@
 }
 
 bool IsMediaContentOfType(const ContentInfo* content,
-                          cricket::MediaType media_type) {
+                          webrtc::MediaType media_type) {
   RTC_DCHECK(content);
   return content->media_description()->type() == media_type;
 }
@@ -449,7 +449,7 @@
 }
 
 // Add a media section to the `session_options`.
-void AddMediaDescriptionOptions(cricket::MediaType type,
+void AddMediaDescriptionOptions(webrtc::MediaType type,
                                 const std::string& mid,
                                 RtpTransceiverDirection direction,
                                 bool stopped,
@@ -460,21 +460,21 @@
 
 void AddAudioVideoSections(RtpTransceiverDirection direction,
                            cricket::MediaSessionOptions* opts) {
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio", direction,
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio", direction,
                              kActive, opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video", direction,
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video", direction,
                              kActive, opts);
 }
 
 void AddDataSection(RtpTransceiverDirection direction,
                     cricket::MediaSessionOptions* opts) {
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_DATA, "data", direction,
+  AddMediaDescriptionOptions(webrtc::MediaType::DATA, "data", direction,
                              kActive, opts);
 }
 
 void AttachSenderToMediaDescriptionOptions(
     const std::string& mid,
-    cricket::MediaType type,
+    webrtc::MediaType type,
     const std::string& track_id,
     const std::vector<std::string>& stream_ids,
     const std::vector<cricket::RidDescription>& rids,
@@ -483,10 +483,10 @@
     cricket::MediaSessionOptions* session_options) {
   auto it = FindFirstMediaDescriptionByMid(mid, session_options);
   switch (type) {
-    case cricket::MEDIA_TYPE_AUDIO:
+    case webrtc::MediaType::AUDIO:
       it->AddAudioSender(track_id, stream_ids);
       break;
-    case cricket::MEDIA_TYPE_VIDEO:
+    case webrtc::MediaType::VIDEO:
       it->AddVideoSender(track_id, stream_ids, rids, simulcast_layers,
                          num_sim_layer);
       break;
@@ -497,7 +497,7 @@
 
 void AttachSenderToMediaDescriptionOptions(
     const std::string& mid,
-    cricket::MediaType type,
+    webrtc::MediaType type,
     const std::string& track_id,
     const std::vector<std::string>& stream_ids,
     int num_sim_layer,
@@ -525,7 +525,7 @@
 // Helper function used to create recv-only audio MediaSessionOptions.
 cricket::MediaSessionOptions CreateAudioMediaSession() {
   cricket::MediaSessionOptions session_options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &session_options);
   return session_options;
@@ -779,10 +779,10 @@
         HeaderExtensionCapabilitiesFromRtpExtensions(video_exts);
     for (auto& entry : opts->media_description_options) {
       switch (entry.type) {
-        case cricket::MEDIA_TYPE_AUDIO:
+        case webrtc::MediaType::AUDIO:
           entry.header_extensions = audio_caps;
           break;
-        case cricket::MEDIA_TYPE_VIDEO:
+        case webrtc::MediaType::VIDEO:
           entry.header_extensions = video_caps;
           break;
         default:
@@ -814,7 +814,7 @@
   EXPECT_FALSE(vc);
   EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
   const MediaContentDescription* acd = ac->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_THAT(codec_lookup_helper_1_.CodecVendor("")->audio_sendrecv_codecs(),
               ElementsAreArray(acd->codecs()));
   EXPECT_EQ(0U, acd->first_ssrc());             // no sender is attached.
@@ -847,7 +847,7 @@
   ASSERT_TRUE(vc == NULL);
   EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
   const MediaContentDescription* acd = ac->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_EQ(2U, acd->codecs().size());
   EXPECT_EQ("opus", acd->codecs()[0].name);
   EXPECT_EQ("red", acd->codecs()[1].name);
@@ -875,7 +875,7 @@
   ASSERT_TRUE(vc == NULL);
   EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
   const MediaContentDescription* acd = ac->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_EQ(2U, acd->codecs().size());
   EXPECT_EQ("red", acd->codecs()[0].name);
   EXPECT_EQ("opus", acd->codecs()[1].name);
@@ -896,7 +896,7 @@
   EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
   const MediaContentDescription* acd = ac->media_description();
   const MediaContentDescription* vcd = vc->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_EQ(
       codec_lookup_helper_1_.CodecVendor("")->audio_sendrecv_codecs().codecs(),
       acd->codecs());
@@ -905,7 +905,7 @@
             acd->bandwidth());                  // default bandwidth (auto)
   EXPECT_TRUE(acd->rtcp_mux());                 // rtcp-mux defaults on
   EXPECT_EQ(cricket::kMediaProtocolDtlsSavpf, acd->protocol());
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, vcd->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, vcd->type());
   EXPECT_EQ(
       codec_lookup_helper_1_.CodecVendor("")->video_sendrecv_codecs().codecs(),
       vcd->codecs());
@@ -923,7 +923,7 @@
   cricket::Codec custom_audio_codec = cricket::CreateAudioCodec(audio_format);
   custom_audio_codec.id = 123;  // picked at random, but valid
   auto audio_options = cricket::MediaDescriptionOptions(
-      cricket::MEDIA_TYPE_AUDIO, "0", RtpTransceiverDirection::kSendRecv,
+      webrtc::MediaType::AUDIO, "0", RtpTransceiverDirection::kSendRecv,
       kActive);
   audio_options.codecs_to_include.push_back(custom_audio_codec);
   opts.media_description_options.push_back(audio_options);
@@ -931,7 +931,7 @@
   cricket::Codec custom_video_codec = cricket::CreateVideoCodec("custom-video");
   custom_video_codec.id = 124;  // picked at random, but valid
   auto video_options = cricket::MediaDescriptionOptions(
-      cricket::MEDIA_TYPE_VIDEO, "1", RtpTransceiverDirection::kSendRecv,
+      webrtc::MediaType::VIDEO, "1", RtpTransceiverDirection::kSendRecv,
       kActive);
   video_options.codecs_to_include.push_back(custom_video_codec);
   opts.media_description_options.push_back(video_options);
@@ -947,13 +947,13 @@
   EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
   const MediaContentDescription* acd = ac->media_description();
   const MediaContentDescription* vcd = vc->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   ASSERT_EQ(acd->codecs().size(), 1U);
   // Fields in codec are set during the gen process, so simple compare
   // does not work.
   EXPECT_EQ(acd->codecs()[0].name, custom_audio_codec.name);
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, vcd->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, vcd->type());
   ASSERT_EQ(vcd->codecs().size(), 1U);
   EXPECT_EQ(vcd->codecs()[0].name, custom_video_codec.name);
 }
@@ -971,7 +971,7 @@
   cricket::Codec custom_audio_codec = cricket::CreateAudioCodec(audio_format);
   custom_audio_codec.id = 123;  // picked at random, but valid
   auto audio_options = cricket::MediaDescriptionOptions(
-      cricket::MEDIA_TYPE_AUDIO, "audio", RtpTransceiverDirection::kSendRecv,
+      webrtc::MediaType::AUDIO, "audio", RtpTransceiverDirection::kSendRecv,
       kActive);
   audio_options.codecs_to_include.push_back(custom_audio_codec);
   answer_opts.media_description_options.push_back(audio_options);
@@ -979,7 +979,7 @@
   cricket::Codec custom_video_codec = cricket::CreateVideoCodec("custom-video");
   custom_video_codec.id = 124;
   auto video_options = cricket::MediaDescriptionOptions(
-      cricket::MEDIA_TYPE_VIDEO, "video", RtpTransceiverDirection::kSendRecv,
+      webrtc::MediaType::VIDEO, "video", RtpTransceiverDirection::kSendRecv,
       kActive);
   video_options.codecs_to_include.push_back(custom_video_codec);
   answer_opts.media_description_options.push_back(video_options);
@@ -997,13 +997,13 @@
   EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
   const MediaContentDescription* acd = ac->media_description();
   const MediaContentDescription* vcd = vc->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   ASSERT_EQ(acd->codecs().size(), 1U);
   // Fields in codec are set during the gen process, so simple compare
   // does not work.
   EXPECT_EQ(acd->codecs()[0].name, custom_audio_codec.name);
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, vcd->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, vcd->type());
   ASSERT_EQ(vcd->codecs().size(), 1U);
   EXPECT_EQ(vcd->codecs()[0].name, custom_video_codec.name);
 }
@@ -1039,10 +1039,10 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestCreateUpdatedVideoOfferWithBundle) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kInactive, kStopped,
                              &opts);
   opts.bundle_enabled = true;
@@ -1124,7 +1124,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest, ReOfferNoBundleGroupIfAllRejected) {
   cricket::MediaSessionOptions opts;
   opts.bundle_enabled = true;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -1143,7 +1143,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest, ReAnswerNoBundleGroupIfAllRejected) {
   cricket::MediaSessionOptions opts;
   opts.bundle_enabled = true;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -1166,7 +1166,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest, ReOfferChangeBundleOffererTagged) {
   cricket::MediaSessionOptions opts;
   opts.bundle_enabled = true;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -1174,7 +1174,7 @@
 
   // Reject the audio m= section and add a video m= section.
   opts.media_description_options[0].stopped = true;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> reoffer =
@@ -1193,7 +1193,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest, ReAnswerChangedBundleOffererTagged) {
   cricket::MediaSessionOptions opts;
   opts.bundle_enabled = true;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -1203,7 +1203,7 @@
 
   // Reject the audio m= section and add a video m= section.
   opts.media_description_options[0].stopped = true;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> reoffer =
@@ -1223,16 +1223,16 @@
   // Create an offer with 4 m= sections, initially without BUNDLE groups.
   cricket::MediaSessionOptions opts;
   opts.bundle_enabled = false;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "3",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "3",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "4",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "4",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -1362,10 +1362,10 @@
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateSendOnlyOffer) {
   cricket::MediaSessionOptions opts;
   AddAudioVideoSections(RtpTransceiverDirection::kSendOnly, &opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
-  AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                         kAudioTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -1374,9 +1374,9 @@
   ASSERT_TRUE(offer.get());
   EXPECT_EQ(2u, offer->contents().size());
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer->contents()[0], cricket::MEDIA_TYPE_AUDIO));
+      IsMediaContentOfType(&offer->contents()[0], webrtc::MediaType::AUDIO));
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer->contents()[1], cricket::MEDIA_TYPE_VIDEO));
+      IsMediaContentOfType(&offer->contents()[1], webrtc::MediaType::VIDEO));
 
   EXPECT_EQ(RtpTransceiverDirection::kSendOnly,
             GetMediaDirection(&offer->contents()[0]));
@@ -1395,9 +1395,9 @@
   ASSERT_TRUE(offer1.get());
   EXPECT_EQ(1u, offer1->contents().size());
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer1->contents()[0], cricket::MEDIA_TYPE_DATA));
+      IsMediaContentOfType(&offer1->contents()[0], webrtc::MediaType::DATA));
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer2(
@@ -1405,11 +1405,11 @@
   ASSERT_TRUE(offer2.get());
   EXPECT_EQ(2u, offer2->contents().size());
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer2->contents()[0], cricket::MEDIA_TYPE_DATA));
+      IsMediaContentOfType(&offer2->contents()[0], webrtc::MediaType::DATA));
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer2->contents()[1], cricket::MEDIA_TYPE_VIDEO));
+      IsMediaContentOfType(&offer2->contents()[1], webrtc::MediaType::VIDEO));
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer3(
@@ -1417,11 +1417,11 @@
   ASSERT_TRUE(offer3.get());
   EXPECT_EQ(3u, offer3->contents().size());
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer3->contents()[0], cricket::MEDIA_TYPE_DATA));
+      IsMediaContentOfType(&offer3->contents()[0], webrtc::MediaType::DATA));
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer3->contents()[1], cricket::MEDIA_TYPE_VIDEO));
+      IsMediaContentOfType(&offer3->contents()[1], webrtc::MediaType::VIDEO));
   EXPECT_TRUE(
-      IsMediaContentOfType(&offer3->contents()[2], cricket::MEDIA_TYPE_AUDIO));
+      IsMediaContentOfType(&offer3->contents()[2], webrtc::MediaType::AUDIO));
 }
 
 // Create a typical audio answer, and ensure it matches what we expect.
@@ -1438,7 +1438,7 @@
   EXPECT_FALSE(vc);
   EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
   const MediaContentDescription* acd = ac->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_THAT(acd->codecs(), ElementsAreArray(kAudioCodecsAnswer));
   EXPECT_EQ(0U, acd->first_ssrc());             // no sender is attached
   EXPECT_EQ(kAutoBandwidth, acd->bandwidth());  // negotiated auto bw
@@ -1461,7 +1461,7 @@
   EXPECT_FALSE(vc);
   EXPECT_EQ(MediaProtocolType::kRtp, ac->type);
   const MediaContentDescription* acd = ac->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_THAT(acd->codecs(), ElementsAreArray(kAudioCodecsAnswer));
   EXPECT_EQ(0U, acd->first_ssrc());             // no sender is attached
   EXPECT_EQ(kAutoBandwidth, acd->bandwidth());  // negotiated auto bw
@@ -1473,7 +1473,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestCreateAudioAnswerWithNoCommonCodecs) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::vector f1_codecs = {cricket::CreateAudioCodec(96, "opus", 48000, 1)};
@@ -1510,12 +1510,12 @@
   EXPECT_EQ(MediaProtocolType::kRtp, vc->type);
   const MediaContentDescription* acd = ac->media_description();
   const MediaContentDescription* vcd = vc->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_THAT(acd->codecs(), ElementsAreArray(kAudioCodecsAnswer));
   EXPECT_EQ(kAutoBandwidth, acd->bandwidth());  // negotiated auto bw
   EXPECT_EQ(0U, acd->first_ssrc());             // no sender is attached
   EXPECT_TRUE(acd->rtcp_mux());                 // negotiated rtcp-mux
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, vcd->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, vcd->type());
   EXPECT_THAT(vcd->codecs(), ElementsAreArray(kVideoCodecsAnswer));
   EXPECT_EQ(0U, vcd->first_ssrc());  // no sender is attached
   EXPECT_TRUE(vcd->rtcp_mux());      // negotiated rtcp-mux
@@ -1526,7 +1526,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestCreateVideoAnswerWithNoCommonCodecs) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::vector f1_codecs = {cricket::CreateVideoCodec(96, "H264")};
@@ -1551,7 +1551,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestCreateVideoAnswerWithOnlyFecCodecsCommon) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::vector f1_codecs = {cricket::CreateVideoCodec(96, "H264"),
@@ -1706,7 +1706,7 @@
   ASSERT_TRUE(offer1.get());
 
   // Appends audio to the offer.
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer2(
@@ -1714,7 +1714,7 @@
   ASSERT_TRUE(offer2.get());
 
   // Appends video to the offer.
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer3(
@@ -1726,11 +1726,11 @@
   ASSERT_TRUE(answer.get());
   EXPECT_EQ(3u, answer->contents().size());
   EXPECT_TRUE(
-      IsMediaContentOfType(&answer->contents()[0], cricket::MEDIA_TYPE_DATA));
+      IsMediaContentOfType(&answer->contents()[0], webrtc::MediaType::DATA));
   EXPECT_TRUE(
-      IsMediaContentOfType(&answer->contents()[1], cricket::MEDIA_TYPE_AUDIO));
+      IsMediaContentOfType(&answer->contents()[1], webrtc::MediaType::AUDIO));
   EXPECT_TRUE(
-      IsMediaContentOfType(&answer->contents()[2], cricket::MEDIA_TYPE_VIDEO));
+      IsMediaContentOfType(&answer->contents()[2], webrtc::MediaType::VIDEO));
 }
 
 // TODO(deadbeef): Extend these tests to ensure the correct direction with other
@@ -2014,7 +2014,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        OffersUnstoppedExtensionsWithAudioVideoExtensionStopped) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2022,7 +2022,7 @@
                                    RtpTransceiverDirection::kStopped),
       RtpHeaderExtensionCapability("uri2", 3,
                                    RtpTransceiverDirection::kSendOnly)};
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2047,7 +2047,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        OffersUnstoppedExtensionsWithAudioExtensionStopped) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2055,7 +2055,7 @@
                                    RtpTransceiverDirection::kSendOnly),
       RtpHeaderExtensionCapability("uri2", 3,
                                    RtpTransceiverDirection::kStopped)};
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2082,7 +2082,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        OffersUnstoppedExtensionsWithVideoExtensionStopped) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2090,7 +2090,7 @@
                                    RtpTransceiverDirection::kSendOnly),
       RtpHeaderExtensionCapability("uri2", 7,
                                    RtpTransceiverDirection::kSendRecv)};
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2116,7 +2116,7 @@
 
 TEST_F(MediaSessionDescriptionFactoryTest, AnswersUnstoppedExtensions) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2151,7 +2151,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        AppendsUnstoppedExtensionsToCurrentDescription) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2181,7 +2181,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        AllowsStoppedExtensionsToBeRemovedFromSubsequentOffer) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   opts.media_description_options.back().header_extensions = {
@@ -2503,10 +2503,10 @@
 // Create an audio-only answer to a video offer.
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateAudioAnswerToVideo) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -2675,13 +2675,13 @@
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateMultiStreamVideoOffer) {
   cricket::MediaSessionOptions opts;
   AddAudioVideoSections(RtpTransceiverDirection::kSendRecv, &opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
-  AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                         kAudioTrack1, {kMediaStream1}, 1,
                                         &opts);
-  AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                         kAudioTrack2, {kMediaStream1}, 1,
                                         &opts);
 
@@ -2695,7 +2695,7 @@
   ASSERT_TRUE(vc);
   const MediaContentDescription* acd = ac->media_description();
   const MediaContentDescription* vcd = vc->media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_EQ(
       codec_lookup_helper_1_.CodecVendor("")->audio_sendrecv_codecs().codecs(),
       acd->codecs());
@@ -2714,7 +2714,7 @@
             acd->bandwidth());                  // default bandwidth (auto)
   EXPECT_TRUE(acd->rtcp_mux());                 // rtcp-mux defaults on
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, vcd->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, vcd->type());
   EXPECT_EQ(
       codec_lookup_helper_1_.CodecVendor("")->video_sendrecv_codecs().codecs(),
       vcd->codecs());
@@ -2729,11 +2729,11 @@
 
   // Update the offer. Add a new video track that is not synched to the
   // other tracks and replace audio track 2 with audio track 3.
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack2, {kMediaStream2}, 1,
                                         &opts);
   DetachSenderFromMediaSection("audio", kAudioTrack2, &opts);
-  AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                         kAudioTrack3, {kMediaStream1}, 1,
                                         &opts);
   std::unique_ptr<SessionDescription> updated_offer(
@@ -2773,14 +2773,14 @@
 // Create an offer with simulcast video stream.
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateSimulcastVideoOffer) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   const int num_sim_layers = 3;
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1},
                                         num_sim_layers, &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -2836,7 +2836,7 @@
 // Create an offer with spec-compliant simulcast video stream.
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateCompliantSimulcastOffer) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::vector<cricket::RidDescription> send_rids;
@@ -2850,7 +2850,7 @@
   simulcast_layers.AddLayer(cricket::SimulcastLayer(send_rids[0].rid, false));
   simulcast_layers.AddLayer(cricket::SimulcastLayer(send_rids[1].rid, true));
   simulcast_layers.AddLayer(cricket::SimulcastLayer(send_rids[2].rid, false));
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1},
                                         send_rids, simulcast_layers, 0, &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -2864,12 +2864,12 @@
 // In this scenario, RIDs do not need to be negotiated (there is only one).
 TEST_F(MediaSessionDescriptionFactoryTest, TestOfferWithRidsNoSimulcast) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   cricket::RidDescription rid("f", cricket::RidDirection::kSend);
   AttachSenderToMediaDescriptionOptions(
-      "video", cricket::MEDIA_TYPE_VIDEO, kVideoTrack1, {kMediaStream1}, {rid},
+      "video", webrtc::MediaType::VIDEO, kVideoTrack1, {kMediaStream1}, {rid},
       cricket::SimulcastLayerList(), 0, &opts);
   std::unique_ptr<SessionDescription> offer =
       f1_.CreateOfferOrError(opts, nullptr).MoveValue();
@@ -2891,17 +2891,17 @@
 // In this scenario, the SFU is the caller requesting that we send Simulcast.
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateCompliantSimulcastAnswer) {
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &offer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &offer_opts);
   std::unique_ptr<SessionDescription> offer =
       f1_.CreateOfferOrError(offer_opts, nullptr).MoveValue();
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
 
@@ -2918,7 +2918,7 @@
   simulcast_layers.AddLayer(
       cricket::SimulcastLayer(rid_descriptions[2].rid, false));
   AttachSenderToMediaDescriptionOptions(
-      "video", cricket::MEDIA_TYPE_VIDEO, kVideoTrack1, {kMediaStream1},
+      "video", webrtc::MediaType::VIDEO, kVideoTrack1, {kMediaStream1},
       rid_descriptions, simulcast_layers, 0, &answer_opts);
   std::unique_ptr<SessionDescription> answer =
       f2_.CreateAnswerOrError(offer.get(), answer_opts, nullptr).MoveValue();
@@ -2932,24 +2932,24 @@
 // Note that RID Direction is not the same as the transceiver direction.
 TEST_F(MediaSessionDescriptionFactoryTest, TestAnswerWithRidsNoSimulcast) {
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &offer_opts);
   cricket::RidDescription rid_offer("f", cricket::RidDirection::kSend);
   AttachSenderToMediaDescriptionOptions(
-      "video", cricket::MEDIA_TYPE_VIDEO, kVideoTrack1, {kMediaStream1},
+      "video", webrtc::MediaType::VIDEO, kVideoTrack1, {kMediaStream1},
       {rid_offer}, cricket::SimulcastLayerList(), 0, &offer_opts);
   std::unique_ptr<SessionDescription> offer =
       f1_.CreateOfferOrError(offer_opts, nullptr).MoveValue();
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
 
   cricket::RidDescription rid_answer("f", cricket::RidDirection::kReceive);
   AttachSenderToMediaDescriptionOptions(
-      "video", cricket::MEDIA_TYPE_VIDEO, kVideoTrack1, {kMediaStream1},
+      "video", webrtc::MediaType::VIDEO, kVideoTrack1, {kMediaStream1},
       {rid_answer}, cricket::SimulcastLayerList(), 0, &answer_opts);
   std::unique_ptr<SessionDescription> answer =
       f2_.CreateAnswerOrError(offer.get(), answer_opts, nullptr).MoveValue();
@@ -2975,29 +2975,29 @@
 // adding a new video track and removes one of the audio tracks.
 TEST_F(MediaSessionDescriptionFactoryTest, TestCreateMultiStreamVideoAnswer) {
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &offer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &offer_opts);
   std::unique_ptr<SessionDescription> offer =
       f1_.CreateOfferOrError(offer_opts, nullptr).MoveValue();
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
-  AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                         kAudioTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
-  AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                         kAudioTrack2, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -3012,7 +3012,7 @@
   const MediaContentDescription* acd = ac->media_description();
   const MediaContentDescription* vcd = vc->media_description();
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, acd->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, acd->type());
   EXPECT_THAT(acd->codecs(), ElementsAreArray(kAudioCodecsAnswer));
 
   const cricket::StreamParamsVec& audio_streams = acd->streams();
@@ -3029,7 +3029,7 @@
             acd->bandwidth());                  // default bandwidth (auto)
   EXPECT_TRUE(acd->rtcp_mux());                 // rtcp-mux defaults on
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, vcd->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, vcd->type());
   EXPECT_THAT(vcd->codecs(), ElementsAreArray(kVideoCodecsAnswer));
 
   const cricket::StreamParamsVec& video_streams = vcd->streams();
@@ -3042,7 +3042,7 @@
 
   // Update the answer. Add a new video track that is not synched to the
   // other tracks and remove 1 audio track.
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack2, {kMediaStream2}, 1,
                                         &answer_opts);
   DetachSenderFromMediaSection("audio", kAudioTrack2, &answer_opts);
@@ -3139,7 +3139,7 @@
       cricket::CodecList{}, cricket::CodecList{});
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "a0",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "a0",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -3175,7 +3175,7 @@
       cricket::CodecList{}, cricket::CodecList{});
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "v0",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "v0",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -3206,7 +3206,7 @@
   // Perform initial offer/answer in reverse (`f2_` as offerer) so that the
   // second offer/answer is forward (`f1_` as offerer).
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "a0",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "a0",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -3240,7 +3240,7 @@
   // Perform initial offer/answer in reverse (`f2_` as offerer) so that the
   // second offer/answer is forward (`f1_` as offerer).
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "v0",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "v0",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -3268,7 +3268,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        RespondentCreatesOfferAfterCreatingAnswerWithRtx) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::vector<cricket::Codec> f1_codecs = MAKE_VECTOR(kVideoCodecs1);
@@ -3324,7 +3324,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        RespondentCreatesOfferAfterCreatingAnswerWithRemappedRtxPayloadType) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   // We specifically choose different preferred payload types for VP8 to
@@ -3390,7 +3390,7 @@
                                                            f1_codecs);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -3487,7 +3487,7 @@
 // Test that RTX is ignored when there is no associated payload type parameter.
 TEST_F(MediaSessionDescriptionFactoryTest, RtxWithoutApt) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::vector<cricket::Codec> f1_codecs = MAKE_VECTOR(kVideoCodecs1);
@@ -3534,7 +3534,7 @@
 // type doesn't match the local value.
 TEST_F(MediaSessionDescriptionFactoryTest, FilterOutRtxIfAptDoesntMatch) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::vector<cricket::Codec> f1_codecs = MAKE_VECTOR(kVideoCodecs1);
@@ -3569,7 +3569,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        FilterOutUnsupportedRtxWhenCreatingAnswer) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::vector<cricket::Codec> f1_codecs = MAKE_VECTOR(kVideoCodecs1);
@@ -3612,7 +3612,7 @@
 // to add another.
 TEST_F(MediaSessionDescriptionFactoryTest, AddSecondRtxInNewOffer) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
   std::vector<cricket::Codec> f1_codecs = MAKE_VECTOR(kVideoCodecs1);
@@ -3653,11 +3653,11 @@
 // generated for each simulcast ssrc and correctly grouped.
 TEST_F(MediaSessionDescriptionFactoryTest, SimSsrcsGenerateMultipleRtxSsrcs) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Add simulcast streams.
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         "stream1", {"stream1label"}, 3, &opts);
 
   // Use a single real codec, and then add RTX for it.
@@ -3698,11 +3698,11 @@
   ScopedKeyValueConfig override_field_trials(field_trials,
                                              "WebRTC-FlexFEC-03/Enabled/");
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Add single stream.
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         "stream1", {"stream1label"}, 1, &opts);
 
   // Use a single real codec, and then add FlexFEC for it.
@@ -3742,11 +3742,11 @@
   ScopedKeyValueConfig override_field_trials(field_trials,
                                              "WebRTC-FlexFEC-03/Enabled/");
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Add simulcast streams.
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         "stream1", {"stream1label"}, 3, &opts);
 
   // Use a single real codec, and then add FlexFEC for it.
@@ -3914,7 +3914,7 @@
 // ensure the TransportInfo in the SessionDescription matches what we expect.
 TEST_F(MediaSessionDescriptionFactoryTest, TestTransportInfoOfferAudio) {
   cricket::MediaSessionOptions options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &options);
   TestTransportInfo(true, options, false);
@@ -3923,7 +3923,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestTransportInfoOfferIceRenomination) {
   cricket::MediaSessionOptions options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &options);
   options.media_description_options[0]
@@ -3933,7 +3933,7 @@
 
 TEST_F(MediaSessionDescriptionFactoryTest, TestTransportInfoOfferAudioCurrent) {
   cricket::MediaSessionOptions options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &options);
   TestTransportInfo(true, options, true);
@@ -3969,7 +3969,7 @@
 
 TEST_F(MediaSessionDescriptionFactoryTest, TestTransportInfoAnswerAudio) {
   cricket::MediaSessionOptions options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &options);
   TestTransportInfo(false, options, false);
@@ -3978,7 +3978,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestTransportInfoAnswerIceRenomination) {
   cricket::MediaSessionOptions options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &options);
   options.media_description_options[0]
@@ -3989,7 +3989,7 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        TestTransportInfoAnswerAudioCurrent) {
   cricket::MediaSessionOptions options;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &options);
   TestTransportInfo(false, options, true);
@@ -4112,13 +4112,13 @@
 // Test that the generated MIDs match the existing offer.
 TEST_F(MediaSessionDescriptionFactoryTest, TestMIDsMatchesExistingOffer) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio_modified",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio_modified",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video_modified",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video_modified",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_DATA, "data_modified",
+  AddMediaDescriptionOptions(webrtc::MediaType::DATA, "data_modified",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Create offer.
@@ -4144,31 +4144,31 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        CreateOfferWithMultipleAVMediaSections) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio_1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio_1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("audio_1", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio_1", webrtc::MediaType::AUDIO,
                                         kAudioTrack1, {kMediaStream1}, 1,
                                         &opts);
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video_1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video_1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("video_1", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video_1", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio_2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio_2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("audio_2", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio_2", webrtc::MediaType::AUDIO,
                                         kAudioTrack2, {kMediaStream2}, 1,
                                         &opts);
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video_2",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video_2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("video_2", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video_2", webrtc::MediaType::VIDEO,
                                         kVideoTrack2, {kMediaStream2}, 1,
                                         &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -4206,31 +4206,31 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        CreateAnswerWithMultipleAVMediaSections) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio_1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio_1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("audio_1", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio_1", webrtc::MediaType::AUDIO,
                                         kAudioTrack1, {kMediaStream1}, 1,
                                         &opts);
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video_1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video_1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("video_1", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video_1", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio_2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio_2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("audio_2", cricket::MEDIA_TYPE_AUDIO,
+  AttachSenderToMediaDescriptionOptions("audio_2", webrtc::MediaType::AUDIO,
                                         kAudioTrack2, {kMediaStream2}, 1,
                                         &opts);
 
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video_2",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video_2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("video_2", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video_2", webrtc::MediaType::VIDEO,
                                         kVideoTrack2, {kMediaStream2}, 1,
                                         &opts);
 
@@ -4274,10 +4274,10 @@
        CreateOfferWithMediaSectionStoppedByOfferer) {
   // Create an offer with two audio sections and one of them is stopped.
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &offer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio2",
                              RtpTransceiverDirection::kInactive, kStopped,
                              &offer_opts);
   std::unique_ptr<SessionDescription> offer =
@@ -4294,10 +4294,10 @@
        CreateAnswerWithMediaSectionStoppedByOfferer) {
   // Create an offer with two audio sections and one of them is stopped.
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &offer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio2",
                              RtpTransceiverDirection::kInactive, kStopped,
                              &offer_opts);
   std::unique_ptr<SessionDescription> offer =
@@ -4309,10 +4309,10 @@
 
   // Create an answer based on the offer.
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
   std::unique_ptr<SessionDescription> answer =
@@ -4328,10 +4328,10 @@
        CreateAnswerWithMediaSectionRejectedByAnswerer) {
   // Create an offer with two audio sections.
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &offer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &offer_opts);
   std::unique_ptr<SessionDescription> offer =
@@ -4343,10 +4343,10 @@
 
   // The answerer rejects one of the audio sections.
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio1",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio2",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio2",
                              RtpTransceiverDirection::kInactive, kStopped,
                              &answer_opts);
   std::unique_ptr<SessionDescription> answer =
@@ -4367,10 +4367,10 @@
   cricket::MediaSessionOptions opts;
   // This tests put video section first because normally audio comes first by
   // default.
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   std::unique_ptr<SessionDescription> offer =
@@ -4387,10 +4387,10 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        PayloadTypesSharedByMediaSectionsOfSameType) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video2",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Create an offer with two video sections using same codecs.
@@ -4437,7 +4437,7 @@
                                                            f2_codecs);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
@@ -4475,7 +4475,7 @@
                                                            f2_codecs);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
@@ -4514,7 +4514,7 @@
                                                            f2_codecs);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
@@ -4552,7 +4552,7 @@
                                                            f2_codecs);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
@@ -4581,10 +4581,10 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        CreateOfferRespectsCodecPreferenceOrder) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video2",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Create an offer with two video sections using same codecs.
@@ -4617,10 +4617,10 @@
 TEST_F(MediaSessionDescriptionFactoryTest,
        CreateAnswerRespectsCodecPreferenceOrder) {
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video1",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video1",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video2",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video2",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
   // Create an offer with two video sections using same codecs.
@@ -4679,10 +4679,10 @@
                                                            video_codecs2);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
@@ -4733,7 +4733,7 @@
                                                            {h264_pm1});
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
@@ -4853,12 +4853,12 @@
                                                         recv_codecs);
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio", direction,
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio", direction,
                              kActive, &opts);
 
   if (direction == RtpTransceiverDirection::kSendRecv ||
       direction == RtpTransceiverDirection::kSendOnly) {
-    AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+    AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                           kAudioTrack1, {kMediaStream1}, 1,
                                           &opts);
   }
@@ -4968,11 +4968,11 @@
       VectorFromIndices(kOfferAnswerCodecs, kAnswerRecvCodecs));
 
   cricket::MediaSessionOptions offer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
-                             offer_direction, kActive, &offer_opts);
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio", offer_direction,
+                             kActive, &offer_opts);
 
   if (webrtc::RtpTransceiverDirectionHasSend(offer_direction)) {
-    AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+    AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                           kAudioTrack1, {kMediaStream1}, 1,
                                           &offer_opts);
   }
@@ -4982,11 +4982,11 @@
   ASSERT_TRUE(offer.get());
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO, "audio",
+  AddMediaDescriptionOptions(webrtc::MediaType::AUDIO, "audio",
                              answer_direction, kActive, &answer_opts);
 
   if (webrtc::RtpTransceiverDirectionHasSend(answer_direction)) {
-    AttachSenderToMediaDescriptionOptions("audio", cricket::MEDIA_TYPE_AUDIO,
+    AttachSenderToMediaDescriptionOptions("audio", webrtc::MediaType::AUDIO,
                                           kAudioTrack1, {kMediaStream1}, 1,
                                           &answer_opts);
   }
@@ -5000,7 +5000,7 @@
   // to send nor receive audio. The checks are still in place if at some point
   // we'd instead create an inactive stream.
   if (ac) {
-    ASSERT_EQ(cricket::MEDIA_TYPE_AUDIO, ac->media_description()->type());
+    ASSERT_EQ(webrtc::MediaType::AUDIO, ac->media_description()->type());
     const MediaContentDescription* acd = ac->media_description();
 
     std::vector<cricket::Codec> target_codecs;
@@ -5162,11 +5162,11 @@
                                  .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5180,10 +5180,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5217,10 +5217,10 @@
                                  .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5234,7 +5234,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level6LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
@@ -5268,7 +5268,7 @@
                                  .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -5282,7 +5282,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &answer_opts);
 
@@ -5323,11 +5323,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5341,10 +5341,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5385,11 +5385,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5403,10 +5403,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5447,11 +5447,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5465,10 +5465,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5519,11 +5519,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5537,10 +5537,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5581,11 +5581,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5599,10 +5599,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level4LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5643,7 +5643,7 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -5657,10 +5657,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level6LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5701,7 +5701,7 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -5715,10 +5715,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5759,7 +5759,7 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -5773,10 +5773,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5817,7 +5817,7 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -5831,10 +5831,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5875,7 +5875,7 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &opts);
 
@@ -5889,10 +5889,10 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level6LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &answer_opts);
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &answer_opts);
 
@@ -5933,11 +5933,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -5951,7 +5951,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level52LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
@@ -5992,11 +5992,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -6010,7 +6010,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level6LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
@@ -6051,11 +6051,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -6069,7 +6069,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level6LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
@@ -6110,11 +6110,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -6128,7 +6128,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level6LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
@@ -6169,11 +6169,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendOnly, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
 
@@ -6187,7 +6187,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level4LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
@@ -6224,11 +6224,11 @@
                 .codecs());
 
   cricket::MediaSessionOptions opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kSendRecv, kActive,
                              &opts);
 
-  AttachSenderToMediaDescriptionOptions("video", cricket::MEDIA_TYPE_VIDEO,
+  AttachSenderToMediaDescriptionOptions("video", webrtc::MediaType::VIDEO,
                                         kVideoTrack1, {kMediaStream1}, 1,
                                         &opts);
   std::vector<RtpCodecCapability> preferences;
@@ -6248,7 +6248,7 @@
   CheckH265Level(ocd->codecs(), kVideoCodecsH265Level4LevelId);
 
   cricket::MediaSessionOptions answer_opts;
-  AddMediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO, "video",
+  AddMediaDescriptionOptions(webrtc::MediaType::VIDEO, "video",
                              RtpTransceiverDirection::kRecvOnly, kActive,
                              &answer_opts);
 
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 9c7492d..edcaec0 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -598,12 +598,12 @@
     rtp_manager_->transceivers()->Add(
         RtpTransceiverProxyWithInternal<RtpTransceiver>::Create(
             signaling_thread(), rtc::make_ref_counted<RtpTransceiver>(
-                                    cricket::MEDIA_TYPE_AUDIO, context_.get(),
+                                    webrtc::MediaType::AUDIO, context_.get(),
                                     codec_lookup_helper_.get())));
     rtp_manager_->transceivers()->Add(
         RtpTransceiverProxyWithInternal<RtpTransceiver>::Create(
             signaling_thread(), rtc::make_ref_counted<RtpTransceiver>(
-                                    cricket::MEDIA_TYPE_VIDEO, context_.get(),
+                                    webrtc::MediaType::VIDEO, context_.get(),
                                     codec_lookup_helper_.get())));
   }
 
@@ -937,11 +937,11 @@
     }
   } else {
     bool removed;
-    if (sender->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+    if (sender->media_type() == webrtc::MediaType::AUDIO) {
       removed = rtp_manager()->GetAudioTransceiver()->internal()->RemoveSender(
           sender.get());
     } else {
-      RTC_DCHECK_EQ(cricket::MEDIA_TYPE_VIDEO, sender->media_type());
+      RTC_DCHECK_EQ(webrtc::MediaType::VIDEO, sender->media_type());
       removed = rtp_manager()->GetVideoTransceiver()->internal()->RemoveSender(
           sender.get());
     }
@@ -986,11 +986,11 @@
   if (!track) {
     LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER, "track is null");
   }
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   if (track->kind() == MediaStreamTrackInterface::kAudioKind) {
-    media_type = cricket::MEDIA_TYPE_AUDIO;
+    media_type = webrtc::MediaType::AUDIO;
   } else if (track->kind() == MediaStreamTrackInterface::kVideoKind) {
-    media_type = cricket::MEDIA_TYPE_VIDEO;
+    media_type = webrtc::MediaType::VIDEO;
   } else {
     LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
                          "Track kind is not audio or video");
@@ -999,12 +999,12 @@
 }
 
 RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>
-PeerConnection::AddTransceiver(cricket::MediaType media_type) {
+PeerConnection::AddTransceiver(webrtc::MediaType media_type) {
   return AddTransceiver(media_type, RtpTransceiverInit());
 }
 
 RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>
-PeerConnection::AddTransceiver(cricket::MediaType media_type,
+PeerConnection::AddTransceiver(webrtc::MediaType media_type,
                                const RtpTransceiverInit& init) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   if (!ConfiguredForMedia()) {
@@ -1013,8 +1013,8 @@
   }
   RTC_CHECK(IsUnifiedPlan())
       << "AddTransceiver is only available with Unified Plan SdpSemantics";
-  if (!(media_type == cricket::MEDIA_TYPE_AUDIO ||
-        media_type == cricket::MEDIA_TYPE_VIDEO)) {
+  if (!(media_type == webrtc::MediaType::AUDIO ||
+        media_type == webrtc::MediaType::VIDEO)) {
     LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
                          "media type is not audio or video");
   }
@@ -1023,7 +1023,7 @@
 
 RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>
 PeerConnection::AddTransceiver(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     rtc::scoped_refptr<MediaStreamTrackInterface> track,
     const RtpTransceiverInit& init,
     bool update_negotiation_needed) {
@@ -1032,13 +1032,13 @@
     LOG_AND_RETURN_ERROR(RTCErrorType::UNSUPPORTED_OPERATION,
                          "Not configured for media");
   }
-  RTC_DCHECK((media_type == cricket::MEDIA_TYPE_AUDIO ||
-              media_type == cricket::MEDIA_TYPE_VIDEO));
+  RTC_DCHECK((media_type == webrtc::MediaType::AUDIO ||
+              media_type == webrtc::MediaType::VIDEO));
   if (track) {
     RTC_DCHECK_EQ(media_type,
                   (track->kind() == MediaStreamTrackInterface::kAudioKind
-                       ? cricket::MEDIA_TYPE_AUDIO
-                       : cricket::MEDIA_TYPE_VIDEO));
+                       ? webrtc::MediaType::AUDIO
+                       : webrtc::MediaType::VIDEO));
   }
 
   size_t num_rids = absl::c_count_if(init.send_encodings,
@@ -1073,7 +1073,7 @@
 
   // Encodings are dropped from the tail if too many are provided.
   size_t max_simulcast_streams =
-      media_type == cricket::MEDIA_TYPE_VIDEO ? kMaxSimulcastStreams : 1u;
+      media_type == webrtc::MediaType::VIDEO ? kMaxSimulcastStreams : 1u;
   if (parameters.encodings.size() > max_simulcast_streams) {
     parameters.encodings.erase(
         parameters.encodings.begin() + max_simulcast_streams,
@@ -1111,7 +1111,7 @@
   // codec selection against supported values.
   cricket::CodecVendor codec_vendor(context_->media_engine(), false,
                                     context_->env().field_trials());
-  if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type == webrtc::MediaType::VIDEO) {
     codecs = codec_vendor.video_send_codecs().codecs();
   } else {
     codecs = codec_vendor.audio_send_codecs().codecs();
@@ -1126,7 +1126,7 @@
     LOG_AND_RETURN_ERROR(result.type(), result.message());
   }
 
-  RTC_LOG(LS_INFO) << "Adding " << cricket::MediaTypeToString(media_type)
+  RTC_LOG(LS_INFO) << "Adding " << webrtc::MediaTypeToString(media_type)
                    << " transceiver in response to a call to AddTransceiver.";
   // Set the sender ID equal to the track ID if the track is specified unless
   // that sender ID is already in use.
@@ -2588,12 +2588,12 @@
   int num_data_mlines = 0;
   for (const ContentInfo& content :
        remote_description.description()->contents()) {
-    cricket::MediaType media_type = content.media_description()->type();
-    if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+    webrtc::MediaType media_type = content.media_description()->type();
+    if (media_type == webrtc::MediaType::AUDIO) {
       num_audio_mlines += 1;
-    } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+    } else if (media_type == webrtc::MediaType::VIDEO) {
       num_video_mlines += 1;
-    } else if (media_type == cricket::MEDIA_TYPE_DATA) {
+    } else if (media_type == webrtc::MediaType::DATA) {
       num_data_mlines += 1;
     }
   }
@@ -2739,7 +2739,7 @@
     std::vector<RtpTransceiverProxyRefPtr> transceivers) {
   TRACE_EVENT0("webrtc", "PeerConnection::ReportTransportStats");
   Thread::ScopedDisallowBlockingCalls no_blocking_calls;
-  std::map<std::string, std::set<cricket::MediaType>>
+  std::map<std::string, std::set<webrtc::MediaType>>
       media_types_by_transport_name;
   for (const auto& transceiver : transceivers) {
     if (transceiver->internal()->channel()) {
@@ -2755,13 +2755,13 @@
         transport_controller_->GetDtlsTransport(*sctp_mid_n_);
     if (dtls_transport) {
       media_types_by_transport_name[dtls_transport->transport_name()].insert(
-          cricket::MEDIA_TYPE_DATA);
+          webrtc::MediaType::DATA);
     }
   }
 
   for (const auto& entry : media_types_by_transport_name) {
     const std::string& transport_name = entry.first;
-    const std::set<cricket::MediaType> media_types = entry.second;
+    const std::set<webrtc::MediaType> media_types = entry.second;
     cricket::TransportStats stats;
     if (transport_controller_->GetStats(transport_name, &stats)) {
       ReportBestConnectionState(stats);
@@ -2824,7 +2824,7 @@
 void PeerConnection::ReportNegotiatedCiphers(
     bool dtls_enabled,
     const cricket::TransportStats& stats,
-    const std::set<cricket::MediaType>& media_types) {
+    const std::set<webrtc::MediaType>& media_types) {
   if (!dtls_enabled || stats.channel_stats.empty()) {
     return;
   }
@@ -2837,19 +2837,19 @@
   }
 
   if (ssl_cipher_suite != kTlsNullWithNullNull) {
-    for (cricket::MediaType media_type : media_types) {
+    for (webrtc::MediaType media_type : media_types) {
       switch (media_type) {
-        case cricket::MEDIA_TYPE_AUDIO:
+        case webrtc::MediaType::AUDIO:
           RTC_HISTOGRAM_ENUMERATION_SPARSE(
               "WebRTC.PeerConnection.SslCipherSuite.Audio", ssl_cipher_suite,
               kSslCipherSuiteMaxValue);
           break;
-        case cricket::MEDIA_TYPE_VIDEO:
+        case webrtc::MediaType::VIDEO:
           RTC_HISTOGRAM_ENUMERATION_SPARSE(
               "WebRTC.PeerConnection.SslCipherSuite.Video", ssl_cipher_suite,
               kSslCipherSuiteMaxValue);
           break;
-        case cricket::MEDIA_TYPE_DATA:
+        case webrtc::MediaType::DATA:
           RTC_HISTOGRAM_ENUMERATION_SPARSE(
               "WebRTC.PeerConnection.SslCipherSuite.Data", ssl_cipher_suite,
               kSslCipherSuiteMaxValue);
@@ -2864,19 +2864,19 @@
   uint16_t ssl_peer_signature_algorithm =
       stats.channel_stats[0].ssl_peer_signature_algorithm;
   if (ssl_peer_signature_algorithm != kSslSignatureAlgorithmUnknown) {
-    for (cricket::MediaType media_type : media_types) {
+    for (webrtc::MediaType media_type : media_types) {
       switch (media_type) {
-        case cricket::MEDIA_TYPE_AUDIO:
+        case webrtc::MediaType::AUDIO:
           RTC_HISTOGRAM_ENUMERATION_SPARSE(
               "WebRTC.PeerConnection.SslPeerSignatureAlgorithm.Audio",
               ssl_peer_signature_algorithm, kSslSignatureAlgorithmMaxValue);
           break;
-        case cricket::MEDIA_TYPE_VIDEO:
+        case webrtc::MediaType::VIDEO:
           RTC_HISTOGRAM_ENUMERATION_SPARSE(
               "WebRTC.PeerConnection.SslPeerSignatureAlgorithm.Video",
               ssl_peer_signature_algorithm, kSslSignatureAlgorithmMaxValue);
           break;
-        case cricket::MEDIA_TYPE_DATA:
+        case webrtc::MediaType::DATA:
           RTC_HISTOGRAM_ENUMERATION_SPARSE(
               "WebRTC.PeerConnection.SslPeerSignatureAlgorithm.Data",
               ssl_peer_signature_algorithm, kSslSignatureAlgorithmMaxValue);
diff --git a/pc/peer_connection.h b/pc/peer_connection.h
index 0a78847..b3679bf 100644
--- a/pc/peer_connection.h
+++ b/pc/peer_connection.h
@@ -150,9 +150,9 @@
       rtc::scoped_refptr<MediaStreamTrackInterface> track,
       const RtpTransceiverInit& init) override;
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> AddTransceiver(
-      cricket::MediaType media_type) override;
+      webrtc::MediaType media_type) override;
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> AddTransceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const RtpTransceiverInit& init) override;
 
   rtc::scoped_refptr<RtpSenderInterface> CreateSender(
@@ -416,7 +416,7 @@
   // Internal implementation for AddTransceiver family of methods. If
   // `fire_callback` is set, fires OnRenegotiationNeeded callback if successful.
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> AddTransceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       rtc::scoped_refptr<MediaStreamTrackInterface> track,
       const RtpTransceiverInit& init,
       bool fire_callback = true) override;
@@ -587,7 +587,7 @@
   static void ReportNegotiatedCiphers(
       bool dtls_enabled,
       const cricket::TransportStats& stats,
-      const std::set<cricket::MediaType>& media_types);
+      const std::set<webrtc::MediaType>& media_types);
   void ReportIceCandidateCollected(const Candidate& candidate)
       RTC_RUN_ON(signaling_thread());
 
diff --git a/pc/peer_connection_bundle_unittest.cc b/pc/peer_connection_bundle_unittest.cc
index 54e24ab..029dedb 100644
--- a/pc/peer_connection_bundle_unittest.cc
+++ b/pc/peer_connection_bundle_unittest.cc
@@ -104,7 +104,7 @@
   using PeerConnectionWrapper::PeerConnectionWrapper;
 
   bool AddIceCandidateToMedia(Candidate* candidate,
-                              cricket::MediaType media_type) {
+                              webrtc::MediaType media_type) {
     auto* desc = pc()->remote_description()->description();
     for (size_t i = 0; i < desc->contents().size(); i++) {
       const auto& content = desc->contents()[i];
@@ -126,7 +126,7 @@
   cricket::VoiceChannel* voice_channel() {
     auto transceivers = GetInternalPeerConnection()->GetTransceiversInternal();
     for (const auto& transceiver : transceivers) {
-      if (transceiver->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+      if (transceiver->media_type() == webrtc::MediaType::AUDIO) {
         return static_cast<cricket::VoiceChannel*>(
             transceiver->internal()->channel());
       }
@@ -141,7 +141,7 @@
   cricket::VideoChannel* video_channel() {
     auto transceivers = GetInternalPeerConnection()->GetTransceiversInternal();
     for (const auto& transceiver : transceivers) {
-      if (transceiver->media_type() == cricket::MEDIA_TYPE_VIDEO) {
+      if (transceiver->media_type() == webrtc::MediaType::VIDEO) {
         return static_cast<cricket::VideoChannel*>(
             transceiver->internal()->channel());
       }
@@ -662,15 +662,15 @@
 
   Candidate audio_candidate1 = CreateLocalUdpCandidate(kAudioAddress1);
   ASSERT_TRUE(caller->AddIceCandidateToMedia(&audio_candidate1,
-                                             cricket::MEDIA_TYPE_AUDIO));
+                                             webrtc::MediaType::AUDIO));
 
   Candidate video_candidate = CreateLocalUdpCandidate(kVideoAddress);
   ASSERT_TRUE(caller->AddIceCandidateToMedia(&video_candidate,
-                                             cricket::MEDIA_TYPE_VIDEO));
+                                             webrtc::MediaType::VIDEO));
 
   Candidate audio_candidate2 = CreateLocalUdpCandidate(kAudioAddress2);
   ASSERT_TRUE(caller->AddIceCandidateToMedia(&audio_candidate2,
-                                             cricket::MEDIA_TYPE_AUDIO));
+                                             webrtc::MediaType::AUDIO));
 
   EXPECT_THAT(
       WaitUntil(
diff --git a/pc/peer_connection_data_channel_unittest.cc b/pc/peer_connection_data_channel_unittest.cc
index d55afe9..d6b8838 100644
--- a/pc/peer_connection_data_channel_unittest.cc
+++ b/pc/peer_connection_data_channel_unittest.cc
@@ -210,10 +210,10 @@
 
   auto offer = caller->CreateOffer();
   const auto& offer_contents = offer->description()->contents();
-  ASSERT_EQ(cricket::MEDIA_TYPE_AUDIO,
+  ASSERT_EQ(webrtc::MediaType::AUDIO,
             offer_contents[0].media_description()->type());
   auto audio_mid = offer_contents[0].mid();
-  ASSERT_EQ(cricket::MEDIA_TYPE_DATA,
+  ASSERT_EQ(webrtc::MediaType::DATA,
             offer_contents[2].media_description()->type());
   auto data_mid = offer_contents[2].mid();
 
diff --git a/pc/peer_connection_encodings_integrationtest.cc b/pc/peer_connection_encodings_integrationtest.cc
index 0e9ed6a..c1f784e 100644
--- a/pc/peer_connection_encodings_integrationtest.cc
+++ b/pc/peer_connection_encodings_integrationtest.cc
@@ -261,7 +261,7 @@
       absl::string_view codec_name) {
     std::vector<RtpCodecCapability> codecs =
         pc_wrapper->pc_factory()
-            ->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO)
+            ->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO)
             .codecs;
     return std::find_if(codecs.begin(), codecs.end(),
                         [&codec_name](const RtpCodecCapability& codec) {
@@ -274,7 +274,7 @@
       absl::string_view codec_name) {
     std::vector<RtpCodecCapability> codecs =
         pc_wrapper->pc_factory()
-            ->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO)
+            ->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO)
             .codecs;
     codecs.erase(std::remove_if(codecs.begin(), codecs.end(),
                                 [&codec_name](const RtpCodecCapability& codec) {
@@ -590,7 +590,7 @@
   // codec preferences because we want the sender to think SVC is a possibility.
   std::vector<RtpCodecCapability> codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   EXPECT_THAT(codecs[0].name, StrCaseEq("VP8"));
   // Attempt SVC (L3T3_KEY), which is not possible with VP8, but the sender does
@@ -1365,7 +1365,7 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
   rtc::scoped_refptr<RtpTransceiverInterface> audio_transceiver =
       transceiver_or_error.MoveValue();
   RtpParameters parameters = audio_transceiver->sender()->GetParameters();
@@ -1377,7 +1377,7 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
   RtpParameters parameters = video_transceiver->sender()->GetParameters();
@@ -1396,7 +1396,7 @@
   rtc::scoped_refptr<AudioTrackInterface> track = stream->GetAudioTracks()[0];
 
   std::optional<RtpCodecCapability> pcmu =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "pcmu");
   ASSERT_TRUE(pcmu);
 
@@ -1437,7 +1437,7 @@
   rtc::scoped_refptr<VideoTrackInterface> track = stream->GetVideoTracks()[0];
 
   std::optional<RtpCodecCapability> vp9 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp9");
   ASSERT_TRUE(vp9);
 
@@ -1484,7 +1484,7 @@
   rtc::scoped_refptr<AudioTrackInterface> track = stream->GetAudioTracks()[0];
 
   std::optional<RtpCodecCapability> pcmu =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "pcmu");
 
   auto transceiver_or_error = local_pc_wrapper->pc()->AddTransceiver(track);
@@ -1521,7 +1521,7 @@
   rtc::scoped_refptr<AudioTrackInterface> track = stream->GetAudioTracks()[0];
 
   std::optional<RtpCodecCapability> pcmu =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "pcmu");
 
   auto transceiver_or_error = local_pc_wrapper->pc()->AddTransceiver(track);
@@ -1570,7 +1570,7 @@
   rtc::scoped_refptr<VideoTrackInterface> track = stream->GetVideoTracks()[0];
 
   std::optional<RtpCodecCapability> vp9 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp9");
 
   auto transceiver_or_error = local_pc_wrapper->pc()->AddTransceiver(track);
@@ -1614,7 +1614,7 @@
   rtc::scoped_refptr<VideoTrackInterface> track = stream->GetVideoTracks()[0];
 
   std::optional<RtpCodecCapability> vp9 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp9");
 
   auto transceiver_or_error = local_pc_wrapper->pc()->AddTransceiver(track);
@@ -1660,7 +1660,7 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   RtpCodec dummy_codec;
-  dummy_codec.kind = cricket::MEDIA_TYPE_AUDIO;
+  dummy_codec.kind = webrtc::MediaType::AUDIO;
   dummy_codec.name = "FOOBAR";
   dummy_codec.clock_rate = 90000;
   dummy_codec.num_channels = 2;
@@ -1672,7 +1672,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO, init);
   EXPECT_FALSE(transceiver_or_error.ok());
   EXPECT_EQ(transceiver_or_error.error().type(),
             RTCErrorType::UNSUPPORTED_OPERATION);
@@ -1683,7 +1683,7 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   RtpCodec dummy_codec;
-  dummy_codec.kind = cricket::MEDIA_TYPE_VIDEO;
+  dummy_codec.kind = webrtc::MediaType::VIDEO;
   dummy_codec.name = "FOOBAR";
   dummy_codec.clock_rate = 90000;
 
@@ -1694,7 +1694,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   EXPECT_FALSE(transceiver_or_error.ok());
   EXPECT_EQ(transceiver_or_error.error().type(),
             RTCErrorType::UNSUPPORTED_OPERATION);
@@ -1705,13 +1705,13 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   RtpCodec dummy_codec;
-  dummy_codec.kind = cricket::MEDIA_TYPE_AUDIO;
+  dummy_codec.kind = webrtc::MediaType::AUDIO;
   dummy_codec.name = "FOOBAR";
   dummy_codec.clock_rate = 90000;
   dummy_codec.num_channels = 2;
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> audio_transceiver =
       transceiver_or_error.MoveValue();
@@ -1727,12 +1727,12 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   RtpCodec dummy_codec;
-  dummy_codec.kind = cricket::MEDIA_TYPE_VIDEO;
+  dummy_codec.kind = webrtc::MediaType::VIDEO;
   dummy_codec.name = "FOOBAR";
   dummy_codec.clock_rate = 90000;
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
@@ -1750,13 +1750,13 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> opus =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "opus");
   ASSERT_TRUE(opus);
 
   std::vector<RtpCodecCapability> not_opus_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
           .codecs;
   not_opus_codecs.erase(
       std::remove_if(not_opus_codecs.begin(), not_opus_codecs.end(),
@@ -1766,7 +1766,7 @@
       not_opus_codecs.end());
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> audio_transceiver =
       transceiver_or_error.MoveValue();
@@ -1789,13 +1789,13 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> opus =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "opus");
   ASSERT_TRUE(opus);
 
   std::vector<RtpCodecCapability> not_opus_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
           .codecs;
   not_opus_codecs.erase(
       std::remove_if(not_opus_codecs.begin(), not_opus_codecs.end(),
@@ -1805,7 +1805,7 @@
       not_opus_codecs.end());
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> audio_transceiver =
       transceiver_or_error.MoveValue();
@@ -1856,7 +1856,7 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
@@ -1917,13 +1917,13 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> vp8 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp8");
   ASSERT_TRUE(vp8);
 
   std::vector<RtpCodecCapability> not_vp8_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   not_vp8_codecs.erase(
       std::remove_if(not_vp8_codecs.begin(), not_vp8_codecs.end(),
@@ -1933,7 +1933,7 @@
       not_vp8_codecs.end());
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
@@ -1956,13 +1956,13 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> vp8 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp8");
   ASSERT_TRUE(vp8);
 
   std::vector<RtpCodecCapability> not_vp8_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   not_vp8_codecs.erase(
       std::remove_if(not_vp8_codecs.begin(), not_vp8_codecs.end(),
@@ -1972,7 +1972,7 @@
       not_vp8_codecs.end());
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
@@ -2018,13 +2018,13 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> opus =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "opus");
   ASSERT_TRUE(opus);
 
   std::vector<RtpCodecCapability> not_opus_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
           .codecs;
   not_opus_codecs.erase(
       std::remove_if(not_opus_codecs.begin(), not_opus_codecs.end(),
@@ -2040,7 +2040,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO, init);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> audio_transceiver =
       transceiver_or_error.MoveValue();
@@ -2067,16 +2067,16 @@
 
   std::vector<RtpCodecCapability> send_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
           .codecs;
 
   std::optional<RtpCodecCapability> opus =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "opus");
   ASSERT_TRUE(opus);
 
   std::optional<RtpCodecCapability> red =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_AUDIO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::AUDIO,
                                                    "red");
   ASSERT_TRUE(red);
 
@@ -2087,7 +2087,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::AUDIO, init);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> audio_transceiver =
       transceiver_or_error.MoveValue();
@@ -2122,7 +2122,7 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> local_pc_wrapper = CreatePc();
 
   std::optional<RtpCodecCapability> vp8 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp8");
   ASSERT_TRUE(vp8);
 
@@ -2134,7 +2134,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
@@ -2152,13 +2152,13 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> vp8 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp8");
   ASSERT_TRUE(vp8);
 
   std::vector<RtpCodecCapability> not_vp8_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   not_vp8_codecs.erase(
       std::remove_if(not_vp8_codecs.begin(), not_vp8_codecs.end(),
@@ -2179,7 +2179,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   ASSERT_TRUE(transceiver_or_error.ok());
   rtc::scoped_refptr<RtpTransceiverInterface> video_transceiver =
       transceiver_or_error.MoveValue();
@@ -2210,11 +2210,11 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> vp8 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp8");
   ASSERT_TRUE(vp8);
   std::optional<RtpCodecCapability> vp9 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp9");
   ASSERT_TRUE(vp9);
 
@@ -2231,7 +2231,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   ASSERT_FALSE(transceiver_or_error.ok());
   EXPECT_EQ(transceiver_or_error.error().type(),
             RTCErrorType::UNSUPPORTED_OPERATION);
@@ -2248,11 +2248,11 @@
   ExchangeIceCandidates(local_pc_wrapper, remote_pc_wrapper);
 
   std::optional<RtpCodecCapability> vp8 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp8");
   ASSERT_TRUE(vp8);
   std::optional<RtpCodecCapability> vp9 =
-      local_pc_wrapper->FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      local_pc_wrapper->FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                                    "vp9");
   ASSERT_TRUE(vp9);
 
@@ -2269,7 +2269,7 @@
   init.send_encodings.push_back(encoding_parameters);
 
   auto transceiver_or_error =
-      local_pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      local_pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   ASSERT_TRUE(transceiver_or_error.ok());
 }
 
@@ -2285,7 +2285,7 @@
   encoding.scale_resolution_down_to = {.width = 1280, .height = 720};
   init.send_encodings.push_back(encoding);
   auto transceiver_or_error =
-      pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   EXPECT_FALSE(transceiver_or_error.ok());
   EXPECT_EQ(transceiver_or_error.error().type(),
             RTCErrorType::UNSUPPORTED_OPERATION);
@@ -2295,7 +2295,7 @@
                                                      .height = 0};
   init.send_encodings[1].scale_resolution_down_to = {.width = 0, .height = 720};
   transceiver_or_error =
-      pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   EXPECT_FALSE(transceiver_or_error.ok());
   EXPECT_EQ(transceiver_or_error.error().type(),
             RTCErrorType::UNSUPPORTED_OPERATION);
@@ -2309,7 +2309,7 @@
                                                      .height = 720};
   init.send_encodings[1].scale_resolution_down_by = 2.0;
   transceiver_or_error =
-      pc_wrapper->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+      pc_wrapper->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   ASSERT_TRUE(transceiver_or_error.ok());
 
   // SetParameters: If `scale_resolution_down_to` is specified on any active
@@ -3161,7 +3161,7 @@
 
   rtc::scoped_refptr<RtpTransceiverInterface> transceiver =
       local_pc_wrapper->pc()
-          ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO)
+          ->AddTransceiver(webrtc::MediaType::VIDEO)
           .MoveValue();
   std::vector<RtpCodecCapability> preferred_codecs =
       GetCapabilitiesAndRestrictToCodec(local_pc_wrapper, "H265");
@@ -3248,7 +3248,7 @@
   // H265.
   std::vector<RtpCodecCapability> sender_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   auto it = std::find_if(sender_codecs.begin(), sender_codecs.end(),
                          [](const RtpCodecCapability codec_capability) {
@@ -3294,7 +3294,7 @@
 
   rtc::scoped_refptr<RtpTransceiverInterface> transceiver =
       local_pc_wrapper->pc()
-          ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO)
+          ->AddTransceiver(webrtc::MediaType::VIDEO)
           .MoveValue();
 
   // Filter on codec name and assert that sender capabilities have codecs for
@@ -3302,7 +3302,7 @@
   // {sendrecv, recvonly}.
   std::vector<RtpCodecCapability> send_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   send_codecs.erase(std::remove_if(send_codecs.begin(), send_codecs.end(),
                                    [](const RtpCodecCapability& codec) {
@@ -3311,7 +3311,7 @@
                     send_codecs.end());
   std::vector<RtpCodecCapability> recv_codecs =
       local_pc_wrapper->pc_factory()
-          ->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
   recv_codecs.erase(std::remove_if(recv_codecs.begin(), recv_codecs.end(),
                                    [](const RtpCodecCapability& codec) {
diff --git a/pc/peer_connection_factory.cc b/pc/peer_connection_factory.cc
index 45fcefd..80b3fe7 100644
--- a/pc/peer_connection_factory.cc
+++ b/pc/peer_connection_factory.cc
@@ -149,17 +149,17 @@
 }
 
 RtpCapabilities PeerConnectionFactory::GetRtpSenderCapabilities(
-    cricket::MediaType kind) const {
+    webrtc::MediaType kind) const {
   RTC_DCHECK_RUN_ON(signaling_thread());
   switch (kind) {
-    case cricket::MEDIA_TYPE_AUDIO: {
+    case webrtc::MediaType::AUDIO: {
       cricket::Codecs cricket_codecs;
       cricket_codecs = codec_vendor_.audio_send_codecs().codecs();
       auto extensions =
           GetDefaultEnabledRtpHeaderExtensions(media_engine()->voice());
       return ToRtpCapabilities(cricket_codecs, extensions);
     }
-    case cricket::MEDIA_TYPE_VIDEO: {
+    case webrtc::MediaType::VIDEO: {
       cricket::Codecs cricket_codecs;
       cricket_codecs = codec_vendor_.video_send_codecs().codecs();
       auto extensions =
@@ -174,17 +174,17 @@
 }
 
 RtpCapabilities PeerConnectionFactory::GetRtpReceiverCapabilities(
-    cricket::MediaType kind) const {
+    webrtc::MediaType kind) const {
   RTC_DCHECK_RUN_ON(signaling_thread());
   switch (kind) {
-    case cricket::MEDIA_TYPE_AUDIO: {
+    case webrtc::MediaType::AUDIO: {
       cricket::Codecs cricket_codecs;
       cricket_codecs = codec_vendor_.audio_recv_codecs().codecs();
       auto extensions =
           GetDefaultEnabledRtpHeaderExtensions(media_engine()->voice());
       return ToRtpCapabilities(cricket_codecs, extensions);
     }
-    case cricket::MEDIA_TYPE_VIDEO: {
+    case webrtc::MediaType::VIDEO: {
       cricket::Codecs cricket_codecs =
           codec_vendor_.video_recv_codecs().codecs();
       auto extensions =
diff --git a/pc/peer_connection_factory.h b/pc/peer_connection_factory.h
index fe04e0f..651ab21 100644
--- a/pc/peer_connection_factory.h
+++ b/pc/peer_connection_factory.h
@@ -65,10 +65,10 @@
       PeerConnectionDependencies dependencies) override;
 
   RtpCapabilities GetRtpSenderCapabilities(
-      cricket::MediaType kind) const override;
+      webrtc::MediaType kind) const override;
 
   RtpCapabilities GetRtpReceiverCapabilities(
-      cricket::MediaType kind) const override;
+      webrtc::MediaType kind) const override;
 
   rtc::scoped_refptr<MediaStreamInterface> CreateLocalMediaStream(
       const std::string& stream_id) override;
diff --git a/pc/peer_connection_factory_proxy.h b/pc/peer_connection_factory_proxy.h
index 88ee3b1..3552c7c 100644
--- a/pc/peer_connection_factory_proxy.h
+++ b/pc/peer_connection_factory_proxy.h
@@ -36,12 +36,10 @@
               CreatePeerConnectionOrError,
               const PeerConnectionInterface::RTCConfiguration&,
               PeerConnectionDependencies)
-PROXY_CONSTMETHOD1(RtpCapabilities,
-                   GetRtpSenderCapabilities,
-                   cricket::MediaType)
+PROXY_CONSTMETHOD1(RtpCapabilities, GetRtpSenderCapabilities, webrtc::MediaType)
 PROXY_CONSTMETHOD1(RtpCapabilities,
                    GetRtpReceiverCapabilities,
-                   cricket::MediaType)
+                   webrtc::MediaType)
 PROXY_METHOD1(rtc::scoped_refptr<MediaStreamInterface>,
               CreateLocalMediaStream,
               const std::string&)
diff --git a/pc/peer_connection_factory_unittest.cc b/pc/peer_connection_factory_unittest.cc
index cad99fb..e8f6a8a 100644
--- a/pc/peer_connection_factory_unittest.cc
+++ b/pc/peer_connection_factory_unittest.cc
@@ -198,7 +198,7 @@
   }
 
   void VerifyAudioCodecCapability(const RtpCodecCapability& codec) {
-    EXPECT_EQ(codec.kind, cricket::MEDIA_TYPE_AUDIO);
+    EXPECT_EQ(codec.kind, webrtc::MediaType::AUDIO);
     EXPECT_FALSE(codec.name.empty());
     EXPECT_GT(codec.clock_rate, 0);
     EXPECT_GT(codec.num_channels, 0);
@@ -206,7 +206,7 @@
 
   void VerifyVideoCodecCapability(const RtpCodecCapability& codec,
                                   bool sender) {
-    EXPECT_EQ(codec.kind, cricket::MEDIA_TYPE_VIDEO);
+    EXPECT_EQ(codec.kind, webrtc::MediaType::VIDEO);
     EXPECT_FALSE(codec.name.empty());
     EXPECT_GT(codec.clock_rate, 0);
     if (sender) {
@@ -345,7 +345,7 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpSenderAudioCapabilities) {
   RtpCapabilities audio_capabilities =
-      factory_->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO);
+      factory_->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO);
   EXPECT_FALSE(audio_capabilities.codecs.empty());
   for (const auto& codec : audio_capabilities.codecs) {
     VerifyAudioCodecCapability(codec);
@@ -358,7 +358,7 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpSenderVideoCapabilities) {
   RtpCapabilities video_capabilities =
-      factory_->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO);
+      factory_->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   EXPECT_FALSE(video_capabilities.codecs.empty());
   for (const auto& codec : video_capabilities.codecs) {
     VerifyVideoCodecCapability(codec, true);
@@ -371,7 +371,7 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpSenderRtxEnabledCapabilities) {
   RtpCapabilities video_capabilities =
-      factory_->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO);
+      factory_->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   const auto it = std::find_if(
       video_capabilities.codecs.begin(), video_capabilities.codecs.end(),
       [](const auto& c) { return c.name == cricket::kRtxCodecName; });
@@ -381,7 +381,7 @@
 TEST(PeerConnectionFactoryTestInternal, CheckRtpSenderRtxDisabledCapabilities) {
   auto factory = CreatePeerConnectionFactoryWithRtxDisabled();
   RtpCapabilities video_capabilities =
-      factory->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO);
+      factory->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   const auto it = std::find_if(
       video_capabilities.codecs.begin(), video_capabilities.codecs.end(),
       [](const auto& c) { return c.name == cricket::kRtxCodecName; });
@@ -390,14 +390,14 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpSenderDataCapabilities) {
   RtpCapabilities data_capabilities =
-      factory_->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_DATA);
+      factory_->GetRtpSenderCapabilities(webrtc::MediaType::DATA);
   EXPECT_TRUE(data_capabilities.codecs.empty());
   EXPECT_TRUE(data_capabilities.header_extensions.empty());
 }
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpReceiverAudioCapabilities) {
   RtpCapabilities audio_capabilities =
-      factory_->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_AUDIO);
+      factory_->GetRtpReceiverCapabilities(webrtc::MediaType::AUDIO);
   EXPECT_FALSE(audio_capabilities.codecs.empty());
   for (const auto& codec : audio_capabilities.codecs) {
     VerifyAudioCodecCapability(codec);
@@ -410,7 +410,7 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpReceiverVideoCapabilities) {
   RtpCapabilities video_capabilities =
-      factory_->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO);
+      factory_->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO);
   EXPECT_FALSE(video_capabilities.codecs.empty());
   for (const auto& codec : video_capabilities.codecs) {
     VerifyVideoCodecCapability(codec, false);
@@ -423,7 +423,7 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpReceiverRtxEnabledCapabilities) {
   RtpCapabilities video_capabilities =
-      factory_->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO);
+      factory_->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO);
   const auto it = std::find_if(
       video_capabilities.codecs.begin(), video_capabilities.codecs.end(),
       [](const auto& c) { return c.name == cricket::kRtxCodecName; });
@@ -434,7 +434,7 @@
      CheckRtpReceiverRtxDisabledCapabilities) {
   auto factory = CreatePeerConnectionFactoryWithRtxDisabled();
   RtpCapabilities video_capabilities =
-      factory->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO);
+      factory->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO);
   const auto it = std::find_if(
       video_capabilities.codecs.begin(), video_capabilities.codecs.end(),
       [](const auto& c) { return c.name == cricket::kRtxCodecName; });
@@ -443,7 +443,7 @@
 
 TEST_F(PeerConnectionFactoryTest, CheckRtpReceiverDataCapabilities) {
   RtpCapabilities data_capabilities =
-      factory_->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_DATA);
+      factory_->GetRtpReceiverCapabilities(webrtc::MediaType::DATA);
   EXPECT_TRUE(data_capabilities.codecs.empty());
   EXPECT_TRUE(data_capabilities.header_extensions.empty());
 }
diff --git a/pc/peer_connection_field_trial_tests.cc b/pc/peer_connection_field_trial_tests.cc
index 0ff31ef..c76dbda 100644
--- a/pc/peer_connection_field_trial_tests.cc
+++ b/pc/peer_connection_field_trial_tests.cc
@@ -16,7 +16,6 @@
 #include <utility>
 
 #include "absl/algorithm/container.h"
-#include "api/create_peerconnection_factory.h"
 #include "api/enable_media_with_defaults.h"
 #include "api/field_trials.h"
 #include "api/field_trials_view.h"
@@ -105,7 +104,7 @@
       "WebRTC-DependencyDescriptorAdvertised/Enabled/"));
 
   WrapperPtr caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   auto offer = caller->CreateOffer();
   auto contents1 = offer->description()->contents();
@@ -113,7 +112,7 @@
 
   const MediaContentDescription* media_description1 =
       contents1[0].media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, media_description1->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, media_description1->type());
   const cricket::RtpHeaderExtensions& rtp_header_extensions1 =
       media_description1->rtp_header_extensions();
 
@@ -139,7 +138,7 @@
 
   WrapperPtr caller = CreatePeerConnection();
   WrapperPtr callee = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   auto offer = caller->CreateOffer();
   cricket::ContentInfos& contents1 = offer->description()->contents();
@@ -147,7 +146,7 @@
 
   MediaContentDescription* media_description1 =
       contents1[0].media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, media_description1->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, media_description1->type());
   cricket::RtpHeaderExtensions rtp_header_extensions1 =
       media_description1->rtp_header_extensions();
 
@@ -191,7 +190,7 @@
 
   MediaContentDescription* media_description2 =
       contents2[0].media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, media_description2->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, media_description2->type());
   cricket::RtpHeaderExtensions rtp_header_extensions2 =
       media_description2->rtp_header_extensions();
 
diff --git a/pc/peer_connection_header_extension_unittest.cc b/pc/peer_connection_header_extension_unittest.cc
index 620ee63..f83a7c8 100644
--- a/pc/peer_connection_header_extension_unittest.cc
+++ b/pc/peer_connection_header_extension_unittest.cc
@@ -51,7 +51,7 @@
 
 class PeerConnectionHeaderExtensionTest
     : public ::testing::TestWithParam<
-          std::tuple<cricket::MediaType, SdpSemantics>> {
+          std::tuple<webrtc::MediaType, SdpSemantics>> {
  protected:
   PeerConnectionHeaderExtensionTest()
       : socket_server_(rtc::CreateDefaultSocketServer()),
@@ -72,10 +72,10 @@
                  RtpTransceiverDirection::kSendRecv)}) {}
 
   std::unique_ptr<PeerConnectionWrapper> CreatePeerConnection(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       std::optional<SdpSemantics> semantics) {
     auto media_engine = std::make_unique<cricket::FakeMediaEngine>();
-    if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO)
+    if (media_type == webrtc::MediaType::AUDIO)
       media_engine->fake_voice_engine()->SetRtpHeaderExtensions(extensions_);
     else
       media_engine->fake_video_engine()->SetRtpHeaderExtensions(extensions_);
@@ -117,7 +117,7 @@
 };
 
 TEST_P(PeerConnectionHeaderExtensionTest, TransceiverOffersHeaderExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -130,7 +130,7 @@
 
 TEST_P(PeerConnectionHeaderExtensionTest,
        SenderReceiverCapabilitiesReturnNotStoppedExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   std::unique_ptr<PeerConnectionWrapper> wrapper =
@@ -150,7 +150,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, OffersUnstoppedDefaultExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -169,7 +169,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, OffersUnstoppedModifiedExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -193,7 +193,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, AnswersUnstoppedModifiedExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -226,7 +226,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, NegotiatedExtensionsAreAccessible) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -262,7 +262,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, OfferedExtensionsArePerTransceiver) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -292,7 +292,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, RemovalAfterRenegotiation) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -324,7 +324,7 @@
 
 TEST_P(PeerConnectionHeaderExtensionTest,
        StoppedByDefaultExtensionCanBeActivatedByRemoteSdp) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -359,7 +359,7 @@
 
 TEST_P(PeerConnectionHeaderExtensionTest,
        UnknownExtensionInRemoteOfferDoesNotShowUp) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -376,7 +376,7 @@
       "AD:7E:77:43:2A:29:EC:93\r\n"
       "a=ice-ufrag:6HHHdzzeIhkE0CKj\r\n"
       "a=ice-pwd:XYDGVpfvklQIEnZ6YnyLsAew\r\n";
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     sdp +=
         "m=audio 9 RTP/AVPF 111\r\n"
         "a=rtpmap:111 fake_audio_codec/8000\r\n";
@@ -413,7 +413,7 @@
 // of the API to only offer non-stopped extensions.
 TEST_P(PeerConnectionHeaderExtensionTest,
        SdpMungingAnswerWithoutApiUsageEnablesExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -430,7 +430,7 @@
       "AD:7E:77:43:2A:29:EC:93\r\n"
       "a=ice-ufrag:6HHHdzzeIhkE0CKj\r\n"
       "a=ice-pwd:XYDGVpfvklQIEnZ6YnyLsAew\r\n";
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     sdp +=
         "m=audio 9 RTP/AVPF 111\r\n"
         "a=rtpmap:111 fake_audio_codec/8000\r\n";
@@ -470,7 +470,7 @@
 
 TEST_P(PeerConnectionHeaderExtensionTest,
        SdpMungingOfferWithoutApiUsageEnablesExtensions) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -500,7 +500,7 @@
 }
 
 TEST_P(PeerConnectionHeaderExtensionTest, EnablingExtensionsAfterRemoteOffer) {
-  cricket::MediaType media_type;
+  webrtc::MediaType media_type;
   SdpSemantics semantics;
   std::tie(media_type, semantics) = GetParam();
   if (semantics != SdpSemantics::kUnifiedPlan)
@@ -517,7 +517,7 @@
       "AD:7E:77:43:2A:29:EC:93\r\n"
       "a=ice-ufrag:6HHHdzzeIhkE0CKj\r\n"
       "a=ice-pwd:XYDGVpfvklQIEnZ6YnyLsAew\r\n";
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     sdp +=
         "m=audio 9 RTP/AVPF 111\r\n"
         "a=rtpmap:111 fake_audio_codec/8000\r\n";
@@ -562,19 +562,17 @@
     ,
     PeerConnectionHeaderExtensionTest,
     Combine(Values(SdpSemantics::kPlanB_DEPRECATED, SdpSemantics::kUnifiedPlan),
-            Values(cricket::MediaType::MEDIA_TYPE_AUDIO,
-                   cricket::MediaType::MEDIA_TYPE_VIDEO)),
+            Values(webrtc::MediaType::AUDIO, webrtc::MediaType::VIDEO)),
     [](const testing::TestParamInfo<
         PeerConnectionHeaderExtensionTest::ParamType>& info) {
-      cricket::MediaType media_type;
+      webrtc::MediaType media_type;
       SdpSemantics semantics;
       std::tie(media_type, semantics) = info.param;
       return (rtc::StringBuilder("With")
               << (semantics == SdpSemantics::kPlanB_DEPRECATED ? "PlanB"
                                                                : "UnifiedPlan")
               << "And"
-              << (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO ? "Voice"
-                                                                     : "Video")
+              << (media_type == webrtc::MediaType::AUDIO ? "Voice" : "Video")
               << "Engine")
           .str();
     });
diff --git a/pc/peer_connection_ice_unittest.cc b/pc/peer_connection_ice_unittest.cc
index 371b366..107d176 100644
--- a/pc/peer_connection_ice_unittest.cc
+++ b/pc/peer_connection_ice_unittest.cc
@@ -273,7 +273,7 @@
             pc_wrapper_ptr->pc());
     PeerConnection* pc = static_cast<PeerConnection*>(pc_proxy->internal());
     for (const auto& transceiver : pc->GetTransceiversInternal()) {
-      if (transceiver->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+      if (transceiver->media_type() == webrtc::MediaType::AUDIO) {
         auto dtls_transport = pc->LookupDtlsTransportByMidInternal(
             transceiver->internal()->channel()->mid());
         return dtls_transport->ice_transport()->internal()->GetIceRole();
diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc
index 8ad11b9..47df968 100644
--- a/pc/peer_connection_integrationtest.cc
+++ b/pc/peer_connection_integrationtest.cc
@@ -621,7 +621,7 @@
   } else {
     callee()->SetRemoteOfferHandler([this] {
       callee()
-          ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)
+          ->GetFirstTransceiverOfType(webrtc::MediaType::VIDEO)
           ->StopInternal();
     });
   }
@@ -657,7 +657,7 @@
       // the offer, but by default it is send only.
       auto transceivers = caller()->pc()->GetTransceivers();
       ASSERT_EQ(2U, transceivers.size());
-      ASSERT_EQ(cricket::MEDIA_TYPE_VIDEO,
+      ASSERT_EQ(webrtc::MediaType::VIDEO,
                 transceivers[1]->receiver()->media_type());
       transceivers[1]->sender()->SetTrack(
           caller()->CreateLocalVideoTrack().get());
@@ -842,7 +842,7 @@
     // rejected in the answer.
     callee()->SetRemoteOfferHandler([this] {
       callee()
-          ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_AUDIO)
+          ->GetFirstTransceiverOfType(webrtc::MediaType::AUDIO)
           ->StopInternal();
     });
   }
@@ -867,7 +867,7 @@
     // The caller's transceiver should have stopped after receiving the answer,
     // and thus no longer listed in transceivers.
     EXPECT_EQ(nullptr,
-              caller()->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_AUDIO));
+              caller()->GetFirstTransceiverOfType(webrtc::MediaType::AUDIO));
   }
 }
 
@@ -888,7 +888,7 @@
     // rejected in the answer.
     callee()->SetRemoteOfferHandler([this] {
       callee()
-          ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)
+          ->GetFirstTransceiverOfType(webrtc::MediaType::VIDEO)
           ->StopInternal();
     });
   }
@@ -913,7 +913,7 @@
     // The caller's transceiver should have stopped after receiving the answer,
     // and thus is no longer present.
     EXPECT_EQ(nullptr,
-              caller()->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO));
+              caller()->GetFirstTransceiverOfType(webrtc::MediaType::VIDEO));
   }
 }
 
@@ -989,7 +989,7 @@
         });
   } else {
     caller()
-        ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)
+        ->GetFirstTransceiverOfType(webrtc::MediaType::VIDEO)
         ->StopInternal();
   }
   caller()->CreateAndSetAndSignalOffer();
@@ -2332,7 +2332,7 @@
   } else {
     callee()->SetRemoteOfferHandler([this] {
       callee()
-          ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)
+          ->GetFirstTransceiverOfType(webrtc::MediaType::VIDEO)
           ->StopInternal();
     });
   }
@@ -2355,7 +2355,7 @@
   } else {
     // The caller's transceiver is stopped, so we need to add another track.
     auto caller_transceiver =
-        caller()->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO);
+        caller()->GetFirstTransceiverOfType(webrtc::MediaType::VIDEO);
     EXPECT_EQ(nullptr, caller_transceiver.get());
     caller()->AddVideoTrack();
   }
@@ -2426,10 +2426,10 @@
        MediaFlowsAfterEarlyWarmupWithAddTransceiver) {
   ASSERT_TRUE(CreatePeerConnectionWrappers());
   ConnectFakeSignaling();
-  auto audio_result = caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto audio_result = caller()->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
   ASSERT_EQ(RTCErrorType::NONE, audio_result.error().type());
   auto caller_audio_sender = audio_result.MoveValue()->sender();
-  auto video_result = caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto video_result = caller()->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   ASSERT_EQ(RTCErrorType::NONE, video_result.error().type());
   auto caller_video_sender = video_result.MoveValue()->sender();
   callee()->SetRemoteOfferHandler([this] {
@@ -2924,7 +2924,7 @@
   ASSERT_TRUE(ExpectNewFrames(media_expectations));
   ASSERT_EQ(callee()->pc()->GetReceivers().size(), 1u);
   auto receiver = callee()->pc()->GetReceivers()[0];
-  ASSERT_EQ(receiver->media_type(), cricket::MEDIA_TYPE_AUDIO);
+  ASSERT_EQ(receiver->media_type(), webrtc::MediaType::AUDIO);
   auto sources = receiver->GetSources();
   ASSERT_GT(receiver->GetParameters().encodings.size(), 0u);
   EXPECT_EQ(receiver->GetParameters().encodings[0].ssrc,
@@ -2947,7 +2947,7 @@
   ASSERT_TRUE(ExpectNewFrames(media_expectations));
   ASSERT_EQ(callee()->pc()->GetReceivers().size(), 1u);
   auto receiver = callee()->pc()->GetReceivers()[0];
-  ASSERT_EQ(receiver->media_type(), cricket::MEDIA_TYPE_VIDEO);
+  ASSERT_EQ(receiver->media_type(), webrtc::MediaType::VIDEO);
   auto sources = receiver->GetSources();
   ASSERT_GT(receiver->GetParameters().encodings.size(), 0u);
   ASSERT_GT(sources.size(), 0u);
@@ -3665,7 +3665,7 @@
   config.sdp_semantics = SdpSemantics::kUnifiedPlan;
   ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(config, config));
   ConnectFakeSignaling();
-  caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller()->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
 
   caller()->CreateAndSetAndSignalOffer();
   ASSERT_THAT(
@@ -3679,7 +3679,7 @@
   while (current_size < 8) {
     // Double the number of tracks
     for (int i = 0; i < current_size; i++) {
-      caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+      caller()->pc()->AddTransceiver(webrtc::MediaType::AUDIO);
     }
     current_size = caller()->pc()->GetTransceivers().size();
     RTC_LOG(LS_INFO) << "Renegotiating with " << current_size << " tracks";
@@ -3703,7 +3703,7 @@
   config.sdp_semantics = SdpSemantics::kUnifiedPlan;
   ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(config, config));
   ConnectFakeSignaling();
-  caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller()->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
 
   caller()->CreateAndSetAndSignalOffer();
   ASSERT_THAT(
@@ -3719,7 +3719,7 @@
   while (current_size < 8) {
     // Double the number of tracks
     for (int i = 0; i < current_size; i++) {
-      caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      caller()->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
     }
     current_size = caller()->pc()->GetTransceivers().size();
     RTC_LOG(LS_INFO) << "Renegotiating with " << current_size << " tracks";
@@ -3765,7 +3765,7 @@
   while (current_size < 16) {
     // Double the number of tracks
     for (int i = 0; i < current_size; i++) {
-      caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+      caller()->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
     }
     current_size = caller()->pc()->GetTransceivers().size();
     RTC_LOG(LS_INFO) << "Renegotiating with " << current_size << " tracks";
@@ -3789,7 +3789,7 @@
 TEST_F(PeerConnectionIntegrationTestUnifiedPlan,
        GetParametersHasEncodingsBeforeNegotiation) {
   ASSERT_TRUE(CreatePeerConnectionWrappers());
-  auto result = caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto result = caller()->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   auto transceiver = result.MoveValue();
   auto parameters = transceiver->sender()->GetParameters();
   EXPECT_EQ(parameters.encodings.size(), 1u);
@@ -3801,7 +3801,7 @@
   RtpTransceiverInit init;
   init.send_encodings.push_back({});
   init.send_encodings[0].max_bitrate_bps = 12345;
-  auto result = caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  auto result = caller()->pc()->AddTransceiver(webrtc::MediaType::VIDEO, init);
   auto transceiver = result.MoveValue();
   auto parameters = transceiver->sender()->GetParameters();
   ASSERT_EQ(parameters.encodings.size(), 1u);
@@ -3866,7 +3866,7 @@
   // has the same track ID as the sending track.
   auto receivers = callee()->pc()->GetReceivers();
   ASSERT_EQ(1u, receivers.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, receivers[0]->media_type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, receivers[0]->media_type());
   EXPECT_EQ(receivers[0]->track()->id(), audio_sender->track()->id());
 
   MediaExpectations media_expectations;
@@ -3887,12 +3887,10 @@
 
   // Verify that one audio and one video receiver have been created on the
   // remote and that they have the same track IDs as the sending tracks.
-  auto audio_receivers =
-      callee()->GetReceiversOfType(cricket::MEDIA_TYPE_AUDIO);
+  auto audio_receivers = callee()->GetReceiversOfType(webrtc::MediaType::AUDIO);
   ASSERT_EQ(1u, audio_receivers.size());
   EXPECT_EQ(audio_receivers[0]->track()->id(), audio_sender->track()->id());
-  auto video_receivers =
-      callee()->GetReceiversOfType(cricket::MEDIA_TYPE_VIDEO);
+  auto video_receivers = callee()->GetReceiversOfType(webrtc::MediaType::VIDEO);
   ASSERT_EQ(1u, video_receivers.size());
   EXPECT_EQ(video_receivers[0]->track()->id(), video_sender->track()->id());
 
@@ -3931,7 +3929,7 @@
       IsRtcOk());
 
   // Verify that only the audio track has been negotiated.
-  EXPECT_EQ(0u, caller()->GetReceiversOfType(cricket::MEDIA_TYPE_VIDEO).size());
+  EXPECT_EQ(0u, caller()->GetReceiversOfType(webrtc::MediaType::VIDEO).size());
   // Might also check that the callee's NegotiationNeeded flag is set.
 
   // Reverse roles.
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index 4f66d0c..0cb713a 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -843,7 +843,7 @@
   }
 
   rtc::scoped_refptr<RtpReceiverInterface> GetFirstReceiverOfType(
-      cricket::MediaType media_type) {
+      webrtc::MediaType media_type) {
     for (auto receiver : pc_->GetReceivers()) {
       if (receiver->media_type() == media_type) {
         return receiver;
@@ -1931,7 +1931,7 @@
 // Test that we can get stats on a video track.
 TEST_P(PeerConnectionInterfaceTest, GetStatsForVideoTrack) {
   InitiateCall();
-  auto video_receiver = GetFirstReceiverOfType(cricket::MEDIA_TYPE_VIDEO);
+  auto video_receiver = GetFirstReceiverOfType(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(video_receiver);
   EXPECT_TRUE(DoGetStats(video_receiver->track().get()));
 }
@@ -2457,8 +2457,8 @@
     EXPECT_EQ(2u, pc_->GetTransceivers().size());
   }
 
-  auto audio_receiver = GetFirstReceiverOfType(cricket::MEDIA_TYPE_AUDIO);
-  auto video_receiver = GetFirstReceiverOfType(cricket::MEDIA_TYPE_VIDEO);
+  auto audio_receiver = GetFirstReceiverOfType(webrtc::MediaType::AUDIO);
+  auto video_receiver = GetFirstReceiverOfType(webrtc::MediaType::VIDEO);
   if (sdp_semantics_ == SdpSemantics::kPlanB_DEPRECATED) {
     ASSERT_TRUE(audio_receiver);
     ASSERT_TRUE(video_receiver);
@@ -2608,9 +2608,9 @@
   // First create and set a remote offer, then reject its video content in our
   // answer.
   CreateAndSetRemoteOffer(kSdpStringWithStream1PlanB);
-  auto audio_receiver = GetFirstReceiverOfType(cricket::MEDIA_TYPE_AUDIO);
+  auto audio_receiver = GetFirstReceiverOfType(webrtc::MediaType::AUDIO);
   ASSERT_TRUE(audio_receiver);
-  auto video_receiver = GetFirstReceiverOfType(cricket::MEDIA_TYPE_VIDEO);
+  auto video_receiver = GetFirstReceiverOfType(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(video_receiver);
 
   rtc::scoped_refptr<MediaStreamTrackInterface> remote_audio =
@@ -3719,7 +3719,7 @@
   std::vector<rtc::scoped_refptr<RtpSenderInterface>> rtp_senders =
       pc_->GetSenders();
   ASSERT_EQ(rtp_senders.size(), 1u);
-  ASSERT_EQ(rtp_senders[0]->media_type(), cricket::MEDIA_TYPE_VIDEO);
+  ASSERT_EQ(rtp_senders[0]->media_type(), webrtc::MediaType::VIDEO);
   rtc::scoped_refptr<RtpSenderInterface> video_rtp_sender = rtp_senders[0];
   RtpParameters parameters = video_rtp_sender->GetParameters();
   ASSERT_NE(parameters.degradation_preference,
diff --git a/pc/peer_connection_internal.h b/pc/peer_connection_internal.h
index 3f38b58..e053ba9 100644
--- a/pc/peer_connection_internal.h
+++ b/pc/peer_connection_internal.h
@@ -119,7 +119,7 @@
   // Internal implementation for AddTransceiver family of methods. If
   // `fire_callback` is set, fires OnRenegotiationNeeded callback if successful.
   virtual RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>
-  AddTransceiver(cricket::MediaType media_type,
+  AddTransceiver(webrtc::MediaType media_type,
                  rtc::scoped_refptr<MediaStreamTrackInterface> track,
                  const RtpTransceiverInit& init,
                  bool fire_callback = true) = 0;
diff --git a/pc/peer_connection_jsep_unittest.cc b/pc/peer_connection_jsep_unittest.cc
index 7a4df54..c1f5b42 100644
--- a/pc/peer_connection_jsep_unittest.cc
+++ b/pc/peer_connection_jsep_unittest.cc
@@ -37,7 +37,6 @@
 #include "media/base/stream_params.h"
 #include "p2p/base/p2p_constants.h"
 #include "p2p/base/transport_info.h"
-#include "pc/channel_interface.h"
 #include "pc/media_session.h"
 #include "pc/peer_connection_wrapper.h"
 #include "pc/sdp_utils.h"
@@ -133,24 +132,24 @@
 // section.
 TEST_F(PeerConnectionJsepTest, AudioOnlyInitialOffer) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
 
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
   ASSERT_EQ(1u, contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, contents[0].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, contents[0].media_description()->type());
 }
 
 // Test than an initial offer with one video track generates one video media
 // section
 TEST_F(PeerConnectionJsepTest, VideoOnlyInitialOffer) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
   ASSERT_EQ(1u, contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, contents[0].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, contents[0].media_description()->type());
 }
 
 // Test that an initial offer with one data channel generates one data media
@@ -162,7 +161,7 @@
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
   ASSERT_EQ(1u, contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_DATA, contents[0].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::DATA, contents[0].media_description()->type());
 }
 
 // Test that creating multiple data channels only results in one data section
@@ -182,11 +181,11 @@
 // JSEP section 5.2.1.
 TEST_F(PeerConnectionJsepTest, MediaSectionsInInitialOfferOrderedCorrectly) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   RtpTransceiverInit init;
   init.direction = RtpTransceiverDirection::kSendOnly;
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO, init);
 
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
@@ -194,19 +193,19 @@
 
   const MediaContentDescription* media_description1 =
       contents[0].media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, media_description1->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, media_description1->type());
   EXPECT_EQ(RtpTransceiverDirection::kSendRecv,
             media_description1->direction());
 
   const MediaContentDescription* media_description2 =
       contents[1].media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, media_description2->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, media_description2->type());
   EXPECT_EQ(RtpTransceiverDirection::kSendRecv,
             media_description2->direction());
 
   const MediaContentDescription* media_description3 =
       contents[2].media_description();
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, media_description3->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, media_description3->type());
   EXPECT_EQ(RtpTransceiverDirection::kSendOnly,
             media_description3->direction());
 }
@@ -214,8 +213,8 @@
 // Test that media sections in the initial offer have different mids.
 TEST_F(PeerConnectionJsepTest, MediaSectionsInInitialOfferHaveDifferentMids) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
 
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
@@ -226,7 +225,7 @@
 TEST_F(PeerConnectionJsepTest,
        StoppedTransceiverHasNoMediaSectionInInitialOffer) {
   auto caller = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   transceiver->StopInternal();
 
   auto offer = caller->CreateOffer();
@@ -247,8 +246,8 @@
 
 TEST_F(PeerConnectionJsepTest, SetLocalOfferSetsTransceiverMid) {
   auto caller = CreatePeerConnection();
-  auto audio_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  auto video_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto audio_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  auto video_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   auto offer = caller->CreateOffer();
   auto audio_mid = offer->description()->contents()[0].mid();
@@ -266,8 +265,8 @@
 // transceivers, one for receiving audio and one for receiving video.
 TEST_F(PeerConnectionJsepTest, SetRemoteOfferCreatesTransceivers) {
   auto caller = CreatePeerConnection();
-  auto caller_audio = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  auto caller_video = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto caller_audio = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  auto caller_video = caller->AddTransceiver(webrtc::MediaType::VIDEO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -275,12 +274,12 @@
   auto transceivers = callee->pc()->GetTransceivers();
   ASSERT_EQ(2u, transceivers.size());
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, transceivers[0]->media_type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, transceivers[0]->media_type());
   EXPECT_EQ(caller_audio->mid(), transceivers[0]->mid());
   EXPECT_EQ(RtpTransceiverDirection::kRecvOnly, transceivers[0]->direction());
   EXPECT_EQ(0u, transceivers[0]->sender()->stream_ids().size());
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, transceivers[1]->media_type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, transceivers[1]->media_type());
   EXPECT_EQ(caller_video->mid(), transceivers[1]->mid());
   EXPECT_EQ(RtpTransceiverDirection::kRecvOnly, transceivers[1]->direction());
   EXPECT_EQ(0u, transceivers[1]->sender()->stream_ids().size());
@@ -335,7 +334,7 @@
   auto caller = CreatePeerConnection();
   caller->AddAudioTrack("a");
   auto callee = CreatePeerConnection();
-  auto transceiver = callee->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = callee->AddTransceiver(webrtc::MediaType::AUDIO);
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
 
@@ -415,9 +414,9 @@
 // offered media in the same order and with the same mids.
 TEST_F(PeerConnectionJsepTest, CreateAnswerHasSameMidsAsOffer) {
   auto caller = CreatePeerConnection();
-  auto first_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
-  auto second_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  auto third_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto first_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
+  auto second_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  auto third_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
   caller->CreateDataChannel("dc");
   auto callee = CreatePeerConnection();
 
@@ -430,13 +429,13 @@
   auto answer = callee->CreateAnswer();
   auto contents = answer->description()->contents();
   ASSERT_EQ(4u, contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, contents[0].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, contents[0].media_description()->type());
   EXPECT_EQ(first_transceiver->mid(), contents[0].mid());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, contents[1].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, contents[1].media_description()->type());
   EXPECT_EQ(second_transceiver->mid(), contents[1].mid());
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, contents[2].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, contents[2].media_description()->type());
   EXPECT_EQ(third_transceiver->mid(), contents[2].mid());
-  EXPECT_EQ(cricket::MEDIA_TYPE_DATA, contents[3].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::DATA, contents[3].media_description()->type());
   EXPECT_EQ(offer_data->mid(), contents[3].mid());
 }
 
@@ -464,7 +463,7 @@
   auto caller = CreatePeerConnection();
   RtpTransceiverInit init;
   init.direction = RtpTransceiverDirection::kSendOnly;
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO, init);
   auto callee = CreatePeerConnection();
   callee->AddAudioTrack("a");
 
@@ -485,7 +484,7 @@
 // property of the transceivers mentioned in the session description.
 TEST_F(PeerConnectionJsepTest, SetLocalAnswerUpdatesCurrentDirection) {
   auto caller = CreatePeerConnection();
-  auto caller_audio = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto caller_audio = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   caller_audio->SetDirectionWithError(RtpTransceiverDirection::kRecvOnly);
   auto callee = CreatePeerConnection();
   callee->AddAudioTrack("a");
@@ -529,7 +528,7 @@
 TEST_F(PeerConnectionJsepTest,
        ChangeDirectionFromRecvOnlyToSendRecvDoesNotBreakVideoNegotiation) {
   auto caller = CreatePeerConnection();
-  auto caller_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto caller_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
   auto callee = CreatePeerConnection();
   caller_transceiver->SetDirectionWithError(RtpTransceiverDirection::kRecvOnly);
 
@@ -547,7 +546,7 @@
 TEST_F(PeerConnectionJsepTest,
        ChangeDirectionFromRecvOnlyToSendRecvDoesNotBreakAudioNegotiation) {
   auto caller = CreatePeerConnection();
-  auto caller_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto caller_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   caller_transceiver->SetDirectionWithError(RtpTransceiverDirection::kRecvOnly);
 
@@ -588,7 +587,7 @@
 TEST_F(PeerConnectionJsepTest,
        ReOfferMediaSectionForAssociatedStoppedTransceiverIsRejected) {
   auto caller = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -610,7 +609,7 @@
 TEST_F(PeerConnectionJsepTest,
        StoppingTransceiverInOfferStopsTransceiverOnRemoteSide) {
   auto caller = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -633,14 +632,14 @@
 TEST_F(PeerConnectionJsepTest,
        CreateOfferDoesNotRecycleMediaSectionIfFirstStopped) {
   auto caller = CreatePeerConnection();
-  auto first_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto first_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
   ASSERT_TRUE(
       caller->SetRemoteDescription(callee->CreateAnswerAndSetAsLocal()));
 
-  auto second_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto second_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   first_transceiver->StopInternal();
 
   auto reoffer = caller->CreateOffer();
@@ -656,7 +655,7 @@
 TEST_F(PeerConnectionJsepTest,
        RecycleMediaSectionWhenStoppingTransceiverOnAnswerer) {
   auto caller = CreatePeerConnection();
-  auto first_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto first_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -718,7 +717,7 @@
 TEST_F(PeerConnectionJsepTest, CreateOfferRecyclesWhenOfferingTwice) {
   // Do a negotiation with a port 0 for the media section.
   auto caller = CreatePeerConnection();
-  auto first_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto first_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
   first_transceiver->StopInternal();
@@ -765,15 +764,15 @@
 class RecycleMediaSectionTest
     : public PeerConnectionJsepTest,
       public ::testing::WithParamInterface<
-          std::tuple<cricket::MediaType, cricket::MediaType>> {
+          std::tuple<webrtc::MediaType, webrtc::MediaType>> {
  protected:
   RecycleMediaSectionTest() {
     first_type_ = std::get<0>(GetParam());
     second_type_ = std::get<1>(GetParam());
   }
 
-  cricket::MediaType first_type_;
-  cricket::MediaType second_type_;
+  webrtc::MediaType first_type_;
+  webrtc::MediaType second_type_;
 };
 
 // Test that recycling works properly when a new transceiver recycles an m=
@@ -1118,15 +1117,15 @@
 INSTANTIATE_TEST_SUITE_P(
     PeerConnectionJsepTest,
     RecycleMediaSectionTest,
-    Combine(Values(cricket::MEDIA_TYPE_AUDIO, cricket::MEDIA_TYPE_VIDEO),
-            Values(cricket::MEDIA_TYPE_AUDIO, cricket::MEDIA_TYPE_VIDEO)));
+    Combine(Values(webrtc::MediaType::AUDIO, webrtc::MediaType::VIDEO),
+            Values(webrtc::MediaType::AUDIO, webrtc::MediaType::VIDEO)));
 
 // Test that a new data channel section will not reuse a recycleable audio or
 // video media section. Additionally, tests that the new section is added to the
 // end of the session description.
 TEST_F(PeerConnectionJsepTest, DataChannelDoesNotRecycleMediaSection) {
   auto caller = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
@@ -1140,9 +1139,9 @@
   auto offer = caller->CreateOffer();
   auto offer_contents = offer->description()->contents();
   ASSERT_EQ(2u, offer_contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO,
+  EXPECT_EQ(webrtc::MediaType::AUDIO,
             offer_contents[0].media_description()->type());
-  EXPECT_EQ(cricket::MEDIA_TYPE_DATA,
+  EXPECT_EQ(webrtc::MediaType::DATA,
             offer_contents[1].media_description()->type());
 
   ASSERT_TRUE(
@@ -1152,9 +1151,9 @@
   auto answer = callee->CreateAnswer();
   auto answer_contents = answer->description()->contents();
   ASSERT_EQ(2u, answer_contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO,
+  EXPECT_EQ(webrtc::MediaType::AUDIO,
             answer_contents[0].media_description()->type());
-  EXPECT_EQ(cricket::MEDIA_TYPE_DATA,
+  EXPECT_EQ(webrtc::MediaType::DATA,
             answer_contents[1].media_description()->type());
 }
 
@@ -1173,8 +1172,8 @@
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
   ASSERT_EQ(2u, contents.size());
-  EXPECT_EQ(cricket::MEDIA_TYPE_DATA, contents[0].media_description()->type());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, contents[1].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::DATA, contents[0].media_description()->type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, contents[1].media_description()->type());
 }
 
 // Tests for MID properties.
@@ -1345,7 +1344,7 @@
   const std::string kTrackId = "audio_track";
 
   auto caller = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   transceiver->sender()->SetTrack(caller->CreateAudioTrack(kTrackId).get());
 
   auto offer = caller->CreateOffer();
@@ -1363,11 +1362,11 @@
 
   RtpTransceiverInit init_recvonly;
   init_recvonly.direction = RtpTransceiverDirection::kRecvOnly;
-  ASSERT_TRUE(caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init_recvonly));
+  ASSERT_TRUE(caller->AddTransceiver(webrtc::MediaType::AUDIO, init_recvonly));
 
   RtpTransceiverInit init_inactive;
   init_inactive.direction = RtpTransceiverDirection::kInactive;
-  ASSERT_TRUE(caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init_inactive));
+  ASSERT_TRUE(caller->AddTransceiver(webrtc::MediaType::VIDEO, init_inactive));
 
   auto offer = caller->CreateOffer();
   auto contents = offer->description()->contents();
@@ -1387,13 +1386,13 @@
   // no tracks to send in response.
   RtpTransceiverInit init_recvonly;
   init_recvonly.direction = RtpTransceiverDirection::kRecvOnly;
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init_recvonly);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO, init_recvonly);
 
   // sendrecv transceiver will get negotiated to recvonly since the callee has
   // no tracks to send in response.
   RtpTransceiverInit init_sendrecv;
   init_sendrecv.direction = RtpTransceiverDirection::kSendRecv;
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init_sendrecv);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO, init_sendrecv);
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
 
@@ -1438,7 +1437,7 @@
 // any MSID information for that section.
 TEST_F(PeerConnectionJsepTest, RemoveMsidIfTransceiverStopped) {
   auto caller = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
@@ -1595,7 +1594,7 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
 
@@ -1907,7 +1906,7 @@
 
 TEST_F(PeerConnectionJsepTest, RollbackRemovesTransceiver) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   ASSERT_EQ(callee->pc()->GetTransceivers().size(), 1u);
@@ -1925,7 +1924,7 @@
 
 TEST_F(PeerConnectionJsepTest, RollbackKeepsTransceiverAndClearsMid) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   callee->AddAudioTrack("a");
@@ -1951,7 +1950,7 @@
 TEST_F(PeerConnectionJsepTest,
        RollbackKeepsTransceiverAfterAddTrackEvenWhenTrackIsNulled) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   callee->AddAudioTrack("a");
@@ -1971,7 +1970,7 @@
 
 TEST_F(PeerConnectionJsepTest, RollbackRestoresMid) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   callee->AddAudioTrack("a");
   auto offer = callee->CreateOffer();
@@ -1994,7 +1993,7 @@
   init.send_encodings.push_back(encoding);
   encoding.rid = "lo";
   init.send_encodings.push_back(encoding);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO, init);
   auto encodings =
       caller->pc()->GetTransceivers()[0]->sender()->init_send_encodings();
   EXPECT_TRUE(caller->SetLocalDescription(caller->CreateOffer()));
@@ -2017,8 +2016,8 @@
   init.send_encodings.push_back(encoding);
   encoding.rid = "lo";
   init.send_encodings.push_back(encoding);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
-  callee->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO, init);
+  callee->AddTransceiver(webrtc::MediaType::VIDEO);
   callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal());
   caller->SetRemoteDescription(callee->CreateAnswerAndSetAsLocal());
   auto params = caller->pc()->GetTransceivers()[0]->sender()->GetParameters();
@@ -2059,7 +2058,7 @@
   EXPECT_EQ(callee->pc()->GetTransceivers().size(), 1u);
   EXPECT_EQ(callee->pc()->GetTransceivers()[0]->mid(), mid);
   EXPECT_EQ(callee->pc()->GetTransceivers()[0]->media_type(),
-            cricket::MEDIA_TYPE_VIDEO);
+            webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->SetLocalDescription(std::move(offer)));
   EXPECT_EQ(callee->observer()->remove_track_events_.size(),
             callee->observer()->add_track_events_.size());
@@ -2095,9 +2094,9 @@
   config.sdp_semantics = SdpSemantics::kUnifiedPlan;
   config.enable_implicit_rollback = true;
   auto caller = CreatePeerConnection(config);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
   auto callee = CreatePeerConnection(config);
-  callee->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  callee->AddTransceiver(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
   auto initial_mid = callee->pc()->GetTransceivers()[0]->mid();
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -2115,7 +2114,7 @@
   config.sdp_semantics = SdpSemantics::kUnifiedPlan;
   config.bundle_policy = PeerConnectionInterface::kBundlePolicyMaxBundle;
   auto caller = CreatePeerConnection(config);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection(config);
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
   EXPECT_TRUE(callee->CreateAnswerAndSetAsLocal());
@@ -2166,7 +2165,7 @@
 
 TEST_F(PeerConnectionJsepTest, RollbackLocalDirectionChange) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
   EXPECT_TRUE(
@@ -2189,7 +2188,7 @@
 
 TEST_F(PeerConnectionJsepTest, RollbackRemoteDirectionChange) {
   auto caller = CreatePeerConnection();
-  auto caller_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto caller_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   callee->AddAudioTrack("a");
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -2219,7 +2218,7 @@
 TEST_F(PeerConnectionJsepTest,
        RollbackRestoresFiredDirectionAndOnTrackCanFireAgain) {
   auto caller = CreatePeerConnection();
-  auto caller_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto caller_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   callee->AddAudioTrack("a");
   ASSERT_EQ(callee->pc()->GetTransceivers().size(), 1u);
@@ -2249,7 +2248,7 @@
 TEST_F(PeerConnectionJsepTest,
        RollbackFromInactiveToReceivingMakesOnTrackFire) {
   auto caller = CreatePeerConnection();
-  auto caller_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto caller_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   // Perform full O/A so that transceiver is associated. Ontrack fires.
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
@@ -2272,9 +2271,9 @@
 
 TEST_F(PeerConnectionJsepTest, RollbackAfterMultipleSLD) {
   auto callee = CreatePeerConnection();
-  callee->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  callee->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
-  callee->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  callee->AddTransceiver(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
   callee->observer()->clear_legacy_renegotiation_needed();
   callee->observer()->clear_latest_negotiation_needed_event();
@@ -2288,9 +2287,9 @@
 
 TEST_F(PeerConnectionJsepTest, NoRollbackNeeded) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
-  callee->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  callee->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(caller->CreateOfferAndSetAsLocal());
   EXPECT_TRUE(caller->CreateOfferAndSetAsLocal());
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
@@ -2323,7 +2322,7 @@
   config.sdp_semantics = SdpSemantics::kUnifiedPlan;
   config.enable_implicit_rollback = true;
   auto caller = CreatePeerConnection(config);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
   auto callee = CreatePeerConnection(config);
   callee->CreateDataChannel("dummy");
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
@@ -2340,7 +2339,7 @@
   caller->CreateDataChannel("dummy");
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   EXPECT_TRUE(callee->SetRemoteDescription(callee->CreateRollback()));
-  callee->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  callee->AddTransceiver(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
 }
 
@@ -2351,7 +2350,7 @@
   caller->CreateDataChannel("dummy");
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   EXPECT_TRUE(callee->SetRemoteDescription(callee->CreateRollback()));
-  callee->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  callee->AddTransceiver(webrtc::MediaType::VIDEO);
   callee->CreateDataChannel("dummy");
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
 }
@@ -2369,7 +2368,7 @@
 TEST_F(PeerConnectionJsepTest, RollbackRemoteTransceiverThenAddDataChannel) {
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   EXPECT_TRUE(callee->SetRemoteDescription(callee->CreateRollback()));
   callee->CreateDataChannel("dummy");
@@ -2380,19 +2379,19 @@
        RollbackRemoteTransceiverThenAddDataChannelAndTransceiver) {
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
   EXPECT_TRUE(callee->SetRemoteDescription(callee->CreateRollback()));
   callee->CreateDataChannel("dummy");
-  callee->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  callee->AddTransceiver(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(callee->CreateOfferAndSetAsLocal());
 }
 
 TEST_F(PeerConnectionJsepTest, BundleOnlySectionDoesNotNeedRtcpMux) {
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
   auto offer = caller->CreateOffer();
   // Remove rtcp-mux and set bundle-only on the second content.
   offer->description()->contents()[1].media_description()->set_rtcp_mux(false);
diff --git a/pc/peer_connection_media_unittest.cc b/pc/peer_connection_media_unittest.cc
index 686cf8a..cbcc1c0 100644
--- a/pc/peer_connection_media_unittest.cc
+++ b/pc/peer_connection_media_unittest.cc
@@ -239,7 +239,7 @@
 
   RtpTransceiverDirection GetMediaContentDirection(
       const SessionDescriptionInterface* sdesc,
-      cricket::MediaType media_type) {
+      webrtc::MediaType media_type) {
     auto* content = GetFirstMediaContent(sdesc->description(), media_type);
     RTC_DCHECK(content);
     return content->media_description()->direction();
@@ -394,7 +394,7 @@
   options.num_simulcast_layers = 3;
   auto offer = caller->CreateOffer(options);
   auto* description =
-      GetFirstMediaContent(offer->description(), cricket::MEDIA_TYPE_VIDEO)
+      GetFirstMediaContent(offer->description(), webrtc::MediaType::VIDEO)
           ->media_description();
   ASSERT_EQ(1u, description->streams().size());
   ASSERT_TRUE(description->streams()[0].get_ssrc_group("SIM"));
@@ -404,7 +404,7 @@
   caller->SetLocalDescription(std::move(offer));
   auto senders = caller->pc()->GetSenders();
   ASSERT_EQ(1u, senders.size());
-  EXPECT_EQ(cricket::MediaType::MEDIA_TYPE_VIDEO, senders[0]->media_type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, senders[0]->media_type());
   EXPECT_EQ(3u, senders[0]->GetParameters().encodings.size());
 }
 
@@ -421,7 +421,7 @@
   options.num_simulcast_layers = 3;
   auto answer = callee->CreateAnswer(options);
   auto* description =
-      GetFirstMediaContent(answer->description(), cricket::MEDIA_TYPE_VIDEO)
+      GetFirstMediaContent(answer->description(), webrtc::MediaType::VIDEO)
           ->media_description();
   ASSERT_EQ(1u, description->streams().size());
   ASSERT_TRUE(description->streams()[0].get_ssrc_group("SIM"));
@@ -431,7 +431,7 @@
   callee->SetLocalDescription(std::move(answer));
   auto senders = callee->pc()->GetSenders();
   ASSERT_EQ(1u, senders.size());
-  EXPECT_EQ(cricket::MediaType::MEDIA_TYPE_VIDEO, senders[0]->media_type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, senders[0]->media_type());
   EXPECT_EQ(3u, senders[0]->GetParameters().encodings.size());
 }
 
@@ -699,7 +699,7 @@
   auto offer = caller->CreateOffer(options);
 
   auto* content =
-      GetFirstMediaContent(offer->description(), cricket::MEDIA_TYPE_AUDIO);
+      GetFirstMediaContent(offer->description(), webrtc::MediaType::AUDIO);
   if (expected_direction_ == RtpTransceiverDirection::kInactive) {
     EXPECT_FALSE(content);
   } else {
@@ -785,7 +785,7 @@
   auto expected_direction =
       RtpTransceiverDirectionFromSendRecv(negotiate_send, negotiate_recv);
   EXPECT_EQ(expected_direction,
-            GetMediaContentDirection(answer.get(), cricket::MEDIA_TYPE_AUDIO));
+            GetMediaContentDirection(answer.get(), webrtc::MediaType::AUDIO));
 }
 
 // Tests that the media section is rejected if and only if the callee has no
@@ -846,9 +846,9 @@
   auto offer = caller->CreateOffer(options);
 
   EXPECT_EQ(RtpTransceiverDirection::kRecvOnly,
-            GetMediaContentDirection(offer.get(), cricket::MEDIA_TYPE_AUDIO));
+            GetMediaContentDirection(offer.get(), webrtc::MediaType::AUDIO));
   EXPECT_EQ(RtpTransceiverDirection::kSendOnly,
-            GetMediaContentDirection(offer.get(), cricket::MEDIA_TYPE_VIDEO));
+            GetMediaContentDirection(offer.get(), webrtc::MediaType::VIDEO));
 }
 
 TEST_P(PeerConnectionMediaTest, AnswerHasDifferentDirectionsForAudioVideo) {
@@ -870,9 +870,9 @@
   auto answer = callee->CreateAnswer(options);
 
   EXPECT_EQ(RtpTransceiverDirection::kRecvOnly,
-            GetMediaContentDirection(answer.get(), cricket::MEDIA_TYPE_AUDIO));
+            GetMediaContentDirection(answer.get(), webrtc::MediaType::AUDIO));
   EXPECT_EQ(RtpTransceiverDirection::kSendOnly,
-            GetMediaContentDirection(answer.get(), cricket::MEDIA_TYPE_VIDEO));
+            GetMediaContentDirection(answer.get(), webrtc::MediaType::VIDEO));
 }
 
 void AddComfortNoiseCodecsToSend(cricket::FakeMediaEngine* media_engine) {
@@ -1134,7 +1134,7 @@
 }
 
 void RenameContent(SessionDescription* desc,
-                   cricket::MediaType media_type,
+                   webrtc::MediaType media_type,
                    const std::string& new_name) {
   auto* content = GetFirstMediaContent(desc, media_type);
   RTC_DCHECK(content);
@@ -1162,8 +1162,8 @@
   auto callee = CreatePeerConnectionWithAudioVideo();
 
   auto offer = caller->CreateOffer();
-  RenameContent(offer->description(), cricket::MEDIA_TYPE_AUDIO, kAudioMid);
-  RenameContent(offer->description(), cricket::MEDIA_TYPE_VIDEO, kVideoMid);
+  RenameContent(offer->description(), webrtc::MediaType::AUDIO, kAudioMid);
+  RenameContent(offer->description(), webrtc::MediaType::VIDEO, kVideoMid);
   ASSERT_TRUE(callee->SetRemoteDescription(std::move(offer)));
 
   auto answer = callee->CreateAnswer();
@@ -1181,8 +1181,8 @@
   auto callee = CreatePeerConnectionWithAudioVideo();
 
   auto offer = caller->CreateOffer();
-  RenameContent(offer->description(), cricket::MEDIA_TYPE_AUDIO, kAudioMid);
-  RenameContent(offer->description(), cricket::MEDIA_TYPE_VIDEO, kVideoMid);
+  RenameContent(offer->description(), webrtc::MediaType::AUDIO, kAudioMid);
+  RenameContent(offer->description(), webrtc::MediaType::VIDEO, kVideoMid);
   ASSERT_TRUE(callee->SetRemoteDescription(std::move(offer)));
   ASSERT_TRUE(callee->SetLocalDescription(callee->CreateAnswer()));
 
@@ -1198,8 +1198,8 @@
   auto callee = CreatePeerConnectionWithAudioVideo();
 
   auto offer = caller->CreateOffer();
-  RenameContent(offer->description(), cricket::MEDIA_TYPE_AUDIO, "same");
-  RenameContent(offer->description(), cricket::MEDIA_TYPE_VIDEO, "same");
+  RenameContent(offer->description(), webrtc::MediaType::AUDIO, "same");
+  RenameContent(offer->description(), webrtc::MediaType::VIDEO, "same");
 
   std::string error;
   EXPECT_FALSE(callee->SetRemoteDescription(std::move(offer), &error));
@@ -1500,8 +1500,8 @@
   auto caller = CreatePeerConnectionWithAudio(std::move(fake_engine));
 
   auto transceiver = caller->pc()->GetTransceivers().front();
-  auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_AUDIO);
+  auto capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO);
 
   std::vector<RtpCodecCapability> codecs;
   absl::c_copy_if(capabilities.codecs, std::back_inserter(codecs),
@@ -1519,14 +1519,12 @@
   auto caller = CreatePeerConnectionWithAudio();
 
   auto transceiver = caller->pc()->GetTransceivers().front();
-  auto video_codecs =
-      caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)
-          .codecs;
-  auto codecs =
-      caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_AUDIO)
-          .codecs;
+  auto video_codecs = caller->pc_factory()
+                          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
+                          .codecs;
+  auto codecs = caller->pc_factory()
+                    ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
+                    .codecs;
   codecs.insert(codecs.end(), video_codecs.begin(), video_codecs.end());
   auto result = transceiver->SetCodecPreferences(codecs);
   EXPECT_EQ(RTCErrorType::INVALID_MODIFICATION, result.type());
@@ -1548,10 +1546,9 @@
 
   auto transceiver =
       RtpTransceiverInternal(caller->pc()->GetTransceivers().front());
-  auto codecs =
-      caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_AUDIO)
-          .codecs;
+  auto codecs = caller->pc_factory()
+                    ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
+                    .codecs;
   auto codecs_only_rtx_red_fec = codecs;
   auto it = std::remove_if(codecs_only_rtx_red_fec.begin(),
                            codecs_only_rtx_red_fec.end(),
@@ -1571,7 +1568,7 @@
 
   auto sender_audio_codecs =
       caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
           .codecs;
 
   auto audio_transceiver = caller->pc()->GetTransceivers().front();
@@ -1590,7 +1587,7 @@
 
   auto sender_audio_codecs =
       caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_AUDIO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
           .codecs;
   std::vector<RtpCodecCapability> empty_codecs = {};
 
@@ -1609,14 +1606,12 @@
   auto caller = CreatePeerConnectionWithVideo();
 
   auto transceiver = caller->pc()->GetTransceivers().front();
-  auto audio_codecs =
-      caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_AUDIO)
-          .codecs;
-  auto codecs =
-      caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)
-          .codecs;
+  auto audio_codecs = caller->pc_factory()
+                          ->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO)
+                          .codecs;
+  auto codecs = caller->pc_factory()
+                    ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
+                    .codecs;
   codecs.insert(codecs.end(), audio_codecs.begin(), audio_codecs.end());
   auto result = transceiver->SetCodecPreferences(codecs);
   EXPECT_EQ(RTCErrorType::INVALID_MODIFICATION, result.type());
@@ -1637,10 +1632,9 @@
   auto caller = CreatePeerConnectionWithVideo(std::move(fake_engine));
 
   auto transceiver = caller->pc()->GetTransceivers().front();
-  auto codecs =
-      caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)
-          .codecs;
+  auto codecs = caller->pc_factory()
+                    ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
+                    .codecs;
   auto codecs_only_rtx_red_fec = codecs;
   auto it = std::remove_if(codecs_only_rtx_red_fec.begin(),
                            codecs_only_rtx_red_fec.end(),
@@ -1660,7 +1654,7 @@
 
   auto sender_video_codecs =
       caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
 
   auto video_transceiver = caller->pc()->GetTransceivers().front();
@@ -1679,7 +1673,7 @@
 
   auto sender_video_codecs =
       caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
 
   std::vector<RtpCodecCapability> empty_codecs = {};
@@ -1700,7 +1694,7 @@
 
   auto sender_video_codecs =
       caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
 
   auto video_transceiver = caller->pc()->GetTransceivers().front();
@@ -1737,7 +1731,7 @@
 
   auto sender_video_codecs =
       caller->pc_factory()
-          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
           .codecs;
 
   auto video_transceiver = caller->pc()->GetTransceivers().front();
@@ -1785,7 +1779,7 @@
   auto callee = CreatePeerConnection(std::move(callee_fake_engine));
 
   auto video_codecs = caller->pc_factory()
-                          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+                          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
                           .codecs;
 
   auto send_transceiver = caller->pc()->GetTransceivers().front();
@@ -1849,7 +1843,7 @@
   auto callee = CreatePeerConnection(std::move(callee_fake_engine));
 
   auto video_codecs = caller->pc_factory()
-                          ->GetRtpSenderCapabilities(cricket::MEDIA_TYPE_VIDEO)
+                          ->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO)
                           .codecs;
 
   auto send_transceiver = caller->pc()->GetTransceivers().front();
@@ -1897,8 +1891,8 @@
   EXPECT_TRUE(HasAnyComfortNoiseCodecs(offer->description()));
 
   auto transceiver = caller->pc()->GetTransceivers().front();
-  auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_AUDIO);
+  auto capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   options.voice_activity_detection = false;
@@ -1929,13 +1923,13 @@
   ASSERT_EQ(2u, transceivers.size());
 
   auto audio_transceiver = caller->pc()->GetTransceivers()[0];
-  auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_AUDIO);
+  auto capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(audio_transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   auto video_transceiver = caller->pc()->GetTransceivers()[1];
-  capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_VIDEO);
+  capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(video_transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   RTCOfferAnswerOptions options;
@@ -1974,13 +1968,13 @@
   ASSERT_EQ(2u, transceivers.size());
 
   auto audio_transceiver = caller->pc()->GetTransceivers()[0];
-  auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_AUDIO);
+  auto capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(audio_transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   auto video_transceiver = caller->pc()->GetTransceivers()[1];
-  capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_VIDEO);
+  capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(video_transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   auto answer = caller->CreateAnswer(options);
@@ -2020,13 +2014,13 @@
   ASSERT_EQ(2u, transceivers.size());
 
   auto audio_transceiver = caller->pc()->GetTransceivers()[0];
-  auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_AUDIO);
+  auto capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(audio_transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   auto video_transceiver = caller->pc()->GetTransceivers()[1];
-  capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_VIDEO);
+  capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   EXPECT_TRUE(video_transceiver->SetCodecPreferences(capabilities.codecs).ok());
 
   auto reoffer = caller->CreateOffer(options);
@@ -2060,7 +2054,7 @@
       RtpTransceiverDirection::kSendOnly);
   ASSERT_TRUE(error.ok());
   auto capabilities = caller->pc_factory()->GetRtpReceiverCapabilities(
-      cricket::MediaType::MEDIA_TYPE_AUDIO);
+      webrtc::MediaType::AUDIO);
   EXPECT_TRUE(audio_transceiver->SetCodecPreferences(capabilities.codecs).ok());
   RTCOfferAnswerOptions options;
   EXPECT_TRUE(caller->SetLocalDescription(caller->CreateOffer(options)));
@@ -2089,8 +2083,8 @@
   EXPECT_TRUE(video_transceiver
                   ->SetDirectionWithError(RtpTransceiverDirection::kRecvOnly)
                   .ok());
-  auto capabilities = caller->pc_factory()->GetRtpSenderCapabilities(
-      cricket::MediaType::MEDIA_TYPE_VIDEO);
+  auto capabilities =
+      caller->pc_factory()->GetRtpSenderCapabilities(webrtc::MediaType::VIDEO);
   auto it =
       std::remove_if(capabilities.codecs.begin(), capabilities.codecs.end(),
                      [](const RtpCodecCapability& codec) {
diff --git a/pc/peer_connection_proxy.h b/pc/peer_connection_proxy.h
index 03f8a80..15f9d7d2 100644
--- a/pc/peer_connection_proxy.h
+++ b/pc/peer_connection_proxy.h
@@ -53,10 +53,10 @@
               const RtpTransceiverInit&)
 PROXY_METHOD1(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              cricket::MediaType)
+              webrtc::MediaType)
 PROXY_METHOD2(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              cricket::MediaType,
+              webrtc::MediaType,
               const RtpTransceiverInit&)
 PROXY_METHOD2(rtc::scoped_refptr<RtpSenderInterface>,
               CreateSender,
diff --git a/pc/peer_connection_rtp_unittest.cc b/pc/peer_connection_rtp_unittest.cc
index 4b17364..dbf4ac6 100644
--- a/pc/peer_connection_rtp_unittest.cc
+++ b/pc/peer_connection_rtp_unittest.cc
@@ -346,11 +346,11 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto audio_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto audio_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   RtpTransceiverInit video_transceiver_init;
   video_transceiver_init.stream_ids = {kStreamId1, kStreamId2};
   auto video_transceiver =
-      caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, video_transceiver_init);
+      caller->AddTransceiver(webrtc::MediaType::VIDEO, video_transceiver_init);
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
 
@@ -400,7 +400,7 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(
       transceiver->SetDirectionWithError(RtpTransceiverDirection::kInactive)
           .ok());
@@ -431,7 +431,7 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
   EXPECT_EQ(0u, caller->observer()->on_track_transceivers_.size());
@@ -502,7 +502,7 @@
 TEST_F(PeerConnectionRtpTestUnifiedPlan,
        ChangeDirectionInAnswerResultsInRemoveTrackEvent) {
   auto caller = CreatePeerConnection();
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto callee = CreatePeerConnection();
   callee->AddAudioTrack("audio_track", {});
 
@@ -803,8 +803,8 @@
   // Caller offers to receive audio and video.
   RtpTransceiverInit init;
   init.direction = RtpTransceiverDirection::kRecvOnly;
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO, init);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO, init);
 
   // Callee wants to send audio and video tracks.
   callee->AddTrack(callee->CreateAudioTrack("audio_track"), {});
@@ -957,7 +957,7 @@
        AddTransceiverHasCorrectInitProperties) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_EQ(std::nullopt, transceiver->mid());
   EXPECT_FALSE(transceiver->stopped());
   EXPECT_EQ(RtpTransceiverDirection::kSendRecv, transceiver->direction());
@@ -970,14 +970,14 @@
        AddAudioTransceiverCreatesAudioSenderAndReceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, transceiver->media_type());
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  EXPECT_EQ(webrtc::MediaType::AUDIO, transceiver->media_type());
 
   ASSERT_TRUE(transceiver->sender());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, transceiver->sender()->media_type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, transceiver->sender()->media_type());
 
   ASSERT_TRUE(transceiver->receiver());
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, transceiver->receiver()->media_type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, transceiver->receiver()->media_type());
 
   auto track = transceiver->receiver()->track();
   ASSERT_TRUE(track);
@@ -991,14 +991,14 @@
        AddAudioTransceiverCreatesVideoSenderAndReceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, transceiver->media_type());
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
+  EXPECT_EQ(webrtc::MediaType::VIDEO, transceiver->media_type());
 
   ASSERT_TRUE(transceiver->sender());
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, transceiver->sender()->media_type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, transceiver->sender()->media_type());
 
   ASSERT_TRUE(transceiver->receiver());
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, transceiver->receiver()->media_type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, transceiver->receiver()->media_type());
 
   auto track = transceiver->receiver()->track();
   ASSERT_TRUE(track);
@@ -1012,7 +1012,7 @@
 TEST_F(PeerConnectionRtpTestUnifiedPlan, AddTransceiverShowsInLists) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_EQ(
       std::vector<rtc::scoped_refptr<RtpTransceiverInterface>>{transceiver},
       caller->pc()->GetTransceivers());
@@ -1034,7 +1034,7 @@
 
   RtpTransceiverInit init;
   init.direction = RtpTransceiverDirection::kSendOnly;
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO, init);
   EXPECT_EQ(RtpTransceiverDirection::kSendOnly, transceiver->direction());
 }
 
@@ -1089,7 +1089,7 @@
        AddTransceiverWithInvalidKindReturnsError) {
   auto caller = CreatePeerConnection();
 
-  auto result = caller->pc()->AddTransceiver(cricket::MEDIA_TYPE_DATA);
+  auto result = caller->pc()->AddTransceiver(webrtc::MediaType::DATA);
   EXPECT_EQ(RTCErrorType::INVALID_PARAMETER, result.error().type());
 }
 
@@ -1111,7 +1111,7 @@
   auto sender = caller->AddTrack(audio_track);
   ASSERT_TRUE(sender);
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, sender->media_type());
+  EXPECT_EQ(webrtc::MediaType::AUDIO, sender->media_type());
   EXPECT_EQ(audio_track, sender->track());
 }
 
@@ -1124,7 +1124,7 @@
   auto sender = caller->AddTrack(video_track);
   ASSERT_TRUE(sender);
 
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, sender->media_type());
+  EXPECT_EQ(webrtc::MediaType::VIDEO, sender->media_type());
   EXPECT_EQ(video_track, sender->track());
 }
 
@@ -1148,7 +1148,7 @@
 TEST_F(PeerConnectionRtpTestUnifiedPlan, AddTrackReusesTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto audio_track = caller->CreateAudioTrack("a");
   auto sender = caller->AddTrack(audio_track);
   ASSERT_TRUE(sender);
@@ -1164,7 +1164,7 @@
        AddTrackWithSendEncodingDoesNotReuseTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto audio_track = caller->CreateAudioTrack("a");
   RtpEncodingParameters encoding;
   auto sender = caller->AddTrack(audio_track, {}, {encoding});
@@ -1198,8 +1198,8 @@
 TEST_F(PeerConnectionRtpTestUnifiedPlan, AddTrackReusesTransceiverOfType) {
   auto caller = CreatePeerConnection();
 
-  auto audio_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  auto video_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto audio_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  auto video_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
   auto sender = caller->AddVideoTrack("v");
 
   ASSERT_EQ(2u, caller->pc()->GetTransceivers().size());
@@ -1214,7 +1214,7 @@
        AddTrackDoesNotReuseTransceiverOfWrongType) {
   auto caller = CreatePeerConnection();
 
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto sender = caller->AddVideoTrack("v");
 
   auto transceivers = caller->pc()->GetTransceivers();
@@ -1229,8 +1229,8 @@
        AddTrackReusesFirstMatchingTransceiver) {
   auto caller = CreatePeerConnection();
 
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
   auto sender = caller->AddAudioTrack("a");
 
   auto transceivers = caller->pc()->GetTransceivers();
@@ -1248,7 +1248,7 @@
 
   RtpTransceiverInit init;
   init.direction = RtpTransceiverDirection::kInactive;
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO, init);
   EXPECT_TRUE(caller->observer()->legacy_renegotiation_needed());
   EXPECT_TRUE(caller->observer()->has_negotiation_needed_event());
 
@@ -1271,7 +1271,7 @@
 
   RtpTransceiverInit init;
   init.direction = RtpTransceiverDirection::kRecvOnly;
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO, init);
   EXPECT_TRUE(caller->observer()->legacy_renegotiation_needed());
   EXPECT_TRUE(caller->observer()->has_negotiation_needed_event());
 
@@ -1492,8 +1492,8 @@
 
   RtpTransceiverInit recvonly;
   recvonly.direction = RtpTransceiverDirection::kRecvOnly;
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, recvonly);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, recvonly);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO, recvonly);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO, recvonly);
 
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer()));
 
@@ -1542,7 +1542,7 @@
   EXPECT_FALSE(caller->observer()->legacy_renegotiation_needed());
   EXPECT_FALSE(caller->observer()->has_negotiation_needed_event());
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_TRUE(caller->observer()->legacy_renegotiation_needed());
   EXPECT_TRUE(caller->observer()->has_negotiation_needed_event());
 
@@ -1561,7 +1561,7 @@
        NoRenegotiationNeededAfterTransceiverSetSameDirection) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
 
   caller->observer()->clear_legacy_renegotiation_needed();
   caller->observer()->clear_latest_negotiation_needed_event();
@@ -1576,7 +1576,7 @@
        NoRenegotiationNeededAfterSetDirectionOnStoppedTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   transceiver->StopInternal();
 
   caller->observer()->clear_legacy_renegotiation_needed();
@@ -1591,7 +1591,7 @@
        CheckStoppedCurrentDirectionOnStoppedTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   transceiver->StopInternal();
 
   EXPECT_TRUE(transceiver->stopping());
@@ -1605,7 +1605,7 @@
        CheckForInvalidStateOnStoppingTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   transceiver->StopStandard();
 
   EXPECT_TRUE(transceiver->stopping());
@@ -1621,7 +1621,7 @@
        CheckForInvalidStateOnStoppedTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   transceiver->StopInternal();
 
   EXPECT_TRUE(transceiver->stopping());
@@ -1637,7 +1637,7 @@
        CheckForTypeErrorForStoppedOnTransceiver) {
   auto caller = CreatePeerConnection();
 
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   EXPECT_EQ(
       RTCErrorType::INVALID_PARAMETER,
       transceiver->SetDirectionWithError(RtpTransceiverDirection::kStopped)
@@ -1650,7 +1650,7 @@
        SetLocalDescriptionWithStoppedMediaSection) {
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
   callee->pc()->GetTransceivers()[0]->StopStandard();
   ASSERT_TRUE(callee->ExchangeOfferAnswerWith(caller.get()));
@@ -1663,7 +1663,7 @@
        StopAndNegotiateCausesTransceiverToDisappear) {
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
-  auto transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
   callee->pc()->GetTransceivers()[0]->StopStandard();
   ASSERT_TRUE(callee->ExchangeOfferAnswerWith(caller.get()));
@@ -1729,7 +1729,7 @@
   init.send_encodings[0].ssrc = 1;
   EXPECT_EQ(RTCErrorType::UNSUPPORTED_PARAMETER,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init)
+                ->AddTransceiver(webrtc::MediaType::AUDIO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1748,7 +1748,7 @@
   init.send_encodings[0].scale_resolution_down_by = 0.5;
   EXPECT_EQ(RTCErrorType::INVALID_RANGE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1756,7 +1756,7 @@
   init.send_encodings[0].bitrate_priority = 0;
   EXPECT_EQ(RTCErrorType::INVALID_RANGE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1765,7 +1765,7 @@
   init.send_encodings[0].max_bitrate_bps = 100000;
   EXPECT_EQ(RTCErrorType::INVALID_RANGE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1773,7 +1773,7 @@
   init.send_encodings[0].num_temporal_layers = 0;
   EXPECT_EQ(RTCErrorType::INVALID_RANGE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1781,7 +1781,7 @@
   init.send_encodings[0].num_temporal_layers = 5;
   EXPECT_EQ(RTCErrorType::INVALID_RANGE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1791,7 +1791,7 @@
       cricket::CreateVideoCodec(SdpVideoFormat("VP8", {})).ToCodecParameters();
   EXPECT_EQ(RTCErrorType::NONE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1801,7 +1801,7 @@
       cricket::CreateVideoCodec(SdpVideoFormat("VP8", {})).ToCodecParameters();
   EXPECT_EQ(RTCErrorType::NONE,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1811,7 +1811,7 @@
       cricket::CreateVideoCodec(SdpVideoFormat("VP8", {})).ToCodecParameters();
   EXPECT_EQ(RTCErrorType::UNSUPPORTED_OPERATION,
             caller->pc()
-                ->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init)
+                ->AddTransceiver(webrtc::MediaType::VIDEO, init)
                 .error()
                 .type());
   init.send_encodings = default_send_encodings;
@@ -1827,7 +1827,7 @@
   init.send_encodings[0].active = false;
   init.send_encodings[0].max_bitrate_bps = 180000;
 
-  auto result = caller->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, init);
+  auto result = caller->pc()->AddTransceiver(webrtc::MediaType::AUDIO, init);
   ASSERT_TRUE(result.ok());
 
   auto init_send_encodings = result.value()->sender()->init_send_encodings();
diff --git a/pc/peer_connection_signaling_unittest.cc b/pc/peer_connection_signaling_unittest.cc
index fd2ab40..1162c40 100644
--- a/pc/peer_connection_signaling_unittest.cc
+++ b/pc/peer_connection_signaling_unittest.cc
@@ -1260,7 +1260,7 @@
   auto caller = CreatePeerConnection();
   EXPECT_FALSE(caller->observer()->has_negotiation_needed_event());
   auto transceiver =
-      caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, RtpTransceiverInit());
+      caller->AddTransceiver(webrtc::MediaType::AUDIO, RtpTransceiverInit());
   EXPECT_TRUE(caller->observer()->has_negotiation_needed_event());
   EXPECT_TRUE(caller->pc()->ShouldFireNegotiationNeededEvent(
       caller->observer()->latest_negotiation_needed_event()));
@@ -1271,7 +1271,7 @@
   auto caller = CreatePeerConnection();
   EXPECT_FALSE(caller->observer()->has_negotiation_needed_event());
   auto transceiver =
-      caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, RtpTransceiverInit());
+      caller->AddTransceiver(webrtc::MediaType::AUDIO, RtpTransceiverInit());
   EXPECT_TRUE(caller->observer()->has_negotiation_needed_event());
 
   auto observer = rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
@@ -1302,7 +1302,7 @@
 
   EXPECT_FALSE(caller->observer()->has_negotiation_needed_event());
   auto transceiver =
-      callee->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, RtpTransceiverInit());
+      callee->AddTransceiver(webrtc::MediaType::AUDIO, RtpTransceiverInit());
   EXPECT_TRUE(callee->observer()->has_negotiation_needed_event());
 
   // Change signaling state (to "have-remote-offer") by setting a remote offer.
@@ -1379,7 +1379,7 @@
   // and triggered surprising behavior.
   auto caller = CreatePeerConnection();
   auto transceiver =
-      caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, RtpTransceiverInit());
+      caller->AddTransceiver(webrtc::MediaType::AUDIO, RtpTransceiverInit());
 
   auto offer = caller->CreateOffer(RTCOfferAnswerOptions());
   std::string offer_sdp;
diff --git a/pc/peer_connection_simulcast_unittest.cc b/pc/peer_connection_simulcast_unittest.cc
index c912269..3fc80a4 100644
--- a/pc/peer_connection_simulcast_unittest.cc
+++ b/pc/peer_connection_simulcast_unittest.cc
@@ -9,23 +9,16 @@
  */
 
 #include <algorithm>
+#include <cstring>
 #include <iterator>
-#include <map>
 #include <memory>
 #include <string>
 #include <utility>
 #include <vector>
 
 #include "absl/algorithm/container.h"
-#include "absl/strings/match.h"
-#include "absl/strings/string_view.h"
-#include "api/audio/audio_device.h"
-#include "api/audio/audio_mixer.h"
-#include "api/audio/audio_processing.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
-#include "api/audio_codecs/opus_audio_decoder_factory.h"
-#include "api/audio_codecs/opus_audio_encoder_factory.h"
 #include "api/create_peerconnection_factory.h"
 #include "api/jsep.h"
 #include "api/media_types.h"
@@ -36,7 +29,6 @@
 #include "api/rtp_transceiver_direction.h"
 #include "api/rtp_transceiver_interface.h"
 #include "api/scoped_refptr.h"
-#include "api/uma_metrics.h"
 #include "api/video/video_codec_constants.h"
 #include "api/video_codecs/video_decoder_factory_template.h"
 #include "api/video_codecs/video_decoder_factory_template_dav1d_adapter.h"
@@ -48,23 +40,16 @@
 #include "api/video_codecs/video_encoder_factory_template_libvpx_vp8_adapter.h"
 #include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
 #include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
-#include "media/base/media_constants.h"
 #include "media/base/rid_description.h"
 #include "media/base/stream_params.h"
-#include "pc/channel_interface.h"
 #include "pc/peer_connection_wrapper.h"
-#include "pc/sdp_utils.h"
 #include "pc/session_description.h"
 #include "pc/simulcast_description.h"
 #include "pc/test/fake_audio_capture_module.h"
 #include "pc/test/mock_peer_connection_observers.h"
 #include "pc/test/simulcast_layer_util.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/gunit.h"
-#include "rtc_base/strings/string_builder.h"
 #include "rtc_base/thread.h"
-#include "rtc_base/unique_id_generator.h"
-#include "system_wrappers/include/metrics.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -153,7 +138,7 @@
   rtc::scoped_refptr<RtpTransceiverInterface> AddTransceiver(
       PeerConnectionWrapper* pc,
       const std::vector<SimulcastLayer>& layers,
-      cricket::MediaType media_type = cricket::MEDIA_TYPE_VIDEO) {
+      webrtc::MediaType media_type = webrtc::MediaType::VIDEO) {
     auto init = CreateTransceiverInit(layers);
     return pc->AddTransceiver(media_type, init);
   }
@@ -211,7 +196,7 @@
   for (RtpEncodingParameters& parameters : init.send_encodings) {
     parameters.rid = "";
   }
-  auto transceiver = pc->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  auto transceiver = pc->AddTransceiver(webrtc::MediaType::VIDEO, init);
   auto parameters = transceiver->sender()->GetParameters();
   ASSERT_EQ(3u, parameters.encodings.size());
   EXPECT_THAT(parameters.encodings,
@@ -227,7 +212,7 @@
   auto layers = CreateLayers({"f", "h", "remove"}, true);
   auto init = CreateTransceiverInit(layers);
   init.send_encodings[2].rid = "";
-  auto error = pc->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  auto error = pc->AddTransceiver(webrtc::MediaType::VIDEO, init);
   EXPECT_EQ(RTCErrorType::INVALID_PARAMETER, error.error().type());
 }
 
@@ -237,7 +222,7 @@
   auto pc = pc_wrapper->pc();
   auto layers = CreateLayers({"f", "h", "~q"}, true);
   auto init = CreateTransceiverInit(layers);
-  auto error = pc->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  auto error = pc->AddTransceiver(webrtc::MediaType::VIDEO, init);
   EXPECT_EQ(RTCErrorType::INVALID_PARAMETER, error.error().type());
 }
 
@@ -530,7 +515,7 @@
   auto remote = CreatePeerConnectionWrapper();
   auto layers = CreateLayers({"1", "2", "3", "4"}, true);
   auto transceiver =
-      AddTransceiver(local.get(), layers, cricket::MEDIA_TYPE_AUDIO);
+      AddTransceiver(local.get(), layers, webrtc::MediaType::AUDIO);
   // Should only have the first layer.
   auto parameters = transceiver->sender()->GetParameters();
   EXPECT_EQ(1u, parameters.encodings.size());
diff --git a/pc/peer_connection_svc_integrationtest.cc b/pc/peer_connection_svc_integrationtest.cc
index 5366fc5..fead8e1 100644
--- a/pc/peer_connection_svc_integrationtest.cc
+++ b/pc/peer_connection_svc_integrationtest.cc
@@ -46,7 +46,7 @@
       absl::string_view codec_name) {
     RtpCapabilities capabilities =
         caller()->pc_factory()->GetRtpReceiverCapabilities(
-            cricket::MEDIA_TYPE_VIDEO);
+            webrtc::MediaType::VIDEO);
     std::vector<RtpCodecCapability> codecs;
     for (const RtpCodecCapability& codec_capability : capabilities.codecs) {
       if (codec_capability.name == codec_name)
@@ -101,7 +101,7 @@
 
   RtpCapabilities capabilities =
       caller()->pc_factory()->GetRtpReceiverCapabilities(
-          cricket::MEDIA_TYPE_VIDEO);
+          webrtc::MediaType::VIDEO);
   std::vector<RtpCodecCapability> vp8_codec;
   for (const RtpCodecCapability& codec_capability : capabilities.codecs) {
     if (codec_capability.name == cricket::kVp8CodecName)
@@ -244,7 +244,7 @@
 
   RtpCapabilities capabilities =
       caller()->pc_factory()->GetRtpReceiverCapabilities(
-          cricket::MEDIA_TYPE_VIDEO);
+          webrtc::MediaType::VIDEO);
   std::vector<RtpCodecCapability> send_codecs = capabilities.codecs;
   // Only keep VP9 in the caller
   send_codecs.erase(std::partition(send_codecs.begin(), send_codecs.end(),
diff --git a/pc/peer_connection_wrapper.cc b/pc/peer_connection_wrapper.cc
index 10bce74..20491fe 100644
--- a/pc/peer_connection_wrapper.cc
+++ b/pc/peer_connection_wrapper.cc
@@ -277,7 +277,7 @@
 }
 
 rtc::scoped_refptr<RtpTransceiverInterface>
-PeerConnectionWrapper::AddTransceiver(cricket::MediaType media_type) {
+PeerConnectionWrapper::AddTransceiver(webrtc::MediaType media_type) {
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
       pc()->AddTransceiver(media_type);
   EXPECT_EQ(RTCErrorType::NONE, result.error().type());
@@ -285,7 +285,7 @@
 }
 
 rtc::scoped_refptr<RtpTransceiverInterface>
-PeerConnectionWrapper::AddTransceiver(cricket::MediaType media_type,
+PeerConnectionWrapper::AddTransceiver(webrtc::MediaType media_type,
                                       const RtpTransceiverInit& init) {
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
       pc()->AddTransceiver(media_type, init);
diff --git a/pc/peer_connection_wrapper.h b/pc/peer_connection_wrapper.h
index a72f2a0..49b2da7 100644
--- a/pc/peer_connection_wrapper.h
+++ b/pc/peer_connection_wrapper.h
@@ -132,9 +132,9 @@
   // AddTransceiver method. They return the result of calling AddTransceiver
   // with the given arguments, DCHECKing if there is an error.
   rtc::scoped_refptr<RtpTransceiverInterface> AddTransceiver(
-      cricket::MediaType media_type);
+      webrtc::MediaType media_type);
   rtc::scoped_refptr<RtpTransceiverInterface> AddTransceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const RtpTransceiverInit& init);
   rtc::scoped_refptr<RtpTransceiverInterface> AddTransceiver(
       rtc::scoped_refptr<MediaStreamTrackInterface> track);
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index 3ef11d6..c55aca7 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -132,51 +132,51 @@
 }
 
 std::string RTCInboundRtpStreamStatsIDFromSSRC(const std::string& transport_id,
-                                               cricket::MediaType media_type,
+                                               webrtc::MediaType media_type,
                                                uint32_t ssrc) {
   char buf[1024];
   SimpleStringBuilder sb(buf);
   sb << 'I' << transport_id
-     << (media_type == cricket::MEDIA_TYPE_AUDIO ? 'A' : 'V') << ssrc;
+     << (media_type == webrtc::MediaType::AUDIO ? 'A' : 'V') << ssrc;
   return sb.str();
 }
 
 std::string RTCOutboundRtpStreamStatsIDFromSSRC(const std::string& transport_id,
-                                                cricket::MediaType media_type,
+                                                webrtc::MediaType media_type,
                                                 uint32_t ssrc) {
   char buf[1024];
   SimpleStringBuilder sb(buf);
   sb << 'O' << transport_id
-     << (media_type == cricket::MEDIA_TYPE_AUDIO ? 'A' : 'V') << ssrc;
+     << (media_type == webrtc::MediaType::AUDIO ? 'A' : 'V') << ssrc;
   return sb.str();
 }
 
 std::string RTCRemoteInboundRtpStreamStatsIdFromSourceSsrc(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     uint32_t source_ssrc) {
   char buf[1024];
   SimpleStringBuilder sb(buf);
-  sb << "RI" << (media_type == cricket::MEDIA_TYPE_AUDIO ? 'A' : 'V')
+  sb << "RI" << (media_type == webrtc::MediaType::AUDIO ? 'A' : 'V')
      << source_ssrc;
   return sb.str();
 }
 
 std::string RTCRemoteOutboundRTPStreamStatsIDFromSSRC(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     uint32_t source_ssrc) {
   char buf[1024];
   SimpleStringBuilder sb(buf);
-  sb << "RO" << (media_type == cricket::MEDIA_TYPE_AUDIO ? 'A' : 'V')
+  sb << "RO" << (media_type == webrtc::MediaType::AUDIO ? 'A' : 'V')
      << source_ssrc;
   return sb.str();
 }
 
 std::string RTCMediaSourceStatsIDFromKindAndAttachment(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     int attachment_id) {
   char buf[1024];
   SimpleStringBuilder sb(buf);
-  sb << 'S' << (media_type == cricket::MEDIA_TYPE_AUDIO ? 'A' : 'V')
+  sb << 'S' << (media_type == webrtc::MediaType::AUDIO ? 'A' : 'V')
      << attachment_id;
   return sb.str();
 }
@@ -453,7 +453,7 @@
     RTCStatsReport* report) {
   auto inbound_audio = std::make_unique<RTCInboundRtpStreamStats>(
       /*id=*/RTCInboundRtpStreamStatsIDFromSSRC(
-          transport_id, cricket::MEDIA_TYPE_AUDIO, voice_receiver_info.ssrc()),
+          transport_id, webrtc::MediaType::AUDIO, voice_receiver_info.ssrc()),
       timestamp);
   SetInboundRTPStreamStatsFromMediaReceiverInfo(voice_receiver_info,
                                                 inbound_audio.get());
@@ -536,7 +536,7 @@
 CreateRemoteOutboundMediaStreamStats(
     const cricket::MediaReceiverInfo& media_receiver_info,
     const std::string& mid,
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     const RTCInboundRtpStreamStats& inbound_audio_stats,
     const std::string& transport_id,
     const bool stats_timestamp_with_environment_clock) {
@@ -561,7 +561,7 @@
   // Populate.
   // - RTCRtpStreamStats.
   stats->ssrc = media_receiver_info.ssrc();
-  stats->kind = cricket::MediaTypeToString(media_type);
+  stats->kind = webrtc::MediaTypeToString(media_type);
   stats->transport_id = transport_id;
   if (inbound_audio_stats.codec_id.has_value()) {
     stats->codec_id = *inbound_audio_stats.codec_id;
@@ -599,8 +599,8 @@
     Timestamp timestamp,
     RTCStatsReport* report) {
   auto inbound_video = std::make_unique<RTCInboundRtpStreamStats>(
-      RTCInboundRtpStreamStatsIDFromSSRC(
-          transport_id, cricket::MEDIA_TYPE_VIDEO, video_receiver_info.ssrc()),
+      RTCInboundRtpStreamStatsIDFromSSRC(transport_id, webrtc::MediaType::VIDEO,
+                                         video_receiver_info.ssrc()),
       timestamp);
   SetInboundRTPStreamStatsFromMediaReceiverInfo(video_receiver_info,
                                                 inbound_video.get());
@@ -749,7 +749,7 @@
     RTCStatsReport* report) {
   auto outbound_audio = std::make_unique<RTCOutboundRtpStreamStats>(
       RTCOutboundRtpStreamStatsIDFromSSRC(
-          transport_id, cricket::MEDIA_TYPE_AUDIO, voice_sender_info.ssrc()),
+          transport_id, webrtc::MediaType::AUDIO, voice_sender_info.ssrc()),
       timestamp);
   SetOutboundRTPStreamStatsFromMediaSenderInfo(voice_sender_info,
                                                outbound_audio.get());
@@ -784,7 +784,7 @@
     RTCStatsReport* report) {
   auto outbound_video = std::make_unique<RTCOutboundRtpStreamStats>(
       RTCOutboundRtpStreamStatsIDFromSSRC(
-          transport_id, cricket::MEDIA_TYPE_VIDEO, video_sender_info.ssrc()),
+          transport_id, webrtc::MediaType::VIDEO, video_sender_info.ssrc()),
       timestamp);
   SetOutboundRTPStreamStatsFromMediaSenderInfo(video_sender_info,
                                                outbound_video.get());
@@ -874,7 +874,7 @@
 ProduceRemoteInboundRtpStreamStatsFromReportBlockData(
     const std::string& transport_id,
     const ReportBlockData& report_block,
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     const std::map<std::string, RTCOutboundRtpStreamStats*>& outbound_rtps,
     const RTCStatsReport& report,
     const bool stats_timestamp_with_environment_clock) {
@@ -890,7 +890,7 @@
       arrival_timestamp);
   remote_inbound->ssrc = report_block.source_ssrc();
   remote_inbound->kind =
-      media_type == cricket::MEDIA_TYPE_AUDIO ? "audio" : "video";
+      media_type == webrtc::MediaType::AUDIO ? "audio" : "video";
   remote_inbound->packets_lost = report_block.cumulative_lost();
   remote_inbound->fraction_lost = report_block.fraction_lost();
   if (report_block.num_rtts() > 0) {
@@ -1608,7 +1608,7 @@
             static_cast<AudioTrackInterface*>(track.get());
         auto audio_source_stats = std::make_unique<RTCAudioSourceStats>(
             RTCMediaSourceStatsIDFromKindAndAttachment(
-                cricket::MEDIA_TYPE_AUDIO, sender_internal->AttachmentId()),
+                webrtc::MediaType::AUDIO, sender_internal->AttachmentId()),
             timestamp);
         // TODO(https://crbug.com/webrtc/10771): We shouldn't need to have an
         // SSRC assigned (there shouldn't need to exist a send-stream, created
@@ -1646,7 +1646,7 @@
         RTC_DCHECK_EQ(MediaStreamTrackInterface::kVideoKind, track->kind());
         auto video_source_stats = std::make_unique<RTCVideoSourceStats>(
             RTCMediaSourceStatsIDFromKindAndAttachment(
-                cricket::MEDIA_TYPE_VIDEO, sender_internal->AttachmentId()),
+                webrtc::MediaType::VIDEO, sender_internal->AttachmentId()),
             timestamp);
         auto* video_track = static_cast<VideoTrackInterface*>(track.get());
         auto* video_source = video_track->GetSource();
@@ -1710,9 +1710,9 @@
   Thread::ScopedDisallowBlockingCalls no_blocking_calls;
 
   for (const RtpTransceiverStatsInfo& stats : transceiver_stats_infos) {
-    if (stats.media_type == cricket::MEDIA_TYPE_AUDIO) {
+    if (stats.media_type == webrtc::MediaType::AUDIO) {
       ProduceAudioRTPStreamStats_n(timestamp, stats, report);
-    } else if (stats.media_type == cricket::MEDIA_TYPE_VIDEO) {
+    } else if (stats.media_type == webrtc::MediaType::VIDEO) {
       ProduceVideoRTPStreamStats_n(timestamp, stats, report);
     } else {
       RTC_DCHECK_NOTREACHED();
@@ -1751,7 +1751,7 @@
     if (audio_track) {
       inbound_audio->track_identifier = audio_track->id();
     }
-    if (audio_device_stats_ && stats.media_type == cricket::MEDIA_TYPE_AUDIO &&
+    if (audio_device_stats_ && stats.media_type == webrtc::MediaType::AUDIO &&
         stats.current_direction &&
         (*stats.current_direction == RtpTransceiverDirection::kSendRecv ||
          *stats.current_direction == RtpTransceiverDirection::kRecvOnly)) {
@@ -1765,7 +1765,7 @@
     }
     // Remote-outbound.
     auto remote_outbound_audio = CreateRemoteOutboundMediaStreamStats(
-        voice_receiver_info, mid, cricket::MEDIA_TYPE_AUDIO, *inbound_audio_ptr,
+        voice_receiver_info, mid, webrtc::MediaType::AUDIO, *inbound_audio_ptr,
         transport_id, stats_timestamp_with_environment_clock_);
     // Add stats.
     if (remote_outbound_audio) {
@@ -1797,7 +1797,7 @@
           stats.track_media_info_map.GetAttachmentIdByTrack(audio_track.get())
               .value();
       outbound_audio->media_source_id =
-          RTCMediaSourceStatsIDFromKindAndAttachment(cricket::MEDIA_TYPE_AUDIO,
+          RTCMediaSourceStatsIDFromKindAndAttachment(webrtc::MediaType::AUDIO,
                                                      attachment_id);
     }
     auto audio_outbound_pair =
@@ -1818,7 +1818,7 @@
        stats.track_media_info_map.voice_media_info()->senders) {
     for (const auto& report_block_data : voice_sender_info.report_block_datas) {
       report->AddStats(ProduceRemoteInboundRtpStreamStatsFromReportBlockData(
-          transport_id, report_block_data, cricket::MEDIA_TYPE_AUDIO,
+          transport_id, report_block_data, webrtc::MediaType::AUDIO,
           audio_outbound_rtps, *report,
           stats_timestamp_with_environment_clock_));
     }
@@ -1860,7 +1860,7 @@
     }
     // Remote-outbound.
     auto remote_outbound_video = CreateRemoteOutboundMediaStreamStats(
-        video_receiver_info, mid, cricket::MEDIA_TYPE_VIDEO, *inbound_video_ptr,
+        video_receiver_info, mid, webrtc::MediaType::VIDEO, *inbound_video_ptr,
         transport_id, stats_timestamp_with_environment_clock_);
     // Add stats.
     if (remote_outbound_video) {
@@ -1892,7 +1892,7 @@
           stats.track_media_info_map.GetAttachmentIdByTrack(video_track.get())
               .value();
       outbound_video->media_source_id =
-          RTCMediaSourceStatsIDFromKindAndAttachment(cricket::MEDIA_TYPE_VIDEO,
+          RTCMediaSourceStatsIDFromKindAndAttachment(webrtc::MediaType::VIDEO,
                                                      attachment_id);
     }
     auto video_outbound_pair =
@@ -1913,7 +1913,7 @@
        stats.track_media_info_map.video_media_info()->senders) {
     for (const auto& report_block_data : video_sender_info.report_block_datas) {
       report->AddStats(ProduceRemoteInboundRtpStreamStatsFromReportBlockData(
-          transport_id, report_block_data, cricket::MEDIA_TYPE_VIDEO,
+          transport_id, report_block_data, webrtc::MediaType::VIDEO,
           video_outbound_rtps, *report,
           stats_timestamp_with_environment_clock_));
     }
@@ -2104,7 +2104,7 @@
 
     for (const auto& transceiver_proxy : transceivers) {
       RtpTransceiver* transceiver = transceiver_proxy->internal();
-      cricket::MediaType media_type = transceiver->media_type();
+      webrtc::MediaType media_type = transceiver->media_type();
 
       // Prepare stats entry. The TrackMediaInfoMap will be filled in after the
       // stats have been fetched on the worker thread.
@@ -2122,7 +2122,7 @@
       stats.mid = channel->mid();
       stats.transport_name = std::string(channel->transport_name());
 
-      if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+      if (media_type == webrtc::MediaType::AUDIO) {
         auto voice_send_channel = channel->voice_media_send_channel();
         RTC_DCHECK(voice_send_stats.find(voice_send_channel) ==
                    voice_send_stats.end());
@@ -2134,7 +2134,7 @@
                    voice_receive_stats.end());
         voice_receive_stats.insert(std::make_pair(
             voice_receive_channel, cricket::VoiceMediaReceiveInfo()));
-      } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+      } else if (media_type == webrtc::MediaType::VIDEO) {
         auto video_send_channel = channel->video_media_send_channel();
         RTC_DCHECK(video_send_stats.find(video_send_channel) ==
                    video_send_stats.end());
@@ -2189,14 +2189,14 @@
       std::optional<cricket::VideoMediaInfo> video_media_info;
       auto channel = transceiver->channel();
       if (channel) {
-        cricket::MediaType media_type = transceiver->media_type();
-        if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+        webrtc::MediaType media_type = transceiver->media_type();
+        if (media_type == webrtc::MediaType::AUDIO) {
           auto voice_send_channel = channel->voice_media_send_channel();
           auto voice_receive_channel = channel->voice_media_receive_channel();
           voice_media_info = cricket::VoiceMediaInfo(
               std::move(voice_send_stats[voice_send_channel]),
               std::move(voice_receive_stats[voice_receive_channel]));
-        } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+        } else if (media_type == webrtc::MediaType::VIDEO) {
           auto video_send_channel = channel->video_media_send_channel();
           auto video_receive_channel = channel->video_media_receive_channel();
           video_media_info = cricket::VideoMediaInfo(
@@ -2217,7 +2217,7 @@
       stats.track_media_info_map.Initialize(std::move(voice_media_info),
                                             std::move(video_media_info),
                                             senders, receivers);
-      if (transceiver->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+      if (transceiver->media_type() == webrtc::MediaType::AUDIO) {
         has_audio_receiver |= !receivers.empty();
       }
     }
diff --git a/pc/rtc_stats_collector.h b/pc/rtc_stats_collector.h
index b3264de..3fbe7f7 100644
--- a/pc/rtc_stats_collector.h
+++ b/pc/rtc_stats_collector.h
@@ -172,7 +172,7 @@
   // then `mid` and `transport_name` will be null.
   struct RtpTransceiverStatsInfo {
     rtc::scoped_refptr<RtpTransceiver> transceiver;
-    cricket::MediaType media_type;
+    webrtc::MediaType media_type;
     std::optional<std::string> mid;
     std::optional<std::string> transport_name;
     TrackMediaInfoMap track_media_info_map;
diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc
index 0f843d8..f291b7c 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -56,6 +56,8 @@
 #include "api/video_codecs/scalability_mode.h"
 #include "call/call.h"
 #include "common_video/include/quality_limitation_reason.h"
+#include "json/reader.h"
+#include "json/value.h"
 #include "media/base/media_channel.h"
 #include "media/base/stream_params.h"
 #include "modules/rtp_rtcp/include/report_block_data.h"
@@ -87,7 +89,6 @@
 #include "rtc_base/ssl_identity.h"
 #include "rtc_base/ssl_stream_adapter.h"
 #include "rtc_base/string_encode.h"
-#include "rtc_base/strings/json.h"
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/time_utils.h"
@@ -313,30 +314,30 @@
 };
 
 rtc::scoped_refptr<MediaStreamTrackInterface> CreateFakeTrack(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     const std::string& track_id,
     MediaStreamTrackInterface::TrackState track_state,
     bool create_fake_audio_processor = false) {
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     return FakeAudioTrackForStats::Create(track_id, track_state,
                                           create_fake_audio_processor);
   } else {
-    RTC_DCHECK_EQ(media_type, cricket::MEDIA_TYPE_VIDEO);
+    RTC_DCHECK_EQ(media_type, webrtc::MediaType::VIDEO);
     return FakeVideoTrackForStats::Create(track_id, track_state, nullptr);
   }
 }
 
 rtc::scoped_refptr<MockRtpSenderInternal> CreateMockSender(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     rtc::scoped_refptr<MediaStreamTrackInterface> track,
     uint32_t ssrc,
     int attachment_id,
     std::vector<std::string> local_stream_ids) {
   RTC_DCHECK(!track ||
              (track->kind() == MediaStreamTrackInterface::kAudioKind &&
-              media_type == cricket::MEDIA_TYPE_AUDIO) ||
+              media_type == webrtc::MediaType::AUDIO) ||
              (track->kind() == MediaStreamTrackInterface::kVideoKind &&
-              media_type == cricket::MEDIA_TYPE_VIDEO));
+              media_type == webrtc::MediaType::VIDEO));
   auto sender = rtc::make_ref_counted<MockRtpSenderInternal>();
   EXPECT_CALL(*sender, track()).WillRepeatedly(Return(track));
   EXPECT_CALL(*sender, ssrc()).WillRepeatedly(Return(ssrc));
@@ -372,8 +373,8 @@
   EXPECT_CALL(*receiver, media_type())
       .WillRepeatedly(
           Return(track->kind() == MediaStreamTrackInterface::kAudioKind
-                     ? cricket::MEDIA_TYPE_AUDIO
-                     : cricket::MEDIA_TYPE_VIDEO));
+                     ? webrtc::MediaType::AUDIO
+                     : webrtc::MediaType::VIDEO));
   EXPECT_CALL(*receiver, GetParameters()).WillRepeatedly(Invoke([ssrc]() {
     RtpParameters params;
     params.encodings.push_back(RtpEncodingParameters());
@@ -426,7 +427,7 @@
   }
 
   rtc::scoped_refptr<MockRtpSenderInternal> SetupLocalTrackAndSender(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const std::string& track_id,
       uint32_t ssrc,
       bool add_stream,
@@ -438,7 +439,7 @@
     }
 
     rtc::scoped_refptr<MediaStreamTrackInterface> track;
-    if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+    if (media_type == webrtc::MediaType::AUDIO) {
       track = CreateFakeTrack(media_type, track_id,
                               MediaStreamTrackInterface::kLive);
       if (add_stream) {
@@ -464,7 +465,7 @@
   }
 
   rtc::scoped_refptr<MockRtpReceiverInternal> SetupRemoteTrackAndReceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const std::string& track_id,
       const std::string& stream_id,
       uint32_t ssrc) {
@@ -473,7 +474,7 @@
     pc_->mutable_remote_streams()->AddStream(remote_stream);
 
     rtc::scoped_refptr<MediaStreamTrackInterface> track;
-    if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+    if (media_type == webrtc::MediaType::AUDIO) {
       track = CreateFakeTrack(media_type, track_id,
                               MediaStreamTrackInterface::kLive);
       remote_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
@@ -529,7 +530,7 @@
 
       voice_media_info.senders.push_back(voice_sender_info);
       rtc::scoped_refptr<MockRtpSenderInternal> rtp_sender = CreateMockSender(
-          cricket::MEDIA_TYPE_AUDIO,
+          webrtc::MediaType::AUDIO,
           rtc::scoped_refptr<MediaStreamTrackInterface>(local_audio_track),
           voice_sender_info.local_stats[0].ssrc,
           voice_sender_info.local_stats[0].ssrc + 10, local_stream_ids);
@@ -568,7 +569,7 @@
       video_media_info.senders.push_back(video_sender_info);
       video_media_info.aggregated_senders.push_back(video_sender_info);
       rtc::scoped_refptr<MockRtpSenderInternal> rtp_sender = CreateMockSender(
-          cricket::MEDIA_TYPE_VIDEO,
+          webrtc::MediaType::VIDEO,
           rtc::scoped_refptr<MediaStreamTrackInterface>(local_video_track),
           video_sender_info.local_stats[0].ssrc,
           video_sender_info.local_stats[0].ssrc + 10, local_stream_ids);
@@ -724,10 +725,10 @@
     pc_->AddVideoChannel("VideoMid", "TransportName", video_media_info);
     // outbound-rtp's sender
     graph.sender = stats_->SetupLocalTrackAndSender(
-        cricket::MEDIA_TYPE_VIDEO, "LocalVideoTrackID", 3, false, 50);
+        webrtc::MediaType::VIDEO, "LocalVideoTrackID", 3, false, 50);
     // inbound-rtp's receiver
     graph.receiver = stats_->SetupRemoteTrackAndReceiver(
-        cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID", "RemoteStreamId", 4);
+        webrtc::MediaType::VIDEO, "RemoteVideoTrackID", "RemoteStreamId", 4);
     // peer-connection
     graph.peer_connection_id = "P";
     // media-source (kind: video)
@@ -825,10 +826,10 @@
     pc_->AddVoiceChannel("VoiceMid", "TransportName", media_info);
     // outbound-rtp's sender
     graph.sender = stats_->SetupLocalTrackAndSender(
-        cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID", kLocalSsrc, false, 50);
+        webrtc::MediaType::AUDIO, "LocalAudioTrackID", kLocalSsrc, false, 50);
     // inbound-rtp's receiver
     graph.receiver = stats_->SetupRemoteTrackAndReceiver(
-        cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", "RemoteStreamId",
+        webrtc::MediaType::AUDIO, "RemoteAudioTrackID", "RemoteStreamId",
         kRemoteSsrc);
     // peer-connection
     graph.peer_connection_id = "P";
@@ -1082,7 +1083,7 @@
 
   RtpCodecParameters inbound_audio_codec;
   inbound_audio_codec.payload_type = 1;
-  inbound_audio_codec.kind = cricket::MEDIA_TYPE_AUDIO;
+  inbound_audio_codec.kind = webrtc::MediaType::AUDIO;
   inbound_audio_codec.name = "opus";
   inbound_audio_codec.clock_rate = 1337;
   inbound_audio_codec.num_channels = 1;
@@ -1092,7 +1093,7 @@
 
   RtpCodecParameters outbound_audio_codec;
   outbound_audio_codec.payload_type = 2;
-  outbound_audio_codec.kind = cricket::MEDIA_TYPE_AUDIO;
+  outbound_audio_codec.kind = webrtc::MediaType::AUDIO;
   outbound_audio_codec.name = "isac";
   outbound_audio_codec.clock_rate = 1338;
   outbound_audio_codec.num_channels = 2;
@@ -1104,7 +1105,7 @@
 
   RtpCodecParameters inbound_video_codec;
   inbound_video_codec.payload_type = 3;
-  inbound_video_codec.kind = cricket::MEDIA_TYPE_VIDEO;
+  inbound_video_codec.kind = webrtc::MediaType::VIDEO;
   inbound_video_codec.name = "H264";
   inbound_video_codec.clock_rate = 1339;
   inbound_video_codec.parameters = {{"level-asymmetry-allowed", "1"},
@@ -1115,7 +1116,7 @@
 
   RtpCodecParameters outbound_video_codec;
   outbound_video_codec.payload_type = 4;
-  outbound_video_codec.kind = cricket::MEDIA_TYPE_VIDEO;
+  outbound_video_codec.kind = webrtc::MediaType::VIDEO;
   outbound_video_codec.name = "VP8";
   outbound_video_codec.clock_rate = 1340;
   video_media_info.send_codecs.insert(
@@ -1227,14 +1228,14 @@
   // PT=10
   RtpCodecParameters outbound_codec_pt10;
   outbound_codec_pt10.payload_type = 10;
-  outbound_codec_pt10.kind = cricket::MEDIA_TYPE_VIDEO;
+  outbound_codec_pt10.kind = webrtc::MediaType::VIDEO;
   outbound_codec_pt10.name = "VP8";
   outbound_codec_pt10.clock_rate = 9000;
 
   // PT=11
   RtpCodecParameters outbound_codec_pt11;
   outbound_codec_pt11.payload_type = 11;
-  outbound_codec_pt11.kind = cricket::MEDIA_TYPE_VIDEO;
+  outbound_codec_pt11.kind = webrtc::MediaType::VIDEO;
   outbound_codec_pt11.name = "VP8";
   outbound_codec_pt11.clock_rate = 9000;
 
@@ -1292,7 +1293,7 @@
   // PT=111, useinbandfec=0
   RtpCodecParameters inbound_codec_pt111_nofec;
   inbound_codec_pt111_nofec.payload_type = 111;
-  inbound_codec_pt111_nofec.kind = cricket::MEDIA_TYPE_AUDIO;
+  inbound_codec_pt111_nofec.kind = webrtc::MediaType::AUDIO;
   inbound_codec_pt111_nofec.name = "opus";
   inbound_codec_pt111_nofec.clock_rate = 48000;
   inbound_codec_pt111_nofec.parameters.insert(
@@ -1301,7 +1302,7 @@
   // PT=111, useinbandfec=1
   RtpCodecParameters inbound_codec_pt111_fec;
   inbound_codec_pt111_fec.payload_type = 111;
-  inbound_codec_pt111_fec.kind = cricket::MEDIA_TYPE_AUDIO;
+  inbound_codec_pt111_fec.kind = webrtc::MediaType::AUDIO;
   inbound_codec_pt111_fec.name = "opus";
   inbound_codec_pt111_fec.clock_rate = 48000;
   inbound_codec_pt111_fec.parameters.insert(
@@ -1349,7 +1350,7 @@
   // PT=112, useinbandfec=1
   RtpCodecParameters inbound_codec_pt112_fec;
   inbound_codec_pt112_fec.payload_type = 112;
-  inbound_codec_pt112_fec.kind = cricket::MEDIA_TYPE_AUDIO;
+  inbound_codec_pt112_fec.kind = webrtc::MediaType::AUDIO;
   inbound_codec_pt112_fec.name = "opus";
   inbound_codec_pt112_fec.clock_rate = 48000;
   inbound_codec_pt112_fec.parameters.insert(
@@ -2199,7 +2200,7 @@
 
   RtpCodecParameters codec_parameters;
   codec_parameters.payload_type = 42;
-  codec_parameters.kind = cricket::MEDIA_TYPE_AUDIO;
+  codec_parameters.kind = webrtc::MediaType::AUDIO;
   codec_parameters.name = "dummy";
   codec_parameters.clock_rate = 0;
   voice_media_info.receive_codecs.insert(
@@ -2208,7 +2209,7 @@
   auto voice_media_channels =
       pc_->AddVoiceChannel("AudioMid", "TransportName", voice_media_info);
   stats_->SetupRemoteTrackAndReceiver(
-      cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", "RemoteStreamId", 1);
+      webrtc::MediaType::AUDIO, "RemoteAudioTrackID", "RemoteStreamId", 1);
 
   // Needed for playoutId to be populated.
   pc_->SetAudioDeviceStats(AudioDeviceModule::Stats());
@@ -2289,7 +2290,7 @@
 
   pc_->AddVoiceChannel("AudioMid", "TransportName", voice_media_info);
   stats_->SetupRemoteTrackAndReceiver(
-      cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", "RemoteStreamId", 1);
+      webrtc::MediaType::AUDIO, "RemoteAudioTrackID", "RemoteStreamId", 1);
   // Needed for playoutId to be populated.
   pc_->SetAudioDeviceStats(AudioDeviceModule::Stats());
 
@@ -2377,7 +2378,7 @@
 
   RtpCodecParameters codec_parameters;
   codec_parameters.payload_type = 42;
-  codec_parameters.kind = cricket::MEDIA_TYPE_VIDEO;
+  codec_parameters.kind = webrtc::MediaType::VIDEO;
   codec_parameters.name = "dummy";
   codec_parameters.clock_rate = 0;
   video_media_info.receive_codecs.insert(
@@ -2386,7 +2387,7 @@
   auto video_media_channels =
       pc_->AddVideoChannel("VideoMid", "TransportName", video_media_info);
   stats_->SetupRemoteTrackAndReceiver(
-      cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID", "RemoteStreamId", 1);
+      webrtc::MediaType::VIDEO, "RemoteVideoTrackID", "RemoteStreamId", 1);
 
   rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
 
@@ -2487,7 +2488,7 @@
 
   pc_->AddVoiceChannel("AudioMid", "TransportName", {});
   stats_->SetupRemoteTrackAndReceiver(
-      cricket::MEDIA_TYPE_AUDIO, "RemoteAudioTrackID", "RemoteStreamId", 1);
+      webrtc::MediaType::AUDIO, "RemoteAudioTrackID", "RemoteStreamId", 1);
 
   rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
   auto stats_of_track_type = report->GetStatsOfType<RTCAudioPlayoutStats>();
@@ -2532,7 +2533,7 @@
 
   pc_->AddVideoChannel("Mid0", "Transport0", video_media_info);
   stats_->SetupRemoteTrackAndReceiver(
-      cricket::MEDIA_TYPE_VIDEO, "RemoteVideoTrackID", "RemoteStreamId", 1);
+      webrtc::MediaType::VIDEO, "RemoteVideoTrackID", "RemoteStreamId", 1);
 
   rtc::scoped_refptr<const RTCStatsReport> report = stats_->GetStatsReport();
   auto inbound_rtps = report->GetStatsOfType<RTCInboundRtpStreamStats>();
@@ -2561,14 +2562,14 @@
 
   RtpCodecParameters codec_parameters;
   codec_parameters.payload_type = 42;
-  codec_parameters.kind = cricket::MEDIA_TYPE_AUDIO;
+  codec_parameters.kind = webrtc::MediaType::AUDIO;
   codec_parameters.name = "dummy";
   codec_parameters.clock_rate = 0;
   voice_media_info.send_codecs.insert(
       std::make_pair(codec_parameters.payload_type, codec_parameters));
 
   pc_->AddVoiceChannel("AudioMid", "TransportName", voice_media_info);
-  stats_->SetupLocalTrackAndSender(cricket::MEDIA_TYPE_AUDIO,
+  stats_->SetupLocalTrackAndSender(webrtc::MediaType::AUDIO,
                                    "LocalAudioTrackID", 1, true,
                                    /*attachment_id=*/50);
 
@@ -2650,7 +2651,7 @@
   video_media_info.aggregated_senders.push_back(video_media_info.senders[0]);
   RtpCodecParameters codec_parameters;
   codec_parameters.payload_type = 42;
-  codec_parameters.kind = cricket::MEDIA_TYPE_AUDIO;
+  codec_parameters.kind = webrtc::MediaType::AUDIO;
   codec_parameters.name = "dummy";
   codec_parameters.clock_rate = 0;
   video_media_info.send_codecs.insert(
@@ -2664,7 +2665,7 @@
 
   auto video_media_channels =
       pc_->AddVideoChannel("VideoMid", "TransportName", video_media_info);
-  stats_->SetupLocalTrackAndSender(cricket::MEDIA_TYPE_VIDEO,
+  stats_->SetupLocalTrackAndSender(webrtc::MediaType::VIDEO,
                                    "LocalVideoTrackID", 1, true,
                                    /*attachment_id=*/50);
 
@@ -3009,7 +3010,7 @@
 
   RtpCodecParameters codec_parameters;
   codec_parameters.payload_type = 42;
-  codec_parameters.kind = cricket::MEDIA_TYPE_AUDIO;
+  codec_parameters.kind = webrtc::MediaType::AUDIO;
   codec_parameters.name = "dummy";
   codec_parameters.clock_rate = 0;
   voice_media_info.send_codecs.insert(
@@ -3017,7 +3018,7 @@
 
   // Emulates the case where AddTrack is used without an associated MediaStream
   pc_->AddVoiceChannel("AudioMid", "TransportName", voice_media_info);
-  stats_->SetupLocalTrackAndSender(cricket::MEDIA_TYPE_AUDIO,
+  stats_->SetupLocalTrackAndSender(webrtc::MediaType::AUDIO,
                                    "LocalAudioTrackID", 1, false,
                                    /*attachment_id=*/50);
 
@@ -3063,7 +3064,7 @@
   voice_media_info.senders[0].apm_statistics.echo_return_loss_enhancement =
       52.0;
   pc_->AddVoiceChannel("AudioMid", "TransportName", voice_media_info);
-  stats_->SetupLocalTrackAndSender(cricket::MEDIA_TYPE_AUDIO,
+  stats_->SetupLocalTrackAndSender(webrtc::MediaType::AUDIO,
                                    "LocalAudioTrackID", kSsrc, false,
                                    kAttachmentId);
 
@@ -3107,7 +3108,7 @@
   auto video_track = FakeVideoTrackForStats::Create(
       "LocalVideoTrackID", MediaStreamTrackInterface::kLive, video_source);
   rtc::scoped_refptr<MockRtpSenderInternal> sender = CreateMockSender(
-      cricket::MEDIA_TYPE_VIDEO, video_track, kSsrc, kAttachmentId, {});
+      webrtc::MediaType::VIDEO, video_track, kSsrc, kAttachmentId, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetMediaChannel(_));
   EXPECT_CALL(*sender, SetSendCodecs(_));
@@ -3152,7 +3153,7 @@
   auto video_track = FakeVideoTrackForStats::Create(
       "LocalVideoTrackID", MediaStreamTrackInterface::kLive, video_source);
   rtc::scoped_refptr<MockRtpSenderInternal> sender = CreateMockSender(
-      cricket::MEDIA_TYPE_VIDEO, video_track, kNoSsrc, kAttachmentId, {});
+      webrtc::MediaType::VIDEO, video_track, kNoSsrc, kAttachmentId, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetMediaChannel(_));
   EXPECT_CALL(*sender, SetSendCodecs(_));
@@ -3183,7 +3184,7 @@
       "LocalVideoTrackID", MediaStreamTrackInterface::kLive,
       /*source=*/nullptr);
   rtc::scoped_refptr<MockRtpSenderInternal> sender = CreateMockSender(
-      cricket::MEDIA_TYPE_VIDEO, video_track, kSsrc, kAttachmentId, {});
+      webrtc::MediaType::VIDEO, video_track, kSsrc, kAttachmentId, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetMediaChannel(_));
   EXPECT_CALL(*sender, SetSendCodecs(_));
@@ -3207,7 +3208,7 @@
   voice_media_info.senders[0].local_stats[0].ssrc = kSsrc;
   pc_->AddVoiceChannel("AudioMid", "TransportName", voice_media_info);
   rtc::scoped_refptr<MockRtpSenderInternal> sender = CreateMockSender(
-      cricket::MEDIA_TYPE_AUDIO, /*track=*/nullptr, kSsrc, kAttachmentId, {});
+      webrtc::MediaType::AUDIO, /*track=*/nullptr, kSsrc, kAttachmentId, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetMediaChannel(_));
   EXPECT_CALL(*sender, SetSendCodecs(_));
@@ -3217,21 +3218,21 @@
   EXPECT_FALSE(report->Get("SA42"));
 }
 
-// Parameterized tests on cricket::MediaType (audio or video).
+// Parameterized tests on webrtc::MediaType (audio or video).
 class RTCStatsCollectorTestWithParamKind
     : public RTCStatsCollectorTest,
-      public ::testing::WithParamInterface<cricket::MediaType> {
+      public ::testing::WithParamInterface<webrtc::MediaType> {
  public:
   RTCStatsCollectorTestWithParamKind() : media_type_(GetParam()) {
-    RTC_DCHECK(media_type_ == cricket::MEDIA_TYPE_AUDIO ||
-               media_type_ == cricket::MEDIA_TYPE_VIDEO);
+    RTC_DCHECK(media_type_ == webrtc::MediaType::AUDIO ||
+               media_type_ == webrtc::MediaType::VIDEO);
   }
 
   std::string MediaTypeCharStr() const {
     switch (media_type_) {
-      case cricket::MEDIA_TYPE_AUDIO:
+      case webrtc::MediaType::AUDIO:
         return "A";
-      case cricket::MEDIA_TYPE_VIDEO:
+      case webrtc::MediaType::VIDEO:
         return "V";
       default:
         RTC_DCHECK_NOTREACHED();
@@ -3241,9 +3242,9 @@
 
   std::string MediaTypeKind() const {
     switch (media_type_) {
-      case cricket::MEDIA_TYPE_AUDIO:
+      case webrtc::MediaType::AUDIO:
         return "audio";
-      case cricket::MEDIA_TYPE_VIDEO:
+      case webrtc::MediaType::VIDEO:
         return "video";
       default:
         RTC_DCHECK_NOTREACHED();
@@ -3258,7 +3259,7 @@
       const std::vector<ReportBlockData>& report_block_datas,
       std::optional<RtpCodecParameters> codec) {
     switch (media_type_) {
-      case cricket::MEDIA_TYPE_AUDIO: {
+      case webrtc::MediaType::AUDIO: {
         cricket::VoiceMediaInfo voice_media_info;
         for (const auto& report_block_data : report_block_datas) {
           cricket::VoiceSenderInfo sender;
@@ -3275,7 +3276,7 @@
         pc_->AddVoiceChannel("mid", transport_name, voice_media_info);
         return;
       }
-      case cricket::MEDIA_TYPE_VIDEO: {
+      case webrtc::MediaType::VIDEO: {
         cricket::VideoMediaInfo video_media_info;
         for (const auto& report_block_data : report_block_datas) {
           cricket::VideoSenderInfo sender;
@@ -3293,14 +3294,14 @@
         pc_->AddVideoChannel("mid", transport_name, video_media_info);
         return;
       }
-      case cricket::MEDIA_TYPE_DATA:
+      case webrtc::MediaType::DATA:
       default:
         RTC_DCHECK_NOTREACHED();
     }
   }
 
  protected:
-  cricket::MediaType media_type_;
+  webrtc::MediaType media_type_;
 };
 
 // Verifies RTCRemoteInboundRtpStreamStats members that don't require
@@ -3515,8 +3516,8 @@
 
 INSTANTIATE_TEST_SUITE_P(All,
                          RTCStatsCollectorTestWithParamKind,
-                         ::testing::Values(cricket::MEDIA_TYPE_AUDIO,    // "/0"
-                                           cricket::MEDIA_TYPE_VIDEO));  // "/1"
+                         ::testing::Values(webrtc::MediaType::AUDIO,    // "/0"
+                                           webrtc::MediaType::VIDEO));  // "/1"
 
 // Checks that no remote outbound stats are collected if not available in
 // `VoiceMediaInfo`.
@@ -3567,7 +3568,7 @@
   pc_->AddVideoChannel("VideoMid", "TransportName", video_media_info);
 
   rtc::scoped_refptr<MockRtpSenderInternal> sender = CreateMockSender(
-      cricket::MEDIA_TYPE_VIDEO, /*track=*/nullptr, kSsrc, kAttachmentId, {});
+      webrtc::MediaType::VIDEO, /*track=*/nullptr, kSsrc, kAttachmentId, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetMediaChannel(_));
   EXPECT_CALL(*sender, SetSendCodecs(_));
@@ -3586,7 +3587,7 @@
 
   // Local audio track
   rtc::scoped_refptr<MediaStreamTrackInterface> local_audio_track =
-      CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "LocalAudioTrackID",
+      CreateFakeTrack(webrtc::MediaType::AUDIO, "LocalAudioTrackID",
                       MediaStreamTrackInterface::kEnded,
                       /*create_fake_audio_processor=*/true);
   local_stream->AddTrack(rtc::scoped_refptr<AudioTrackInterface>(
@@ -3686,11 +3687,10 @@
 // Before SetLocalDescription() senders don't have an SSRC.
 // To simulate this case we create a mock sender with SSRC=0.
 TEST_F(RTCStatsCollectorTest, RtpIsMissingWhileSsrcIsZero) {
-  rtc::scoped_refptr<MediaStreamTrackInterface> track =
-      CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "audioTrack",
-                      MediaStreamTrackInterface::kLive);
+  rtc::scoped_refptr<MediaStreamTrackInterface> track = CreateFakeTrack(
+      webrtc::MediaType::AUDIO, "audioTrack", MediaStreamTrackInterface::kLive);
   rtc::scoped_refptr<MockRtpSenderInternal> sender =
-      CreateMockSender(cricket::MEDIA_TYPE_AUDIO, track, 0, 49, {});
+      CreateMockSender(webrtc::MediaType::AUDIO, track, 0, 49, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetSendCodecs(_));
   pc_->AddSender(sender);
@@ -3704,11 +3704,10 @@
 // We may also be in a case where the SSRC has been assigned but no
 // `voice_sender_info` stats exist yet.
 TEST_F(RTCStatsCollectorTest, DoNotCrashIfSsrcIsKnownButInfosAreStillMissing) {
-  rtc::scoped_refptr<MediaStreamTrackInterface> track =
-      CreateFakeTrack(cricket::MEDIA_TYPE_AUDIO, "audioTrack",
-                      MediaStreamTrackInterface::kLive);
+  rtc::scoped_refptr<MediaStreamTrackInterface> track = CreateFakeTrack(
+      webrtc::MediaType::AUDIO, "audioTrack", MediaStreamTrackInterface::kLive);
   rtc::scoped_refptr<MockRtpSenderInternal> sender =
-      CreateMockSender(cricket::MEDIA_TYPE_AUDIO, track, 4711, 49, {});
+      CreateMockSender(webrtc::MediaType::AUDIO, track, 4711, 49, {});
   EXPECT_CALL(*sender, Stop());
   EXPECT_CALL(*sender, SetSendCodecs(_));
   pc_->AddSender(sender);
diff --git a/pc/rtp_parameters_conversion.cc b/pc/rtp_parameters_conversion.cc
index 415eac6..a2ba2ef 100644
--- a/pc/rtp_parameters_conversion.cc
+++ b/pc/rtp_parameters_conversion.cc
@@ -79,8 +79,8 @@
   RtpCodecCapability codec;
   codec.name = cricket_codec.name;
   codec.kind = cricket_codec.type == cricket::Codec::Type::kAudio
-                   ? cricket::MEDIA_TYPE_AUDIO
-                   : cricket::MEDIA_TYPE_VIDEO;
+                   ? webrtc::MediaType::AUDIO
+                   : webrtc::MediaType::VIDEO;
   codec.clock_rate.emplace(cricket_codec.clockrate);
   codec.preferred_payload_type.emplace(cricket_codec.id);
   for (const cricket::FeedbackParam& cricket_feedback :
diff --git a/pc/rtp_parameters_conversion_unittest.cc b/pc/rtp_parameters_conversion_unittest.cc
index 337313e..7c87f41 100644
--- a/pc/rtp_parameters_conversion_unittest.cc
+++ b/pc/rtp_parameters_conversion_unittest.cc
@@ -86,7 +86,7 @@
   RtpCodecCapability codec = ToRtpCodecCapability(cricket_codec);
 
   EXPECT_EQ("foo", codec.name);
-  EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, codec.kind);
+  EXPECT_EQ(webrtc::MediaType::AUDIO, codec.kind);
   EXPECT_EQ(50, codec.preferred_payload_type);
   EXPECT_EQ(22222, codec.clock_rate);
   EXPECT_EQ(4, codec.num_channels);
@@ -108,7 +108,7 @@
   RtpCodecCapability codec = ToRtpCodecCapability(cricket_codec);
 
   EXPECT_EQ("VID", codec.name);
-  EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, codec.kind);
+  EXPECT_EQ(webrtc::MediaType::VIDEO, codec.kind);
   EXPECT_EQ(101, codec.preferred_payload_type);
   EXPECT_EQ(80000, codec.clock_rate);
   ASSERT_EQ(2u, codec.parameters.size());
diff --git a/pc/rtp_receiver_proxy.h b/pc/rtp_receiver_proxy.h
index feb569b..55c8d9a 100644
--- a/pc/rtp_receiver_proxy.h
+++ b/pc/rtp_receiver_proxy.h
@@ -38,7 +38,7 @@
 PROXY_CONSTMETHOD0(std::vector<std::string>, stream_ids)
 PROXY_CONSTMETHOD0(std::vector<rtc::scoped_refptr<MediaStreamInterface>>,
                    streams)
-BYPASS_PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
+BYPASS_PROXY_CONSTMETHOD0(webrtc::MediaType, media_type)
 BYPASS_PROXY_CONSTMETHOD0(std::string, id)
 PROXY_SECONDARY_CONSTMETHOD0(RtpParameters, GetParameters)
 PROXY_METHOD1(void, SetObserver, RtpReceiverObserverInterface*)
diff --git a/pc/rtp_sender.h b/pc/rtp_sender.h
index 9de5129..5a1cb7f 100644
--- a/pc/rtp_sender.h
+++ b/pc/rtp_sender.h
@@ -367,8 +367,8 @@
   // ObserverInterface implementation.
   void OnChanged() override;
 
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_AUDIO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::AUDIO;
   }
   std::string track_kind() const override {
     return MediaStreamTrackInterface::kAudioKind;
@@ -429,8 +429,8 @@
   // ObserverInterface implementation
   void OnChanged() override;
 
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_VIDEO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::VIDEO;
   }
   std::string track_kind() const override {
     return MediaStreamTrackInterface::kVideoKind;
diff --git a/pc/rtp_sender_proxy.h b/pc/rtp_sender_proxy.h
index 69e2e86..ec63186 100644
--- a/pc/rtp_sender_proxy.h
+++ b/pc/rtp_sender_proxy.h
@@ -29,7 +29,7 @@
 PROXY_CONSTMETHOD0(rtc::scoped_refptr<MediaStreamTrackInterface>, track)
 PROXY_CONSTMETHOD0(rtc::scoped_refptr<DtlsTransportInterface>, dtls_transport)
 PROXY_CONSTMETHOD0(uint32_t, ssrc)
-BYPASS_PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
+BYPASS_PROXY_CONSTMETHOD0(webrtc::MediaType, media_type)
 BYPASS_PROXY_CONSTMETHOD0(std::string, id)
 PROXY_CONSTMETHOD0(std::vector<std::string>, stream_ids)
 PROXY_CONSTMETHOD0(std::vector<RtpEncodingParameters>, init_send_encodings)
diff --git a/pc/rtp_transceiver.cc b/pc/rtp_transceiver.cc
index f18d61b..4c725d4 100644
--- a/pc/rtp_transceiver.cc
+++ b/pc/rtp_transceiver.cc
@@ -115,7 +115,7 @@
 
 }  // namespace
 
-RtpTransceiver::RtpTransceiver(cricket::MediaType media_type,
+RtpTransceiver::RtpTransceiver(webrtc::MediaType media_type,
                                ConnectionContext* context,
                                cricket::CodecLookupHelper* codec_lookup_helper)
     : thread_(GetCurrentTaskQueueOrThread()),
@@ -123,8 +123,8 @@
       media_type_(media_type),
       context_(context),
       codec_lookup_helper_(codec_lookup_helper) {
-  RTC_DCHECK(media_type == cricket::MEDIA_TYPE_AUDIO ||
-             media_type == cricket::MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(media_type == webrtc::MediaType::AUDIO ||
+             media_type == webrtc::MediaType::VIDEO);
   RTC_DCHECK(context_);
   RTC_DCHECK(codec_lookup_helper_);
 }
@@ -146,11 +146,11 @@
           std::move(header_extensions_to_negotiate)),
       on_negotiation_needed_(std::move(on_negotiation_needed)) {
   RTC_DCHECK(context_);
-  RTC_DCHECK(media_type_ == cricket::MEDIA_TYPE_AUDIO ||
-             media_type_ == cricket::MEDIA_TYPE_VIDEO);
+  RTC_DCHECK(media_type_ == webrtc::MediaType::AUDIO ||
+             media_type_ == webrtc::MediaType::VIDEO);
   RTC_DCHECK_EQ(sender->media_type(), receiver->media_type());
   sender->internal()->SetSendCodecs(
-      sender->media_type() == cricket::MEDIA_TYPE_VIDEO
+      sender->media_type() == webrtc::MediaType::VIDEO
           ? codec_vendor().video_send_codecs().codecs()
           : codec_vendor().audio_send_codecs().codecs());
   senders_.push_back(sender);
@@ -218,7 +218,7 @@
   }
 
   std::unique_ptr<cricket::ChannelInterface> new_channel;
-  if (media_type() == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type() == webrtc::MediaType::AUDIO) {
     // TODO(bugs.webrtc.org/11992): CreateVideoChannel internally switches to
     // the worker thread. We shouldn't be using the `call_ptr_` hack here but
     // simply be on the worker thread and use `call_` (update upstream code).
@@ -254,7 +254,7 @@
           context()->ssrc_generator());
     });
   } else {
-    RTC_DCHECK_EQ(cricket::MEDIA_TYPE_VIDEO, media_type());
+    RTC_DCHECK_EQ(webrtc::MediaType::VIDEO, media_type());
 
     // TODO(bugs.webrtc.org/11992): CreateVideoChannel internally switches to
     // the worker thread. We shouldn't be using the `call_ptr_` hack here but
@@ -405,7 +405,7 @@
   RTC_DCHECK(!absl::c_linear_search(senders_, sender));
 
   std::vector<cricket::Codec> send_codecs =
-      media_type() == cricket::MEDIA_TYPE_VIDEO
+      media_type() == webrtc::MediaType::VIDEO
           ? codec_vendor().video_send_codecs().codecs()
           : codec_vendor().audio_send_codecs().codecs();
   sender->internal()->SetSendCodecs(send_codecs);
@@ -472,7 +472,7 @@
   return rtc::scoped_refptr<RtpReceiverInternal>(receivers_[0]->internal());
 }
 
-cricket::MediaType RtpTransceiver::media_type() const {
+webrtc::MediaType RtpTransceiver::media_type() const {
   return media_type_;
 }
 
@@ -682,10 +682,10 @@
     const std::vector<RtpCodecCapability>& codecs) {
   // Get codec capabilities from media engine.
   std::vector<cricket::Codec> send_codecs, recv_codecs;
-  if (media_type_ == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type_ == webrtc::MediaType::AUDIO) {
     send_codecs = codec_vendor().audio_send_codecs().codecs();
     recv_codecs = codec_vendor().audio_recv_codecs().codecs();
-  } else if (media_type_ == cricket::MEDIA_TYPE_VIDEO) {
+  } else if (media_type_ == webrtc::MediaType::VIDEO) {
     send_codecs = codec_vendor().video_send_codecs().codecs();
     recv_codecs = codec_vendor().video_recv_codecs().codecs();
   }
diff --git a/pc/rtp_transceiver.h b/pc/rtp_transceiver.h
index c8a16ff..71db88c 100644
--- a/pc/rtp_transceiver.h
+++ b/pc/rtp_transceiver.h
@@ -92,7 +92,7 @@
   // channel set.
   // `media_type` specifies the type of RtpTransceiver (and, by transitivity,
   // the type of senders, receivers, and channel). Can either by audio or video.
-  RtpTransceiver(cricket::MediaType media_type,
+  RtpTransceiver(webrtc::MediaType media_type,
                  ConnectionContext* context,
                  cricket::CodecLookupHelper* codec_lookup_helper);
   // Construct a Unified Plan-style RtpTransceiver with the given sender and
@@ -264,7 +264,7 @@
   void StopTransceiverProcedure();
 
   // RtpTransceiverInterface implementation.
-  cricket::MediaType media_type() const override;
+  webrtc::MediaType media_type() const override;
   std::optional<std::string> mid() const override;
   rtc::scoped_refptr<RtpSenderInterface> sender() const override;
   rtc::scoped_refptr<RtpReceiverInterface> receiver() const override;
@@ -332,7 +332,7 @@
   // Enforce that this object is created, used and destroyed on one thread.
   TaskQueueBase* const thread_;
   const bool unified_plan_;
-  const cricket::MediaType media_type_;
+  const webrtc::MediaType media_type_;
   rtc::scoped_refptr<PendingTaskSafetyFlag> signaling_thread_safety_;
   std::vector<rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>>>
       senders_;
@@ -376,7 +376,7 @@
 BEGIN_PRIMARY_PROXY_MAP(RtpTransceiver)
 
 PROXY_PRIMARY_THREAD_DESTRUCTOR()
-BYPASS_PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
+BYPASS_PROXY_CONSTMETHOD0(webrtc::MediaType, media_type)
 PROXY_CONSTMETHOD0(std::optional<std::string>, mid)
 PROXY_CONSTMETHOD0(rtc::scoped_refptr<RtpSenderInterface>, sender)
 PROXY_CONSTMETHOD0(rtc::scoped_refptr<RtpReceiverInterface>, receiver)
diff --git a/pc/rtp_transceiver_unittest.cc b/pc/rtp_transceiver_unittest.cc
index 6993d56..0ee66b9 100644
--- a/pc/rtp_transceiver_unittest.cc
+++ b/pc/rtp_transceiver_unittest.cc
@@ -108,10 +108,10 @@
 TEST_F(RtpTransceiverTest, CannotSetChannelOnStoppedTransceiver) {
   const std::string content_name("my_mid");
   auto transceiver = rtc::make_ref_counted<RtpTransceiver>(
-      cricket::MediaType::MEDIA_TYPE_AUDIO, context(), codec_lookup_helper());
+      webrtc::MediaType::AUDIO, context(), codec_lookup_helper());
   auto channel1 = std::make_unique<NiceMock<MockChannelInterface>>();
   EXPECT_CALL(*channel1, media_type())
-      .WillRepeatedly(Return(cricket::MediaType::MEDIA_TYPE_AUDIO));
+      .WillRepeatedly(Return(webrtc::MediaType::AUDIO));
   EXPECT_CALL(*channel1, mid()).WillRepeatedly(ReturnRef(content_name));
   EXPECT_CALL(*channel1, SetFirstPacketReceivedCallback(_));
   EXPECT_CALL(*channel1, SetRtpTransport(_)).WillRepeatedly(Return(true));
@@ -128,7 +128,7 @@
 
   auto channel2 = std::make_unique<NiceMock<MockChannelInterface>>();
   EXPECT_CALL(*channel2, media_type())
-      .WillRepeatedly(Return(cricket::MediaType::MEDIA_TYPE_AUDIO));
+      .WillRepeatedly(Return(webrtc::MediaType::AUDIO));
 
   // Clear the current channel - required to allow SetChannel()
   EXPECT_CALL(*channel1_ptr, SetFirstPacketReceivedCallback(_));
@@ -144,10 +144,10 @@
 TEST_F(RtpTransceiverTest, CanUnsetChannelOnStoppedTransceiver) {
   const std::string content_name("my_mid");
   auto transceiver = rtc::make_ref_counted<RtpTransceiver>(
-      cricket::MediaType::MEDIA_TYPE_VIDEO, context(), codec_lookup_helper());
+      webrtc::MediaType::VIDEO, context(), codec_lookup_helper());
   auto channel = std::make_unique<NiceMock<MockChannelInterface>>();
   EXPECT_CALL(*channel, media_type())
-      .WillRepeatedly(Return(cricket::MediaType::MEDIA_TYPE_VIDEO));
+      .WillRepeatedly(Return(webrtc::MediaType::VIDEO));
   EXPECT_CALL(*channel, mid()).WillRepeatedly(ReturnRef(content_name));
   EXPECT_CALL(*channel, SetFirstPacketReceivedCallback(_))
       .WillRepeatedly(testing::Return());
@@ -172,7 +172,7 @@
 class RtpTransceiverUnifiedPlanTest : public RtpTransceiverTest {
  public:
   static rtc::scoped_refptr<MockRtpReceiverInternal> MockReceiver(
-      cricket::MediaType media_type) {
+      webrtc::MediaType media_type) {
     auto receiver = rtc::make_ref_counted<NiceMock<MockRtpReceiverInternal>>();
     EXPECT_CALL(*receiver.get(), media_type())
         .WillRepeatedly(Return(media_type));
@@ -180,7 +180,7 @@
   }
 
   static rtc::scoped_refptr<MockRtpSenderInternal> MockSender(
-      cricket::MediaType media_type) {
+      webrtc::MediaType media_type) {
     auto sender = rtc::make_ref_counted<NiceMock<MockRtpSenderInternal>>();
     EXPECT_CALL(*sender.get(), media_type()).WillRepeatedly(Return(media_type));
     return sender;
@@ -206,9 +206,9 @@
 // Basic tests for Stop()
 TEST_F(RtpTransceiverUnifiedPlanTest, StopSetsDirection) {
   rtc::scoped_refptr<MockRtpReceiverInternal> receiver =
-      MockReceiver(cricket::MediaType::MEDIA_TYPE_AUDIO);
+      MockReceiver(webrtc::MediaType::AUDIO);
   rtc::scoped_refptr<MockRtpSenderInternal> sender =
-      MockSender(cricket::MediaType::MEDIA_TYPE_AUDIO);
+      MockSender(webrtc::MediaType::AUDIO);
   rtc::scoped_refptr<RtpTransceiver> transceiver =
       CreateTransceiver(sender, receiver);
 
@@ -233,9 +233,9 @@
     : public RtpTransceiverUnifiedPlanTest {
  public:
   RtpTransceiverFilteredCodecPreferencesTest()
-      : transceiver_(CreateTransceiver(
-            MockSender(cricket::MediaType::MEDIA_TYPE_VIDEO),
-            MockReceiver(cricket::MediaType::MEDIA_TYPE_VIDEO))) {}
+      : transceiver_(
+            CreateTransceiver(MockSender(webrtc::MediaType::VIDEO),
+                              MockReceiver(webrtc::MediaType::VIDEO))) {}
 
   struct H264CodecCapabilities {
     cricket::Codec cricket_sendrecv_codec;
@@ -253,9 +253,8 @@
   // at transceiver create time.
   void RecreateTransceiver() {
     fake_codec_lookup_helper()->Reset();
-    transceiver_ =
-        CreateTransceiver(MockSender(cricket::MediaType::MEDIA_TYPE_VIDEO),
-                          MockReceiver(cricket::MediaType::MEDIA_TYPE_VIDEO));
+    transceiver_ = CreateTransceiver(MockSender(webrtc::MediaType::VIDEO),
+                                     MockReceiver(webrtc::MediaType::VIDEO));
   }
 
   // For H264, the profile and level IDs are entangled. This function uses
@@ -599,9 +598,9 @@
   }
 
   rtc::scoped_refptr<MockRtpReceiverInternal> receiver_ =
-      MockReceiver(cricket::MediaType::MEDIA_TYPE_AUDIO);
+      MockReceiver(webrtc::MediaType::AUDIO);
   rtc::scoped_refptr<MockRtpSenderInternal> sender_ =
-      MockSender(cricket::MediaType::MEDIA_TYPE_AUDIO);
+      MockSender(webrtc::MediaType::AUDIO);
 
   std::vector<RtpHeaderExtensionCapability> extensions_;
   rtc::scoped_refptr<RtpTransceiver> transceiver_;
@@ -747,7 +746,7 @@
   auto mock_channel_ptr = mock_channel.get();
   EXPECT_CALL(*mock_channel, SetFirstPacketReceivedCallback(_));
   EXPECT_CALL(*mock_channel, media_type())
-      .WillRepeatedly(Return(cricket::MediaType::MEDIA_TYPE_AUDIO));
+      .WillRepeatedly(Return(webrtc::MediaType::AUDIO));
   EXPECT_CALL(*mock_channel, voice_media_send_channel())
       .WillRepeatedly(Return(nullptr));
   EXPECT_CALL(*mock_channel, mid()).WillRepeatedly(ReturnRef(content_name));
@@ -780,7 +779,7 @@
   auto mock_channel_ptr = mock_channel.get();
   EXPECT_CALL(*mock_channel, SetFirstPacketReceivedCallback(_));
   EXPECT_CALL(*mock_channel, media_type())
-      .WillRepeatedly(Return(cricket::MediaType::MEDIA_TYPE_AUDIO));
+      .WillRepeatedly(Return(webrtc::MediaType::AUDIO));
   EXPECT_CALL(*mock_channel, voice_media_send_channel())
       .WillRepeatedly(Return(nullptr));
   EXPECT_CALL(*mock_channel, mid()).WillRepeatedly(ReturnRef(content_name));
diff --git a/pc/rtp_transmission_manager.cc b/pc/rtp_transmission_manager.cc
index a823e18..9b4a0e1 100644
--- a/pc/rtp_transmission_manager.cc
+++ b/pc/rtp_transmission_manager.cc
@@ -173,10 +173,10 @@
   if (adjusted_stream_ids.empty()) {
     adjusted_stream_ids.push_back(CreateRandomUuid());
   }
-  cricket::MediaType media_type =
+  webrtc::MediaType media_type =
       (track->kind() == MediaStreamTrackInterface::kAudioKind
-           ? cricket::MEDIA_TYPE_AUDIO
-           : cricket::MEDIA_TYPE_VIDEO);
+           ? webrtc::MediaType::AUDIO
+           : webrtc::MediaType::VIDEO);
   auto new_sender = CreateSender(
       media_type, track->id(), track, adjusted_stream_ids,
       init_send_encodings
@@ -214,7 +214,7 @@
       FindFirstTransceiverForAddedTrack(track, init_send_encodings);
   if (transceiver) {
     RTC_LOG(LS_INFO) << "Reusing an existing "
-                     << cricket::MediaTypeToString(transceiver->media_type())
+                     << webrtc::MediaTypeToString(transceiver->media_type())
                      << " transceiver for AddTrack.";
     if (transceiver->stopping()) {
       LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
@@ -232,11 +232,11 @@
     transceiver->internal()->sender_internal()->set_stream_ids(stream_ids);
     transceiver->internal()->set_reused_for_addtrack(true);
   } else {
-    cricket::MediaType media_type =
+    webrtc::MediaType media_type =
         (track->kind() == MediaStreamTrackInterface::kAudioKind
-             ? cricket::MEDIA_TYPE_AUDIO
-             : cricket::MEDIA_TYPE_VIDEO);
-    RTC_LOG(LS_INFO) << "Adding " << cricket::MediaTypeToString(media_type)
+             ? webrtc::MediaType::AUDIO
+             : webrtc::MediaType::VIDEO);
+    RTC_LOG(LS_INFO) << "Adding " << webrtc::MediaTypeToString(media_type)
                      << " transceiver in response to a call to AddTrack.";
     std::string sender_id = track->id();
     // Avoid creating a sender with an existing ID by generating a random ID.
@@ -260,14 +260,14 @@
 
 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>>
 RtpTransmissionManager::CreateSender(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     const std::string& id,
     rtc::scoped_refptr<MediaStreamTrackInterface> track,
     const std::vector<std::string>& stream_ids,
     const std::vector<RtpEncodingParameters>& send_encodings) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> sender;
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     RTC_DCHECK(!track ||
                (track->kind() == MediaStreamTrackInterface::kAudioKind));
     sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
@@ -275,7 +275,7 @@
         AudioRtpSender::Create(env_, worker_thread(), id, legacy_stats_, this));
     NoteUsageEvent(UsageEvent::AUDIO_ADDED);
   } else {
-    RTC_DCHECK_EQ(media_type, cricket::MEDIA_TYPE_VIDEO);
+    RTC_DCHECK_EQ(media_type, webrtc::MediaType::VIDEO);
     RTC_DCHECK(!track ||
                (track->kind() == MediaStreamTrackInterface::kVideoKind));
     sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
@@ -291,12 +291,12 @@
 }
 
 rtc::scoped_refptr<RtpReceiverProxyWithInternal<RtpReceiverInternal>>
-RtpTransmissionManager::CreateReceiver(cricket::MediaType media_type,
+RtpTransmissionManager::CreateReceiver(webrtc::MediaType media_type,
                                        const std::string& receiver_id) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   rtc::scoped_refptr<RtpReceiverProxyWithInternal<RtpReceiverInternal>>
       receiver;
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     receiver = RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create(
         signaling_thread(), worker_thread(),
         rtc::make_ref_counted<AudioRtpReceiver>(worker_thread(), receiver_id,
@@ -304,7 +304,7 @@
                                                 IsUnifiedPlan()));
     NoteUsageEvent(UsageEvent::AUDIO_ADDED);
   } else {
-    RTC_DCHECK_EQ(media_type, cricket::MEDIA_TYPE_VIDEO);
+    RTC_DCHECK_EQ(media_type, webrtc::MediaType::VIDEO);
     receiver = RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create(
         signaling_thread(), worker_thread(),
         rtc::make_ref_counted<VideoRtpReceiver>(worker_thread(), receiver_id,
@@ -329,7 +329,7 @@
       signaling_thread(),
       rtc::make_ref_counted<RtpTransceiver>(
           sender, receiver, context_, codec_lookup_helper_,
-          sender->media_type() == cricket::MEDIA_TYPE_AUDIO
+          sender->media_type() == webrtc::MediaType::AUDIO
               ? media_engine()->voice().GetRtpHeaderExtensions()
               : media_engine()->video().GetRtpHeaderExtensions(),
           [this_weak_ptr = weak_ptr_factory_.GetWeakPtr()]() {
@@ -352,8 +352,7 @@
   }
   for (auto transceiver : transceivers()->List()) {
     if (!transceiver->sender()->track() &&
-        cricket::MediaTypeToString(transceiver->media_type()) ==
-            track->kind() &&
+        webrtc::MediaTypeToString(transceiver->media_type()) == track->kind() &&
         !transceiver->internal()->has_ever_been_used_to_send() &&
         !transceiver->stopped()) {
       return transceiver;
@@ -402,7 +401,7 @@
   // audio/video transceiver.
   RTC_DCHECK(!IsUnifiedPlan());
   for (auto transceiver : transceivers_.List()) {
-    if (transceiver->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+    if (transceiver->media_type() == webrtc::MediaType::AUDIO) {
       return transceiver;
     }
   }
@@ -417,7 +416,7 @@
   // audio/video transceiver.
   RTC_DCHECK(!IsUnifiedPlan());
   for (auto transceiver : transceivers_.List()) {
-    if (transceiver->media_type() == cricket::MEDIA_TYPE_VIDEO) {
+    if (transceiver->media_type() == webrtc::MediaType::VIDEO) {
       return transceiver;
     }
   }
@@ -439,7 +438,7 @@
   }
 
   // Normal case; we've never seen this track before.
-  auto new_sender = CreateSender(cricket::MEDIA_TYPE_AUDIO, track->id(),
+  auto new_sender = CreateSender(webrtc::MediaType::AUDIO, track->id(),
                                  rtc::scoped_refptr<AudioTrackInterface>(track),
                                  {stream->id()}, {{}});
   new_sender->internal()->SetMediaChannel(voice_media_send_channel());
@@ -486,7 +485,7 @@
   }
 
   // Normal case; we've never seen this track before.
-  auto new_sender = CreateSender(cricket::MEDIA_TYPE_VIDEO, track->id(),
+  auto new_sender = CreateSender(webrtc::MediaType::VIDEO, track->id(),
                                  rtc::scoped_refptr<VideoTrackInterface>(track),
                                  {stream->id()}, {{}});
   new_sender->internal()->SetMediaChannel(video_media_send_channel());
@@ -570,7 +569,7 @@
                         << remote_sender_info.sender_id << " doesn't exist.";
     return nullptr;
   }
-  if (receiver->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+  if (receiver->media_type() == webrtc::MediaType::AUDIO) {
     GetAudioTransceiver()->internal()->RemoveReceiver(receiver.get());
   } else {
     GetVideoTransceiver()->internal()->RemoveReceiver(receiver.get());
@@ -581,15 +580,15 @@
 void RtpTransmissionManager::OnRemoteSenderAdded(
     const RtpSenderInfo& sender_info,
     MediaStreamInterface* stream,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   RTC_DCHECK_RUN_ON(signaling_thread());
-  RTC_LOG(LS_INFO) << "Creating " << cricket::MediaTypeToString(media_type)
+  RTC_LOG(LS_INFO) << "Creating " << webrtc::MediaTypeToString(media_type)
                    << " receiver for track_id=" << sender_info.sender_id
                    << " and stream_id=" << sender_info.stream_id;
 
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     CreateAudioReceiver(stream, sender_info);
-  } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+  } else if (media_type == webrtc::MediaType::VIDEO) {
     CreateVideoReceiver(stream, sender_info);
   } else {
     RTC_DCHECK_NOTREACHED() << "Invalid media type";
@@ -599,14 +598,14 @@
 void RtpTransmissionManager::OnRemoteSenderRemoved(
     const RtpSenderInfo& sender_info,
     MediaStreamInterface* stream,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   RTC_DCHECK_RUN_ON(signaling_thread());
-  RTC_LOG(LS_INFO) << "Removing " << cricket::MediaTypeToString(media_type)
+  RTC_LOG(LS_INFO) << "Removing " << webrtc::MediaTypeToString(media_type)
                    << " receiver for track_id=" << sender_info.sender_id
                    << " and stream_id=" << sender_info.stream_id;
 
   rtc::scoped_refptr<RtpReceiverInterface> receiver;
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     // When the MediaEngine audio channel is destroyed, the RemoteAudioSource
     // will be notified which will end the AudioRtpReceiver::track().
     receiver = RemoveAndStopReceiver(sender_info);
@@ -615,7 +614,7 @@
     if (audio_track) {
       stream->RemoveTrack(audio_track);
     }
-  } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+  } else if (media_type == webrtc::MediaType::VIDEO) {
     // Stopping or destroying a VideoRtpReceiver will end the
     // VideoRtpReceiver::track().
     receiver = RemoveAndStopReceiver(sender_info);
@@ -637,7 +636,7 @@
 
 void RtpTransmissionManager::OnLocalSenderAdded(
     const RtpSenderInfo& sender_info,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   RTC_DCHECK(!IsUnifiedPlan());
   auto sender = FindSenderById(sender_info.sender_id);
@@ -660,7 +659,7 @@
 
 void RtpTransmissionManager::OnLocalSenderRemoved(
     const RtpSenderInfo& sender_info,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   auto sender = FindSenderById(sender_info.sender_id);
   if (!sender) {
@@ -682,20 +681,19 @@
 }
 
 std::vector<RtpSenderInfo>* RtpTransmissionManager::GetRemoteSenderInfos(
-    cricket::MediaType media_type) {
-  RTC_DCHECK(media_type == cricket::MEDIA_TYPE_AUDIO ||
-             media_type == cricket::MEDIA_TYPE_VIDEO);
-  return (media_type == cricket::MEDIA_TYPE_AUDIO)
-             ? &remote_audio_sender_infos_
-             : &remote_video_sender_infos_;
+    webrtc::MediaType media_type) {
+  RTC_DCHECK(media_type == webrtc::MediaType::AUDIO ||
+             media_type == webrtc::MediaType::VIDEO);
+  return (media_type == webrtc::MediaType::AUDIO) ? &remote_audio_sender_infos_
+                                                  : &remote_video_sender_infos_;
 }
 
 std::vector<RtpSenderInfo>* RtpTransmissionManager::GetLocalSenderInfos(
-    cricket::MediaType media_type) {
-  RTC_DCHECK(media_type == cricket::MEDIA_TYPE_AUDIO ||
-             media_type == cricket::MEDIA_TYPE_VIDEO);
-  return (media_type == cricket::MEDIA_TYPE_AUDIO) ? &local_audio_sender_infos_
-                                                   : &local_video_sender_infos_;
+    webrtc::MediaType media_type) {
+  RTC_DCHECK(media_type == webrtc::MediaType::AUDIO ||
+             media_type == webrtc::MediaType::VIDEO);
+  return (media_type == webrtc::MediaType::AUDIO) ? &local_audio_sender_infos_
+                                                  : &local_video_sender_infos_;
 }
 
 const RtpSenderInfo* RtpTransmissionManager::FindSenderInfo(
diff --git a/pc/rtp_transmission_manager.h b/pc/rtp_transmission_manager.h
index 36bd3fd..a6b2669 100644
--- a/pc/rtp_transmission_manager.h
+++ b/pc/rtp_transmission_manager.h
@@ -97,7 +97,7 @@
 
   // Create a new RTP sender. Does not associate with a transceiver.
   rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>>
-  CreateSender(cricket::MediaType media_type,
+  CreateSender(webrtc::MediaType media_type,
                const std::string& id,
                rtc::scoped_refptr<MediaStreamTrackInterface> track,
                const std::vector<std::string>& stream_ids,
@@ -105,7 +105,7 @@
 
   // Create a new RTP receiver. Does not associate with a transceiver.
   rtc::scoped_refptr<RtpReceiverProxyWithInternal<RtpReceiverInternal>>
-  CreateReceiver(cricket::MediaType media_type, const std::string& receiver_id);
+  CreateReceiver(webrtc::MediaType media_type, const std::string& receiver_id);
 
   // Create a new RtpTransceiver of the given type and add it to the list of
   // registered transceivers.
@@ -155,14 +155,14 @@
   // implementation and triggers CreateAudioReceiver or CreateVideoReceiver.
   void OnRemoteSenderAdded(const RtpSenderInfo& sender_info,
                            MediaStreamInterface* stream,
-                           cricket::MediaType media_type);
+                           webrtc::MediaType media_type);
 
   // Triggered when a remote sender has been removed from a remote session
   // description. It removes the remote sender with id `sender_id` from a remote
   // MediaStream and triggers DestroyAudioReceiver or DestroyVideoReceiver.
   void OnRemoteSenderRemoved(const RtpSenderInfo& sender_info,
                              MediaStreamInterface* stream,
-                             cricket::MediaType media_type);
+                             webrtc::MediaType media_type);
 
   // Triggered when a local sender has been seen for the first time in a local
   // session description.
@@ -170,7 +170,7 @@
   // streams in the local SessionDescription can be mapped to a MediaStreamTrack
   // in a MediaStream in `local_streams_`
   void OnLocalSenderAdded(const RtpSenderInfo& sender_info,
-                          cricket::MediaType media_type);
+                          webrtc::MediaType media_type);
 
   // Triggered when a local sender has been removed from a local session
   // description.
@@ -178,12 +178,11 @@
   // has been removed from the local SessionDescription and the stream can be
   // mapped to a MediaStreamTrack in a MediaStream in `local_streams_`.
   void OnLocalSenderRemoved(const RtpSenderInfo& sender_info,
-                            cricket::MediaType media_type);
+                            webrtc::MediaType media_type);
 
   std::vector<RtpSenderInfo>* GetRemoteSenderInfos(
-      cricket::MediaType media_type);
-  std::vector<RtpSenderInfo>* GetLocalSenderInfos(
-      cricket::MediaType media_type);
+      webrtc::MediaType media_type);
+  std::vector<RtpSenderInfo>* GetLocalSenderInfos(webrtc::MediaType media_type);
   const RtpSenderInfo* FindSenderInfo(const std::vector<RtpSenderInfo>& infos,
                                       const std::string& stream_id,
                                       const std::string& sender_id) const;
diff --git a/pc/sdp_munging_detector.cc b/pc/sdp_munging_detector.cc
index 8506d0b..ef841b1 100644
--- a/pc/sdp_munging_detector.cc
+++ b/pc/sdp_munging_detector.cc
@@ -399,14 +399,14 @@
       continue;
     }
     // Validate video and audio contents.
-    cricket::MediaType media_type = last_created_media_description->type();
-    if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+    webrtc::MediaType media_type = last_created_media_description->type();
+    if (media_type == webrtc::MediaType::VIDEO) {
       type = DetermineVideoSdpMungingType(last_created_media_description,
                                           media_description_to_set);
       if (type != SdpMungingType::kNoModification) {
         return type;
       }
-    } else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+    } else if (media_type == webrtc::MediaType::AUDIO) {
       type = DetermineAudioSdpMungingType(last_created_media_description,
                                           media_description_to_set);
       if (type != SdpMungingType::kNoModification) {
@@ -426,7 +426,7 @@
         // Codec position swapped.
         for (size_t j = i + 1; j < last_created_codecs.size(); j++) {
           if (last_created_codecs[i] == codecs_to_set[j]) {
-            return media_type == cricket::MEDIA_TYPE_AUDIO
+            return media_type == webrtc::MediaType::AUDIO
                        ? SdpMungingType::kAudioCodecsReordered
                        : SdpMungingType::kVideoCodecsReordered;
           }
@@ -437,13 +437,13 @@
           return SdpMungingType::kPayloadTypes;
         }
         if (last_created_codecs[i].params != codecs_to_set[i].params) {
-          return media_type == cricket::MEDIA_TYPE_AUDIO
+          return media_type == webrtc::MediaType::AUDIO
                      ? SdpMungingType::kAudioCodecsFmtp
                      : SdpMungingType::kVideoCodecsFmtp;
         }
         if (last_created_codecs[i].feedback_params !=
             codecs_to_set[i].feedback_params) {
-          return media_type == cricket::MEDIA_TYPE_AUDIO
+          return media_type == webrtc::MediaType::AUDIO
                      ? SdpMungingType::kAudioCodecsRtcpFb
                      : SdpMungingType::kVideoCodecsRtcpFb;
         }
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index d16a71f..8f836da 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -458,8 +458,8 @@
         continue;
       }
       const auto type = media_description->type();
-      if (type == cricket::MEDIA_TYPE_AUDIO ||
-          type == cricket::MEDIA_TYPE_VIDEO) {
+      if (type == webrtc::MediaType::AUDIO ||
+          type == webrtc::MediaType::VIDEO) {
         for (const auto& c : media_description->codecs()) {
           auto error = FindDuplicateCodecParameters(
               c.ToCodecParameters(), payload_to_codec_parameters);
@@ -591,8 +591,7 @@
       continue;
     }
     const auto type = media_description->type();
-    if (type == cricket::MEDIA_TYPE_AUDIO ||
-        type == cricket::MEDIA_TYPE_VIDEO) {
+    if (type == webrtc::MediaType::AUDIO || type == webrtc::MediaType::VIDEO) {
       for (const auto& codec : media_description->codecs()) {
         if (!PayloadType::IsValid(codec.id, media_description->rtcp_mux())) {
           LOG_AND_RETURN_ERROR(
@@ -719,15 +718,15 @@
 
 // The SDP parser used to populate these values by default for the 'content
 // name' if an a=mid line was absent.
-absl::string_view GetDefaultMidForPlanB(cricket::MediaType media_type) {
+absl::string_view GetDefaultMidForPlanB(webrtc::MediaType media_type) {
   switch (media_type) {
-    case cricket::MEDIA_TYPE_AUDIO:
+    case webrtc::MediaType::AUDIO:
       return cricket::CN_AUDIO;
-    case cricket::MEDIA_TYPE_VIDEO:
+    case webrtc::MediaType::VIDEO:
       return cricket::CN_VIDEO;
-    case cricket::MEDIA_TYPE_DATA:
+    case webrtc::MediaType::DATA:
       return cricket::CN_DATA;
-    case cricket::MEDIA_TYPE_UNSUPPORTED:
+    case webrtc::MediaType::UNSUPPORTED:
       return "not supported";
     default:
       // Fall through to RTC_CHECK_NOTREACHED
@@ -745,13 +744,13 @@
     cricket::MediaDescriptionOptions* video_media_description_options,
     int num_sim_layers) {
   for (const auto& sender : senders) {
-    if (sender->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+    if (sender->media_type() == webrtc::MediaType::AUDIO) {
       if (audio_media_description_options) {
         audio_media_description_options->AddAudioSender(
             sender->id(), sender->internal()->stream_ids());
       }
     } else {
-      RTC_DCHECK(sender->media_type() == cricket::MEDIA_TYPE_VIDEO);
+      RTC_DCHECK(sender->media_type() == webrtc::MediaType::VIDEO);
       if (video_media_description_options) {
         video_media_description_options->AddVideoSender(
             sender->id(), sender->internal()->stream_ids(), {},
@@ -1947,7 +1946,7 @@
         GetFirstAudioContent(local_description()->description());
     if (audio_content) {
       if (audio_content->rejected) {
-        RemoveSenders(cricket::MEDIA_TYPE_AUDIO);
+        RemoveSenders(webrtc::MediaType::AUDIO);
       } else {
         const MediaContentDescription* audio_desc =
             audio_content->media_description();
@@ -1959,7 +1958,7 @@
         GetFirstVideoContent(local_description()->description());
     if (video_content) {
       if (video_content->rejected) {
-        RemoveSenders(cricket::MEDIA_TYPE_VIDEO);
+        RemoveSenders(webrtc::MediaType::VIDEO);
       } else {
         const MediaContentDescription* video_desc =
             video_content->media_description();
@@ -2334,7 +2333,7 @@
   // and MediaStreams.
   if (audio_content) {
     if (audio_content->rejected) {
-      RemoveSenders(cricket::MEDIA_TYPE_AUDIO);
+      RemoveSenders(webrtc::MediaType::AUDIO);
     } else {
       bool default_audio_track_needed =
           !remote_peer_supports_msid_ &&
@@ -2349,7 +2348,7 @@
   // and MediaStreams.
   if (video_content) {
     if (video_content->rejected) {
-      RemoveSenders(cricket::MEDIA_TYPE_VIDEO);
+      RemoveSenders(webrtc::MediaType::VIDEO);
     } else {
       bool default_video_track_needed =
           !remote_peer_supports_msid_ &&
@@ -3784,8 +3783,8 @@
     // media section.
     for (const ContentInfo& content : sdesc->description()->contents()) {
       const MediaContentDescription& desc = *content.media_description();
-      if ((desc.type() == cricket::MEDIA_TYPE_AUDIO ||
-           desc.type() == cricket::MEDIA_TYPE_VIDEO) &&
+      if ((desc.type() == webrtc::MediaType::AUDIO ||
+           desc.type() == webrtc::MediaType::VIDEO) &&
           desc.streams().size() > 1u) {
         LOG_AND_RETURN_ERROR(
             RTCErrorType::INVALID_PARAMETER,
@@ -3832,13 +3831,13 @@
   const ContentInfos& new_contents = new_session.description()->contents();
   for (size_t i = 0; i < new_contents.size(); ++i) {
     const ContentInfo& new_content = new_contents[i];
-    cricket::MediaType media_type = new_content.media_description()->type();
+    webrtc::MediaType media_type = new_content.media_description()->type();
     mid_generator_.AddKnownId(new_content.mid());
     auto it = bundle_groups_by_mid.find(new_content.mid());
     const ContentGroup* bundle_group =
         it != bundle_groups_by_mid.end() ? it->second : nullptr;
-    if (media_type == cricket::MEDIA_TYPE_AUDIO ||
-        media_type == cricket::MEDIA_TYPE_VIDEO) {
+    if (media_type == webrtc::MediaType::AUDIO ||
+        media_type == webrtc::MediaType::VIDEO) {
       const ContentInfo* old_local_content = nullptr;
       if (old_local_description &&
           i < old_local_description->description()->contents().size()) {
@@ -3899,7 +3898,7 @@
       if (!error.ok()) {
         return error;
       }
-    } else if (media_type == cricket::MEDIA_TYPE_DATA) {
+    } else if (media_type == webrtc::MediaType::DATA) {
       const auto data_mid = pc_->sctp_mid();
       if (data_mid && new_content.mid() != data_mid.value()) {
         // Ignore all but the first data section.
@@ -3912,7 +3911,7 @@
       if (!error.ok()) {
         return error;
       }
-    } else if (media_type == cricket::MEDIA_TYPE_UNSUPPORTED) {
+    } else if (media_type == webrtc::MediaType::UNSUPPORTED) {
       RTC_LOG(LS_INFO) << "Ignoring unsupported media type";
     } else {
       LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR,
@@ -3978,7 +3977,7 @@
     // recvonly direction.
     if (!transceiver) {
       RTC_LOG(LS_INFO) << "Adding "
-                       << cricket::MediaTypeToString(media_desc->type())
+                       << webrtc::MediaTypeToString(media_desc->type())
                        << " transceiver for MID=" << content.mid()
                        << " at i=" << mline_index
                        << " in response to the remote description.";
@@ -4178,7 +4177,7 @@
 
 rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>
 SdpOfferAnswerHandler::FindAvailableTransceiverToReceive(
-    cricket::MediaType media_type) const {
+    webrtc::MediaType media_type) const {
   RTC_DCHECK_RUN_ON(signaling_thread());
   RTC_DCHECK(IsUnifiedPlan());
   // From JSEP section 5.10 (Applying a Remote Description):
@@ -4309,7 +4308,7 @@
     // Add audio/video/data m= sections to the end if needed.
     if (!audio_index && offer_new_audio_description) {
       cricket::MediaDescriptionOptions options(
-          cricket::MEDIA_TYPE_AUDIO, cricket::CN_AUDIO,
+          webrtc::MediaType::AUDIO, cricket::CN_AUDIO,
           RtpTransceiverDirectionFromSendRecv(send_audio, recv_audio), false);
       options.header_extensions =
           media_engine()->voice().GetRtpHeaderExtensions();
@@ -4318,7 +4317,7 @@
     }
     if (!video_index && offer_new_video_description) {
       cricket::MediaDescriptionOptions options(
-          cricket::MEDIA_TYPE_VIDEO, cricket::CN_VIDEO,
+          webrtc::MediaType::VIDEO, cricket::CN_VIDEO,
           RtpTransceiverDirectionFromSendRecv(send_video, recv_video), false);
       options.header_extensions =
           media_engine()->video().GetRtpHeaderExtensions();
@@ -4381,11 +4380,11 @@
         (current_remote_content && current_remote_content->rejected);
     const std::string& mid =
         (local_content ? local_content->mid() : remote_content->mid());
-    cricket::MediaType media_type =
+    webrtc::MediaType media_type =
         (local_content ? local_content->media_description()->type()
                        : remote_content->media_description()->type());
-    if (media_type == cricket::MEDIA_TYPE_AUDIO ||
-        media_type == cricket::MEDIA_TYPE_VIDEO) {
+    if (media_type == webrtc::MediaType::AUDIO ||
+        media_type == webrtc::MediaType::VIDEO) {
       // A media section is considered eligible for recycling if it is marked as
       // rejected in either the current local or current remote description.
       auto transceiver = transceivers()->FindByMid(mid);
@@ -4420,14 +4419,14 @@
           transceiver->internal()->set_mline_index(i);
         }
       }
-    } else if (media_type == cricket::MEDIA_TYPE_UNSUPPORTED) {
+    } else if (media_type == webrtc::MediaType::UNSUPPORTED) {
       RTC_DCHECK(local_content->rejected);
       session_options->media_description_options.push_back(
           cricket::MediaDescriptionOptions(media_type, mid,
                                            RtpTransceiverDirection::kInactive,
                                            /*stopped=*/true));
     } else {
-      RTC_CHECK_EQ(cricket::MEDIA_TYPE_DATA, media_type);
+      RTC_CHECK_EQ(webrtc::MediaType::DATA, media_type);
       if (had_been_rejected) {
         session_options->media_description_options.push_back(
             GetMediaDescriptionOptionsForRejectedData(mid));
@@ -4485,7 +4484,7 @@
     for (size_t i = 0; i < session_options->media_description_options.size();
          i++) {
       auto media_description = session_options->media_description_options[i];
-      if (media_description.type == cricket::MEDIA_TYPE_DATA &&
+      if (media_description.type == webrtc::MediaType::DATA &&
           media_description.stopped) {
         session_options->media_description_options[i] =
             GetMediaDescriptionOptionsForActiveData(media_description.mid);
@@ -4594,9 +4593,9 @@
   RTC_DCHECK(remote_description()->GetType() == SdpType::kOffer);
   for (const ContentInfo& content :
        remote_description()->description()->contents()) {
-    cricket::MediaType media_type = content.media_description()->type();
-    if (media_type == cricket::MEDIA_TYPE_AUDIO ||
-        media_type == cricket::MEDIA_TYPE_VIDEO) {
+    webrtc::MediaType media_type = content.media_description()->type();
+    if (media_type == webrtc::MediaType::AUDIO ||
+        media_type == webrtc::MediaType::VIDEO) {
       auto transceiver = transceivers()->FindByMid(content.mid());
       if (transceiver) {
         session_options->media_description_options.push_back(
@@ -4611,14 +4610,14 @@
                                              RtpTransceiverDirection::kInactive,
                                              /*stopped=*/true));
       }
-    } else if (media_type == cricket::MEDIA_TYPE_UNSUPPORTED) {
+    } else if (media_type == webrtc::MediaType::UNSUPPORTED) {
       RTC_DCHECK(content.rejected);
       session_options->media_description_options.push_back(
           cricket::MediaDescriptionOptions(media_type, content.mid(),
                                            RtpTransceiverDirection::kInactive,
                                            /*stopped=*/true));
     } else {
-      RTC_CHECK_EQ(cricket::MEDIA_TYPE_DATA, media_type);
+      RTC_CHECK_EQ(webrtc::MediaType::DATA, media_type);
       // Reject all data sections if data channels are disabled.
       // Reject a data section if it has already been rejected.
       // Reject all data sections except for the first one.
@@ -4673,9 +4672,9 @@
 
   if (options.offer_to_receive_audio == 0) {
     RemoveRecvDirectionFromReceivingTransceiversOfType(
-        cricket::MEDIA_TYPE_AUDIO);
+        webrtc::MediaType::AUDIO);
   } else if (options.offer_to_receive_audio == 1) {
-    AddUpToOneReceivingTransceiverOfType(cricket::MEDIA_TYPE_AUDIO);
+    AddUpToOneReceivingTransceiverOfType(webrtc::MediaType::AUDIO);
   } else if (options.offer_to_receive_audio > 1) {
     LOG_AND_RETURN_ERROR(RTCErrorType::UNSUPPORTED_PARAMETER,
                          "offer_to_receive_audio > 1 is not supported.");
@@ -4683,9 +4682,9 @@
 
   if (options.offer_to_receive_video == 0) {
     RemoveRecvDirectionFromReceivingTransceiversOfType(
-        cricket::MEDIA_TYPE_VIDEO);
+        webrtc::MediaType::VIDEO);
   } else if (options.offer_to_receive_video == 1) {
-    AddUpToOneReceivingTransceiverOfType(cricket::MEDIA_TYPE_VIDEO);
+    AddUpToOneReceivingTransceiverOfType(webrtc::MediaType::VIDEO);
   } else if (options.offer_to_receive_video > 1) {
     LOG_AND_RETURN_ERROR(RTCErrorType::UNSUPPORTED_PARAMETER,
                          "offer_to_receive_video > 1 is not supported.");
@@ -4695,12 +4694,12 @@
 }
 
 void SdpOfferAnswerHandler::RemoveRecvDirectionFromReceivingTransceiversOfType(
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   for (const auto& transceiver : GetReceivingTransceiversOfType(media_type)) {
     RtpTransceiverDirection new_direction =
         RtpTransceiverDirectionWithRecvSet(transceiver->direction(), false);
     if (new_direction != transceiver->direction()) {
-      RTC_LOG(LS_INFO) << "Changing " << cricket::MediaTypeToString(media_type)
+      RTC_LOG(LS_INFO) << "Changing " << webrtc::MediaTypeToString(media_type)
                        << " transceiver (MID="
                        << transceiver->mid().value_or("<not set>") << ") from "
                        << RtpTransceiverDirectionToString(
@@ -4714,11 +4713,11 @@
 }
 
 void SdpOfferAnswerHandler::AddUpToOneReceivingTransceiverOfType(
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   if (GetReceivingTransceiversOfType(media_type).empty()) {
     RTC_LOG(LS_INFO)
-        << "Adding one recvonly " << cricket::MediaTypeToString(media_type)
+        << "Adding one recvonly " << webrtc::MediaTypeToString(media_type)
         << " transceiver since CreateOffer specified offer_to_receive=1";
     RtpTransceiverInit init;
     init.direction = RtpTransceiverDirection::kRecvOnly;
@@ -4729,7 +4728,7 @@
 
 std::vector<rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>>
 SdpOfferAnswerHandler::GetReceivingTransceiversOfType(
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   std::vector<
       rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>>
       receiving_transceivers;
@@ -4774,7 +4773,7 @@
   }
 }
 
-void SdpOfferAnswerHandler::RemoveSenders(cricket::MediaType media_type) {
+void SdpOfferAnswerHandler::RemoveSenders(webrtc::MediaType media_type) {
   RTC_DCHECK_RUN_ON(signaling_thread());
   UpdateLocalSenders(std::vector<cricket::StreamParams>(), media_type);
   UpdateRemoteSendersList(std::vector<cricket::StreamParams>(), false,
@@ -4783,7 +4782,7 @@
 
 void SdpOfferAnswerHandler::UpdateLocalSenders(
     const std::vector<cricket::StreamParams>& streams,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   TRACE_EVENT0("webrtc", "SdpOfferAnswerHandler::UpdateLocalSenders");
   RTC_DCHECK_RUN_ON(signaling_thread());
   std::vector<RtpSenderInfo>* current_senders =
@@ -4825,7 +4824,7 @@
 void SdpOfferAnswerHandler::UpdateRemoteSendersList(
     const cricket::StreamParamsVec& streams,
     bool default_sender_needed,
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     StreamCollection* new_streams) {
   TRACE_EVENT0("webrtc", "SdpOfferAnswerHandler::UpdateRemoteSendersList");
   RTC_DCHECK_RUN_ON(signaling_thread());
@@ -4912,7 +4911,7 @@
       remote_streams_->AddStream(default_stream);
       new_streams->AddStream(default_stream);
     }
-    std::string default_sender_id = (media_type == cricket::MEDIA_TYPE_AUDIO)
+    std::string default_sender_id = (media_type == webrtc::MediaType::AUDIO)
                                         ? kDefaultAudioSenderId
                                         : kDefaultVideoSenderId;
     const RtpSenderInfo* default_sender_info = rtp_manager()->FindSenderInfo(
@@ -5352,12 +5351,12 @@
   RTC_DCHECK_BLOCK_COUNT_NO_MORE_THAN(0);
 
   for (const auto& transceiver : list) {
-    if (transceiver->media_type() == cricket::MEDIA_TYPE_VIDEO) {
+    if (transceiver->media_type() == webrtc::MediaType::VIDEO) {
       transceiver->internal()->ClearChannel();
     }
   }
   for (const auto& transceiver : list) {
-    if (transceiver->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+    if (transceiver->media_type() == webrtc::MediaType::AUDIO) {
       transceiver->internal()->ClearChannel();
     }
   }
@@ -5379,12 +5378,12 @@
       if (*audio_index) {
         session_options->media_description_options.push_back(
             cricket::MediaDescriptionOptions(
-                cricket::MEDIA_TYPE_AUDIO, content.mid(),
+                webrtc::MediaType::AUDIO, content.mid(),
                 RtpTransceiverDirection::kInactive, /*stopped=*/true));
       } else {
         bool stopped = (audio_direction == RtpTransceiverDirection::kInactive);
         session_options->media_description_options.push_back(
-            cricket::MediaDescriptionOptions(cricket::MEDIA_TYPE_AUDIO,
+            cricket::MediaDescriptionOptions(webrtc::MediaType::AUDIO,
                                              content.mid(), audio_direction,
                                              stopped));
         *audio_index = session_options->media_description_options.size() - 1;
@@ -5396,12 +5395,12 @@
       if (*video_index) {
         session_options->media_description_options.push_back(
             cricket::MediaDescriptionOptions(
-                cricket::MEDIA_TYPE_VIDEO, content.mid(),
+                webrtc::MediaType::VIDEO, content.mid(),
                 RtpTransceiverDirection::kInactive, /*stopped=*/true));
       } else {
         bool stopped = (video_direction == RtpTransceiverDirection::kInactive);
         session_options->media_description_options.push_back(
-            cricket::MediaDescriptionOptions(cricket::MEDIA_TYPE_VIDEO,
+            cricket::MediaDescriptionOptions(webrtc::MediaType::VIDEO,
                                              content.mid(), video_direction,
                                              stopped));
         *video_index = session_options->media_description_options.size() - 1;
@@ -5410,7 +5409,7 @@
           media_engine()->video().GetRtpHeaderExtensions();
     } else if (IsUnsupportedContent(&content)) {
       session_options->media_description_options.push_back(
-          cricket::MediaDescriptionOptions(cricket::MEDIA_TYPE_UNSUPPORTED,
+          cricket::MediaDescriptionOptions(webrtc::MediaType::UNSUPPORTED,
                                            content.mid(),
                                            RtpTransceiverDirection::kInactive,
                                            /*stopped=*/true));
@@ -5435,7 +5434,7 @@
   RTC_DCHECK_RUN_ON(signaling_thread());
   // Direction for data sections is meaningless, but legacy endpoints might
   // expect sendrecv.
-  cricket::MediaDescriptionOptions options(cricket::MEDIA_TYPE_DATA, mid,
+  cricket::MediaDescriptionOptions options(webrtc::MediaType::DATA, mid,
                                            RtpTransceiverDirection::kSendRecv,
                                            /*stopped=*/false);
   return options;
@@ -5445,7 +5444,7 @@
 SdpOfferAnswerHandler::GetMediaDescriptionOptionsForRejectedData(
     const std::string& mid) const {
   RTC_DCHECK_RUN_ON(signaling_thread());
-  cricket::MediaDescriptionOptions options(cricket::MEDIA_TYPE_DATA, mid,
+  cricket::MediaDescriptionOptions options(webrtc::MediaType::DATA, mid,
                                            RtpTransceiverDirection::kInactive,
                                            /*stopped=*/true);
   return options;
@@ -5498,15 +5497,15 @@
       // Ignore transceivers that are not receiving.
       continue;
     }
-    const cricket::MediaType media_type =
+    const webrtc::MediaType media_type =
         content_info.media_description()->type();
-    if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO ||
-        media_type == cricket::MediaType::MEDIA_TYPE_VIDEO) {
-      if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO &&
+    if (media_type == webrtc::MediaType::AUDIO ||
+        media_type == webrtc::MediaType::VIDEO) {
+      if (media_type == webrtc::MediaType::AUDIO &&
           !mid_header_extension_missing_audio) {
         mid_header_extension_missing_audio =
             !ContentHasHeaderExtension(content_info, RtpExtension::kMidUri);
-      } else if (media_type == cricket::MEDIA_TYPE_VIDEO &&
+      } else if (media_type == webrtc::MediaType::VIDEO &&
                  !mid_header_extension_missing_video) {
         mid_header_extension_missing_video =
             !ContentHasHeaderExtension(content_info, RtpExtension::kMidUri);
@@ -5514,16 +5513,16 @@
       const MediaContentDescription* media_desc =
           content_info.media_description();
       for (const cricket::Codec& codec : media_desc->codecs()) {
-        if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO) {
+        if (media_type == webrtc::MediaType::AUDIO) {
           if (payload_types->audio_payload_types.count(codec.id)) {
             // Two m= sections are using the same payload type, thus demuxing
             // by payload type is not possible.
-            if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO) {
+            if (media_type == webrtc::MediaType::AUDIO) {
               payload_types->pt_demuxing_possible_audio = false;
             }
           }
           payload_types->audio_payload_types.insert(codec.id);
-        } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+        } else if (media_type == webrtc::MediaType::VIDEO) {
           if (payload_types->video_payload_types.count(codec.id)) {
             // Two m= sections are using the same payload type, thus demuxing
             // by payload type is not possible.
@@ -5565,9 +5564,9 @@
       continue;
     }
 
-    const cricket::MediaType media_type = channel->media_type();
-    if (media_type != cricket::MediaType::MEDIA_TYPE_AUDIO &&
-        media_type != cricket::MediaType::MEDIA_TYPE_VIDEO) {
+    const webrtc::MediaType media_type = channel->media_type();
+    if (media_type != webrtc::MediaType::AUDIO &&
+        media_type != webrtc::MediaType::VIDEO) {
       continue;
     }
 
@@ -5581,7 +5580,7 @@
     const ContentGroup* bundle_group =
         bundle_it != bundle_groups_by_mid.end() ? bundle_it->second : nullptr;
     bool pt_demux_enabled = RtpTransceiverDirectionHasRecv(local_direction);
-    if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO) {
+    if (media_type == webrtc::MediaType::AUDIO) {
       pt_demux_enabled &=
           !bundle_group ||
           (bundled_pt_demux_allowed_audio &&
@@ -5590,7 +5589,7 @@
         pt_demuxing_has_been_used_audio_ = true;
       }
     } else {
-      RTC_DCHECK_EQ(media_type, cricket::MediaType::MEDIA_TYPE_VIDEO);
+      RTC_DCHECK_EQ(media_type, webrtc::MediaType::VIDEO);
       pt_demux_enabled &=
           !bundle_group ||
           (bundled_pt_demux_allowed_video &&
diff --git a/pc/sdp_offer_answer.h b/pc/sdp_offer_answer.h
index b7387da..a9c68e8 100644
--- a/pc/sdp_offer_answer.h
+++ b/pc/sdp_offer_answer.h
@@ -384,7 +384,7 @@
   // Returns an RtpTransceiver, if available, that can be used to receive the
   // given media type according to JSEP rules.
   rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>
-  FindAvailableTransceiverToReceive(cricket::MediaType media_type) const;
+  FindAvailableTransceiverToReceive(webrtc::MediaType media_type) const;
 
   // Returns a MediaSessionOptions struct with options decided by `options`,
   // the local MediaStreams and DataChannels.
@@ -430,12 +430,12 @@
   RTCError HandleLegacyOfferOptions(
       const PeerConnectionInterface::RTCOfferAnswerOptions& options);
   void RemoveRecvDirectionFromReceivingTransceiversOfType(
-      cricket::MediaType media_type) RTC_RUN_ON(signaling_thread());
-  void AddUpToOneReceivingTransceiverOfType(cricket::MediaType media_type);
+      webrtc::MediaType media_type) RTC_RUN_ON(signaling_thread());
+  void AddUpToOneReceivingTransceiverOfType(webrtc::MediaType media_type);
 
   std::vector<
       rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>>
-  GetReceivingTransceiversOfType(cricket::MediaType media_type)
+  GetReceivingTransceiversOfType(webrtc::MediaType media_type)
       RTC_RUN_ON(signaling_thread());
 
   // Runs the algorithm specified in
@@ -458,14 +458,14 @@
 
   // Remove all local and remote senders of type `media_type`.
   // Called when a media type is rejected (m-line set to port 0).
-  void RemoveSenders(cricket::MediaType media_type);
+  void RemoveSenders(webrtc::MediaType media_type);
 
   // Loops through the vector of `streams` and finds added and removed
   // StreamParams since last time this method was called.
   // For each new or removed StreamParam, OnLocalSenderSeen or
   // OnLocalSenderRemoved is invoked.
   void UpdateLocalSenders(const std::vector<cricket::StreamParams>& streams,
-                          cricket::MediaType media_type);
+                          webrtc::MediaType media_type);
 
   // Makes sure a MediaStreamTrack is created for each StreamParam in `streams`,
   // and existing MediaStreamTracks are removed if there is no corresponding
@@ -476,7 +476,7 @@
   void UpdateRemoteSendersList(
       const std::vector<cricket::StreamParams>& streams,
       bool default_track_needed,
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       StreamCollection* new_streams);
 
   // Enables media channels to allow sending of media.
diff --git a/pc/sdp_offer_answer_unittest.cc b/pc/sdp_offer_answer_unittest.cc
index efbda16..36d545c 100644
--- a/pc/sdp_offer_answer_unittest.cc
+++ b/pc/sdp_offer_answer_unittest.cc
@@ -139,7 +139,7 @@
   }
 
   std::optional<RtpCodecCapability> FindFirstSendCodecWithName(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const std::string& name) const {
     std::vector<RtpCodecCapability> codecs =
         pc_factory_->GetRtpSenderCapabilities(media_type).codecs;
@@ -163,7 +163,7 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto audio_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
+  auto audio_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
   // Verify that caller->observer->OnTrack() has been called with a
@@ -607,7 +607,7 @@
   rid2.rid = "2";
   init.send_encodings.push_back(rid2);
 
-  auto transceiver = pc->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  auto transceiver = pc->AddTransceiver(webrtc::MediaType::VIDEO, init);
   EXPECT_TRUE(pc->CreateOfferAndSetAsLocal());
   auto mid = pc->pc()->local_description()->description()->contents()[0].mid();
 
@@ -659,11 +659,11 @@
       FieldTrials::CreateNoGlobal("WebRTC-MixedCodecSimulcast/Enabled/"));
 
   std::optional<RtpCodecCapability> vp8_codec_capability =
-      FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                  cricket::kVp8CodecName);
   ASSERT_TRUE(vp8_codec_capability);
   std::optional<RtpCodecCapability> vp9_codec_capability =
-      FindFirstSendCodecWithName(cricket::MEDIA_TYPE_VIDEO,
+      FindFirstSendCodecWithName(webrtc::MediaType::VIDEO,
                                  cricket::kVp9CodecName);
   ASSERT_TRUE(vp9_codec_capability);
 
@@ -677,7 +677,7 @@
   rid2.codec = *vp9_codec_capability;
   init.send_encodings.push_back(rid2);
 
-  auto transceiver = pc->AddTransceiver(cricket::MEDIA_TYPE_VIDEO, init);
+  auto transceiver = pc->AddTransceiver(webrtc::MediaType::VIDEO, init);
   auto offer = pc->CreateOffer();
   auto& offer_contents = offer->description()->contents();
   auto send_codecs = offer_contents[0].media_description()->codecs();
@@ -1620,8 +1620,8 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto audio_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  auto video_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto audio_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  auto video_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
   auto receivers = callee->pc()->GetReceivers();
@@ -1643,8 +1643,8 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  auto audio_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  auto video_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto audio_transceiver = caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  auto video_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   auto offer = caller->CreateOfferAndSetAsLocal();
   ASSERT_NE(offer, nullptr);
@@ -1678,9 +1678,9 @@
 
   // 1. Restrict codecs and set a local description and remote description.
   //    with a different payload type.
-  auto video_transceiver = caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto video_transceiver = caller->AddTransceiver(webrtc::MediaType::VIDEO);
   std::vector<RtpCodecCapability> codec_caps =
-      pc_factory_->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO).codecs;
+      pc_factory_->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO).codecs;
   codec_caps.erase(std::remove_if(codec_caps.begin(), codec_caps.end(),
                                   [](const RtpCodecCapability& codec) {
                                     return !absl::EqualsIgnoreCase(codec.name,
@@ -1710,7 +1710,7 @@
 
   // 3. sCP to reenable that codec. Payload type is not matched at this point.
   codec_caps =
-      pc_factory_->GetRtpReceiverCapabilities(cricket::MEDIA_TYPE_VIDEO).codecs;
+      pc_factory_->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO).codecs;
   codec_caps.erase(
       std::remove_if(codec_caps.begin(), codec_caps.end(),
                      [](const RtpCodecCapability& codec) {
@@ -1754,8 +1754,8 @@
   auto caller = CreatePeerConnection();
   auto callee = CreatePeerConnection();
 
-  caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO);
-  caller->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  caller->AddTransceiver(webrtc::MediaType::AUDIO);
+  caller->AddTransceiver(webrtc::MediaType::VIDEO);
 
   // Negotiate, gather candidates, then exchange ICE candidates.
   ASSERT_TRUE(caller->ExchangeOfferAnswerWith(callee.get()));
diff --git a/pc/session_description.h b/pc/session_description.h
index 56a58a9..e0faf9e 100644
--- a/pc/session_description.h
+++ b/pc/session_description.h
@@ -59,7 +59,7 @@
   MediaContentDescription() = default;
   virtual ~MediaContentDescription() = default;
 
-  virtual cricket::MediaType type() const = 0;
+  virtual webrtc::MediaType type() const = 0;
 
   // Try to cast this media description to an AudioContentDescription. Returns
   // nullptr if the cast fails.
@@ -298,7 +298,7 @@
     RTC_DCHECK(cricket::IsRtpProtocol(protocol));
     protocol_ = std::string(protocol);
   }
-  cricket::MediaType type() const override { return cricket::MEDIA_TYPE_AUDIO; }
+  webrtc::MediaType type() const override { return webrtc::MediaType::AUDIO; }
   AudioContentDescription* as_audio() override { return this; }
   const AudioContentDescription* as_audio() const override { return this; }
 
@@ -314,7 +314,7 @@
     RTC_DCHECK(cricket::IsRtpProtocol(protocol));
     protocol_ = std::string(protocol);
   }
-  cricket::MediaType type() const override { return cricket::MEDIA_TYPE_VIDEO; }
+  webrtc::MediaType type() const override { return webrtc::MediaType::VIDEO; }
   VideoContentDescription* as_video() override { return this; }
   const VideoContentDescription* as_video() const override { return this; }
 
@@ -332,7 +332,7 @@
         use_sctpmap_(o.use_sctpmap_),
         port_(o.port_),
         max_message_size_(o.max_message_size_) {}
-  cricket::MediaType type() const override { return cricket::MEDIA_TYPE_DATA; }
+  webrtc::MediaType type() const override { return webrtc::MediaType::DATA; }
   SctpDataContentDescription* as_sctp() override { return this; }
   const SctpDataContentDescription* as_sctp() const override { return this; }
 
@@ -366,8 +366,8 @@
  public:
   explicit UnsupportedContentDescription(absl::string_view media_type)
       : media_type_(media_type) {}
-  cricket::MediaType type() const override {
-    return cricket::MEDIA_TYPE_UNSUPPORTED;
+  webrtc::MediaType type() const override {
+    return webrtc::MediaType::UNSUPPORTED;
   }
 
   UnsupportedContentDescription* as_unsupported() override { return this; }
diff --git a/pc/test/fake_peer_connection_base.h b/pc/test/fake_peer_connection_base.h
index aad1310..fbefff0 100644
--- a/pc/test/fake_peer_connection_base.h
+++ b/pc/test/fake_peer_connection_base.h
@@ -116,12 +116,12 @@
   }
 
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> AddTransceiver(
-      cricket::MediaType media_type) override {
+      webrtc::MediaType media_type) override {
     return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
   }
 
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> AddTransceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const RtpTransceiverInit& init) override {
     return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
   }
@@ -382,7 +382,7 @@
   }
 
   RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> AddTransceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       rtc::scoped_refptr<MediaStreamTrackInterface> track,
       const RtpTransceiverInit& init,
       bool fire_callback = true) override {
diff --git a/pc/test/fake_peer_connection_for_stats.h b/pc/test/fake_peer_connection_for_stats.h
index 1a07bcb..402bb05 100644
--- a/pc/test/fake_peer_connection_for_stats.h
+++ b/pc/test/fake_peer_connection_for_stats.h
@@ -336,12 +336,11 @@
         std::move(voice_media_receive_channel), mid, kDefaultSrtpRequired,
         CryptoOptions(), context_->ssrc_generator(), transport_name);
     auto transceiver =
-        GetOrCreateFirstTransceiverOfType(cricket::MEDIA_TYPE_AUDIO)
-            ->internal();
+        GetOrCreateFirstTransceiverOfType(webrtc::MediaType::AUDIO)->internal();
     if (transceiver->channel()) {
       // This transceiver already has a channel, create a new one.
       transceiver =
-          CreateTransceiverOfType(cricket::MEDIA_TYPE_AUDIO)->internal();
+          CreateTransceiverOfType(webrtc::MediaType::AUDIO)->internal();
     }
     RTC_DCHECK(!transceiver->channel());
     transceiver->SetChannel(std::move(voice_channel),
@@ -370,12 +369,11 @@
         std::move(video_media_receive_channel), mid, kDefaultSrtpRequired,
         CryptoOptions(), context_->ssrc_generator(), transport_name);
     auto transceiver =
-        GetOrCreateFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)
-            ->internal();
+        GetOrCreateFirstTransceiverOfType(webrtc::MediaType::VIDEO)->internal();
     if (transceiver->channel()) {
       // This transceiver already has a channel, create a new one.
       transceiver =
-          CreateTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)->internal();
+          CreateTransceiverOfType(webrtc::MediaType::VIDEO)->internal();
     }
     RTC_DCHECK(!transceiver->channel());
     transceiver->SetChannel(std::move(video_channel),
@@ -551,7 +549,7 @@
   }
 
   rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>
-  GetOrCreateFirstTransceiverOfType(cricket::MediaType media_type) {
+  GetOrCreateFirstTransceiverOfType(webrtc::MediaType media_type) {
     for (auto transceiver : transceivers_) {
       if (transceiver->internal()->media_type() == media_type) {
         return transceiver;
@@ -561,7 +559,7 @@
   }
 
   rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>
-  CreateTransceiverOfType(cricket::MediaType media_type) {
+  CreateTransceiverOfType(webrtc::MediaType media_type) {
     auto transceiver = RtpTransceiverProxyWithInternal<RtpTransceiver>::Create(
         signaling_thread_,
         rtc::make_ref_counted<RtpTransceiver>(media_type, context_.get(),
diff --git a/pc/test/integration_test_helpers.h b/pc/test/integration_test_helpers.h
index 619b54d..ad0341a 100644
--- a/pc/test/integration_test_helpers.h
+++ b/pc/test/integration_test_helpers.h
@@ -188,10 +188,10 @@
 
 class MockRtpReceiverObserver : public RtpReceiverObserverInterface {
  public:
-  explicit MockRtpReceiverObserver(cricket::MediaType media_type)
+  explicit MockRtpReceiverObserver(webrtc::MediaType media_type)
       : expected_media_type_(media_type) {}
 
-  void OnFirstPacketReceived(cricket::MediaType media_type) override {
+  void OnFirstPacketReceived(webrtc::MediaType media_type) override {
     ASSERT_EQ(expected_media_type_, media_type);
     first_packet_received_ = true;
   }
@@ -202,15 +202,15 @@
 
  private:
   bool first_packet_received_ = false;
-  cricket::MediaType expected_media_type_;
+  webrtc::MediaType expected_media_type_;
 };
 
 class MockRtpSenderObserver : public RtpSenderObserverInterface {
  public:
-  explicit MockRtpSenderObserver(cricket::MediaType media_type)
+  explicit MockRtpSenderObserver(webrtc::MediaType media_type)
       : expected_media_type_(media_type) {}
 
-  void OnFirstPacketSent(cricket::MediaType media_type) override {
+  void OnFirstPacketSent(webrtc::MediaType media_type) override {
     ASSERT_EQ(expected_media_type_, media_type);
     first_packet_sent_ = true;
   }
@@ -221,7 +221,7 @@
 
  private:
   bool first_packet_sent_ = false;
-  cricket::MediaType expected_media_type_;
+  webrtc::MediaType expected_media_type_;
 };
 
 // Helper class that wraps a peer connection, observes it, and can accept
@@ -397,7 +397,7 @@
   }
 
   std::vector<rtc::scoped_refptr<RtpReceiverInterface>> GetReceiversOfType(
-      cricket::MediaType media_type) {
+      webrtc::MediaType media_type) {
     std::vector<rtc::scoped_refptr<RtpReceiverInterface>> receivers;
     for (const auto& receiver : pc()->GetReceivers()) {
       if (receiver->media_type() == media_type) {
@@ -408,7 +408,7 @@
   }
 
   rtc::scoped_refptr<RtpTransceiverInterface> GetFirstTransceiverOfType(
-      cricket::MediaType media_type) {
+      webrtc::MediaType media_type) {
     for (auto transceiver : pc()->GetTransceivers()) {
       if (transceiver->receiver()->media_type() == media_type) {
         return transceiver;
@@ -714,7 +714,7 @@
 
   void NegotiateCorruptionDetectionHeader() {
     for (const auto& transceiver : pc()->GetTransceivers()) {
-      if (transceiver->media_type() != cricket::MEDIA_TYPE_VIDEO) {
+      if (transceiver->media_type() != webrtc::MediaType::VIDEO) {
         continue;
       }
       auto extensions = transceiver->GetHeaderExtensionsToNegotiate();
@@ -925,7 +925,7 @@
       // Note - we don't check for direction here. This function is called
       // before direction is set, and in that case, we should not remove
       // the renderer.
-      if (transceiver->receiver()->media_type() == cricket::MEDIA_TYPE_VIDEO) {
+      if (transceiver->receiver()->media_type() == webrtc::MediaType::VIDEO) {
         active_renderers.insert(transceiver->receiver()->track()->id());
       }
     }
@@ -1027,7 +1027,7 @@
   void OnAddTrack(rtc::scoped_refptr<RtpReceiverInterface> receiver,
                   const std::vector<rtc::scoped_refptr<MediaStreamInterface>>&
                       streams) override {
-    if (receiver->media_type() == cricket::MEDIA_TYPE_VIDEO) {
+    if (receiver->media_type() == webrtc::MediaType::VIDEO) {
       rtc::scoped_refptr<VideoTrackInterface> video_track(
           static_cast<VideoTrackInterface*>(receiver->track().get()));
       ASSERT_TRUE(fake_video_renderers_.find(video_track->id()) ==
@@ -1038,7 +1038,7 @@
   }
   void OnRemoveTrack(
       rtc::scoped_refptr<RtpReceiverInterface> receiver) override {
-    if (receiver->media_type() == cricket::MEDIA_TYPE_VIDEO) {
+    if (receiver->media_type() == webrtc::MediaType::VIDEO) {
       auto it = fake_video_renderers_.find(receiver->track()->id());
       if (it != fake_video_renderers_.end()) {
         fake_video_renderers_.erase(it);
diff --git a/pc/test/mock_channel_interface.h b/pc/test/mock_channel_interface.h
index 30bd909..f1f176d 100644
--- a/pc/test/mock_channel_interface.h
+++ b/pc/test/mock_channel_interface.h
@@ -31,7 +31,7 @@
 // implementation of BaseChannel.
 class MockChannelInterface : public cricket::ChannelInterface {
  public:
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(cricket::VideoChannel*, AsVideoChannel, (), (override));
   MOCK_METHOD(cricket::VoiceChannel*, AsVoiceChannel, (), (override));
   MOCK_METHOD(cricket::MediaSendChannelInterface*,
diff --git a/pc/test/mock_peer_connection_internal.h b/pc/test/mock_peer_connection_internal.h
index b554c54..a9e4f84 100644
--- a/pc/test/mock_peer_connection_internal.h
+++ b/pc/test/mock_peer_connection_internal.h
@@ -106,11 +106,11 @@
               (override));
   MOCK_METHOD(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              (cricket::MediaType),
+              (webrtc::MediaType),
               (override));
   MOCK_METHOD(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              (cricket::MediaType, const RtpTransceiverInit&),
+              (webrtc::MediaType, const RtpTransceiverInit&),
               (override));
   MOCK_METHOD(rtc::scoped_refptr<RtpSenderInterface>,
               CreateSender,
@@ -304,7 +304,7 @@
               (override));
   MOCK_METHOD(RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>>,
               AddTransceiver,
-              (cricket::MediaType,
+              (webrtc::MediaType,
                rtc::scoped_refptr<MediaStreamTrackInterface>,
                const RtpTransceiverInit&,
                bool),
diff --git a/pc/test/mock_rtp_receiver_internal.h b/pc/test/mock_rtp_receiver_internal.h
index 90ccd94..00fa3f4 100644
--- a/pc/test/mock_rtp_receiver_internal.h
+++ b/pc/test/mock_rtp_receiver_internal.h
@@ -47,7 +47,7 @@
               streams,
               (),
               (const, override));
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(std::string, id, (), (const, override));
   MOCK_METHOD(RtpParameters, GetParameters, (), (const, override));
   MOCK_METHOD(void, SetObserver, (RtpReceiverObserverInterface*), (override));
diff --git a/pc/test/mock_rtp_sender_internal.h b/pc/test/mock_rtp_sender_internal.h
index b272bd7..4722a69 100644
--- a/pc/test/mock_rtp_sender_internal.h
+++ b/pc/test/mock_rtp_sender_internal.h
@@ -48,7 +48,7 @@
               dtls_transport,
               (),
               (const, override));
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(std::string, id, (), (const, override));
   MOCK_METHOD(std::vector<std::string>, stream_ids, (), (const, override));
   MOCK_METHOD(std::vector<RtpEncodingParameters>,
diff --git a/pc/test/mock_voice_media_receive_channel_interface.h b/pc/test/mock_voice_media_receive_channel_interface.h
index 76e3b39..31f8dee 100644
--- a/pc/test/mock_voice_media_receive_channel_interface.h
+++ b/pc/test/mock_voice_media_receive_channel_interface.h
@@ -88,7 +88,7 @@
               AsVoiceReceiveChannel,
               (),
               (override));
-  MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
+  MOCK_METHOD(webrtc::MediaType, media_type, (), (const, override));
   MOCK_METHOD(bool, AddRecvStream, (const StreamParams& sp), (override));
   MOCK_METHOD(bool, RemoveRecvStream, (uint32_t ssrc), (override));
   MOCK_METHOD(void, ResetUnsignaledRecvStream, (), (override));
diff --git a/pc/test/peer_connection_test_wrapper.cc b/pc/test/peer_connection_test_wrapper.cc
index 8434b2d..03c4ce3 100644
--- a/pc/test/peer_connection_test_wrapper.cc
+++ b/pc/test/peer_connection_test_wrapper.cc
@@ -247,7 +247,7 @@
 
 std::optional<webrtc::RtpCodecCapability>
 PeerConnectionTestWrapper::FindFirstSendCodecWithName(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     const std::string& name) const {
   std::vector<webrtc::RtpCodecCapability> codecs =
       peer_connection_factory_->GetRtpSenderCapabilities(media_type).codecs;
diff --git a/pc/test/peer_connection_test_wrapper.h b/pc/test/peer_connection_test_wrapper.h
index ecd6bdb..43b1c0d 100644
--- a/pc/test/peer_connection_test_wrapper.h
+++ b/pc/test/peer_connection_test_wrapper.h
@@ -79,7 +79,7 @@
       const webrtc::DataChannelInit& init);
 
   std::optional<webrtc::RtpCodecCapability> FindFirstSendCodecWithName(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const std::string& name) const;
 
   void WaitForNegotiation();
diff --git a/pc/track_media_info_map.cc b/pc/track_media_info_map.cc
index 3ad4bbc..5508939 100644
--- a/pc/track_media_info_map.cc
+++ b/pc/track_media_info_map.cc
@@ -11,13 +11,20 @@
 #include "pc/track_media_info_map.h"
 
 #include <cstdint>
+#include <map>
+#include <optional>
 #include <set>
-#include <type_traits>
 #include <utility>
 
+#include "api/array_view.h"
+#include "api/media_stream_interface.h"
 #include "api/media_types.h"
 #include "api/rtp_parameters.h"
+#include "api/scoped_refptr.h"
+#include "media/base/media_channel.h"
 #include "media/base/stream_params.h"
+#include "pc/rtp_receiver.h"
+#include "pc/rtp_sender.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/thread.h"
 
@@ -51,7 +58,7 @@
   RTC_DCHECK(remote_audio_track_by_ssrc->empty());
   RTC_DCHECK(remote_video_track_by_ssrc->empty());
   for (const auto& rtp_sender : rtp_senders) {
-    cricket::MediaType media_type = rtp_sender->media_type();
+    webrtc::MediaType media_type = rtp_sender->media_type();
     MediaStreamTrackInterface* track = rtp_sender->track().get();
     if (!track) {
       continue;
@@ -59,7 +66,7 @@
     // TODO(deadbeef): `ssrc` should be removed in favor of `GetParameters`.
     uint32_t ssrc = rtp_sender->ssrc();
     if (ssrc != 0) {
-      if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+      if (media_type == webrtc::MediaType::AUDIO) {
         RTC_DCHECK(local_audio_track_by_ssrc->find(ssrc) ==
                    local_audio_track_by_ssrc->end());
         (*local_audio_track_by_ssrc)[ssrc] =
@@ -73,21 +80,21 @@
     }
   }
   for (const auto& rtp_receiver : rtp_receivers) {
-    cricket::MediaType media_type = rtp_receiver->media_type();
+    webrtc::MediaType media_type = rtp_receiver->media_type();
     MediaStreamTrackInterface* track = rtp_receiver->track().get();
     RTC_DCHECK(track);
     RtpParameters params = rtp_receiver->GetParameters();
     for (const RtpEncodingParameters& encoding : params.encodings) {
       if (!encoding.ssrc) {
-        if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+        if (media_type == webrtc::MediaType::AUDIO) {
           *unsignaled_audio_track = static_cast<AudioTrackInterface*>(track);
         } else {
-          RTC_DCHECK(media_type == cricket::MEDIA_TYPE_VIDEO);
+          RTC_DCHECK(media_type == webrtc::MediaType::VIDEO);
           *unsignaled_video_track = static_cast<VideoTrackInterface*>(track);
         }
         continue;
       }
-      if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+      if (media_type == webrtc::MediaType::AUDIO) {
         RTC_DCHECK(remote_audio_track_by_ssrc->find(*encoding.ssrc) ==
                    remote_audio_track_by_ssrc->end());
         (*remote_audio_track_by_ssrc)[*encoding.ssrc] =
diff --git a/pc/track_media_info_map_unittest.cc b/pc/track_media_info_map_unittest.cc
index f62043a..8c4f10a 100644
--- a/pc/track_media_info_map_unittest.cc
+++ b/pc/track_media_info_map_unittest.cc
@@ -14,21 +14,25 @@
 
 #include <cstdint>
 #include <initializer_list>
+#include <optional>
 #include <string>
-#include <type_traits>
 #include <utility>
 #include <vector>
 
+#include "api/make_ref_counted.h"
+#include "api/media_stream_interface.h"
 #include "api/media_types.h"
 #include "api/rtp_parameters.h"
+#include "api/scoped_refptr.h"
 #include "api/test/mock_video_track.h"
 #include "media/base/media_channel.h"
 #include "pc/audio_track.h"
+#include "pc/rtp_receiver.h"
+#include "pc/rtp_sender.h"
 #include "pc/test/fake_video_track_source.h"
 #include "pc/test/mock_rtp_receiver_internal.h"
 #include "pc/test/mock_rtp_sender_internal.h"
 #include "pc/video_track.h"
-#include "rtc_base/checks.h"
 #include "rtc_base/thread.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -51,7 +55,7 @@
 }
 
 rtc::scoped_refptr<MockRtpSenderInternal> CreateMockRtpSender(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     std::initializer_list<uint32_t> ssrcs,
     rtc::scoped_refptr<MediaStreamTrackInterface> track) {
   uint32_t first_ssrc;
@@ -73,7 +77,7 @@
 }
 
 rtc::scoped_refptr<MockRtpReceiverInternal> CreateMockRtpReceiver(
-    cricket::MediaType media_type,
+    webrtc::MediaType media_type,
     std::initializer_list<uint32_t> ssrcs,
     rtc::scoped_refptr<MediaStreamTrackInterface> track) {
   auto receiver = rtc::make_ref_counted<MockRtpReceiverInternal>();
@@ -119,8 +123,8 @@
                              MediaStreamTrackInterface* local_track) {
     rtc::scoped_refptr<MockRtpSenderInternal> rtp_sender = CreateMockRtpSender(
         local_track->kind() == MediaStreamTrackInterface::kAudioKind
-            ? cricket::MEDIA_TYPE_AUDIO
-            : cricket::MEDIA_TYPE_VIDEO,
+            ? webrtc::MediaType::AUDIO
+            : webrtc::MediaType::VIDEO,
         ssrcs, rtc::scoped_refptr<MediaStreamTrackInterface>(local_track));
     rtp_senders_.push_back(rtp_sender);
 
@@ -148,8 +152,8 @@
                                MediaStreamTrackInterface* remote_track) {
     auto rtp_receiver = CreateMockRtpReceiver(
         remote_track->kind() == MediaStreamTrackInterface::kAudioKind
-            ? cricket::MEDIA_TYPE_AUDIO
-            : cricket::MEDIA_TYPE_VIDEO,
+            ? webrtc::MediaType::AUDIO
+            : webrtc::MediaType::VIDEO,
         ssrcs, rtc::scoped_refptr<MediaStreamTrackInterface>(remote_track));
     rtp_receivers_.push_back(rtp_receiver);
 
diff --git a/pc/typed_codec_vendor.cc b/pc/typed_codec_vendor.cc
index 74741ae..dee14fc 100644
--- a/pc/typed_codec_vendor.cc
+++ b/pc/typed_codec_vendor.cc
@@ -24,6 +24,7 @@
 #include "media/base/codec_list.h"
 #include "media/base/media_constants.h"
 #include "media/base/media_engine.h"
+#include "rtc_base/logging.h"
 
 namespace cricket {
 
@@ -102,7 +103,7 @@
                                    const webrtc::FieldTrialsView& trials) {
   if (trials.IsEnabled("WebRTC-PayloadTypesInTransport")) {
     // Get the capabilities from the factory and compute the codecs.
-    if (type == MEDIA_TYPE_AUDIO) {
+    if (type == webrtc::MediaType::AUDIO) {
       if (is_sender) {
         if (media_engine->voice().encoder_factory()) {
           codecs_ = CodecList::CreateFromTrustedData(CollectAudioCodecs(
@@ -133,7 +134,7 @@
     }
   } else {
     // Use current mechanisms for getting codecs from media engine.
-    if (type == MEDIA_TYPE_AUDIO) {
+    if (type == webrtc::MediaType::AUDIO) {
       if (is_sender) {
         codecs_ = CodecList::CreateFromTrustedData(
             media_engine->voice().LegacySendCodecs());
diff --git a/pc/video_rtp_receiver.h b/pc/video_rtp_receiver.h
index caef459..02c78db 100644
--- a/pc/video_rtp_receiver.h
+++ b/pc/video_rtp_receiver.h
@@ -68,8 +68,8 @@
   std::vector<std::string> stream_ids() const override;
   std::vector<rtc::scoped_refptr<MediaStreamInterface>> streams()
       const override;
-  cricket::MediaType media_type() const override {
-    return cricket::MEDIA_TYPE_VIDEO;
+  webrtc::MediaType media_type() const override {
+    return webrtc::MediaType::VIDEO;
   }
 
   std::string id() const override { return id_; }
diff --git a/pc/webrtc_sdp.cc b/pc/webrtc_sdp.cc
index da92a13..14511ae 100644
--- a/pc/webrtc_sdp.cc
+++ b/pc/webrtc_sdp.cc
@@ -266,22 +266,22 @@
 
 static void BuildMediaDescription(const ContentInfo* content_info,
                                   const TransportInfo* transport_info,
-                                  const cricket::MediaType media_type,
+                                  const webrtc::MediaType media_type,
                                   const std::vector<Candidate>& candidates,
                                   int msid_signaling,
                                   std::string* message);
-static void BuildMediaLine(const cricket::MediaType media_type,
+static void BuildMediaLine(const webrtc::MediaType media_type,
                            const ContentInfo* content_info,
                            const MediaContentDescription* media_desc,
                            std::string* message);
 static void BuildRtpContentAttributes(const MediaContentDescription* media_desc,
-                                      const cricket::MediaType media_type,
+                                      const webrtc::MediaType media_type,
                                       int msid_signaling,
                                       std::string* message);
 static void BuildRtpHeaderExtensions(const RtpHeaderExtensions& extensions,
                                      std::string* message);
 static void BuildRtpmap(const MediaContentDescription* media_desc,
-                        const cricket::MediaType media_type,
+                        const webrtc::MediaType media_type,
                         std::string* message);
 static void BuildCandidate(const std::vector<Candidate>& candidates,
                            bool include_ufrag,
@@ -312,7 +312,7 @@
     SdpParseError* error);
 static bool ParseContent(
     absl::string_view message,
-    const cricket::MediaType media_type,
+    const webrtc::MediaType media_type,
     int mline_index,
     absl::string_view protocol,
     const std::vector<int>& payload_types,
@@ -335,12 +335,12 @@
                                     SsrcGroupVec* ssrc_groups,
                                     SdpParseError* error);
 static bool ParseRtpmapAttribute(absl::string_view line,
-                                 const cricket::MediaType media_type,
+                                 const webrtc::MediaType media_type,
                                  const std::vector<int>& payload_types,
                                  MediaContentDescription* media_desc,
                                  SdpParseError* error);
 static bool ParseFmtpAttributes(absl::string_view line,
-                                const cricket::MediaType media_type,
+                                const webrtc::MediaType media_type,
                                 MediaContentDescription* media_desc,
                                 SdpParseError* error);
 static bool ParseFmtpParam(absl::string_view line,
@@ -348,11 +348,11 @@
                            std::string* value,
                            SdpParseError* error);
 static bool ParsePacketizationAttribute(absl::string_view line,
-                                        const cricket::MediaType media_type,
+                                        const webrtc::MediaType media_type,
                                         MediaContentDescription* media_desc,
                                         SdpParseError* error);
 static bool ParseRtcpFbAttribute(absl::string_view line,
-                                 const cricket::MediaType media_type,
+                                 const webrtc::MediaType media_type,
                                  MediaContentDescription* media_desc,
                                  SdpParseError* error);
 static bool ParseIceOptions(absl::string_view line,
@@ -1399,7 +1399,7 @@
   }
 }
 
-void BuildMediaLine(const cricket::MediaType media_type,
+void BuildMediaLine(const webrtc::MediaType media_type,
                     const ContentInfo* content_info,
                     const MediaContentDescription* media_desc,
                     std::string* message) {
@@ -1410,15 +1410,15 @@
   // fmt is a list of payload type numbers that MAY be used in the session.
   std::string type;
   std::string fmt;
-  if (media_type == cricket::MEDIA_TYPE_AUDIO ||
-      media_type == cricket::MEDIA_TYPE_VIDEO) {
-    type = media_type == cricket::MEDIA_TYPE_AUDIO ? kSdpMediaTypeAudio
-                                                   : kSdpMediaTypeVideo;
+  if (media_type == webrtc::MediaType::AUDIO ||
+      media_type == webrtc::MediaType::VIDEO) {
+    type = media_type == webrtc::MediaType::AUDIO ? kSdpMediaTypeAudio
+                                                  : kSdpMediaTypeVideo;
     for (const cricket::Codec& codec : media_desc->codecs()) {
       fmt.append(" ");
       fmt.append(rtc::ToString(codec.id));
     }
-  } else if (media_type == cricket::MEDIA_TYPE_DATA) {
+  } else if (media_type == webrtc::MediaType::DATA) {
     type = kSdpMediaTypeData;
     const SctpDataContentDescription* sctp_data_desc = media_desc->as_sctp();
     if (sctp_data_desc) {
@@ -1432,7 +1432,7 @@
     } else {
       RTC_DCHECK_NOTREACHED() << "Data description without SCTP";
     }
-  } else if (media_type == cricket::MEDIA_TYPE_UNSUPPORTED) {
+  } else if (media_type == webrtc::MediaType::UNSUPPORTED) {
     const UnsupportedContentDescription* unsupported_desc =
         media_desc->as_unsupported();
     type = unsupported_desc->media_type();
@@ -1470,7 +1470,7 @@
 
 void BuildMediaDescription(const ContentInfo* content_info,
                            const TransportInfo* transport_info,
-                           const cricket::MediaType media_type,
+                           const webrtc::MediaType media_type,
                            const std::vector<Candidate>& candidates,
                            int msid_signaling,
                            std::string* message) {
@@ -1562,7 +1562,7 @@
 }
 
 void BuildRtpContentAttributes(const MediaContentDescription* media_desc,
-                               const cricket::MediaType media_type,
+                               const webrtc::MediaType media_type,
                                int msid_signaling,
                                std::string* message) {
   SimulcastSdpSerializer serializer;
@@ -1875,12 +1875,12 @@
 }
 
 void BuildRtpmap(const MediaContentDescription* media_desc,
-                 const cricket::MediaType media_type,
+                 const webrtc::MediaType media_type,
                  std::string* message) {
   RTC_DCHECK(message != NULL);
   RTC_DCHECK(media_desc != NULL);
   StringBuilder os;
-  if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type == webrtc::MediaType::VIDEO) {
     for (const cricket::Codec& codec : media_desc->codecs()) {
       // RFC 4566
       // a=rtpmap:<payload type> <encoding name>/<clock rate>
@@ -1895,7 +1895,7 @@
       AddRtcpFbLines(codec, message);
       AddFmtpLine(codec, message);
     }
-  } else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  } else if (media_type == webrtc::MediaType::AUDIO) {
     std::vector<int> ptimes;
     std::vector<int> maxptimes;
     int max_minptime = 0;
@@ -2585,7 +2585,7 @@
 
 static std::unique_ptr<MediaContentDescription> ParseContentDescription(
     absl::string_view message,
-    const cricket::MediaType media_type,
+    const webrtc::MediaType media_type,
     int mline_index,
     absl::string_view protocol,
     const std::vector<int>& payload_types,
@@ -2597,9 +2597,9 @@
     std::vector<std::unique_ptr<JsepIceCandidate>>* candidates,
     SdpParseError* error) {
   std::unique_ptr<MediaContentDescription> media_desc;
-  if (media_type == cricket::MediaType::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     media_desc = std::make_unique<AudioContentDescription>();
-  } else if (media_type == cricket::MediaType::MEDIA_TYPE_VIDEO) {
+  } else if (media_type == webrtc::MediaType::VIDEO) {
     media_desc = std::make_unique<VideoContentDescription>();
   } else {
     RTC_DCHECK_NOTREACHED();
@@ -2720,12 +2720,12 @@
     }
     if (media_type == kSdpMediaTypeVideo) {
       content = ParseContentDescription(
-          message, cricket::MEDIA_TYPE_VIDEO, mline_index, protocol,
+          message, webrtc::MediaType::VIDEO, mline_index, protocol,
           payload_types, pos, &content_name, &bundle_only,
           &section_msid_signaling, &transport, candidates, error);
     } else if (media_type == kSdpMediaTypeAudio) {
       content = ParseContentDescription(
-          message, cricket::MEDIA_TYPE_AUDIO, mline_index, protocol,
+          message, webrtc::MediaType::AUDIO, mline_index, protocol,
           payload_types, pos, &content_name, &bundle_only,
           &section_msid_signaling, &transport, candidates, error);
     } else if (media_type == kSdpMediaTypeData &&
@@ -2746,10 +2746,10 @@
       } else if (fields[3] == kDefaultSctpmapProtocol) {
         data_desc->set_use_sctpmap(false);
       }
-      if (!ParseContent(message, cricket::MEDIA_TYPE_DATA, mline_index,
-                        protocol, payload_types, pos, &content_name,
-                        &bundle_only, &section_msid_signaling, data_desc.get(),
-                        &transport, candidates, error)) {
+      if (!ParseContent(message, webrtc::MediaType::DATA, mline_index, protocol,
+                        payload_types, pos, &content_name, &bundle_only,
+                        &section_msid_signaling, data_desc.get(), &transport,
+                        candidates, error)) {
         return false;
       }
       data_desc->set_protocol(protocol);
@@ -2758,7 +2758,7 @@
       RTC_LOG(LS_WARNING) << "Unsupported media type: " << *mline;
       auto unsupported_desc =
           std::make_unique<UnsupportedContentDescription>(media_type);
-      if (!ParseContent(message, cricket::MEDIA_TYPE_UNSUPPORTED, mline_index,
+      if (!ParseContent(message, webrtc::MediaType::UNSUPPORTED, mline_index,
                         protocol, payload_types, pos, &content_name,
                         &bundle_only, &section_msid_signaling,
                         unsupported_desc.get(), &transport, candidates,
@@ -2873,14 +2873,14 @@
 // is no Codec associated with that payload type it returns an empty codec
 // with that payload type.
 cricket::Codec GetCodecWithPayloadType(
-    cricket::MediaType type,
+    webrtc::MediaType type,
     const std::vector<cricket::Codec>& codecs,
     int payload_type) {
   const cricket::Codec* codec = FindCodecById(codecs, payload_type);
   if (codec)
     return *codec;
   // Return empty codec with `payload_type`.
-  if (type == cricket::MEDIA_TYPE_AUDIO) {
+  if (type == webrtc::MediaType::AUDIO) {
     return cricket::CreateAudioCodec(payload_type, "", 0, 0);
   } else {
     return cricket::CreateVideoCodec(payload_type, "");
@@ -2993,7 +2993,7 @@
 }
 
 bool ParseContent(absl::string_view message,
-                  const cricket::MediaType media_type,
+                  const webrtc::MediaType media_type,
                   int mline_index,
                   absl::string_view protocol,
                   const std::vector<int>& payload_types,
@@ -3009,7 +3009,7 @@
   RTC_DCHECK(content_name != NULL);
   RTC_DCHECK(transport != NULL);
 
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     MaybeCreateStaticPayloadAudioCodecs(payload_types, media_desc);
   }
 
@@ -3154,7 +3154,7 @@
         return false;
       }
     } else if (cricket::IsDtlsSctp(protocol) &&
-               media_type == cricket::MEDIA_TYPE_DATA) {
+               media_type == webrtc::MediaType::DATA) {
       //
       // SCTP specific attributes
       //
@@ -3356,7 +3356,7 @@
   if (!ssrc_infos.empty()) {
     CreateTracksFromSsrcInfos(ssrc_infos, stream_ids, track_id, &tracks,
                               *msid_signaling);
-  } else if (media_type != cricket::MEDIA_TYPE_DATA &&
+  } else if (media_type != webrtc::MediaType::DATA &&
              (*msid_signaling & kMsidSignalingMediaSection)) {
     // If the stream_ids/track_id was signaled but SSRCs were unsignaled we
     // still create a track. This isn't done for data media types because
@@ -3396,7 +3396,7 @@
       })) {
     return ParseFailed("Failed to parse codecs correctly.", error);
   }
-  if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  if (media_type == webrtc::MediaType::AUDIO) {
     AddAudioAttribute(kCodecParamMaxPTime, maxptime_as_string, media_desc);
     AddAudioAttribute(kCodecParamPTime, ptime_as_string, media_desc);
   }
@@ -3556,7 +3556,7 @@
 }
 
 bool ParseRtpmapAttribute(absl::string_view line,
-                          const cricket::MediaType media_type,
+                          const webrtc::MediaType media_type,
                           const std::vector<int>& payload_types,
                           MediaContentDescription* media_desc,
                           SdpParseError* error) {
@@ -3600,7 +3600,7 @@
     return false;
   }
 
-  if (media_type == cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type == webrtc::MediaType::VIDEO) {
     for (const cricket::Codec& existing_codec : media_desc->codecs()) {
       if (!existing_codec.name.empty() && payload_type == existing_codec.id &&
           (!absl::EqualsIgnoreCase(encoding_name, existing_codec.name) ||
@@ -3616,7 +3616,7 @@
       }
     }
     UpdateCodec(payload_type, encoding_name, media_desc);
-  } else if (media_type == cricket::MEDIA_TYPE_AUDIO) {
+  } else if (media_type == webrtc::MediaType::AUDIO) {
     // RFC 4566
     // For audio streams, <encoding parameters> indicates the number
     // of audio channels.  This parameter is OPTIONAL and may be
@@ -3689,11 +3689,11 @@
 }
 
 bool ParseFmtpAttributes(absl::string_view line,
-                         const cricket::MediaType media_type,
+                         const webrtc::MediaType media_type,
                          MediaContentDescription* media_desc,
                          SdpParseError* error) {
-  if (media_type != cricket::MEDIA_TYPE_AUDIO &&
-      media_type != cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type != webrtc::MediaType::AUDIO &&
+      media_type != webrtc::MediaType::VIDEO) {
     return true;
   }
 
@@ -3729,18 +3729,18 @@
     return false;
   }
 
-  if (media_type == cricket::MEDIA_TYPE_AUDIO ||
-      media_type == cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type == webrtc::MediaType::AUDIO ||
+      media_type == webrtc::MediaType::VIDEO) {
     UpdateCodec(media_desc, payload_type, codec_params);
   }
   return true;
 }
 
 bool ParsePacketizationAttribute(absl::string_view line,
-                                 const cricket::MediaType media_type,
+                                 const webrtc::MediaType media_type,
                                  MediaContentDescription* media_desc,
                                  SdpParseError* error) {
-  if (media_type != cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type != webrtc::MediaType::VIDEO) {
     return true;
   }
   std::vector<absl::string_view> packetization_fields =
@@ -3764,11 +3764,11 @@
 }
 
 bool ParseRtcpFbAttribute(absl::string_view line,
-                          const cricket::MediaType media_type,
+                          const webrtc::MediaType media_type,
                           MediaContentDescription* media_desc,
                           SdpParseError* error) {
-  if (media_type != cricket::MEDIA_TYPE_AUDIO &&
-      media_type != cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type != webrtc::MediaType::AUDIO &&
+      media_type != webrtc::MediaType::VIDEO) {
     return true;
   }
   std::vector<absl::string_view> rtcp_fb_fields =
@@ -3796,8 +3796,8 @@
   }
   const cricket::FeedbackParam feedback_param(id, param);
 
-  if (media_type == cricket::MEDIA_TYPE_AUDIO ||
-      media_type == cricket::MEDIA_TYPE_VIDEO) {
+  if (media_type == webrtc::MediaType::AUDIO ||
+      media_type == webrtc::MediaType::VIDEO) {
     UpdateCodec(media_desc, payload_type, feedback_param);
   }
   return true;
diff --git a/pc/webrtc_sdp_unittest.cc b/pc/webrtc_sdp_unittest.cc
index e022c30..f644292 100644
--- a/pc/webrtc_sdp_unittest.cc
+++ b/pc/webrtc_sdp_unittest.cc
@@ -3611,9 +3611,9 @@
   JsepSessionDescription jdesc(kDummyType);
   const std::string media_content_sdps[3] = {kSdpAudioString, kSdpVideoString,
                                              kSdpSctpDataChannelString};
-  const cricket::MediaType media_types[3] = {cricket::MEDIA_TYPE_AUDIO,
-                                             cricket::MEDIA_TYPE_VIDEO,
-                                             cricket::MEDIA_TYPE_DATA};
+  const webrtc::MediaType media_types[3] = {webrtc::MediaType::AUDIO,
+                                            webrtc::MediaType::VIDEO,
+                                            webrtc::MediaType::DATA};
 
   // Verifies all 6 permutations.
   for (size_t i = 0; i < 6; ++i) {
diff --git a/sdk/android/api/org/webrtc/MediaStreamTrack.java b/sdk/android/api/org/webrtc/MediaStreamTrack.java
index 2e4c3e1..8e39d3c 100644
--- a/sdk/android/api/org/webrtc/MediaStreamTrack.java
+++ b/sdk/android/api/org/webrtc/MediaStreamTrack.java
@@ -28,7 +28,7 @@
     }
   }
 
-  // Must be kept in sync with cricket::MediaType.
+  // Must be kept in sync with webrtc::MediaType.
   public enum MediaType {
     MEDIA_TYPE_AUDIO(0),
     MEDIA_TYPE_VIDEO(1);
diff --git a/sdk/android/src/jni/pc/media_stream_track.cc b/sdk/android/src/jni/pc/media_stream_track.cc
index 297bbf6..20c0253 100644
--- a/sdk/android/src/jni/pc/media_stream_track.cc
+++ b/sdk/android/src/jni/pc/media_stream_track.cc
@@ -20,13 +20,13 @@
 
 ScopedJavaLocalRef<jobject> NativeToJavaMediaType(
     JNIEnv* jni,
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   return Java_MediaType_fromNativeIndex(jni, static_cast<int>(media_type));
 }
 
-cricket::MediaType JavaToNativeMediaType(JNIEnv* jni,
-                                         const JavaRef<jobject>& j_media_type) {
-  return static_cast<cricket::MediaType>(
+webrtc::MediaType JavaToNativeMediaType(JNIEnv* jni,
+                                        const JavaRef<jobject>& j_media_type) {
+  return static_cast<webrtc::MediaType>(
       Java_MediaType_getNative(jni, j_media_type));
 }
 
diff --git a/sdk/android/src/jni/pc/media_stream_track.h b/sdk/android/src/jni/pc/media_stream_track.h
index 8bfe302..a005b1a 100644
--- a/sdk/android/src/jni/pc/media_stream_track.h
+++ b/sdk/android/src/jni/pc/media_stream_track.h
@@ -19,11 +19,10 @@
 namespace webrtc {
 namespace jni {
 
-ScopedJavaLocalRef<jobject> NativeToJavaMediaType(
-    JNIEnv* jni,
-    cricket::MediaType media_type);
-cricket::MediaType JavaToNativeMediaType(JNIEnv* jni,
-                                         const JavaRef<jobject>& j_media_type);
+ScopedJavaLocalRef<jobject> NativeToJavaMediaType(JNIEnv* jni,
+                                                  webrtc::MediaType media_type);
+webrtc::MediaType JavaToNativeMediaType(JNIEnv* jni,
+                                        const JavaRef<jobject>& j_media_type);
 
 }  // namespace jni
 }  // namespace webrtc
diff --git a/sdk/android/src/jni/pc/rtp_receiver.cc b/sdk/android/src/jni/pc/rtp_receiver.cc
index 681d757..998fae7 100644
--- a/sdk/android/src/jni/pc/rtp_receiver.cc
+++ b/sdk/android/src/jni/pc/rtp_receiver.cc
@@ -33,7 +33,7 @@
 
   ~RtpReceiverObserverJni() override = default;
 
-  void OnFirstPacketReceived(cricket::MediaType media_type) override {
+  void OnFirstPacketReceived(webrtc::MediaType media_type) override {
     JNIEnv* const env = AttachCurrentThreadIfNeeded();
     Java_Observer_onFirstPacketReceived(env, j_observer_global_,
                                         NativeToJavaMediaType(env, media_type));
diff --git a/sdk/android/src/jni/pc/rtp_sender.cc b/sdk/android/src/jni/pc/rtp_sender.cc
index 2096f3b..31cec9d 100644
--- a/sdk/android/src/jni/pc/rtp_sender.cc
+++ b/sdk/android/src/jni/pc/rtp_sender.cc
@@ -112,9 +112,9 @@
 static jni_zero::ScopedJavaLocalRef<jstring> JNI_RtpSender_GetMediaType(
     JNIEnv* jni,
     jlong j_rtp_sender_pointer) {
-  cricket::MediaType media_type =
+  webrtc::MediaType media_type =
       reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->media_type();
-  return media_type == cricket::MEDIA_TYPE_AUDIO
+  return media_type == webrtc::MediaType::AUDIO
              ? NativeToJavaString(jni, "audio")
              : NativeToJavaString(jni, "video");
 }
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
index 710ff3b..f543ac3 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
@@ -259,7 +259,7 @@
 
 - (RTC_OBJC_TYPE(RTCRtpCapabilities) *)rtpSenderCapabilitiesForKind:
     (NSString *)kind {
-  cricket::MediaType mediaType = [[self class] mediaTypeForKind:kind];
+  webrtc::MediaType mediaType = [[self class] mediaTypeForKind:kind];
 
   webrtc::RtpCapabilities rtpCapabilities =
       _nativeFactory->GetRtpSenderCapabilities(mediaType);
@@ -269,7 +269,7 @@
 
 - (RTC_OBJC_TYPE(RTCRtpCapabilities) *)rtpReceiverCapabilitiesForKind:
     (NSString *)kind {
-  cricket::MediaType mediaType = [[self class] mediaTypeForKind:kind];
+  webrtc::MediaType mediaType = [[self class] mediaTypeForKind:kind];
 
   webrtc::RtpCapabilities rtpCapabilities =
       _nativeFactory->GetRtpReceiverCapabilities(mediaType);
@@ -431,14 +431,14 @@
 
 #pragma mark - Private
 
-+ (cricket::MediaType)mediaTypeForKind:(NSString *)kind {
++ (webrtc::MediaType)mediaTypeForKind:(NSString *)kind {
   if (kind == kRTCMediaStreamTrackKindAudio) {
-    return cricket::MEDIA_TYPE_AUDIO;
+    return webrtc::MediaType::AUDIO;
   } else if (kind == kRTCMediaStreamTrackKindVideo) {
-    return cricket::MEDIA_TYPE_VIDEO;
+    return webrtc::MediaType::VIDEO;
   } else {
     RTC_DCHECK_NOTREACHED();
-    return cricket::MEDIA_TYPE_UNSUPPORTED;
+    return webrtc::MediaType::UNSUPPORTED;
   }
 }
 
diff --git a/sdk/objc/api/peerconnection/RTCRtpCodecCapability.mm b/sdk/objc/api/peerconnection/RTCRtpCodecCapability.mm
index e972694..0cfe53a 100644
--- a/sdk/objc/api/peerconnection/RTCRtpCodecCapability.mm
+++ b/sdk/objc/api/peerconnection/RTCRtpCodecCapability.mm
@@ -41,10 +41,10 @@
     }
     _name = [NSString stringForStdString:nativeRtpCodecCapability.name];
     switch (nativeRtpCodecCapability.kind) {
-      case cricket::MEDIA_TYPE_AUDIO:
+      case webrtc::MediaType::AUDIO:
         _kind = kRTCMediaStreamTrackKindAudio;
         break;
-      case cricket::MEDIA_TYPE_VIDEO:
+      case webrtc::MediaType::VIDEO:
         _kind = kRTCMediaStreamTrackKindVideo;
         break;
       default:
@@ -96,9 +96,9 @@
   // NSString pointer comparison is safe here since "kind" is readonly and only
   // populated above.
   if (_kind == kRTCMediaStreamTrackKindAudio) {
-    rtpCodecCapability.kind = cricket::MEDIA_TYPE_AUDIO;
+    rtpCodecCapability.kind = webrtc::MediaType::AUDIO;
   } else if (_kind == kRTCMediaStreamTrackKindVideo) {
-    rtpCodecCapability.kind = cricket::MEDIA_TYPE_VIDEO;
+    rtpCodecCapability.kind = webrtc::MediaType::VIDEO;
   } else {
     RTC_DCHECK_NOTREACHED();
   }
diff --git a/sdk/objc/api/peerconnection/RTCRtpCodecParameters.mm b/sdk/objc/api/peerconnection/RTCRtpCodecParameters.mm
index 579607b..904e563 100644
--- a/sdk/objc/api/peerconnection/RTCRtpCodecParameters.mm
+++ b/sdk/objc/api/peerconnection/RTCRtpCodecParameters.mm
@@ -53,10 +53,10 @@
     _payloadType = nativeParameters.payload_type;
     _name = [NSString stringForStdString:nativeParameters.name];
     switch (nativeParameters.kind) {
-      case cricket::MEDIA_TYPE_AUDIO:
+      case webrtc::MediaType::AUDIO:
         _kind = kRTCMediaStreamTrackKindAudio;
         break;
-      case cricket::MEDIA_TYPE_VIDEO:
+      case webrtc::MediaType::VIDEO:
         _kind = kRTCMediaStreamTrackKindVideo;
         break;
       default:
@@ -86,9 +86,9 @@
   // NSString pointer comparison is safe here since "kind" is readonly and only
   // populated above.
   if (_kind == kRTCMediaStreamTrackKindAudio) {
-    parameters.kind = cricket::MEDIA_TYPE_AUDIO;
+    parameters.kind = webrtc::MediaType::AUDIO;
   } else if (_kind == kRTCMediaStreamTrackKindVideo) {
-    parameters.kind = cricket::MEDIA_TYPE_VIDEO;
+    parameters.kind = webrtc::MediaType::VIDEO;
   } else {
     RTC_DCHECK_NOTREACHED();
   }
diff --git a/sdk/objc/api/peerconnection/RTCRtpReceiver+Private.h b/sdk/objc/api/peerconnection/RTCRtpReceiver+Private.h
index 38bdea2..cf7ebc5 100644
--- a/sdk/objc/api/peerconnection/RTCRtpReceiver+Private.h
+++ b/sdk/objc/api/peerconnection/RTCRtpReceiver+Private.h
@@ -22,7 +22,7 @@
  public:
   RtpReceiverDelegateAdapter(RTC_OBJC_TYPE(RTCRtpReceiver) * receiver);
 
-  void OnFirstPacketReceived(cricket::MediaType media_type) override;
+  void OnFirstPacketReceived(webrtc::MediaType media_type) override;
 
  private:
   __weak RTC_OBJC_TYPE(RTCRtpReceiver) * receiver_;
@@ -44,9 +44,9 @@
     NS_DESIGNATED_INITIALIZER;
 
 + (RTCRtpMediaType)mediaTypeForNativeMediaType:
-    (cricket::MediaType)nativeMediaType;
+    (webrtc::MediaType)nativeMediaType;
 
-+ (cricket::MediaType)nativeMediaTypeForMediaType:(RTCRtpMediaType)mediaType;
++ (webrtc::MediaType)nativeMediaTypeForMediaType:(RTCRtpMediaType)mediaType;
 
 + (NSString *)stringForMediaType:(RTCRtpMediaType)mediaType;
 
diff --git a/sdk/objc/api/peerconnection/RTCRtpReceiver.mm b/sdk/objc/api/peerconnection/RTCRtpReceiver.mm
index 3f2dd10..1ceca02 100644
--- a/sdk/objc/api/peerconnection/RTCRtpReceiver.mm
+++ b/sdk/objc/api/peerconnection/RTCRtpReceiver.mm
@@ -28,7 +28,7 @@
 }
 
 void RtpReceiverDelegateAdapter::OnFirstPacketReceived(
-    cricket::MediaType media_type) {
+    webrtc::MediaType media_type) {
   RTCRtpMediaType packet_media_type =
       [RTC_OBJC_TYPE(RTCRtpReceiver) mediaTypeForNativeMediaType:media_type];
   RTC_OBJC_TYPE(RTCRtpReceiver) *receiver = receiver_;
diff --git a/sdk/objc/api/peerconnection/RTCRtpSender.mm b/sdk/objc/api/peerconnection/RTCRtpSender.mm
index 08ab9ed..fe92abf 100644
--- a/sdk/objc/api/peerconnection/RTCRtpSender.mm
+++ b/sdk/objc/api/peerconnection/RTCRtpSender.mm
@@ -128,7 +128,7 @@
   if (self) {
     _factory = factory;
     _nativeRtpSender = nativeRtpSender;
-    if (_nativeRtpSender->media_type() == cricket::MEDIA_TYPE_AUDIO) {
+    if (_nativeRtpSender->media_type() == webrtc::MediaType::AUDIO) {
       rtc::scoped_refptr<webrtc::DtmfSenderInterface> nativeDtmfSender(
           _nativeRtpSender->GetDtmfSender());
       if (nativeDtmfSender) {
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 8e9cf63..20ab330 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -586,14 +586,20 @@
       "../../../api:array_view",
       "../../../api:libjingle_peerconnection_api",
       "../../../api:rtp_parameters",
+      "../../../api:rtp_transceiver_direction",
       "../../../api/test/pclf:media_configuration",
       "../../../media:media_constants",
       "../../../media:rid_description",
+      "../../../media:stream_params",
       "../../../p2p:p2p_constants",
+      "../../../p2p:transport_description",
+      "../../../p2p:transport_info",
       "../../../pc:sdp_utils",
       "../../../pc:session_description",
       "../../../pc:simulcast_description",
+      "../../../rtc_base:checks",
       "../../../rtc_base:stringutils",
+      "../../../rtc_base:unique_id_generator",
       "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/strings:string_view",
     ]
diff --git a/test/pc/e2e/peer_connection_quality_test.cc b/test/pc/e2e/peer_connection_quality_test.cc
index 0a58040..606dcbc 100644
--- a/test/pc/e2e/peer_connection_quality_test.cc
+++ b/test/pc/e2e/peer_connection_quality_test.cc
@@ -56,6 +56,7 @@
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/task_queue_for_test.h"
 #include "rtc_base/task_utils/repeating_task.h"
+#include "rtc_base/thread.h"
 #include "system_wrappers/include/cpu_info.h"
 #include "system_wrappers/include/field_trial.h"
 #include "test/field_trial.h"
@@ -521,7 +522,7 @@
     // multiple audio streams, then we need transceiver for each Bob's audio
     // stream.
     RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
-        alice_->AddTransceiver(cricket::MediaType::MEDIA_TYPE_AUDIO,
+        alice_->AddTransceiver(webrtc::MediaType::AUDIO,
                                receive_only_transceiver_init);
     RTC_CHECK(result.ok());
     alice_transceivers_counter++;
@@ -561,8 +562,7 @@
       alice_video_transceivers_non_simulcast_counter++;
     }
     RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
-        alice_->AddTransceiver(cricket::MediaType::MEDIA_TYPE_VIDEO,
-                               transceiver_params);
+        alice_->AddTransceiver(webrtc::MediaType::VIDEO, transceiver_params);
     RTC_CHECK(result.ok());
 
     alice_transceivers_counter++;
@@ -573,7 +573,7 @@
   for (size_t i = alice_video_transceivers_non_simulcast_counter;
        i < bob_->configurable_params().video_configs.size(); ++i) {
     RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
-        alice_->AddTransceiver(cricket::MediaType::MEDIA_TYPE_VIDEO,
+        alice_->AddTransceiver(webrtc::MediaType::VIDEO,
                                receive_only_transceiver_init);
     RTC_CHECK(result.ok());
     alice_transceivers_counter++;
@@ -599,19 +599,19 @@
           peer->params().video_codecs, true, peer->params().use_ulp_fec,
           peer->params().use_flex_fec,
           peer->pc_factory()
-              ->GetRtpReceiverCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)
+              ->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO)
               .codecs);
   std::vector<RtpCodecCapability> without_rtx_video_capabilities =
       FilterVideoCodecCapabilities(
           peer->params().video_codecs, false, peer->params().use_ulp_fec,
           peer->params().use_flex_fec,
           peer->pc_factory()
-              ->GetRtpReceiverCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)
+              ->GetRtpReceiverCapabilities(webrtc::MediaType::VIDEO)
               .codecs);
 
   // Set codecs for transceivers
   for (auto transceiver : peer->pc()->GetTransceivers()) {
-    if (transceiver->media_type() == cricket::MediaType::MEDIA_TYPE_VIDEO) {
+    if (transceiver->media_type() == webrtc::MediaType::VIDEO) {
       if (transceiver->sender()->init_send_encodings().size() > 1) {
         // If transceiver's sender has more then 1 send encodings, it means it
         // has multiple simulcast streams, so we need disable RTX on it.
diff --git a/test/pc/e2e/sdp/sdp_changer.cc b/test/pc/e2e/sdp/sdp_changer.cc
index d497cb8..065cc34 100644
--- a/test/pc/e2e/sdp/sdp_changer.cc
+++ b/test/pc/e2e/sdp/sdp_changer.cc
@@ -10,15 +10,34 @@
 
 #include "test/pc/e2e/sdp/sdp_changer.h"
 
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <map>
+#include <memory>
+#include <string>
 #include <utility>
+#include <vector>
 
-#include "absl/memory/memory.h"
+#include "api/array_view.h"
+#include "api/jsep.h"
 #include "api/jsep_session_description.h"
+#include "api/media_types.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_transceiver_direction.h"
 #include "api/test/pclf/media_configuration.h"
 #include "media/base/media_constants.h"
+#include "media/base/rid_description.h"
+#include "media/base/stream_params.h"
 #include "p2p/base/p2p_constants.h"
+#include "p2p/base/transport_description.h"
+#include "p2p/base/transport_info.h"
 #include "pc/sdp_utils.h"
+#include "pc/session_description.h"
+#include "pc/simulcast_description.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/strings/string_builder.h"
+#include "rtc_base/unique_id_generator.h"
 
 namespace webrtc {
 namespace webrtc_pc_e2e {
@@ -114,7 +133,7 @@
     SessionDescriptionInterface* offer) {
   for (auto& content : offer->description()->contents()) {
     MediaContentDescription* media_desc = content.media_description();
-    if (media_desc->type() != cricket::MediaType::MEDIA_TYPE_VIDEO) {
+    if (media_desc->type() != webrtc::MediaType::VIDEO) {
       continue;
     }
     if (media_desc->HasSimulcast()) {
@@ -170,7 +189,7 @@
   for (auto& content : offer->description()->contents()) {
     context_.mids_order.push_back(content.mid());
     MediaContentDescription* media_desc = content.media_description();
-    if (media_desc->type() != cricket::MediaType::MEDIA_TYPE_VIDEO) {
+    if (media_desc->type() != webrtc::MediaType::VIDEO) {
       continue;
     }
     if (content.media_description()->streams().empty()) {
@@ -315,8 +334,7 @@
   }
 
   for (auto& content : offer->description()->contents()) {
-    if (content.media_description()->type() !=
-        cricket::MediaType::MEDIA_TYPE_VIDEO) {
+    if (content.media_description()->type() != webrtc::MediaType::VIDEO) {
       // We are interested in only video tracks
       continue;
     }
@@ -365,7 +383,7 @@
     const VideoCodecConfig& first_codec) {
   for (auto& content : answer->description()->contents()) {
     MediaContentDescription* media_desc = content.media_description();
-    if (media_desc->type() != cricket::MediaType::MEDIA_TYPE_VIDEO) {
+    if (media_desc->type() != webrtc::MediaType::VIDEO) {
       continue;
     }
     if (content.media_description()->direction() !=
diff --git a/test/pc/e2e/test_peer.h b/test/pc/e2e/test_peer.h
index 64b2947..bb6474e 100644
--- a/test/pc/e2e/test_peer.h
+++ b/test/pc/e2e/test_peer.h
@@ -106,7 +106,7 @@
                             std::string* error_out = nullptr);
 
   rtc::scoped_refptr<RtpTransceiverInterface> AddTransceiver(
-      cricket::MediaType media_type,
+      webrtc::MediaType media_type,
       const RtpTransceiverInit& init) {
     RTC_CHECK(wrapper_) << "TestPeer is already closed";
     return wrapper_->AddTransceiver(media_type, init);
diff --git a/test/peer_scenario/tests/BUILD.gn b/test/peer_scenario/tests/BUILD.gn
index 1ad0e00..2ad8c85 100644
--- a/test/peer_scenario/tests/BUILD.gn
+++ b/test/peer_scenario/tests/BUILD.gn
@@ -23,7 +23,14 @@
       "../../:create_frame_generator_capturer",
       "../../:field_trial",
       "../../:test_support",
+      "../../../api:libjingle_peerconnection_api",
+      "../../../api:make_ref_counted",
       "../../../api:rtc_stats_api",
+      "../../../api:rtp_parameters",
+      "../../../api:rtp_sender_interface",
+      "../../../api:rtp_transceiver_direction",
+      "../../../api:scoped_refptr",
+      "../../../api/test/network_emulation",
       "../../../api/transport:ecn_marking",
       "../../../api/units:data_rate",
       "../../../api/units:time_delta",
@@ -32,6 +39,7 @@
       "../../../pc:media_session",
       "../../../pc:pc_test_utils",
       "../../../pc:session_description",
+      "../../../rtc_base:checks",
       "../../../rtc_base:logging",
     ]
     if (rtc_enable_protobuf) {
diff --git a/test/peer_scenario/tests/bwe_ramp_up_test.cc b/test/peer_scenario/tests/bwe_ramp_up_test.cc
index 3c09523..184dd76 100644
--- a/test/peer_scenario/tests/bwe_ramp_up_test.cc
+++ b/test/peer_scenario/tests/bwe_ramp_up_test.cc
@@ -9,9 +9,18 @@
  */
 
 #include <atomic>
+#include <string>
 #include <utility>
 
+#include "api/jsep.h"
+#include "api/make_ref_counted.h"
+#include "api/media_types.h"
+#include "api/rtp_sender_interface.h"
+#include "api/rtp_transceiver_direction.h"
+#include "api/scoped_refptr.h"
+#include "api/stats/rtc_stats_report.h"
 #include "api/stats/rtcstats_objects.h"
+#include "api/test/network_emulation/network_emulation_interfaces.h"
 #include "api/units/data_rate.h"
 #include "api/units/time_delta.h"
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
@@ -20,6 +29,7 @@
 #include "modules/rtp_rtcp/source/rtp_util.h"
 #include "pc/media_session.h"
 #include "pc/test/mock_peer_connection_observers.h"
+#include "rtc_base/checks.h"
 #include "test/create_frame_generator_capturer.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -209,7 +219,7 @@
 
 class MockRtpSenderObserver : public RtpSenderObserverInterface {
  public:
-  MOCK_METHOD(void, OnFirstPacketSent, (cricket::MediaType));
+  MOCK_METHOD(void, OnFirstPacketSent, (webrtc::MediaType));
 };
 
 // Test that caller and callee BWE rampup even if no media packets are sent.
@@ -222,7 +232,7 @@
   PeerScenarioClient* caller = s.CreateClient({});
   PeerScenarioClient* callee = s.CreateClient({});
 
-  auto transceiver = caller->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO);
+  auto transceiver = caller->pc()->AddTransceiver(webrtc::MediaType::VIDEO);
   ASSERT_TRUE(transceiver.error().ok());
 
   MockRtpSenderObserver observer;
diff --git a/video/buffered_frame_decryptor.cc b/video/buffered_frame_decryptor.cc
index 61e8812..a23b064 100644
--- a/video/buffered_frame_decryptor.cc
+++ b/video/buffered_frame_decryptor.cc
@@ -10,13 +10,21 @@
 
 #include "video/buffered_frame_decryptor.h"
 
+#include <cstddef>
+#include <cstdint>
+#include <memory>
 #include <utility>
 #include <vector>
 
+#include "api/array_view.h"
+#include "api/crypto/frame_decryptor_interface.h"
+#include "api/field_trials_view.h"
+#include "api/media_types.h"
+#include "api/scoped_refptr.h"
 #include "modules/rtp_rtcp/source/frame_object.h"
 #include "modules/rtp_rtcp/source/rtp_descriptor_authentication.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "system_wrappers/include/field_trial.h"
 
 namespace webrtc {
 
@@ -65,7 +73,7 @@
   }
   // Retrieve the maximum possible size of the decrypted payload.
   const size_t max_plaintext_byte_size =
-      frame_decryptor_->GetMaxPlaintextByteSize(cricket::MEDIA_TYPE_VIDEO,
+      frame_decryptor_->GetMaxPlaintextByteSize(webrtc::MediaType::VIDEO,
                                                 frame->size());
   RTC_CHECK_LE(max_plaintext_byte_size, frame->size());
   // Place the decrypted frame inline into the existing frame.
@@ -80,7 +88,7 @@
 
   // Attempt to decrypt the video frame.
   const FrameDecryptorInterface::Result decrypt_result =
-      frame_decryptor_->Decrypt(cricket::MEDIA_TYPE_VIDEO, /*csrcs=*/{},
+      frame_decryptor_->Decrypt(webrtc::MediaType::VIDEO, /*csrcs=*/{},
                                 additional_data, *frame,
                                 inline_decrypted_bitstream);
   // Optionally call the callback if there was a change in status