Use absl::make_unique and absl::WrapUnique directly

Instead of going through our wrappers in ptr_util.h.

This CL was generated by the following script:

  git grep -l ptr_util | xargs perl -pi -e 's,#include "rtc_base/ptr_util.h",#include "absl/memory/memory.h",'
  git grep -l MakeUnique | xargs perl -pi -e 's,\b(rtc::)?MakeUnique\b,absl::make_unique,g'
  git grep -l WrapUnique | xargs perl -pi -e 's,\b(rtc::)?WrapUnique\b,absl::WrapUnique,g'
  git checkout -- rtc_base/ptr_util{.h,_unittest.cc}
  git cl format

Followed by manually adding dependencies on
//third_party/abseil-cpp/absl/memory until `gn check` stopped
complaining.

Bug: webrtc:9473
Change-Id: I89ccd363f070479b8c431eb2c3d404a46eaacc1c
Reviewed-on: https://webrtc-review.googlesource.com/86600
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23850}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 6ec5f23..f73c80d 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -165,6 +165,7 @@
       ":video_quality_test_fixture_api",
       "../rtc_base:ptr_util",
       "../video:video_quality_test",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
@@ -357,6 +358,7 @@
       "../modules/video_coding:simulcast_test_fixture_impl",
       "../rtc_base:rtc_base_approved",
       "video_codecs:video_codecs_api",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
@@ -392,6 +394,7 @@
       "../modules/video_coding:videocodec_test_impl",
       "../rtc_base:rtc_base_approved",
       "video_codecs:video_codecs_api",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
diff --git a/api/audio/BUILD.gn b/api/audio/BUILD.gn
index 5558ab1..701be9c 100644
--- a/api/audio/BUILD.gn
+++ b/api/audio/BUILD.gn
@@ -55,6 +55,7 @@
     ":echo_control",
     "../../modules/audio_processing/aec3",
     "../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
diff --git a/api/audio/echo_canceller3_factory.cc b/api/audio/echo_canceller3_factory.cc
index 7e2c143..07f295f 100644
--- a/api/audio/echo_canceller3_factory.cc
+++ b/api/audio/echo_canceller3_factory.cc
@@ -11,8 +11,8 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "modules/audio_processing/aec3/echo_canceller3.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -22,6 +22,6 @@
     : config_(config) {}
 
 std::unique_ptr<EchoControl> EchoCanceller3Factory::Create(int sample_rate_hz) {
-  return rtc::MakeUnique<EchoCanceller3>(config_, sample_rate_hz, true);
+  return absl::make_unique<EchoCanceller3>(config_, sample_rate_hz, true);
 }
 }  // namespace webrtc
diff --git a/api/audio_codecs/L16/BUILD.gn b/api/audio_codecs/L16/BUILD.gn
index 043d659..b1160d4 100644
--- a/api/audio_codecs/L16/BUILD.gn
+++ b/api/audio_codecs/L16/BUILD.gn
@@ -24,6 +24,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:pcm16b",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -40,6 +41,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:pcm16b",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio_codecs/L16/audio_decoder_L16.cc b/api/audio_codecs/L16/audio_decoder_L16.cc
index a17dc58..a71e308 100644
--- a/api/audio_codecs/L16/audio_decoder_L16.cc
+++ b/api/audio_codecs/L16/audio_decoder_L16.cc
@@ -10,11 +10,11 @@
 
 #include "api/audio_codecs/L16/audio_decoder_L16.h"
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/pcm16b/audio_decoder_pcm16b.h"
 #include "modules/audio_coding/codecs/pcm16b/pcm16b_common.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -36,7 +36,7 @@
 std::unique_ptr<AudioDecoder> AudioDecoderL16::MakeAudioDecoder(
     const Config& config,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
-  return config.IsOk() ? rtc::MakeUnique<AudioDecoderPcm16B>(
+  return config.IsOk() ? absl::make_unique<AudioDecoderPcm16B>(
                              config.sample_rate_hz, config.num_channels)
                        : nullptr;
 }
diff --git a/api/audio_codecs/L16/audio_encoder_L16.cc b/api/audio_codecs/L16/audio_encoder_L16.cc
index d80e6bf..35a3b98 100644
--- a/api/audio_codecs/L16/audio_encoder_L16.cc
+++ b/api/audio_codecs/L16/audio_encoder_L16.cc
@@ -10,11 +10,11 @@
 
 #include "api/audio_codecs/L16/audio_encoder_L16.h"
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.h"
 #include "modules/audio_coding/codecs/pcm16b/pcm16b_common.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -54,7 +54,7 @@
   c.num_channels = config.num_channels;
   c.frame_size_ms = config.frame_size_ms;
   c.payload_type = payload_type;
-  return rtc::MakeUnique<AudioEncoderPcm16B>(c);
+  return absl::make_unique<AudioEncoderPcm16B>(c);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/g711/BUILD.gn b/api/audio_codecs/g711/BUILD.gn
index 52e1ee9..169172a 100644
--- a/api/audio_codecs/g711/BUILD.gn
+++ b/api/audio_codecs/g711/BUILD.gn
@@ -25,6 +25,7 @@
     "../../../modules/audio_coding:g711",
     "../../../rtc_base:rtc_base_approved",
     "../../../rtc_base:safe_minmax",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -41,6 +42,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:g711",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio_codecs/g711/audio_decoder_g711.cc b/api/audio_codecs/g711/audio_decoder_g711.cc
index e8afa60..cb16584 100644
--- a/api/audio_codecs/g711/audio_decoder_g711.cc
+++ b/api/audio_codecs/g711/audio_decoder_g711.cc
@@ -13,10 +13,10 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/g711/audio_decoder_pcm.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -49,9 +49,9 @@
   RTC_DCHECK(config.IsOk());
   switch (config.type) {
     case Config::Type::kPcmU:
-      return rtc::MakeUnique<AudioDecoderPcmU>(config.num_channels);
+      return absl::make_unique<AudioDecoderPcmU>(config.num_channels);
     case Config::Type::kPcmA:
-      return rtc::MakeUnique<AudioDecoderPcmA>(config.num_channels);
+      return absl::make_unique<AudioDecoderPcmA>(config.num_channels);
     default:
       return nullptr;
   }
diff --git a/api/audio_codecs/g711/audio_encoder_g711.cc b/api/audio_codecs/g711/audio_encoder_g711.cc
index 95595fa..1d5e541 100644
--- a/api/audio_codecs/g711/audio_encoder_g711.cc
+++ b/api/audio_codecs/g711/audio_encoder_g711.cc
@@ -13,11 +13,11 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/g711/audio_encoder_pcm.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/string_to_number.h"
 
 namespace webrtc {
@@ -70,14 +70,14 @@
       impl_config.num_channels = config.num_channels;
       impl_config.frame_size_ms = config.frame_size_ms;
       impl_config.payload_type = payload_type;
-      return rtc::MakeUnique<AudioEncoderPcmU>(impl_config);
+      return absl::make_unique<AudioEncoderPcmU>(impl_config);
     }
     case Config::Type::kPcmA: {
       AudioEncoderPcmA::Config impl_config;
       impl_config.num_channels = config.num_channels;
       impl_config.frame_size_ms = config.frame_size_ms;
       impl_config.payload_type = payload_type;
-      return rtc::MakeUnique<AudioEncoderPcmA>(impl_config);
+      return absl::make_unique<AudioEncoderPcmA>(impl_config);
     }
     default: { return nullptr; }
   }
diff --git a/api/audio_codecs/g722/BUILD.gn b/api/audio_codecs/g722/BUILD.gn
index 85a8274..50b1396 100644
--- a/api/audio_codecs/g722/BUILD.gn
+++ b/api/audio_codecs/g722/BUILD.gn
@@ -33,6 +33,7 @@
     "../../../modules/audio_coding:g722",
     "../../../rtc_base:rtc_base_approved",
     "../../../rtc_base:safe_minmax",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -49,6 +50,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:g722",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio_codecs/g722/audio_decoder_g722.cc b/api/audio_codecs/g722/audio_decoder_g722.cc
index 04a0a4c..f1e2afb 100644
--- a/api/audio_codecs/g722/audio_decoder_g722.cc
+++ b/api/audio_codecs/g722/audio_decoder_g722.cc
@@ -13,10 +13,10 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/g722/audio_decoder_g722.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -40,9 +40,9 @@
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
   switch (config.num_channels) {
     case 1:
-      return rtc::MakeUnique<AudioDecoderG722Impl>();
+      return absl::make_unique<AudioDecoderG722Impl>();
     case 2:
-      return rtc::MakeUnique<AudioDecoderG722StereoImpl>();
+      return absl::make_unique<AudioDecoderG722StereoImpl>();
     default:
       return nullptr;
   }
diff --git a/api/audio_codecs/g722/audio_encoder_g722.cc b/api/audio_codecs/g722/audio_encoder_g722.cc
index d1f5258..0cf7163 100644
--- a/api/audio_codecs/g722/audio_encoder_g722.cc
+++ b/api/audio_codecs/g722/audio_encoder_g722.cc
@@ -13,11 +13,11 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/g722/audio_encoder_g722.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/string_to_number.h"
 
 namespace webrtc {
@@ -62,7 +62,7 @@
     int payload_type,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
   RTC_DCHECK(config.IsOk());
-  return rtc::MakeUnique<AudioEncoderG722Impl>(config, payload_type);
+  return absl::make_unique<AudioEncoderG722Impl>(config, payload_type);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/ilbc/BUILD.gn b/api/audio_codecs/ilbc/BUILD.gn
index e1b2731..d4f504f 100644
--- a/api/audio_codecs/ilbc/BUILD.gn
+++ b/api/audio_codecs/ilbc/BUILD.gn
@@ -33,6 +33,7 @@
     "../../../modules/audio_coding:ilbc",
     "../../../rtc_base:rtc_base_approved",
     "../../../rtc_base:safe_minmax",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -49,6 +50,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:ilbc",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio_codecs/ilbc/audio_decoder_ilbc.cc b/api/audio_codecs/ilbc/audio_decoder_ilbc.cc
index f1ecbdc..1f4c475 100644
--- a/api/audio_codecs/ilbc/audio_decoder_ilbc.cc
+++ b/api/audio_codecs/ilbc/audio_decoder_ilbc.cc
@@ -13,9 +13,9 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -35,7 +35,7 @@
 std::unique_ptr<AudioDecoder> AudioDecoderIlbc::MakeAudioDecoder(
     Config config,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
-  return rtc::MakeUnique<AudioDecoderIlbcImpl>();
+  return absl::make_unique<AudioDecoderIlbcImpl>();
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/ilbc/audio_encoder_ilbc.cc b/api/audio_codecs/ilbc/audio_encoder_ilbc.cc
index 59a16b5..efcef38 100644
--- a/api/audio_codecs/ilbc/audio_encoder_ilbc.cc
+++ b/api/audio_codecs/ilbc/audio_encoder_ilbc.cc
@@ -13,11 +13,11 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/string_to_number.h"
 
 namespace webrtc {
@@ -76,7 +76,7 @@
     int payload_type,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
   RTC_DCHECK(config.IsOk());
-  return rtc::MakeUnique<AudioEncoderIlbcImpl>(config, payload_type);
+  return absl::make_unique<AudioEncoderIlbcImpl>(config, payload_type);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/isac/BUILD.gn b/api/audio_codecs/isac/BUILD.gn
index e8e6d23..ed9d962 100644
--- a/api/audio_codecs/isac/BUILD.gn
+++ b/api/audio_codecs/isac/BUILD.gn
@@ -80,6 +80,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:isac_fix",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -96,6 +97,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:isac_fix",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -112,6 +114,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:isac",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -128,6 +131,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:isac",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio_codecs/isac/audio_decoder_isac_fix.cc b/api/audio_codecs/isac/audio_decoder_isac_fix.cc
index 8435d05..446640f 100644
--- a/api/audio_codecs/isac/audio_decoder_isac_fix.cc
+++ b/api/audio_codecs/isac/audio_decoder_isac_fix.cc
@@ -10,9 +10,9 @@
 
 #include "api/audio_codecs/isac/audio_decoder_isac_fix.h"
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -32,7 +32,7 @@
 std::unique_ptr<AudioDecoder> AudioDecoderIsacFix::MakeAudioDecoder(
     Config config,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
-  return rtc::MakeUnique<AudioDecoderIsacFixImpl>(16000);
+  return absl::make_unique<AudioDecoderIsacFixImpl>(16000);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/isac/audio_decoder_isac_float.cc b/api/audio_codecs/isac/audio_decoder_isac_float.cc
index 2e08e55..1c1926f 100644
--- a/api/audio_codecs/isac/audio_decoder_isac_float.cc
+++ b/api/audio_codecs/isac/audio_decoder_isac_float.cc
@@ -10,9 +10,9 @@
 
 #include "api/audio_codecs/isac/audio_decoder_isac_float.h"
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -39,7 +39,7 @@
     Config config,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
   RTC_DCHECK(config.IsOk());
-  return rtc::MakeUnique<AudioDecoderIsacFloatImpl>(config.sample_rate_hz);
+  return absl::make_unique<AudioDecoderIsacFloatImpl>(config.sample_rate_hz);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/isac/audio_encoder_isac_fix.cc b/api/audio_codecs/isac/audio_encoder_isac_fix.cc
index cb41214..cd89753 100644
--- a/api/audio_codecs/isac/audio_encoder_isac_fix.cc
+++ b/api/audio_codecs/isac/audio_encoder_isac_fix.cc
@@ -10,9 +10,9 @@
 
 #include "api/audio_codecs/isac/audio_encoder_isac_fix.h"
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/string_to_number.h"
 
 namespace webrtc {
@@ -56,7 +56,7 @@
   AudioEncoderIsacFixImpl::Config c;
   c.frame_size_ms = config.frame_size_ms;
   c.payload_type = payload_type;
-  return rtc::MakeUnique<AudioEncoderIsacFixImpl>(c);
+  return absl::make_unique<AudioEncoderIsacFixImpl>(c);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/isac/audio_encoder_isac_float.cc b/api/audio_codecs/isac/audio_encoder_isac_float.cc
index 510244c..b70a82e 100644
--- a/api/audio_codecs/isac/audio_encoder_isac_float.cc
+++ b/api/audio_codecs/isac/audio_encoder_isac_float.cc
@@ -10,9 +10,9 @@
 
 #include "api/audio_codecs/isac/audio_encoder_isac_float.h"
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/string_to_number.h"
 
 namespace webrtc {
@@ -68,7 +68,7 @@
   c.sample_rate_hz = config.sample_rate_hz;
   c.frame_size_ms = config.frame_size_ms;
   c.payload_type = payload_type;
-  return rtc::MakeUnique<AudioEncoderIsacFloatImpl>(c);
+  return absl::make_unique<AudioEncoderIsacFloatImpl>(c);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/opus/BUILD.gn b/api/audio_codecs/opus/BUILD.gn
index 953482e..800abbe 100644
--- a/api/audio_codecs/opus/BUILD.gn
+++ b/api/audio_codecs/opus/BUILD.gn
@@ -60,6 +60,7 @@
     "../../..:webrtc_common",
     "../../../modules/audio_coding:webrtc_opus",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/api/audio_codecs/opus/audio_decoder_opus.cc b/api/audio_codecs/opus/audio_decoder_opus.cc
index 81bee77..41397f0 100644
--- a/api/audio_codecs/opus/audio_decoder_opus.cc
+++ b/api/audio_codecs/opus/audio_decoder_opus.cc
@@ -14,9 +14,9 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/codecs/opus/audio_decoder_opus.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -57,7 +57,7 @@
 std::unique_ptr<AudioDecoder> AudioDecoderOpus::MakeAudioDecoder(
     Config config,
     absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
-  return rtc::MakeUnique<AudioDecoderOpusImpl>(config.num_channels);
+  return absl::make_unique<AudioDecoderOpusImpl>(config.num_channels);
 }
 
 }  // namespace webrtc
diff --git a/api/audio_codecs/test/BUILD.gn b/api/audio_codecs/test/BUILD.gn
index 61234f5..cc7a4d9 100644
--- a/api/audio_codecs/test/BUILD.gn
+++ b/api/audio_codecs/test/BUILD.gn
@@ -38,6 +38,7 @@
       "../isac:audio_encoder_isac_float",
       "../opus:audio_decoder_opus",
       "../opus:audio_encoder_opus",
+      "//third_party/abseil-cpp/absl/memory",
     ]
   }
 }
diff --git a/api/audio_codecs/test/audio_decoder_factory_template_unittest.cc b/api/audio_codecs/test/audio_decoder_factory_template_unittest.cc
index e4f09d4..d8fd9e0 100644
--- a/api/audio_codecs/test/audio_decoder_factory_template_unittest.cc
+++ b/api/audio_codecs/test/audio_decoder_factory_template_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "api/audio_codecs/audio_decoder_factory_template.h"
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/L16/audio_decoder_L16.h"
 #include "api/audio_codecs/g711/audio_decoder_g711.h"
 #include "api/audio_codecs/g722/audio_decoder_g722.h"
@@ -16,7 +17,6 @@
 #include "api/audio_codecs/isac/audio_decoder_isac_fix.h"
 #include "api/audio_codecs/isac/audio_decoder_isac_float.h"
 #include "api/audio_codecs/opus/audio_decoder_opus.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/mock_audio_decoder.h"
@@ -64,7 +64,7 @@
   static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
       const Config&,
       absl::optional<AudioCodecPairId> /*codec_pair_id*/ = absl::nullopt) {
-    auto dec = rtc::MakeUnique<testing::StrictMock<MockAudioDecoder>>();
+    auto dec = absl::make_unique<testing::StrictMock<MockAudioDecoder>>();
     EXPECT_CALL(*dec, SampleRateHz())
         .WillOnce(testing::Return(Params::CodecInfo().sample_rate_hz));
     EXPECT_CALL(*dec, Die());
diff --git a/api/audio_codecs/test/audio_encoder_factory_template_unittest.cc b/api/audio_codecs/test/audio_encoder_factory_template_unittest.cc
index 46781ce..ca024b9 100644
--- a/api/audio_codecs/test/audio_encoder_factory_template_unittest.cc
+++ b/api/audio_codecs/test/audio_encoder_factory_template_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "api/audio_codecs/audio_encoder_factory_template.h"
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/L16/audio_encoder_L16.h"
 #include "api/audio_codecs/g711/audio_encoder_g711.h"
 #include "api/audio_codecs/g722/audio_encoder_g722.h"
@@ -16,7 +17,6 @@
 #include "api/audio_codecs/isac/audio_encoder_isac_fix.h"
 #include "api/audio_codecs/isac/audio_encoder_isac_float.h"
 #include "api/audio_codecs/opus/audio_encoder_opus.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/mock_audio_encoder.h"
@@ -65,7 +65,7 @@
       const Config&,
       int payload_type,
       absl::optional<AudioCodecPairId> /*codec_pair_id*/ = absl::nullopt) {
-    auto enc = rtc::MakeUnique<testing::StrictMock<MockAudioEncoder>>();
+    auto enc = absl::make_unique<testing::StrictMock<MockAudioEncoder>>();
     EXPECT_CALL(*enc, SampleRateHz())
         .WillOnce(testing::Return(Params::CodecInfo().sample_rate_hz));
     return std::move(enc);
diff --git a/api/test/create_simulcast_test_fixture.cc b/api/test/create_simulcast_test_fixture.cc
index 14bd5ab..897746d 100644
--- a/api/test/create_simulcast_test_fixture.cc
+++ b/api/test/create_simulcast_test_fixture.cc
@@ -13,9 +13,9 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/test/simulcast_test_fixture.h"
 #include "modules/video_coding/utility/simulcast_test_fixture_impl.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace test {
@@ -24,9 +24,8 @@
     std::unique_ptr<VideoEncoderFactory> encoder_factory,
     std::unique_ptr<VideoDecoderFactory> decoder_factory,
     SdpVideoFormat video_format) {
-  return rtc::MakeUnique<SimulcastTestFixtureImpl>(std::move(encoder_factory),
-                                                   std::move(decoder_factory),
-                                                   video_format);
+  return absl::make_unique<SimulcastTestFixtureImpl>(
+      std::move(encoder_factory), std::move(decoder_factory), video_format);
 }
 
 }  // namespace test
diff --git a/api/test/create_video_quality_test_fixture.cc b/api/test/create_video_quality_test_fixture.cc
index bc71861..994401b 100644
--- a/api/test/create_video_quality_test_fixture.cc
+++ b/api/test/create_video_quality_test_fixture.cc
@@ -11,22 +11,22 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/test/create_video_quality_test_fixture.h"
 #include "video/video_quality_test.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
 std::unique_ptr<VideoQualityTestFixtureInterface>
 CreateVideoQualityTestFixture() {
   // By default, we don't override the FEC module, so pass an empty factory.
-  return rtc::MakeUnique<VideoQualityTest>(nullptr);
+  return absl::make_unique<VideoQualityTest>(nullptr);
 }
 
 std::unique_ptr<VideoQualityTestFixtureInterface>
 CreateVideoQualityTestFixture(
     std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory) {
-  return rtc::MakeUnique<VideoQualityTest>(std::move(fec_controller_factory));
+  return absl::make_unique<VideoQualityTest>(std::move(fec_controller_factory));
 }
 
 }  // namespace webrtc
diff --git a/api/test/create_videocodec_test_fixture.cc b/api/test/create_videocodec_test_fixture.cc
index 94b3dff..df8ad8b 100644
--- a/api/test/create_videocodec_test_fixture.cc
+++ b/api/test/create_videocodec_test_fixture.cc
@@ -13,9 +13,9 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/test/videocodec_test_fixture.h"
 #include "modules/video_coding/codecs/test/videocodec_test_fixture_impl.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace test {
@@ -24,14 +24,14 @@
 
 std::unique_ptr<VideoCodecTestFixture> CreateVideoCodecTestFixture(
     const Config& config) {
-  return rtc::MakeUnique<VideoCodecTestFixtureImpl>(config);
+  return absl::make_unique<VideoCodecTestFixtureImpl>(config);
 }
 
 std::unique_ptr<VideoCodecTestFixture> CreateVideoCodecTestFixture(
     const Config& config,
     std::unique_ptr<VideoDecoderFactory> decoder_factory,
     std::unique_ptr<VideoEncoderFactory> encoder_factory) {
-  return rtc::MakeUnique<VideoCodecTestFixtureImpl>(
+  return absl::make_unique<VideoCodecTestFixtureImpl>(
       config, std::move(decoder_factory), std::move(encoder_factory));
 }
 
diff --git a/api/video/BUILD.gn b/api/video/BUILD.gn
index 6a5576c..454e480 100644
--- a/api/video/BUILD.gn
+++ b/api/video/BUILD.gn
@@ -115,6 +115,7 @@
     ":video_stream_decoder",
     "../../rtc_base:rtc_base_approved",
     "../../video:video_stream_decoder_impl",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
diff --git a/api/video/video_stream_decoder_create.cc b/api/video/video_stream_decoder_create.cc
index e756096..d579255 100644
--- a/api/video/video_stream_decoder_create.cc
+++ b/api/video/video_stream_decoder_create.cc
@@ -10,7 +10,7 @@
 
 #include "api/video/video_stream_decoder_create.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "video/video_stream_decoder_impl.h"
 
 namespace webrtc {
@@ -18,7 +18,7 @@
     VideoStreamDecoder::Callbacks* callbacks,
     VideoDecoderFactory* decoder_factory,
     std::map<int, std::pair<SdpVideoFormat, int>> decoder_settings) {
-  return rtc::MakeUnique<VideoStreamDecoderImpl>(callbacks, decoder_factory,
-                                                 std::move(decoder_settings));
+  return absl::make_unique<VideoStreamDecoderImpl>(callbacks, decoder_factory,
+                                                   std::move(decoder_settings));
 }
 }  // namespace webrtc
diff --git a/api/video_codecs/BUILD.gn b/api/video_codecs/BUILD.gn
index fa62518..e523191 100644
--- a/api/video_codecs/BUILD.gn
+++ b/api/video_codecs/BUILD.gn
@@ -55,6 +55,7 @@
     ":video_codecs_api",
     "../../media:rtc_internal_video_codecs",
     "../../rtc_base:ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -74,6 +75,7 @@
     "../../media:rtc_internal_video_codecs",
     "../../media:rtc_media_base",
     "../../rtc_base:ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -102,5 +104,6 @@
     "../../rtc_base/system:fallthrough",
     "../../system_wrappers:field_trial_api",
     "../video:video_bitrate_allocation",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
diff --git a/api/video_codecs/builtin_video_decoder_factory.cc b/api/video_codecs/builtin_video_decoder_factory.cc
index 7395b96..883c1eb 100644
--- a/api/video_codecs/builtin_video_decoder_factory.cc
+++ b/api/video_codecs/builtin_video_decoder_factory.cc
@@ -10,13 +10,13 @@
 
 #include "api/video_codecs/builtin_video_decoder_factory.h"
 
+#include "absl/memory/memory.h"
 #include "media/engine/internaldecoderfactory.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
 std::unique_ptr<VideoDecoderFactory> CreateBuiltinVideoDecoderFactory() {
-  return rtc::MakeUnique<InternalDecoderFactory>();
+  return absl::make_unique<InternalDecoderFactory>();
 }
 
 }  // namespace webrtc
diff --git a/api/video_codecs/builtin_video_encoder_factory.cc b/api/video_codecs/builtin_video_encoder_factory.cc
index b8d747e..ca389b9 100644
--- a/api/video_codecs/builtin_video_encoder_factory.cc
+++ b/api/video_codecs/builtin_video_encoder_factory.cc
@@ -12,12 +12,12 @@
 
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "media/base/codec.h"
 #include "media/base/mediaconstants.h"
 #include "media/engine/internalencoderfactory.h"
 #include "media/engine/vp8_encoder_simulcast_proxy.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -60,7 +60,7 @@
                           format)) {
       internal_encoder =
           cricket::CodecNamesEq(format.name.c_str(), cricket::kVp8CodecName)
-              ? rtc::MakeUnique<VP8EncoderSimulcastProxy>(
+              ? absl::make_unique<VP8EncoderSimulcastProxy>(
                     internal_encoder_factory_.get(), format)
               : internal_encoder_factory_->CreateVideoEncoder(format);
     }
@@ -79,7 +79,7 @@
 }  // namespace
 
 std::unique_ptr<VideoEncoderFactory> CreateBuiltinVideoEncoderFactory() {
-  return rtc::MakeUnique<BuiltinVideoEncoderFactory>();
+  return absl::make_unique<BuiltinVideoEncoderFactory>();
 }
 
 }  // namespace webrtc
diff --git a/api/video_codecs/video_decoder_software_fallback_wrapper.cc b/api/video_codecs/video_decoder_software_fallback_wrapper.cc
index 01c7de86..1666bc3 100644
--- a/api/video_codecs/video_decoder_software_fallback_wrapper.cc
+++ b/api/video_codecs/video_decoder_software_fallback_wrapper.cc
@@ -13,10 +13,10 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/video_coding/include/video_error_codes.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/system/fallthrough.h"
 #include "rtc_base/trace_event.h"
 
@@ -217,7 +217,7 @@
 std::unique_ptr<VideoDecoder> CreateVideoDecoderSoftwareFallbackWrapper(
     std::unique_ptr<VideoDecoder> sw_fallback_decoder,
     std::unique_ptr<VideoDecoder> hw_decoder) {
-  return rtc::MakeUnique<VideoDecoderSoftwareFallbackWrapper>(
+  return absl::make_unique<VideoDecoderSoftwareFallbackWrapper>(
       std::move(sw_fallback_decoder), std::move(hw_decoder));
 }
 
diff --git a/api/video_codecs/video_encoder_software_fallback_wrapper.cc b/api/video_codecs/video_encoder_software_fallback_wrapper.cc
index e345ea6..99f2970 100644
--- a/api/video_codecs/video_encoder_software_fallback_wrapper.cc
+++ b/api/video_codecs/video_encoder_software_fallback_wrapper.cc
@@ -15,12 +15,12 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "media/base/codec.h"
 #include "media/base/h264_profile_level_id.h"
 #include "modules/video_coding/include/video_error_codes.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/field_trial.h"
 
@@ -380,7 +380,7 @@
 std::unique_ptr<VideoEncoder> CreateVideoEncoderSoftwareFallbackWrapper(
     std::unique_ptr<VideoEncoder> sw_fallback_encoder,
     std::unique_ptr<VideoEncoder> hw_encoder) {
-  return rtc::MakeUnique<VideoEncoderSoftwareFallbackWrapper>(
+  return absl::make_unique<VideoEncoderSoftwareFallbackWrapper>(
       std::move(sw_fallback_encoder), std::move(hw_encoder));
 }
 
diff --git a/audio/BUILD.gn b/audio/BUILD.gn
index 709fd7f..22ceeb6 100644
--- a/audio/BUILD.gn
+++ b/audio/BUILD.gn
@@ -86,6 +86,7 @@
     "../system_wrappers:field_trial_api",
     "../system_wrappers:metrics_api",
     "utility:audio_frame_operations",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -155,6 +156,7 @@
       "../test:test_support",
       "utility:utility_tests",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     if (!rtc_use_memcheck) {
@@ -258,6 +260,7 @@
       "../test:test_common",
       "../test:test_main",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     data = [
diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc
index f84aaaf..2341d4e 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -12,6 +12,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/units/time_delta.h"
 #include "audio/audio_send_stream.h"
 #include "audio/audio_state.h"
@@ -27,7 +28,6 @@
 #include "modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
 #include "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
 #include "rtc_base/fakeclock.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/task_queue.h"
 #include "test/gtest.h"
 #include "test/mock_audio_encoder.h"
diff --git a/audio/audio_state.cc b/audio/audio_state.cc
index bff818e..35ea03d 100644
--- a/audio/audio_state.cc
+++ b/audio/audio_state.cc
@@ -14,12 +14,12 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "audio/audio_receive_stream.h"
 #include "modules/audio_device/include/audio_device.h"
 #include "rtc_base/atomicops.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread.h"
 
 namespace webrtc {
@@ -121,7 +121,8 @@
       }
     } else {
       config_.audio_device_module->StopPlayout();
-      null_audio_poller_ = rtc::MakeUnique<NullAudioPoller>(&audio_transport_);
+      null_audio_poller_ =
+          absl::make_unique<NullAudioPoller>(&audio_transport_);
     }
   }
 }
diff --git a/audio/channel.cc b/audio/channel.cc
index cb32b92..297c111 100644
--- a/audio/channel.cc
+++ b/audio/channel.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "audio/utility/audio_frame_operations.h"
 #include "call/rtp_transport_controller_send_interface.h"
@@ -38,7 +39,6 @@
 #include "rtc_base/format_macros.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_limiter.h"
 #include "rtc_base/task_queue.h"
 #include "rtc_base/thread_checker.h"
@@ -393,7 +393,7 @@
 
   unsigned int ssrc;
   RTC_CHECK_EQ(GetRemoteSSRC(ssrc), 0);
-  event_log_proxy_->Log(rtc::MakeUnique<RtcEventAudioPlayout>(ssrc));
+  event_log_proxy_->Log(absl::make_unique<RtcEventAudioPlayout>(ssrc));
   // Get 10ms raw PCM data from the ACM (mixer limits output frequency)
   bool muted;
   if (audio_coding_->PlayoutData10Ms(audio_frame->sample_rate_hz_, audio_frame,
diff --git a/audio/test/audio_bwe_integration_test.cc b/audio/test/audio_bwe_integration_test.cc
index ecdd162..4d8ac80 100644
--- a/audio/test/audio_bwe_integration_test.cc
+++ b/audio/test/audio_bwe_integration_test.cc
@@ -10,8 +10,8 @@
 
 #include "audio/test/audio_bwe_integration_test.h"
 
+#include "absl/memory/memory.h"
 #include "common_audio/wav_file.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/sleep.h"
 #include "test/field_trial.h"
 #include "test/gtest.h"
diff --git a/call/BUILD.gn b/call/BUILD.gn
index dc55ab2..b4958e4 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -91,6 +91,7 @@
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -113,6 +114,7 @@
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
     "../system_wrappers:field_trial_api",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -204,6 +206,7 @@
     "../system_wrappers:field_trial_api",
     "../system_wrappers:metrics_api",
     "../video",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -247,6 +250,7 @@
     "../rtc_base:rtc_base_approved",
     "../rtc_base:sequenced_task_checker",
     "../system_wrappers",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (!build_with_chromium && is_clang) {
@@ -309,6 +313,7 @@
       "../test:test_support",
       "../test:video_test_common",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
@@ -351,6 +356,7 @@
       "../test:video_test_common",
       "../video",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
diff --git a/call/call.cc b/call/call.cc
index 88b2a79..8b4da25 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -16,6 +16,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "absl/types/optional.h"
 #include "api/transport/network_control.h"
 #include "audio/audio_receive_stream.h"
@@ -50,7 +51,6 @@
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_limiter.h"
 #include "rtc_base/sequenced_task_checker.h"
 #include "rtc_base/strings/string_builder.h"
@@ -106,7 +106,7 @@
 
 std::unique_ptr<rtclog::StreamConfig> CreateRtcLogStreamConfig(
     const VideoReceiveStream::Config& config) {
-  auto rtclog_config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto rtclog_config = absl::make_unique<rtclog::StreamConfig>();
   rtclog_config->remote_ssrc = config.rtp.remote_ssrc;
   rtclog_config->local_ssrc = config.rtp.local_ssrc;
   rtclog_config->rtx_ssrc = config.rtp.rtx_ssrc;
@@ -126,7 +126,7 @@
 std::unique_ptr<rtclog::StreamConfig> CreateRtcLogStreamConfig(
     const VideoSendStream::Config& config,
     size_t ssrc_index) {
-  auto rtclog_config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto rtclog_config = absl::make_unique<rtclog::StreamConfig>();
   rtclog_config->local_ssrc = config.rtp.ssrcs[ssrc_index];
   if (ssrc_index < config.rtp.rtx.ssrcs.size()) {
     rtclog_config->rtx_ssrc = config.rtp.rtx.ssrcs[ssrc_index];
@@ -142,7 +142,7 @@
 
 std::unique_ptr<rtclog::StreamConfig> CreateRtcLogStreamConfig(
     const AudioReceiveStream::Config& config) {
-  auto rtclog_config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto rtclog_config = absl::make_unique<rtclog::StreamConfig>();
   rtclog_config->remote_ssrc = config.rtp.remote_ssrc;
   rtclog_config->local_ssrc = config.rtp.local_ssrc;
   rtclog_config->rtp_extensions = config.rtp.extensions;
@@ -151,7 +151,7 @@
 
 std::unique_ptr<rtclog::StreamConfig> CreateRtcLogStreamConfig(
     const AudioSendStream::Config& config) {
-  auto rtclog_config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto rtclog_config = absl::make_unique<rtclog::StreamConfig>();
   rtclog_config->local_ssrc = config.rtp.ssrc;
   rtclog_config->rtp_extensions = config.rtp.extensions;
   if (config.send_codec_spec) {
@@ -396,7 +396,7 @@
 
 Call* Call::Create(const Call::Config& config) {
   return new internal::Call(
-      config, rtc::MakeUnique<RtpTransportControllerSend>(
+      config, absl::make_unique<RtpTransportControllerSend>(
                   Clock::GetRealTimeClock(), config.event_log,
                   config.network_controller_factory, config.bitrate_config));
 }
@@ -582,7 +582,7 @@
     const webrtc::AudioSendStream::Config& config) {
   TRACE_EVENT0("webrtc", "Call::CreateAudioSendStream");
   RTC_DCHECK_CALLED_SEQUENTIALLY(&configuration_sequence_checker_);
-  event_log_->Log(rtc::MakeUnique<RtcEventAudioSendStreamConfig>(
+  event_log_->Log(absl::make_unique<RtcEventAudioSendStreamConfig>(
       CreateRtcLogStreamConfig(config)));
 
   absl::optional<RtpState> suspended_rtp_state;
@@ -652,7 +652,7 @@
     const webrtc::AudioReceiveStream::Config& config) {
   TRACE_EVENT0("webrtc", "Call::CreateAudioReceiveStream");
   RTC_DCHECK_CALLED_SEQUENTIALLY(&configuration_sequence_checker_);
-  event_log_->Log(rtc::MakeUnique<RtcEventAudioReceiveStreamConfig>(
+  event_log_->Log(absl::make_unique<RtcEventAudioReceiveStreamConfig>(
       CreateRtcLogStreamConfig(config)));
   AudioReceiveStream* receive_stream = new AudioReceiveStream(
       &audio_receiver_controller_, transport_send_ptr_->packet_router(),
@@ -715,7 +715,7 @@
   video_send_delay_stats_->AddSsrcs(config);
   for (size_t ssrc_index = 0; ssrc_index < config.rtp.ssrcs.size();
        ++ssrc_index) {
-    event_log_->Log(rtc::MakeUnique<RtcEventVideoSendStreamConfig>(
+    event_log_->Log(absl::make_unique<RtcEventVideoSendStreamConfig>(
         CreateRtcLogStreamConfig(config, ssrc_index)));
   }
 
@@ -758,7 +758,7 @@
   std::unique_ptr<FecController> fec_controller =
       config_.fec_controller_factory
           ? config_.fec_controller_factory->CreateFecController()
-          : rtc::MakeUnique<FecControllerDefault>(Clock::GetRealTimeClock());
+          : absl::make_unique<FecControllerDefault>(Clock::GetRealTimeClock());
   return CreateVideoSendStream(std::move(config), std::move(encoder_config),
                                std::move(fec_controller));
 }
@@ -829,7 +829,7 @@
   }
   receive_stream->SignalNetworkState(video_network_state_);
   UpdateAggregateNetworkState();
-  event_log_->Log(rtc::MakeUnique<RtcEventVideoReceiveStreamConfig>(
+  event_log_->Log(absl::make_unique<RtcEventVideoReceiveStreamConfig>(
       CreateRtcLogStreamConfig(config)));
   return receive_stream;
 }
@@ -1220,7 +1220,7 @@
   }
 
   if (rtcp_delivered) {
-    event_log_->Log(rtc::MakeUnique<RtcEventRtcpPacketIncoming>(
+    event_log_->Log(absl::make_unique<RtcEventRtcpPacketIncoming>(
         rtc::MakeArrayView(packet, length)));
   }
 
@@ -1280,7 +1280,7 @@
       received_bytes_per_second_counter_.Add(length);
       received_audio_bytes_per_second_counter_.Add(length);
       event_log_->Log(
-          rtc::MakeUnique<RtcEventRtpPacketIncoming>(parsed_packet));
+          absl::make_unique<RtcEventRtpPacketIncoming>(parsed_packet));
       const int64_t arrival_time_ms = parsed_packet.arrival_time_ms();
       if (!first_received_rtp_audio_ms_) {
         first_received_rtp_audio_ms_.emplace(arrival_time_ms);
@@ -1293,7 +1293,7 @@
       received_bytes_per_second_counter_.Add(length);
       received_video_bytes_per_second_counter_.Add(length);
       event_log_->Log(
-          rtc::MakeUnique<RtcEventRtpPacketIncoming>(parsed_packet));
+          absl::make_unique<RtcEventRtpPacketIncoming>(parsed_packet));
       const int64_t arrival_time_ms = parsed_packet.arrival_time_ms();
       if (!first_received_rtp_video_ms_) {
         first_received_rtp_video_ms_.emplace(arrival_time_ms);
diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc
index 0d24c20..dd70e32 100644
--- a/call/call_perf_tests.cc
+++ b/call/call_perf_tests.cc
@@ -13,6 +13,7 @@
 #include <memory>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/video/video_bitrate_allocation.h"
 #include "api/video_codecs/video_encoder_config.h"
@@ -24,7 +25,6 @@
 #include "modules/rtp_rtcp/include/rtp_header_parser.h"
 #include "rtc_base/bitrateallocationstrategy.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread_annotations.h"
 #include "system_wrappers/include/metrics_default.h"
 #include "test/call_test.h"
@@ -199,18 +199,18 @@
                    return pair.second == MediaType::VIDEO;
                  });
 
-    audio_send_transport = rtc::MakeUnique<test::PacketTransport>(
+    audio_send_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, sender_call_.get(), &observer,
         test::PacketTransport::kSender, audio_pt_map, audio_net_config);
     audio_send_transport->SetReceiver(receiver_call_->Receiver());
 
-    video_send_transport = rtc::MakeUnique<test::PacketTransport>(
+    video_send_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, sender_call_.get(), &observer,
         test::PacketTransport::kSender, video_pt_map,
         FakeNetworkPipe::Config());
     video_send_transport->SetReceiver(receiver_call_->Receiver());
 
-    receive_transport = rtc::MakeUnique<test::PacketTransport>(
+    receive_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, receiver_call_.get(), &observer,
         test::PacketTransport::kReceiver, payload_type_map_,
         FakeNetworkPipe::Config());
@@ -256,7 +256,7 @@
     }
     EXPECT_EQ(1u, video_receive_streams_.size());
     observer.set_receive_stream(video_receive_streams_[0]);
-    drifting_clock = rtc::MakeUnique<DriftingClock>(clock_, video_ntp_speed);
+    drifting_clock = absl::make_unique<DriftingClock>(clock_, video_ntp_speed);
     CreateFrameGeneratorCapturerWithDrift(drifting_clock.get(), video_rtp_speed,
                                           kDefaultFramerate, kDefaultWidth,
                                           kDefaultHeight);
diff --git a/call/call_unittest.cc b/call/call_unittest.cc
index c963be6..1084bcf 100644
--- a/call/call_unittest.cc
+++ b/call/call_unittest.cc
@@ -13,6 +13,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/test/mock_audio_mixer.h"
 #include "audio/audio_receive_stream.h"
@@ -24,7 +25,6 @@
 #include "modules/audio_processing/include/mock_audio_processing.h"
 #include "modules/pacing/mock/mock_paced_sender.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp.h"
-#include "rtc_base/ptr_util.h"
 #include "test/fake_encoder.h"
 #include "test/gtest.h"
 #include "test/mock_audio_decoder_factory.h"
diff --git a/call/degraded_call.cc b/call/degraded_call.cc
index 697c5f4..fb2663b 100644
--- a/call/degraded_call.cc
+++ b/call/degraded_call.cc
@@ -12,7 +12,7 @@
 
 #include "call/degraded_call.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 DegradedCall::DegradedCall(
@@ -28,7 +28,7 @@
       receive_config_(receive_config) {
   if (receive_config_) {
     receive_pipe_ =
-        rtc::MakeUnique<webrtc::FakeNetworkPipe>(clock_, *receive_config_);
+        absl::make_unique<webrtc::FakeNetworkPipe>(clock_, *receive_config_);
     receive_pipe_->SetReceiver(call_->Receiver());
   }
   if (send_process_thread_) {
@@ -68,8 +68,8 @@
     VideoSendStream::Config config,
     VideoEncoderConfig encoder_config) {
   if (send_config_ && !send_pipe_) {
-    send_pipe_ = rtc::MakeUnique<FakeNetworkPipe>(clock_, *send_config_,
-                                                  config.send_transport);
+    send_pipe_ = absl::make_unique<FakeNetworkPipe>(clock_, *send_config_,
+                                                    config.send_transport);
     config.send_transport = this;
     send_process_thread_->RegisterModule(send_pipe_.get(), RTC_FROM_HERE);
   }
@@ -83,8 +83,8 @@
     VideoEncoderConfig encoder_config,
     std::unique_ptr<FecController> fec_controller) {
   if (send_config_ && !send_pipe_) {
-    send_pipe_ = rtc::MakeUnique<FakeNetworkPipe>(clock_, *send_config_,
-                                                  config.send_transport);
+    send_pipe_ = absl::make_unique<FakeNetworkPipe>(clock_, *send_config_,
+                                                    config.send_transport);
     config.send_transport = this;
     send_process_thread_->RegisterModule(send_pipe_.get(), RTC_FROM_HERE);
   }
diff --git a/call/fake_network_pipe.cc b/call/fake_network_pipe.cc
index ebe551a..cc15915 100644
--- a/call/fake_network_pipe.cc
+++ b/call/fake_network_pipe.cc
@@ -16,10 +16,10 @@
 #include <cmath>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "call/call.h"
 #include "call/fake_network_pipe.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 
 namespace webrtc {
@@ -79,7 +79,7 @@
                                  PacketReceiver* receiver,
                                  uint64_t seed)
     : clock_(clock),
-      network_simulation_(rtc::MakeUnique<SimulatedNetwork>(config, seed)),
+      network_simulation_(absl::make_unique<SimulatedNetwork>(config, seed)),
       receiver_(receiver),
       transport_(nullptr),
       clock_offset_ms_(0),
@@ -93,7 +93,7 @@
                                  const FakeNetworkPipe::Config& config,
                                  Transport* transport)
     : clock_(clock),
-      network_simulation_(rtc::MakeUnique<SimulatedNetwork>(config, 1)),
+      network_simulation_(absl::make_unique<SimulatedNetwork>(config, 1)),
       receiver_(nullptr),
       transport_(transport),
       clock_offset_ms_(0),
diff --git a/call/flexfec_receive_stream_unittest.cc b/call/flexfec_receive_stream_unittest.cc
index 21dbeb7..da87c68 100644
--- a/call/flexfec_receive_stream_unittest.cc
+++ b/call/flexfec_receive_stream_unittest.cc
@@ -13,6 +13,7 @@
 #include <stdint.h>
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "call/rtp_stream_receiver_controller.h"
 #include "modules/pacing/packet_router.h"
@@ -22,7 +23,6 @@
 #include "modules/rtp_rtcp/source/byte_io.h"
 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
 #include "modules/utility/include/mock/mock_process_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/mock_transport.h"
@@ -84,7 +84,7 @@
   FlexfecReceiveStreamTest()
       : config_(CreateDefaultConfig(&rtcp_send_transport_)) {
     EXPECT_CALL(process_thread_, RegisterModule(_, _)).Times(1);
-    receive_stream_ = rtc::MakeUnique<FlexfecReceiveStreamImpl>(
+    receive_stream_ = absl::make_unique<FlexfecReceiveStreamImpl>(
         &rtp_stream_receiver_controller_, config_, &recovered_packet_receiver_,
         &rtt_stats_, &process_thread_);
   }
diff --git a/call/receive_time_calculator.cc b/call/receive_time_calculator.cc
index 4070a21..16c6a43 100644
--- a/call/receive_time_calculator.cc
+++ b/call/receive_time_calculator.cc
@@ -9,8 +9,8 @@
  */
 
 #include "call/receive_time_calculator.h"
+#include "absl/memory/memory.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/field_trial.h"
 
 namespace webrtc {
@@ -36,7 +36,7 @@
     RTC_LOG(LS_WARNING) << "Invalid number of parameters provided.";
     return nullptr;
   }
-  return rtc::MakeUnique<ReceiveTimeCalculator>(min, max);
+  return absl::make_unique<ReceiveTimeCalculator>(min, max);
 }
 
 int64_t ReceiveTimeCalculator::ReconcileReceiveTimes(int64_t packet_time_us_,
diff --git a/call/rtcp_demuxer_unittest.cc b/call/rtcp_demuxer_unittest.cc
index c1e360c..808364a 100644
--- a/call/rtcp_demuxer_unittest.cc
+++ b/call/rtcp_demuxer_unittest.cc
@@ -13,13 +13,13 @@
 #include <memory>
 #include <set>
 
+#include "absl/memory/memory.h"
 #include "api/rtp_headers.h"
 #include "call/rtcp_packet_sink_interface.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/rtp_rtcp/source/rtcp_packet/bye.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
diff --git a/call/rtp_demuxer_unittest.cc b/call/rtp_demuxer_unittest.cc
index 8cb9f86..76a13ee 100644
--- a/call/rtp_demuxer_unittest.cc
+++ b/call/rtp_demuxer_unittest.cc
@@ -14,6 +14,7 @@
 #include <set>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "call/ssrc_binding_observer.h"
 #include "call/test/mock_rtp_packet_sink_interface.h"
 #include "common_types.h"  // NOLINT(build/include)
@@ -23,7 +24,6 @@
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -135,7 +135,7 @@
   std::unique_ptr<RtpPacketReceived> CreatePacket(
       uint32_t ssrc,
       RtpPacketReceived::ExtensionManager* extension_manager) {
-    auto packet = rtc::MakeUnique<RtpPacketReceived>(extension_manager);
+    auto packet = absl::make_unique<RtpPacketReceived>(extension_manager);
     packet->SetSsrc(ssrc);
     packet->SetSequenceNumber(next_sequence_number_++);
     return packet;
diff --git a/call/rtp_stream_receiver_controller.cc b/call/rtp_stream_receiver_controller.cc
index af431ab..3fae021 100644
--- a/call/rtp_stream_receiver_controller.cc
+++ b/call/rtp_stream_receiver_controller.cc
@@ -10,8 +10,8 @@
 
 #include "call/rtp_stream_receiver_controller.h"
 
+#include "absl/memory/memory.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -46,7 +46,7 @@
 std::unique_ptr<RtpStreamReceiverInterface>
 RtpStreamReceiverController::CreateReceiver(uint32_t ssrc,
                                             RtpPacketSinkInterface* sink) {
-  return rtc::MakeUnique<Receiver>(this, ssrc, sink);
+  return absl::make_unique<Receiver>(this, ssrc, sink);
 }
 
 bool RtpStreamReceiverController::OnRtpPacket(const RtpPacketReceived& packet) {
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index 92215d1..e2b8a5e 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -9,12 +9,12 @@
  */
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "call/rtp_transport_controller_send.h"
 #include "modules/congestion_controller/include/send_side_congestion_controller.h"
 #include "modules/congestion_controller/rtp/include/send_side_congestion_controller.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/field_trial.h"
 
 namespace webrtc {
@@ -37,13 +37,13 @@
     NetworkControllerFactoryInterface* controller_factory) {
   if (task_queue_controller) {
     RTC_LOG(LS_INFO) << "Using TaskQueue based SSCC";
-    return rtc::MakeUnique<webrtc::webrtc_cc::SendSideCongestionController>(
+    return absl::make_unique<webrtc::webrtc_cc::SendSideCongestionController>(
         clock, task_queue, event_log, pacer, bitrate_config.start_bitrate_bps,
         bitrate_config.min_bitrate_bps, bitrate_config.max_bitrate_bps,
         controller_factory);
   }
   RTC_LOG(LS_INFO) << "Using Legacy SSCC";
-  auto cc = rtc::MakeUnique<webrtc::SendSideCongestionController>(
+  auto cc = absl::make_unique<webrtc::SendSideCongestionController>(
       clock, nullptr /* observer */, event_log, pacer);
   cc->SignalNetworkState(kNetworkDown);
   cc->SetBweBitrates(bitrate_config.min_bitrate_bps,
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index c750f16..6028767 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -901,6 +901,7 @@
       "../system_wrappers:field_trial_default",
       "../system_wrappers:metrics_default",
       "../system_wrappers:runtime_enabled_features_default",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (is_android) {
       deps += [
diff --git a/examples/androidnativeapi/jni/androidcallclient.cc b/examples/androidnativeapi/jni/androidcallclient.cc
index f2cdbd0..3b19629 100644
--- a/examples/androidnativeapi/jni/androidcallclient.cc
+++ b/examples/androidnativeapi/jni/androidcallclient.cc
@@ -12,6 +12,7 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/peerconnectioninterface.h"
@@ -20,7 +21,6 @@
 #include "media/engine/internalencoderfactory.h"
 #include "media/engine/webrtcmediaengine.h"
 #include "modules/audio_processing/include/audio_processing.h"
-#include "rtc_base/ptr_util.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/video/wrapper.h"
 
@@ -75,7 +75,7 @@
 }  // namespace
 
 AndroidCallClient::AndroidCallClient()
-    : call_started_(false), pc_observer_(rtc::MakeUnique<PCObserver>(this)) {
+    : call_started_(false), pc_observer_(absl::make_unique<PCObserver>(this)) {
   thread_checker_.DetachFromThread();
   CreatePeerConnectionFactory();
 }
@@ -155,8 +155,8 @@
       cricket::WebRtcMediaEngineFactory::Create(
           nullptr /* adm */, webrtc::CreateBuiltinAudioEncoderFactory(),
           webrtc::CreateBuiltinAudioDecoderFactory(),
-          rtc::MakeUnique<webrtc::InternalEncoderFactory>(),
-          rtc::MakeUnique<webrtc::InternalDecoderFactory>(),
+          absl::make_unique<webrtc::InternalEncoderFactory>(),
+          absl::make_unique<webrtc::InternalDecoderFactory>(),
           nullptr /* audio_mixer */, webrtc::AudioProcessingBuilder().Create());
   RTC_LOG(LS_INFO) << "Media engine created: " << media_engine.get();
 
diff --git a/examples/objcnativeapi/objc/objccallclient.mm b/examples/objcnativeapi/objc/objccallclient.mm
index 7d9d78a..0e3b8e0 100644
--- a/examples/objcnativeapi/objc/objccallclient.mm
+++ b/examples/objcnativeapi/objc/objccallclient.mm
@@ -16,12 +16,12 @@
 #import <WebRTC/RTCVideoCodecFactory.h>
 #import <WebRTC/RTCVideoRenderer.h>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/peerconnectioninterface.h"
 #include "media/engine/webrtcmediaengine.h"
 #include "modules/audio_processing/include/audio_processing.h"
-#include "rtc_base/ptr_util.h"
 #include "sdk/objc/Framework/Native/api/video_capturer.h"
 #include "sdk/objc/Framework/Native/api/video_decoder_factory.h"
 #include "sdk/objc/Framework/Native/api/video_encoder_factory.h"
@@ -56,7 +56,7 @@
 }  // namespace
 
 ObjCCallClient::ObjCCallClient()
-    : call_started_(false), pc_observer_(rtc::MakeUnique<PCObserver>(this)) {
+    : call_started_(false), pc_observer_(absl::make_unique<PCObserver>(this)) {
   thread_checker_.DetachFromThread();
   CreatePeerConnectionFactory();
 }
diff --git a/examples/unityplugin/simple_peer_connection.cc b/examples/unityplugin/simple_peer_connection.cc
index cd85f88..df03e37 100644
--- a/examples/unityplugin/simple_peer_connection.cc
+++ b/examples/unityplugin/simple_peer_connection.cc
@@ -12,6 +12,7 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/test/fakeconstraints.h"
@@ -25,7 +26,6 @@
 #include "modules/audio_device/include/audio_device.h"
 #include "modules/audio_processing/include/audio_processing.h"
 #include "modules/video_capture/video_capture_factory.h"
-#include "rtc_base/ptr_util.h"
 
 #if defined(WEBRTC_ANDROID)
 #include "examples/unityplugin/classreferenceholder.h"
@@ -107,10 +107,10 @@
         webrtc::CreateBuiltinAudioDecoderFactory(),
         std::unique_ptr<webrtc::VideoEncoderFactory>(
             new webrtc::MultiplexEncoderFactory(
-                rtc::MakeUnique<webrtc::InternalEncoderFactory>())),
+                absl::make_unique<webrtc::InternalEncoderFactory>())),
         std::unique_ptr<webrtc::VideoDecoderFactory>(
             new webrtc::MultiplexDecoderFactory(
-                rtc::MakeUnique<webrtc::InternalDecoderFactory>())),
+                absl::make_unique<webrtc::InternalDecoderFactory>())),
         nullptr, nullptr);
   }
   if (!g_peer_connection_factory.get()) {
diff --git a/logging/BUILD.gn b/logging/BUILD.gn
index 66c87b9..8354d73 100644
--- a/logging/BUILD.gn
+++ b/logging/BUILD.gn
@@ -68,6 +68,7 @@
     ":rtc_event_log_api",
     "../:typedefs",
     "../rtc_base:ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -88,6 +89,7 @@
     ":rtc_stream_config",
     "../modules/audio_coding:audio_network_adaptor_config",
     "../rtc_base:ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -109,6 +111,7 @@
     ":rtc_event_log_api",
     "../modules/remote_bitrate_estimator:remote_bitrate_estimator",
     "../rtc_base:ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -130,6 +133,7 @@
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base:ptr_util",
     "../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -145,6 +149,7 @@
     ":rtc_event_log_api",
     ":rtc_stream_config",
     "../rtc_base:ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -225,6 +230,7 @@
     "../rtc_base:rtc_task_queue",
     "../rtc_base:safe_minmax",
     "../rtc_base:sequenced_task_checker",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (rtc_enable_protobuf) {
@@ -296,6 +302,7 @@
       "../rtc_base:checks",
       "../rtc_base:protobuf_utils",
       "../rtc_base:rtc_base_approved",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     if (!build_with_chromium && is_clang) {
@@ -345,6 +352,7 @@
         "../test:fileutils",
         "../test:test_support",
         "//testing/gtest",
+        "//third_party/abseil-cpp/absl/memory",
       ]
       if (!build_with_chromium && is_clang) {
         # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
@@ -437,6 +445,7 @@
     ":rtc_event_log_api",
     "../api:libjingle_logging_api",
     "../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (!build_with_chromium && is_clang) {
diff --git a/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc b/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc
index 383e71f..990fa60 100644
--- a/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc
+++ b/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc
@@ -12,6 +12,7 @@
 #include <limits>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.h"
 #include "logging/rtc_event_log/events/rtc_event_alr_state.h"
 #include "logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h"
@@ -34,7 +35,6 @@
 #include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h"
 #include "modules/remote_bitrate_estimator/include/bwe_defines.h"
 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/random.h"
 #include "test/gtest.h"
 
@@ -83,7 +83,7 @@
   // This function is called repeatedly. Clear state between calls.
   history_.clear();
   auto original_runtime_config = *runtime_config;
-  auto event = rtc::MakeUnique<RtcEventAudioNetworkAdaptation>(
+  auto event = absl::make_unique<RtcEventAudioNetworkAdaptation>(
       std::move(runtime_config));
   const int64_t timestamp_us = event->timestamp_us_;
   history_.push_back(std::move(event));
@@ -98,7 +98,7 @@
 }
 
 TEST_P(RtcEventLogEncoderTest, RtcEventAudioNetworkAdaptationBitrate) {
-  auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+  auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
   const int bitrate_bps = rtc::checked_cast<int>(
       prng_.Rand(0, std::numeric_limits<int32_t>::max()));
   runtime_config->bitrate_bps = bitrate_bps;
@@ -106,7 +106,7 @@
 }
 
 TEST_P(RtcEventLogEncoderTest, RtcEventAudioNetworkAdaptationFrameLength) {
-  auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+  auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
   const int frame_length_ms = prng_.Rand(1, 1000);
   runtime_config->frame_length_ms = frame_length_ms;
   TestRtcEventAudioNetworkAdaptation(std::move(runtime_config));
@@ -115,7 +115,7 @@
 TEST_P(RtcEventLogEncoderTest, RtcEventAudioNetworkAdaptationPacketLoss) {
   // To simplify the test, we just check powers of two.
   const float plr = std::pow(0.5f, prng_.Rand(1, 8));
-  auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+  auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
   runtime_config->uplink_packet_loss_fraction = plr;
   TestRtcEventAudioNetworkAdaptation(std::move(runtime_config));
 }
@@ -124,7 +124,7 @@
   // The test might be trivially passing for one of the two boolean values, so
   // for safety's sake, we test both.
   for (bool fec_enabled : {false, true}) {
-    auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+    auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
     runtime_config->enable_fec = fec_enabled;
     TestRtcEventAudioNetworkAdaptation(std::move(runtime_config));
   }
@@ -134,7 +134,7 @@
   // The test might be trivially passing for one of the two boolean values, so
   // for safety's sake, we test both.
   for (bool dtx_enabled : {false, true}) {
-    auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+    auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
     runtime_config->enable_dtx = dtx_enabled;
     TestRtcEventAudioNetworkAdaptation(std::move(runtime_config));
   }
@@ -144,7 +144,7 @@
   // The test might be trivially passing for one of the two possible values, so
   // for safety's sake, we test both.
   for (size_t channels : {1, 2}) {
-    auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+    auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
     runtime_config->num_channels = channels;
     TestRtcEventAudioNetworkAdaptation(std::move(runtime_config));
   }
@@ -158,7 +158,7 @@
   for (bool fec_enabled : {false, true}) {
     for (bool dtx_enabled : {false, true}) {
       for (size_t channels : {1, 2}) {
-        auto runtime_config = rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+        auto runtime_config = absl::make_unique<AudioEncoderRuntimeConfig>();
         runtime_config->bitrate_bps = bitrate_bps;
         runtime_config->frame_length_ms = frame_length_ms;
         runtime_config->uplink_packet_loss_fraction = plr;
diff --git a/logging/rtc_event_log/events/rtc_event_alr_state.cc b/logging/rtc_event_log/events/rtc_event_alr_state.cc
index 7c5257a..c1f1b39 100644
--- a/logging/rtc_event_log/events/rtc_event_alr_state.cc
+++ b/logging/rtc_event_log/events/rtc_event_alr_state.cc
@@ -9,7 +9,7 @@
  */
 
 #include "logging/rtc_event_log/events/rtc_event_alr_state.h"
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -29,7 +29,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventAlrState::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventAlrState(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventAlrState(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc b/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc
index be73d78..dcf2d7d 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.cc
@@ -12,8 +12,8 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -24,7 +24,7 @@
 RtcEventAudioNetworkAdaptation::RtcEventAudioNetworkAdaptation(
     const RtcEventAudioNetworkAdaptation& other)
     : RtcEvent(other.timestamp_us_),
-      config_(rtc::MakeUnique<AudioEncoderRuntimeConfig>(*other.config_)) {}
+      config_(absl::make_unique<AudioEncoderRuntimeConfig>(*other.config_)) {}
 
 RtcEventAudioNetworkAdaptation::~RtcEventAudioNetworkAdaptation() = default;
 
@@ -37,7 +37,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventAudioNetworkAdaptation::Copy() const {
-  return rtc::WrapUnique(new RtcEventAudioNetworkAdaptation(*this));
+  return absl::WrapUnique(new RtcEventAudioNetworkAdaptation(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_audio_playout.cc b/logging/rtc_event_log/events/rtc_event_audio_playout.cc
index 73cf5f5..a9643ba 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_playout.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_playout.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_audio_playout.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -28,7 +28,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventAudioPlayout::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventAudioPlayout(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventAudioPlayout(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc b/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc
index 0be3b24..fee7c3c 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.cc
@@ -12,8 +12,8 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/rtc_stream_config.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -24,7 +24,7 @@
 RtcEventAudioReceiveStreamConfig::RtcEventAudioReceiveStreamConfig(
     const RtcEventAudioReceiveStreamConfig& other)
     : RtcEvent(other.timestamp_us_),
-      config_(rtc::MakeUnique<rtclog::StreamConfig>(*other.config_)) {}
+      config_(absl::make_unique<rtclog::StreamConfig>(*other.config_)) {}
 
 RtcEventAudioReceiveStreamConfig::~RtcEventAudioReceiveStreamConfig() = default;
 
@@ -37,8 +37,9 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventAudioReceiveStreamConfig::Copy() const {
-  auto config_copy = rtc::MakeUnique<rtclog::StreamConfig>(*config_);
-  return rtc::WrapUnique<RtcEvent>(new RtcEventAudioReceiveStreamConfig(*this));
+  auto config_copy = absl::make_unique<rtclog::StreamConfig>(*config_);
+  return absl::WrapUnique<RtcEvent>(
+      new RtcEventAudioReceiveStreamConfig(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc b/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc
index c9f8dd6..47939c7 100644
--- a/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.cc
@@ -12,8 +12,8 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/rtc_stream_config.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -24,7 +24,7 @@
 RtcEventAudioSendStreamConfig::RtcEventAudioSendStreamConfig(
     const RtcEventAudioSendStreamConfig& other)
     : RtcEvent(other.timestamp_us_),
-      config_(rtc::MakeUnique<rtclog::StreamConfig>(*other.config_)) {}
+      config_(absl::make_unique<rtclog::StreamConfig>(*other.config_)) {}
 
 RtcEventAudioSendStreamConfig::~RtcEventAudioSendStreamConfig() = default;
 
@@ -37,8 +37,8 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventAudioSendStreamConfig::Copy() const {
-  auto config_copy = rtc::MakeUnique<rtclog::StreamConfig>(*config_);
-  return rtc::WrapUnique<RtcEvent>(new RtcEventAudioSendStreamConfig(*this));
+  auto config_copy = absl::make_unique<rtclog::StreamConfig>(*config_);
+  return absl::WrapUnique<RtcEvent>(new RtcEventAudioSendStreamConfig(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc b/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc
index a2c2b6b..8c17971 100644
--- a/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc
+++ b/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.cc
@@ -10,8 +10,8 @@
 
 #include "logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h"
 
+#include "absl/memory/memory.h"
 #include "modules/remote_bitrate_estimator/include/bwe_defines.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -37,7 +37,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventBweUpdateDelayBased::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventBweUpdateDelayBased(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventBweUpdateDelayBased(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc b/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc
index 89afad4..b0e72dd 100644
--- a/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc
+++ b/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -39,7 +39,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventBweUpdateLossBased::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventBweUpdateLossBased(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventBweUpdateLossBased(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc
index d3d54cf..fa32de6 100644
--- a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc
+++ b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -36,7 +36,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventIceCandidatePair::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventIceCandidatePair(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventIceCandidatePair(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc
index 7ed877f..f89de77 100644
--- a/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -65,7 +65,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventIceCandidatePairConfig::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventIceCandidatePairConfig(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventIceCandidatePairConfig(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc b/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc
index da1ac5a..a60765d 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc
+++ b/logging/rtc_event_log/events/rtc_event_probe_cluster_created.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_probe_cluster_created.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -40,7 +40,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventProbeClusterCreated::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventProbeClusterCreated(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventProbeClusterCreated(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc b/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc
index 2ae369d..aa6091c 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc
+++ b/logging/rtc_event_log/events/rtc_event_probe_result_failure.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_probe_result_failure.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -34,7 +34,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventProbeResultFailure::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventProbeResultFailure(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventProbeResultFailure(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_probe_result_success.cc b/logging/rtc_event_log/events/rtc_event_probe_result_success.cc
index 87abc1c..5590729 100644
--- a/logging/rtc_event_log/events/rtc_event_probe_result_success.cc
+++ b/logging/rtc_event_log/events/rtc_event_probe_result_success.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_probe_result_success.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -33,7 +33,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventProbeResultSuccess::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventProbeResultSuccess(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventProbeResultSuccess(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc b/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc
index c1a667a..119938c 100644
--- a/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -34,7 +34,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventRtcpPacketIncoming::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventRtcpPacketIncoming(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventRtcpPacketIncoming(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc b/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc
index 04731bf..4085ac0 100644
--- a/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc
@@ -10,7 +10,7 @@
 
 #include "logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -34,7 +34,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventRtcpPacketOutgoing::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventRtcpPacketOutgoing(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventRtcpPacketOutgoing(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc b/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc
index 58b65a9..8e15d02 100644
--- a/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.cc
@@ -10,8 +10,8 @@
 
 #include "logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h"
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -38,7 +38,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventRtpPacketIncoming::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventRtpPacketIncoming(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventRtpPacketIncoming(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc b/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc
index 9c50407..103440a 100644
--- a/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc
+++ b/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc
@@ -10,8 +10,8 @@
 
 #include "logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h"
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -41,7 +41,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventRtpPacketOutgoing::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventRtpPacketOutgoing(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventRtpPacketOutgoing(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc b/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc
index 517f731..7f4dd9b 100644
--- a/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.cc
@@ -12,7 +12,7 @@
 
 #include <utility>
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -23,7 +23,7 @@
 RtcEventVideoReceiveStreamConfig::RtcEventVideoReceiveStreamConfig(
     const RtcEventVideoReceiveStreamConfig& other)
     : RtcEvent(other.timestamp_us_),
-      config_(rtc::MakeUnique<rtclog::StreamConfig>(*other.config_)) {}
+      config_(absl::make_unique<rtclog::StreamConfig>(*other.config_)) {}
 
 RtcEventVideoReceiveStreamConfig::~RtcEventVideoReceiveStreamConfig() = default;
 
@@ -36,7 +36,8 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventVideoReceiveStreamConfig::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventVideoReceiveStreamConfig(*this));
+  return absl::WrapUnique<RtcEvent>(
+      new RtcEventVideoReceiveStreamConfig(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc b/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc
index 0e54c97..b4b78a8 100644
--- a/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc
+++ b/logging/rtc_event_log/events/rtc_event_video_send_stream_config.cc
@@ -12,7 +12,7 @@
 
 #include <utility>
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -23,7 +23,7 @@
 RtcEventVideoSendStreamConfig::RtcEventVideoSendStreamConfig(
     const RtcEventVideoSendStreamConfig& other)
     : RtcEvent(other.timestamp_us_),
-      config_(rtc::MakeUnique<rtclog::StreamConfig>(*other.config_)) {}
+      config_(absl::make_unique<rtclog::StreamConfig>(*other.config_)) {}
 
 RtcEventVideoSendStreamConfig::~RtcEventVideoSendStreamConfig() = default;
 
@@ -36,7 +36,7 @@
 }
 
 std::unique_ptr<RtcEvent> RtcEventVideoSendStreamConfig::Copy() const {
-  return rtc::WrapUnique<RtcEvent>(new RtcEventVideoSendStreamConfig(*this));
+  return absl::WrapUnique<RtcEvent>(new RtcEventVideoSendStreamConfig(*this));
 }
 
 }  // namespace webrtc
diff --git a/logging/rtc_event_log/icelogger.cc b/logging/rtc_event_log/icelogger.cc
index 923c0aa..5f91c5e 100644
--- a/logging/rtc_event_log/icelogger.cc
+++ b/logging/rtc_event_log/icelogger.cc
@@ -10,8 +10,8 @@
 
 #include "logging/rtc_event_log/icelogger.h"
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -26,7 +26,7 @@
     return;
   }
   candidate_pair_desc_by_id_[candidate_pair_id] = candidate_pair_desc;
-  event_log_->Log(rtc::MakeUnique<RtcEventIceCandidatePairConfig>(
+  event_log_->Log(absl::make_unique<RtcEventIceCandidatePairConfig>(
       type, candidate_pair_id, candidate_pair_desc));
 }
 
@@ -36,12 +36,12 @@
     return;
   }
   event_log_->Log(
-      rtc::MakeUnique<RtcEventIceCandidatePair>(type, candidate_pair_id));
+      absl::make_unique<RtcEventIceCandidatePair>(type, candidate_pair_id));
 }
 
 void IceEventLog::DumpCandidatePairDescriptionToMemoryAsConfigEvents() const {
   for (const auto& desc_id_pair : candidate_pair_desc_by_id_) {
-    event_log_->Log(rtc::MakeUnique<RtcEventIceCandidatePairConfig>(
+    event_log_->Log(absl::make_unique<RtcEventIceCandidatePairConfig>(
         IceCandidatePairConfigType::kUpdated, desc_id_pair.first,
         desc_id_pair.second));
   }
diff --git a/logging/rtc_event_log/output/rtc_event_log_output_file_unittest.cc b/logging/rtc_event_log/output/rtc_event_log_output_file_unittest.cc
index ee19816..fabb72b 100644
--- a/logging/rtc_event_log/output/rtc_event_log_output_file_unittest.cc
+++ b/logging/rtc_event_log/output/rtc_event_log_output_file_unittest.cc
@@ -14,8 +14,8 @@
 #include <memory>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gtest.h"
 #include "test/testsupport/fileutils.h"
 
@@ -51,13 +51,14 @@
 };
 
 TEST_F(RtcEventLogOutputFileTest, NonDefectiveOutputsStartOutActive) {
-  auto output_file = rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_);
+  auto output_file =
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_);
   EXPECT_TRUE(output_file->IsActive());
 }
 
 TEST_F(RtcEventLogOutputFileTest, DefectiveOutputsStartOutInactive) {
   const std::string illegal_filename = "/////////";
-  auto output_file = rtc::MakeUnique<RtcEventLogOutputFile>(illegal_filename);
+  auto output_file = absl::make_unique<RtcEventLogOutputFile>(illegal_filename);
   EXPECT_FALSE(output_file->IsActive());
 }
 
@@ -65,7 +66,8 @@
 TEST_F(RtcEventLogOutputFileTest, UnlimitedOutputFile) {
   const std::string output_str = "one two three";
 
-  auto output_file = rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_);
+  auto output_file =
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_);
   output_file->Write(output_str);
   output_file.reset();  // Closing the file flushes the buffer to disk.
 
@@ -76,7 +78,7 @@
 TEST_F(RtcEventLogOutputFileTest, LimitedOutputFileCappedToCapacity) {
   // Fit two bytes, then the third should be rejected.
   auto output_file =
-      rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_, 2);
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_, 2);
 
   output_file->Write("1");
   output_file->Write("2");
@@ -96,7 +98,7 @@
   // Set a file size limit just shy of fitting the entire second line.
   const size_t size_limit = output_str_1.length() + output_str_2.length() - 1;
   auto output_file =
-      rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_, size_limit);
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_, size_limit);
 
   output_file->Write(output_str_1);
   output_file->Write(output_str_2);
@@ -107,20 +109,20 @@
 
 TEST_F(RtcEventLogOutputFileTest, UnsuccessfulWriteReturnsFalse) {
   auto output_file =
-      rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_, 2);
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_, 2);
   EXPECT_FALSE(output_file->Write("abc"));
 }
 
 TEST_F(RtcEventLogOutputFileTest, SuccessfulWriteReturnsTrue) {
   auto output_file =
-      rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_, 3);
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_, 3);
   EXPECT_TRUE(output_file->Write("abc"));
 }
 
 // Even if capacity is reached, a successful write leaves the output active.
 TEST_F(RtcEventLogOutputFileTest, FileStillActiveAfterSuccessfulWrite) {
   auto output_file =
-      rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_, 3);
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_, 3);
   ASSERT_TRUE(output_file->Write("abc"));
   EXPECT_TRUE(output_file->IsActive());
 }
@@ -129,13 +131,13 @@
 // not yet been reached.
 TEST_F(RtcEventLogOutputFileTest, FileInactiveAfterUnsuccessfulWrite) {
   auto output_file =
-      rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_, 2);
+      absl::make_unique<RtcEventLogOutputFile>(output_file_name_, 2);
   ASSERT_FALSE(output_file->Write("abc"));
   EXPECT_FALSE(output_file->IsActive());
 }
 
 TEST_F(RtcEventLogOutputFileTest, AllowReasonableFileSizeLimits) {
-  auto output_file = rtc::MakeUnique<RtcEventLogOutputFile>(
+  auto output_file = absl::make_unique<RtcEventLogOutputFile>(
       output_file_name_, RtcEventLogOutputFile::kMaxReasonableFileSize);
   EXPECT_TRUE(output_file->IsActive());
 }
@@ -156,8 +158,8 @@
   auto create_output_file = [&] {
     const size_t unreasonable_size =
         RtcEventLogOutputFile::kMaxReasonableFileSize + 1;
-    output_file = rtc::MakeUnique<RtcEventLogOutputFile>(output_file_name_,
-                                                         unreasonable_size);
+    output_file = absl::make_unique<RtcEventLogOutputFile>(output_file_name_,
+                                                           unreasonable_size);
   };
   EXPECT_DEATH(create_output_file(), "");
 }
diff --git a/logging/rtc_event_log/rtc_event_log_impl.cc b/logging/rtc_event_log/rtc_event_log_impl.cc
index 74f8877..b56a5cf 100644
--- a/logging/rtc_event_log/rtc_event_log_impl.cc
+++ b/logging/rtc_event_log/rtc_event_log_impl.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.h"
 #include "logging/rtc_event_log/output/rtc_event_log_output_file.h"
 #include "rtc_base/checks.h"
@@ -25,7 +26,6 @@
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sequenced_task_checker.h"
 #include "rtc_base/task_queue.h"
 #include "rtc_base/thread_annotations.h"
@@ -64,7 +64,7 @@
     RtcEventLog::EncodingType type) {
   switch (type) {
     case RtcEventLog::EncodingType::Legacy:
-      return rtc::MakeUnique<RtcEventLogEncoderLegacy>();
+      return absl::make_unique<RtcEventLogEncoderLegacy>();
     default:
       RTC_LOG(LS_ERROR) << "Unknown RtcEventLog encoder type (" << int(type)
                         << ")";
@@ -182,8 +182,9 @@
     LogEventsFromMemoryToOutput();
   };
 
-  task_queue_->PostTask(rtc::MakeUnique<ResourceOwningTask<RtcEventLogOutput>>(
-      std::move(output), start));
+  task_queue_->PostTask(
+      absl::make_unique<ResourceOwningTask<RtcEventLogOutput>>(
+          std::move(output), start));
 
   return true;
 }
@@ -222,7 +223,7 @@
       ScheduleOutput();
   };
 
-  task_queue_->PostTask(rtc::MakeUnique<ResourceOwningTask<RtcEvent>>(
+  task_queue_->PostTask(absl::make_unique<ResourceOwningTask<RtcEvent>>(
       std::move(event), event_handler));
 }
 
@@ -354,15 +355,15 @@
 // RtcEventLog member functions.
 std::unique_ptr<RtcEventLog> RtcEventLog::Create(EncodingType encoding_type) {
   return Create(encoding_type,
-                rtc::MakeUnique<rtc::TaskQueue>("rtc_event_log"));
+                absl::make_unique<rtc::TaskQueue>("rtc_event_log"));
 }
 
 std::unique_ptr<RtcEventLog> RtcEventLog::Create(
     EncodingType encoding_type,
     std::unique_ptr<rtc::TaskQueue> task_queue) {
 #ifdef ENABLE_RTC_EVENT_LOG
-  return rtc::MakeUnique<RtcEventLogImpl>(CreateEncoder(encoding_type),
-                                          std::move(task_queue));
+  return absl::make_unique<RtcEventLogImpl>(CreateEncoder(encoding_type),
+                                            std::move(task_queue));
 #else
   return CreateNull();
 #endif  // ENABLE_RTC_EVENT_LOG
diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.cc b/logging/rtc_event_log/rtc_event_log_parser_new.cc
index 70073d1..b2b3264 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.cc
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.cc
@@ -20,6 +20,7 @@
 #include <map>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/rtp_headers.h"
 #include "api/rtpparameters.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
@@ -32,7 +33,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/protobuf_utils.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
diff --git a/logging/rtc_event_log/rtc_event_log_unittest.cc b/logging/rtc_event_log/rtc_event_log_unittest.cc
index 63c1638..e238f84 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest.cc
+++ b/logging/rtc_event_log/rtc_event_log_unittest.cc
@@ -16,6 +16,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h"
 #include "logging/rtc_event_log/events/rtc_event_audio_playout.h"
 #include "logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.h"
@@ -40,7 +41,6 @@
 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/fakeclock.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/random.h"
 #include "test/gtest.h"
 #include "test/testsupport/fileutils.h"
@@ -303,7 +303,7 @@
     if (remaining_events == remaining_events_at_start) {
       clock_.AdvanceTimeMicros(prng_.Rand(20) * 1000);
       event_log->StartLogging(
-          rtc::MakeUnique<RtcEventLogOutputFile>(temp_filename_, 10000000),
+          absl::make_unique<RtcEventLogOutputFile>(temp_filename_, 10000000),
           output_period_ms_);
       start_time_us_ = rtc::TimeMicros();
     }
@@ -694,7 +694,7 @@
   const std::string temp_filename = test::OutputPath() + test_name;
 
   std::unique_ptr<rtc::ScopedFakeClock> fake_clock =
-      rtc::MakeUnique<rtc::ScopedFakeClock>();
+      absl::make_unique<rtc::ScopedFakeClock>();
   fake_clock->SetTimeMicros(kStartTime);
 
   // When log_dumper goes out of scope, it causes the log file to be flushed
@@ -709,13 +709,13 @@
     // simplicity.
     // We base the various values on the index. We use this for some basic
     // consistency checks when we read back.
-    log_dumper->Log(rtc::MakeUnique<RtcEventProbeResultSuccess>(
+    log_dumper->Log(absl::make_unique<RtcEventProbeResultSuccess>(
         i, kStartBitrate + i * 1000));
     fake_clock->AdvanceTimeMicros(10000);
   }
   int64_t start_time_us = rtc::TimeMicros();
   log_dumper->StartLogging(
-      rtc::MakeUnique<RtcEventLogOutputFile>(temp_filename, 10000000),
+      absl::make_unique<RtcEventLogOutputFile>(temp_filename, 10000000),
       RtcEventLog::kImmediateOutput);
   fake_clock->AdvanceTimeMicros(10000);
   int64_t stop_time_us = rtc::TimeMicros();
@@ -748,7 +748,7 @@
   // recreate the clock. However we must ensure that the old fake_clock is
   // destroyed before the new one is created, so we have to reset() first.
   fake_clock.reset();
-  fake_clock = rtc::MakeUnique<rtc::ScopedFakeClock>();
+  fake_clock = absl::make_unique<rtc::ScopedFakeClock>();
   fake_clock->SetTimeMicros(first_timestamp_us);
   for (size_t i = 1; i < probe_success_events.size(); i++) {
     fake_clock->AdvanceTimeMicros(10000);
diff --git a/logging/rtc_event_log/rtc_event_log_unittest_helper.cc b/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
index f79a0da..273539c 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
+++ b/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
@@ -65,18 +65,18 @@
 }  // namespace
 
 std::unique_ptr<RtcEventAlrState> EventGenerator::NewAlrState() {
-  return rtc::MakeUnique<RtcEventAlrState>(prng_.Rand<bool>());
+  return absl::make_unique<RtcEventAlrState>(prng_.Rand<bool>());
 }
 
 std::unique_ptr<RtcEventAudioPlayout> EventGenerator::NewAudioPlayout(
     uint32_t ssrc) {
-  return rtc::MakeUnique<RtcEventAudioPlayout>(ssrc);
+  return absl::make_unique<RtcEventAudioPlayout>(ssrc);
 }
 
 std::unique_ptr<RtcEventAudioNetworkAdaptation>
 EventGenerator::NewAudioNetworkAdaptation() {
   std::unique_ptr<AudioEncoderRuntimeConfig> config =
-      rtc::MakeUnique<AudioEncoderRuntimeConfig>();
+      absl::make_unique<AudioEncoderRuntimeConfig>();
 
   config->bitrate_bps = prng_.Rand(0, 3000000);
   config->enable_fec = prng_.Rand<bool>();
@@ -85,7 +85,7 @@
   config->num_channels = prng_.Rand(1, 2);
   config->uplink_packet_loss_fraction = prng_.Rand<float>();
 
-  return rtc::MakeUnique<RtcEventAudioNetworkAdaptation>(std::move(config));
+  return absl::make_unique<RtcEventAudioNetworkAdaptation>(std::move(config));
 }
 
 std::unique_ptr<RtcEventBweUpdateDelayBased>
@@ -94,7 +94,7 @@
   int32_t bitrate_bps = prng_.Rand(0, kMaxBweBps);
   BandwidthUsage state = static_cast<BandwidthUsage>(
       prng_.Rand(static_cast<uint32_t>(BandwidthUsage::kLast) - 1));
-  return rtc::MakeUnique<RtcEventBweUpdateDelayBased>(bitrate_bps, state);
+  return absl::make_unique<RtcEventBweUpdateDelayBased>(bitrate_bps, state);
 }
 
 std::unique_ptr<RtcEventBweUpdateLossBased>
@@ -105,8 +105,8 @@
   uint8_t fraction_lost = prng_.Rand<uint8_t>();
   int32_t total_packets = prng_.Rand(1, kMaxPackets);
 
-  return rtc::MakeUnique<RtcEventBweUpdateLossBased>(bitrate_bps, fraction_lost,
-                                                     total_packets);
+  return absl::make_unique<RtcEventBweUpdateLossBased>(
+      bitrate_bps, fraction_lost, total_packets);
 }
 
 std::unique_ptr<RtcEventProbeClusterCreated>
@@ -118,8 +118,8 @@
   int min_probes = prng_.Rand(5, 50);
   int min_bytes = prng_.Rand(500, 50000);
 
-  return rtc::MakeUnique<RtcEventProbeClusterCreated>(id, bitrate_bps,
-                                                      min_probes, min_bytes);
+  return absl::make_unique<RtcEventProbeClusterCreated>(id, bitrate_bps,
+                                                        min_probes, min_bytes);
 }
 
 std::unique_ptr<RtcEventProbeResultFailure>
@@ -129,7 +129,7 @@
   ProbeFailureReason reason = static_cast<ProbeFailureReason>(
       prng_.Rand(static_cast<uint32_t>(ProbeFailureReason::kLast) - 1));
 
-  return rtc::MakeUnique<RtcEventProbeResultFailure>(id, reason);
+  return absl::make_unique<RtcEventProbeResultFailure>(id, reason);
 }
 
 std::unique_ptr<RtcEventProbeResultSuccess>
@@ -139,7 +139,7 @@
   int id = prng_.Rand(1, kMaxNumProbes);
   int bitrate_bps = prng_.Rand(0, kMaxBweBps);
 
-  return rtc::MakeUnique<RtcEventProbeResultSuccess>(id, bitrate_bps);
+  return absl::make_unique<RtcEventProbeResultSuccess>(id, bitrate_bps);
 }
 
 std::unique_ptr<RtcEventIceCandidatePairConfig>
@@ -176,7 +176,7 @@
       static_cast<IceCandidatePairConfigType>(prng_.Rand(
           static_cast<uint32_t>(IceCandidatePairConfigType::kNumValues) - 1));
   uint32_t pair_id = prng_.Rand<uint32_t>();
-  return rtc::MakeUnique<RtcEventIceCandidatePairConfig>(type, pair_id, desc);
+  return absl::make_unique<RtcEventIceCandidatePairConfig>(type, pair_id, desc);
 }
 
 std::unique_ptr<RtcEventIceCandidatePair>
@@ -186,7 +186,7 @@
           static_cast<uint32_t>(IceCandidatePairEventType::kNumValues) - 1));
   uint32_t pair_id = prng_.Rand<uint32_t>();
 
-  return rtc::MakeUnique<RtcEventIceCandidatePair>(type, pair_id);
+  return absl::make_unique<RtcEventIceCandidatePair>(type, pair_id);
 }
 
 rtcp::ReportBlock EventGenerator::NewReportBlock() {
@@ -226,17 +226,17 @@
     case 0: {
       rtcp::SenderReport sender_report = NewSenderReport();
       rtc::Buffer buffer = sender_report.Build();
-      return rtc::MakeUnique<RtcEventRtcpPacketIncoming>(buffer);
+      return absl::make_unique<RtcEventRtcpPacketIncoming>(buffer);
     }
     case 1: {
       rtcp::ReceiverReport receiver_report = NewReceiverReport();
       rtc::Buffer buffer = receiver_report.Build();
-      return rtc::MakeUnique<RtcEventRtcpPacketIncoming>(buffer);
+      return absl::make_unique<RtcEventRtcpPacketIncoming>(buffer);
     }
     default:
       RTC_NOTREACHED();
       rtc::Buffer buffer;
-      return rtc::MakeUnique<RtcEventRtcpPacketIncoming>(buffer);
+      return absl::make_unique<RtcEventRtcpPacketIncoming>(buffer);
   }
 }
 
@@ -247,17 +247,17 @@
     case 0: {
       rtcp::SenderReport sender_report = NewSenderReport();
       rtc::Buffer buffer = sender_report.Build();
-      return rtc::MakeUnique<RtcEventRtcpPacketOutgoing>(buffer);
+      return absl::make_unique<RtcEventRtcpPacketOutgoing>(buffer);
     }
     case 1: {
       rtcp::ReceiverReport receiver_report = NewReceiverReport();
       rtc::Buffer buffer = receiver_report.Build();
-      return rtc::MakeUnique<RtcEventRtcpPacketOutgoing>(buffer);
+      return absl::make_unique<RtcEventRtcpPacketOutgoing>(buffer);
     }
     default:
       RTC_NOTREACHED();
       rtc::Buffer buffer;
-      return rtc::MakeUnique<RtcEventRtcpPacketOutgoing>(buffer);
+      return absl::make_unique<RtcEventRtcpPacketOutgoing>(buffer);
   }
 }
 
@@ -313,7 +313,7 @@
   RtpPacketReceived rtp_packet(&extension_map);
   RandomizeRtpPacket(packet_size, ssrc, extension_map, &rtp_packet);
 
-  return rtc::MakeUnique<RtcEventRtpPacketIncoming>(rtp_packet);
+  return absl::make_unique<RtcEventRtpPacketIncoming>(rtp_packet);
 }
 
 std::unique_ptr<RtcEventRtpPacketOutgoing> EventGenerator::NewRtpPacketOutgoing(
@@ -329,8 +329,8 @@
   RandomizeRtpPacket(packet_size, ssrc, extension_map, &rtp_packet);
 
   int probe_cluster_id = prng_.Rand(0, 100000);
-  return rtc::MakeUnique<RtcEventRtpPacketOutgoing>(rtp_packet,
-                                                    probe_cluster_id);
+  return absl::make_unique<RtcEventRtpPacketOutgoing>(rtp_packet,
+                                                      probe_cluster_id);
 }
 
 RtpHeaderExtensionMap EventGenerator::NewRtpHeaderExtensionMap() {
@@ -362,7 +362,7 @@
 EventGenerator::NewAudioReceiveStreamConfig(
     uint32_t ssrc,
     const RtpHeaderExtensionMap& extensions) {
-  auto config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto config = absl::make_unique<rtclog::StreamConfig>();
   // Add SSRCs for the stream.
   config->remote_ssrc = ssrc;
   config->local_ssrc = prng_.Rand<uint32_t>();
@@ -374,14 +374,14 @@
     }
   }
 
-  return rtc::MakeUnique<RtcEventAudioReceiveStreamConfig>(std::move(config));
+  return absl::make_unique<RtcEventAudioReceiveStreamConfig>(std::move(config));
 }
 
 std::unique_ptr<RtcEventAudioSendStreamConfig>
 EventGenerator::NewAudioSendStreamConfig(
     uint32_t ssrc,
     const RtpHeaderExtensionMap& extensions) {
-  auto config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto config = absl::make_unique<rtclog::StreamConfig>();
   // Add SSRC to the stream.
   config->local_ssrc = ssrc;
   // Add header extensions.
@@ -391,14 +391,14 @@
       config->rtp_extensions.emplace_back(kExtensions[i].name, id);
     }
   }
-  return rtc::MakeUnique<RtcEventAudioSendStreamConfig>(std::move(config));
+  return absl::make_unique<RtcEventAudioSendStreamConfig>(std::move(config));
 }
 
 std::unique_ptr<RtcEventVideoReceiveStreamConfig>
 EventGenerator::NewVideoReceiveStreamConfig(
     uint32_t ssrc,
     const RtpHeaderExtensionMap& extensions) {
-  auto config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto config = absl::make_unique<rtclog::StreamConfig>();
 
   // Add SSRCs for the stream.
   config->remote_ssrc = ssrc;
@@ -417,14 +417,14 @@
       config->rtp_extensions.emplace_back(kExtensions[i].name, id);
     }
   }
-  return rtc::MakeUnique<RtcEventVideoReceiveStreamConfig>(std::move(config));
+  return absl::make_unique<RtcEventVideoReceiveStreamConfig>(std::move(config));
 }
 
 std::unique_ptr<RtcEventVideoSendStreamConfig>
 EventGenerator::NewVideoSendStreamConfig(
     uint32_t ssrc,
     const RtpHeaderExtensionMap& extensions) {
-  auto config = rtc::MakeUnique<rtclog::StreamConfig>();
+  auto config = absl::make_unique<rtclog::StreamConfig>();
 
   config->codecs.emplace_back(prng_.Rand<bool>() ? "VP8" : "H264",
                               prng_.Rand(127), prng_.Rand(127));
@@ -437,7 +437,7 @@
       config->rtp_extensions.emplace_back(kExtensions[i].name, id);
     }
   }
-  return rtc::MakeUnique<RtcEventVideoSendStreamConfig>(std::move(config));
+  return absl::make_unique<RtcEventVideoSendStreamConfig>(std::move(config));
 }
 
 bool VerifyLoggedAlrStateEvent(const RtcEventAlrState& original_event,
diff --git a/media/BUILD.gn b/media/BUILD.gn
index d14e500..91d1441 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -166,6 +166,7 @@
   deps = [
     ":rtc_h264_profile_id",
     "../modules/video_coding:video_codec_interface",
+    "//third_party/abseil-cpp/absl/memory",
   ]
   sources = [
     "engine/convert_legacy_video_factory.cc",
@@ -407,6 +408,7 @@
       "../rtc_base:checks",
       "../rtc_base:rtc_task_queue",
       "../rtc_base:stringutils",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     sources = [
       "base/fakeframesource.cc",
@@ -498,6 +500,7 @@
       "../rtc_base:stringutils",
       "../test:field_trial",
       "../test:test_common",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     sources = [
       "base/codec_unittest.cc",
diff --git a/media/base/fakemediaengine.h b/media/base/fakemediaengine.h
index 34a9b75..5d381f7 100644
--- a/media/base/fakemediaengine.h
+++ b/media/base/fakemediaengine.h
@@ -20,6 +20,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/call/audio_sink.h"
 #include "media/base/audiosource.h"
 #include "media/base/mediaengine.h"
@@ -30,7 +31,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/copyonwritebuffer.h"
 #include "rtc_base/networkroute.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringutils.h"
 
 using webrtc::RtpExtension;
@@ -479,7 +479,7 @@
         RTC_CHECK(it->second->source() == source);
       } else {
         local_sinks_.insert(std::make_pair(
-            ssrc, rtc::MakeUnique<VoiceChannelAudioSink>(source)));
+            ssrc, absl::make_unique<VoiceChannelAudioSink>(source)));
       }
     } else {
       if (it != local_sinks_.end()) {
diff --git a/media/base/fakevideocapturer.cc b/media/base/fakevideocapturer.cc
index 845cceb..94900ba 100644
--- a/media/base/fakevideocapturer.cc
+++ b/media/base/fakevideocapturer.cc
@@ -93,7 +93,7 @@
   SetCaptureFormat(&format);
   running_ = true;
   SetCaptureState(cricket::CS_RUNNING);
-  frame_source_ = rtc::MakeUnique<FakeFrameSource>(
+  frame_source_ = absl::make_unique<FakeFrameSource>(
       format.width, format.height,
       format.interval / rtc::kNumNanosecsPerMicrosec);
   frame_source_->SetRotation(rotation_);
diff --git a/media/base/videoadapter_unittest.cc b/media/base/videoadapter_unittest.cc
index a973778..c5e05b7 100644
--- a/media/base/videoadapter_unittest.cc
+++ b/media/base/videoadapter_unittest.cc
@@ -15,13 +15,13 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "media/base/fakeframesource.h"
 #include "media/base/mediachannel.h"
 #include "media/base/testutils.h"
 #include "media/base/videoadapter.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace cricket {
 namespace {
@@ -35,11 +35,11 @@
   void SetUp() override {
     capture_format_ = {kWidth, kHeight, VideoFormat::FpsToInterval(kDefaultFps),
                        cricket::FOURCC_I420};
-    frame_source_ = rtc::MakeUnique<FakeFrameSource>(
+    frame_source_ = absl::make_unique<FakeFrameSource>(
         kWidth, kHeight,
         VideoFormat::FpsToInterval(kDefaultFps) / rtc::kNumNanosecsPerMicrosec);
 
-    adapter_wrapper_ = rtc::MakeUnique<VideoAdapterWrapper>(&adapter_);
+    adapter_wrapper_ = absl::make_unique<VideoAdapterWrapper>(&adapter_);
   }
 
  protected:
diff --git a/media/engine/convert_legacy_video_factory.cc b/media/engine/convert_legacy_video_factory.cc
index 4f197ab..af37a39 100644
--- a/media/engine/convert_legacy_video_factory.cc
+++ b/media/engine/convert_legacy_video_factory.cc
@@ -13,6 +13,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/video_codecs/video_decoder_factory.h"
 #include "api/video_codecs/video_decoder_software_fallback_wrapper.h"
 #include "api/video_codecs/video_encoder_factory.h"
@@ -27,7 +28,6 @@
 #include "media/engine/webrtcvideodecoderfactory.h"
 #include "media/engine/webrtcvideoencoderfactory.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace cricket {
 
@@ -98,7 +98,7 @@
       std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory)
       : internal_encoder_factory_(new webrtc::InternalEncoderFactory()),
         external_encoder_factory_(
-            rtc::MakeUnique<CricketToWebRtcEncoderFactory>(
+            absl::make_unique<CricketToWebRtcEncoderFactory>(
                 std::move(external_encoder_factory))) {}
 
   webrtc::VideoEncoderFactory::CodecInfo QueryVideoEncoder(
@@ -125,7 +125,7 @@
                           format)) {
       internal_encoder =
           CodecNamesEq(format.name.c_str(), kVp8CodecName)
-              ? rtc::MakeUnique<webrtc::VP8EncoderSimulcastProxy>(
+              ? absl::make_unique<webrtc::VP8EncoderSimulcastProxy>(
                     internal_encoder_factory_.get(), format)
               : internal_encoder_factory_->CreateVideoEncoder(format);
     }
@@ -136,7 +136,7 @@
                           format)) {
       external_encoder =
           CodecNamesEq(format.name.c_str(), kVp8CodecName)
-              ? rtc::MakeUnique<webrtc::SimulcastEncoderAdapter>(
+              ? absl::make_unique<webrtc::SimulcastEncoderAdapter>(
                     external_encoder_factory_.get(), format)
               : external_encoder_factory_->CreateVideoEncoder(format);
     }
diff --git a/media/engine/fakewebrtcvideoengine.cc b/media/engine/fakewebrtcvideoengine.cc
index 8bd9ddb..7081b64 100644
--- a/media/engine/fakewebrtcvideoengine.cc
+++ b/media/engine/fakewebrtcvideoengine.cc
@@ -97,7 +97,7 @@
   if (IsFormatSupported(supported_codec_formats_, format)) {
     num_created_decoders_++;
     std::unique_ptr<FakeWebRtcVideoDecoder> decoder =
-        rtc::MakeUnique<FakeWebRtcVideoDecoder>(this);
+        absl::make_unique<FakeWebRtcVideoDecoder>(this);
     decoders_.push_back(decoder.get());
     return decoder;
   }
@@ -224,11 +224,12 @@
       // encoders. Enter vp8_factory_mode so that we now create these encoders
       // instead of more adapters.
       vp8_factory_mode_ = true;
-      encoder = rtc::MakeUnique<webrtc::SimulcastEncoderAdapter>(this, format);
+      encoder =
+          absl::make_unique<webrtc::SimulcastEncoderAdapter>(this, format);
     } else {
       num_created_encoders_++;
       created_video_encoder_event_.Set();
-      encoder = rtc::MakeUnique<FakeWebRtcVideoEncoder>(this);
+      encoder = absl::make_unique<FakeWebRtcVideoEncoder>(this);
       encoders_.push_back(static_cast<FakeWebRtcVideoEncoder*>(encoder.get()));
     }
   }
diff --git a/media/engine/fakewebrtcvideoengine.h b/media/engine/fakewebrtcvideoengine.h
index 8ebabb1..f4287a3 100644
--- a/media/engine/fakewebrtcvideoengine.h
+++ b/media/engine/fakewebrtcvideoengine.h
@@ -15,13 +15,13 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/video_codecs/video_decoder.h"
 #include "api/video_codecs/video_decoder_factory.h"
 #include "api/video_codecs/video_encoder.h"
 #include "api/video_codecs/video_encoder_factory.h"
 #include "rtc_base/criticalsection.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread_annotations.h"
 
 namespace cricket {
diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc
index 53f12a3..cce32d5 100644
--- a/media/engine/simulcast_encoder_adapter_unittest.cc
+++ b/media/engine/simulcast_encoder_adapter_unittest.cc
@@ -12,6 +12,7 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/test/create_simulcast_test_fixture.h"
 #include "api/test/simulcast_test_fixture.h"
 #include "api/video_codecs/sdp_video_format.h"
@@ -22,7 +23,6 @@
 #include "modules/video_coding/codecs/vp8/include/vp8.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "modules/video_coding/utility/simulcast_test_fixture_impl.h"
-#include "rtc_base/ptr_util.h"
 #include "test/function_video_decoder_factory.h"
 #include "test/function_video_encoder_factory.h"
 #include "test/gmock.h"
@@ -42,14 +42,14 @@
 std::unique_ptr<SimulcastTestFixture> CreateSpecificSimulcastTestFixture(
     VideoEncoderFactory* internal_encoder_factory) {
   std::unique_ptr<VideoEncoderFactory> encoder_factory =
-      rtc::MakeUnique<FunctionVideoEncoderFactory>(
+      absl::make_unique<FunctionVideoEncoderFactory>(
           [internal_encoder_factory]() {
-            return rtc::MakeUnique<SimulcastEncoderAdapter>(
+            return absl::make_unique<SimulcastEncoderAdapter>(
                 internal_encoder_factory,
                 SdpVideoFormat(cricket::kVp8CodecName));
           });
   std::unique_ptr<VideoDecoderFactory> decoder_factory =
-      rtc::MakeUnique<FunctionVideoDecoderFactory>(
+      absl::make_unique<FunctionVideoDecoderFactory>(
           []() { return VP8Decoder::Create(); });
   return CreateSimulcastTestFixture(std::move(encoder_factory),
                                     std::move(decoder_factory),
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index bb7f890..3528314 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -917,6 +917,7 @@
     "../../rtc_base:rtc_numerics",
     "../../rtc_base:safe_minmax",
     "../../system_wrappers:field_trial_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
   public_deps = [
@@ -1034,6 +1035,7 @@
     "../../rtc_base/system:file_wrapper",
     "../../system_wrappers",
     "../../system_wrappers:field_trial_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 
@@ -1775,6 +1777,7 @@
     testonly = true
 
     deps = audio_coding_deps + [
+             "//third_party/abseil-cpp/absl/memory",
              "../..:typedefs",
              ":audio_coding",
              ":neteq_input_audio_tools",
@@ -2248,6 +2251,7 @@
       "../../test:test_common",
       "../../test:test_support",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     defines = audio_coding_defines
diff --git a/modules/audio_coding/audio_network_adaptor/event_log_writer.cc b/modules/audio_coding/audio_network_adaptor/event_log_writer.cc
index 9cdbc54..4a92343 100644
--- a/modules/audio_coding/audio_network_adaptor/event_log_writer.cc
+++ b/modules/audio_coding/audio_network_adaptor/event_log_writer.cc
@@ -12,10 +12,10 @@
 
 #include <algorithm>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "modules/audio_coding/audio_network_adaptor/event_log_writer.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -63,9 +63,9 @@
 }
 
 void EventLogWriter::LogEncoderConfig(const AudioEncoderRuntimeConfig& config) {
-  auto config_copy = rtc::MakeUnique<AudioEncoderRuntimeConfig>(config);
-  event_log_->Log(
-      rtc::MakeUnique<RtcEventAudioNetworkAdaptation>(std::move(config_copy)));
+  auto config_copy = absl::make_unique<AudioEncoderRuntimeConfig>(config);
+  event_log_->Log(absl::make_unique<RtcEventAudioNetworkAdaptation>(
+      std::move(config_copy)));
   last_logged_config_ = config;
 }
 
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 05d3b72..e6240e6 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -14,6 +14,7 @@
 #include <iterator>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h"
 #include "modules/audio_coding/audio_network_adaptor/controller_manager.h"
@@ -25,7 +26,6 @@
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
 #include "rtc_base/protobuf_utils.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/string_to_number.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/field_trial.h"
@@ -239,7 +239,7 @@
     const AudioEncoderOpusConfig& config,
     int payload_type) {
   RTC_DCHECK(config.IsOk());
-  return rtc::MakeUnique<AudioEncoderOpusImpl>(config, payload_type);
+  return absl::make_unique<AudioEncoderOpusImpl>(config, payload_type);
 }
 
 absl::optional<AudioCodecInfo> AudioEncoderOpusImpl::QueryAudioEncoder(
@@ -388,7 +388,7 @@
             return DefaultAudioNetworkAdaptorCreator(config_string, event_log);
           },
           // We choose 5sec as initial time constant due to empirical data.
-          rtc::MakeUnique<SmoothingFilterImpl>(5000)) {}
+          absl::make_unique<SmoothingFilterImpl>(5000)) {}
 
 AudioEncoderOpusImpl::AudioEncoderOpusImpl(
     const AudioEncoderOpusConfig& config,
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
index dde2090..7a6d5fd 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
@@ -12,6 +12,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/opus/audio_encoder_opus.h"
 #include "common_audio/mocks/mock_smoothing_filter.h"
 #include "common_types.h"  // NOLINT(build/include)
@@ -21,7 +22,6 @@
 #include "modules/audio_coding/neteq/tools/audio_loop.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/fakeclock.h"
-#include "rtc_base/ptr_util.h"
 #include "test/field_trial.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -64,7 +64,7 @@
 
 std::unique_ptr<AudioEncoderOpusStates> CreateCodec(size_t num_channels) {
   std::unique_ptr<AudioEncoderOpusStates> states =
-      rtc::MakeUnique<AudioEncoderOpusStates>();
+      absl::make_unique<AudioEncoderOpusStates>();
   states->mock_audio_network_adaptor = nullptr;
   states->fake_clock.reset(new rtc::ScopedFakeClock());
   states->fake_clock->SetTimeMicros(kInitialTimeUs);
diff --git a/modules/audio_coding/neteq/tools/rtp_encode.cc b/modules/audio_coding/neteq/tools/rtp_encode.cc
index 1984e3f..abbb621 100644
--- a/modules/audio_coding/neteq/tools/rtp_encode.cc
+++ b/modules/audio_coding/neteq/tools/rtp_encode.cc
@@ -21,6 +21,7 @@
 #include <map>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "api/audio/audio_frame.h"
 #include "api/audio_codecs/L16/audio_encoder_L16.h"
 #include "api/audio_codecs/g711/audio_encoder_g711.h"
@@ -33,7 +34,6 @@
 #include "modules/audio_coding/neteq/tools/input_audio_file.h"
 #include "rtc_base/flags.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "typedefs.h"  // NOLINT(build/include)
 
 namespace webrtc {
@@ -313,7 +313,7 @@
     AudioEncoderCng::Config cng_config = GetCngConfig(codec->SampleRateHz());
     RTC_DCHECK(codec);
     cng_config.speech_encoder = std::move(codec);
-    codec = rtc::MakeUnique<AudioEncoderCng>(std::move(cng_config));
+    codec = absl::make_unique<AudioEncoderCng>(std::move(cng_config));
   }
   RTC_DCHECK(codec);
 
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
index 96f53b8..f286277 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -206,6 +206,7 @@
       ":windows_core_audio_utility",
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
   }
diff --git a/modules/audio_device/android/aaudio_player.cc b/modules/audio_device/android/aaudio_player.cc
index 2ab6908..e576a78 100644
--- a/modules/audio_device/android/aaudio_player.cc
+++ b/modules/audio_device/android/aaudio_player.cc
@@ -10,12 +10,12 @@
 
 #include "modules/audio_device/android/aaudio_player.h"
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/android/audio_manager.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -123,7 +123,7 @@
   // Create a modified audio buffer class which allows us to ask for any number
   // of samples (and not only multiple of 10ms) to match the optimal buffer
   // size per callback used by AAudio.
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
 }
 
 int AAudioPlayer::SpeakerVolumeIsAvailable(bool& available) {
diff --git a/modules/audio_device/android/aaudio_recorder.cc b/modules/audio_device/android/aaudio_recorder.cc
index 5b64d0e..081dda4 100644
--- a/modules/audio_device/android/aaudio_recorder.cc
+++ b/modules/audio_device/android/aaudio_recorder.cc
@@ -10,12 +10,12 @@
 
 #include "modules/audio_device/android/aaudio_recorder.h"
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/android/audio_manager.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/sleep.h"
 
@@ -110,7 +110,7 @@
   // Create a modified audio buffer class which allows us to deliver any number
   // of samples (and not only multiples of 10ms which WebRTC uses) to match the
   // native AAudio buffer size.
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
 }
 
 int AAudioRecorder::EnableBuiltInAEC(bool enable) {
diff --git a/modules/audio_device/android/opensles_player.cc b/modules/audio_device/android/opensles_player.cc
index 2e9e9e3..6f86ba5 100644
--- a/modules/audio_device/android/opensles_player.cc
+++ b/modules/audio_device/android/opensles_player.cc
@@ -12,6 +12,7 @@
 
 #include <android/log.h>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/android/audio_common.h"
 #include "modules/audio_device/android/audio_manager.h"
@@ -20,7 +21,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/format_macros.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 
 #define TAG "OpenSLESPlayer"
@@ -216,7 +216,7 @@
   ALOGD("native buffer size: %" PRIuS, buffer_size_in_samples);
   ALOGD("native buffer size in ms: %.2f",
         audio_parameters_.GetBufferSizeInMilliseconds());
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
   // Allocated memory for audio buffers.
   for (int i = 0; i < kNumOfOpenSLESBuffers; ++i) {
     audio_buffers_[i].reset(new SLint16[buffer_size_in_samples]);
diff --git a/modules/audio_device/android/opensles_recorder.cc b/modules/audio_device/android/opensles_recorder.cc
index 14ce2fa..6bc1bf5 100644
--- a/modules/audio_device/android/opensles_recorder.cc
+++ b/modules/audio_device/android/opensles_recorder.cc
@@ -12,6 +12,7 @@
 
 #include <android/log.h>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/android/audio_common.h"
 #include "modules/audio_device/android/audio_manager.h"
@@ -20,7 +21,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/format_macros.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 
 #define TAG "OpenSLESRecorder"
@@ -341,7 +341,7 @@
         audio_parameters_.GetBytesPerBuffer());
   ALOGD("native sample rate: %d", audio_parameters_.sample_rate());
   RTC_DCHECK(audio_device_buffer_);
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
   // Allocate queue of audio buffers that stores recorded audio samples.
   const int buffer_size_samples =
       audio_parameters_.frames_per_buffer() * audio_parameters_.channels();
diff --git a/modules/audio_device/audio_device_unittest.cc b/modules/audio_device/audio_device_unittest.cc
index d9ebc8f..16aef4d 100644
--- a/modules/audio_device/audio_device_unittest.cc
+++ b/modules/audio_device/audio_device_unittest.cc
@@ -523,7 +523,7 @@
       // We must initialize the COM library on a thread before we calling any of
       // the library functions. All COM functions in the ADM will return
       // CO_E_NOTINITIALIZED otherwise.
-      com_initializer_ = rtc::MakeUnique<webrtc_win::ScopedCOMInitializer>(
+      com_initializer_ = absl::make_unique<webrtc_win::ScopedCOMInitializer>(
           webrtc_win::ScopedCOMInitializer::kMTA);
       EXPECT_TRUE(com_initializer_->Succeeded());
       EXPECT_TRUE(webrtc_win::core_audio_utility::IsSupported());
diff --git a/modules/audio_device/include/audio_device_factory.cc b/modules/audio_device/include/audio_device_factory.cc
index 1895bd0..abcaa21 100644
--- a/modules/audio_device/include/audio_device_factory.cc
+++ b/modules/audio_device/include/audio_device_factory.cc
@@ -17,8 +17,8 @@
 #include "modules/audio_device/win/core_audio_utility_win.h"
 #endif
 
+#include "absl/memory/memory.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -33,8 +33,8 @@
     return nullptr;
   }
   return CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput(
-      rtc::MakeUnique<webrtc_win::CoreAudioInput>(),
-      rtc::MakeUnique<webrtc_win::CoreAudioOutput>());
+      absl::make_unique<webrtc_win::CoreAudioInput>(),
+      absl::make_unique<webrtc_win::CoreAudioOutput>());
 }
 
 }  // namespace webrtc
diff --git a/modules/audio_device/include/audio_device_factory.h b/modules/audio_device/include/audio_device_factory.h
index d6b2cf4..4297988 100644
--- a/modules/audio_device/include/audio_device_factory.h
+++ b/modules/audio_device/include/audio_device_factory.h
@@ -22,7 +22,7 @@
 //  public:
 //   rtc::scoped_refptr<AudioDeviceModule> CreateAudioDevice() {
 //     // Tell COM that this thread shall live in the MTA.
-//     com_initializer_ = rtc::MakeUnique<webrtc_win::ScopedCOMInitializer>(
+//     com_initializer_ = absl::make_unique<webrtc_win::ScopedCOMInitializer>(
 //         webrtc_win::ScopedCOMInitializer::kMTA);
 //     if (!com_initializer_->Succeeded()) {
 //       return nullptr;
diff --git a/modules/audio_device/include/test_audio_device.cc b/modules/audio_device/include/test_audio_device.cc
index e24afda..da2218f 100644
--- a/modules/audio_device/include/test_audio_device.cc
+++ b/modules/audio_device/include/test_audio_device.cc
@@ -13,6 +13,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "common_audio/wav_file.h"
 #include "modules/audio_device/include/audio_device_default.h"
@@ -23,7 +24,6 @@
 #include "rtc_base/event.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/random.h"
 #include "rtc_base/refcountedobject.h"
 #include "system_wrappers/include/event_wrapper.h"
@@ -88,7 +88,7 @@
 
   int32_t Init() {
     RTC_CHECK(tick_->StartTimer(true, kFrameLengthMs / speed_));
-    thread_ = rtc::MakeUnique<rtc::PlatformThread>(
+    thread_ = absl::make_unique<rtc::PlatformThread>(
         TestAudioDeviceModuleImpl::Run, this, "TestAudioDeviceModuleImpl");
     thread_->Start();
     thread_->SetPriority(rtc::kHighPriority);
@@ -279,14 +279,14 @@
   WavFileReader(std::string filename,
                 int sampling_frequency_in_hz,
                 int num_channels)
-      : WavFileReader(rtc::MakeUnique<WavReader>(filename),
+      : WavFileReader(absl::make_unique<WavReader>(filename),
                       sampling_frequency_in_hz,
                       num_channels) {}
 
   WavFileReader(rtc::PlatformFile file,
                 int sampling_frequency_in_hz,
                 int num_channels)
-      : WavFileReader(rtc::MakeUnique<WavReader>(file),
+      : WavFileReader(absl::make_unique<WavReader>(file),
                       sampling_frequency_in_hz,
                       num_channels) {}
 
@@ -325,18 +325,18 @@
   WavFileWriter(std::string filename,
                 int sampling_frequency_in_hz,
                 int num_channels)
-      : WavFileWriter(rtc::MakeUnique<WavWriter>(filename,
-                                                 sampling_frequency_in_hz,
-                                                 num_channels),
+      : WavFileWriter(absl::make_unique<WavWriter>(filename,
+                                                   sampling_frequency_in_hz,
+                                                   num_channels),
                       sampling_frequency_in_hz,
                       num_channels) {}
 
   WavFileWriter(rtc::PlatformFile file,
                 int sampling_frequency_in_hz,
                 int num_channels)
-      : WavFileWriter(rtc::MakeUnique<WavWriter>(file,
-                                                 sampling_frequency_in_hz,
-                                                 num_channels),
+      : WavFileWriter(absl::make_unique<WavWriter>(file,
+                                                   sampling_frequency_in_hz,
+                                                   num_channels),
                       sampling_frequency_in_hz,
                       num_channels) {}
 
diff --git a/modules/audio_device/mac/audio_device_mac.cc b/modules/audio_device/mac/audio_device_mac.cc
index ed490c6..11a7555 100644
--- a/modules/audio_device/mac/audio_device_mac.cc
+++ b/modules/audio_device/mac/audio_device_mac.cc
@@ -9,12 +9,12 @@
  */
 
 #include "modules/audio_device/mac/audio_device_mac.h"
+#include "absl/memory/memory.h"
 #include "modules/audio_device/audio_device_config.h"
 #include "modules/audio_device/mac/portaudio/pa_ringbuffer.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/event_wrapper.h"
 
 #include <ApplicationServices/ApplicationServices.h>
@@ -1566,7 +1566,7 @@
   }
 
   UInt32 numberDevices = size / sizeof(AudioDeviceID);
-  const auto deviceIds = rtc::MakeUnique<AudioDeviceID[]>(numberDevices);
+  const auto deviceIds = absl::make_unique<AudioDeviceID[]>(numberDevices);
   AudioBufferList* bufferList = NULL;
   UInt32 numberScopedDevices = 0;
 
diff --git a/modules/audio_device/win/audio_device_module_win.cc b/modules/audio_device/win/audio_device_module_win.cc
index 2a9daa1..b919334 100644
--- a/modules/audio_device/win/audio_device_module_win.cc
+++ b/modules/audio_device/win/audio_device_module_win.cc
@@ -84,7 +84,7 @@
     if (initialized_) {
       return 0;
     }
-    audio_device_buffer_ = rtc::MakeUnique<AudioDeviceBuffer>();
+    audio_device_buffer_ = absl::make_unique<AudioDeviceBuffer>();
     AttachAudioBuffer();
     InitStatus status;
     if (output_->Init() != 0) {
diff --git a/modules/audio_device/win/core_audio_base_win.cc b/modules/audio_device/win/core_audio_base_win.cc
index cbca15c..2f37e4b 100644
--- a/modules/audio_device/win/core_audio_base_win.cc
+++ b/modules/audio_device/win/core_audio_base_win.cc
@@ -12,11 +12,11 @@
 
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/win/windows_version.h"
 
 using Microsoft::WRL::ComPtr;
@@ -266,7 +266,7 @@
   RTC_DLOG(INFO) << __FUNCTION__ << "[" << DirectionToString(direction())
                  << "]";
 
-  audio_thread_ = rtc::MakeUnique<rtc::PlatformThread>(
+  audio_thread_ = absl::make_unique<rtc::PlatformThread>(
       Run, this, IsInput() ? "wasapi_capture_thread" : "wasapi_render_thread",
       rtc::kRealtimePriority);
   audio_thread_->Start();
diff --git a/modules/audio_device/win/core_audio_input_win.cc b/modules/audio_device/win/core_audio_input_win.cc
index fe11e02..a389393 100644
--- a/modules/audio_device/win/core_audio_input_win.cc
+++ b/modules/audio_device/win/core_audio_input_win.cc
@@ -10,12 +10,12 @@
 
 #include "modules/audio_device/win/core_audio_input_win.h"
 
+#include "absl/memory/memory.h"
 #include "modules/audio_device/audio_device_buffer.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 using Microsoft::WRL::ComPtr;
 
@@ -124,7 +124,7 @@
   // of samples (and not only multiple of 10ms) to match the optimal buffer
   // size per callback used by Core Audio.
   // TODO(henrika): can we share one FineAudioBuffer?
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
 
   // Create an IAudioCaptureClient for an initialized IAudioClient.
   // The IAudioCaptureClient interface enables a client to read input data from
diff --git a/modules/audio_device/win/core_audio_output_win.cc b/modules/audio_device/win/core_audio_output_win.cc
index 48a9767..a391109 100644
--- a/modules/audio_device/win/core_audio_output_win.cc
+++ b/modules/audio_device/win/core_audio_output_win.cc
@@ -10,12 +10,12 @@
 
 #include "modules/audio_device/win/core_audio_output_win.h"
 
+#include "absl/memory/memory.h"
 #include "modules/audio_device/audio_device_buffer.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/bind.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 using Microsoft::WRL::ComPtr;
 
@@ -125,7 +125,7 @@
   // of samples (and not only multiple of 10ms) to match the optimal
   // buffer size per callback used by Core Audio.
   // TODO(henrika): can we use a shared buffer instead?
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
 
   // Create an IAudioRenderClient for an initialized IAudioClient.
   // The IAudioRenderClient interface enables us to write output data to
diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index bbe9980..5c90a0c 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -214,6 +214,7 @@
     "../../common_audio:common_audio",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers:system_wrappers",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -522,6 +523,7 @@
       "test/conversational_speech:unittest",
       "vad:vad_unittests",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
 
@@ -642,6 +644,7 @@
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:safe_minmax",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
   }
@@ -680,6 +683,7 @@
         "aec_dump",
         "aec_dump:aec_dump_impl",
         "//testing/gtest",
+        "//third_party/abseil-cpp/absl/memory",
         "//third_party/abseil-cpp/absl/types:optional",
       ]
     }  # audioproc_f_impl
@@ -692,6 +696,7 @@
         ":audio_processing",
         "../../api:audioproc_f_api",
         "../../rtc_base:rtc_base_approved",
+        "//third_party/abseil-cpp/absl/memory",
       ]
     }  # audioproc_f
   }
diff --git a/modules/audio_processing/aec_dump/BUILD.gn b/modules/audio_processing/aec_dump/BUILD.gn
index 52a8f09..e5fee3e 100644
--- a/modules/audio_processing/aec_dump/BUILD.gn
+++ b/modules/audio_processing/aec_dump/BUILD.gn
@@ -45,6 +45,7 @@
     "../",
     "../../../rtc_base:rtc_base_approved",
     "//testing/gtest",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -69,6 +70,7 @@
       "../../../rtc_base:rtc_task_queue",
       "../../../rtc_base/system:file_wrapper",
       "../../../system_wrappers",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     deps += [ "../:audioproc_debug_proto" ]
diff --git a/modules/audio_processing/aec_dump/aec_dump_impl.cc b/modules/audio_processing/aec_dump/aec_dump_impl.cc
index 9158f9b..1b8df40 100644
--- a/modules/audio_processing/aec_dump/aec_dump_impl.cc
+++ b/modules/audio_processing/aec_dump/aec_dump_impl.cc
@@ -12,10 +12,10 @@
 
 #include "modules/audio_processing/aec_dump/aec_dump_impl.h"
 
+#include "absl/memory/memory.h"
 #include "modules/audio_processing/aec_dump/aec_dump_factory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -168,8 +168,8 @@
 }
 
 std::unique_ptr<WriteToFileTask> AecDumpImpl::CreateWriteToFileTask() {
-  return rtc::MakeUnique<WriteToFileTask>(debug_file_.get(),
-                                          &num_bytes_left_for_log_);
+  return absl::make_unique<WriteToFileTask>(debug_file_.get(),
+                                            &num_bytes_left_for_log_);
 }
 
 std::unique_ptr<AecDump> AecDumpFactory::Create(rtc::PlatformFile file,
@@ -184,8 +184,8 @@
   if (!debug_file->OpenFromFileHandle(handle)) {
     return nullptr;
   }
-  return rtc::MakeUnique<AecDumpImpl>(std::move(debug_file), max_log_size_bytes,
-                                      worker_queue);
+  return absl::make_unique<AecDumpImpl>(std::move(debug_file),
+                                        max_log_size_bytes, worker_queue);
 }
 
 std::unique_ptr<AecDump> AecDumpFactory::Create(std::string file_name,
@@ -196,8 +196,8 @@
   if (!debug_file->OpenFile(file_name.c_str(), false)) {
     return nullptr;
   }
-  return rtc::MakeUnique<AecDumpImpl>(std::move(debug_file), max_log_size_bytes,
-                                      worker_queue);
+  return absl::make_unique<AecDumpImpl>(std::move(debug_file),
+                                        max_log_size_bytes, worker_queue);
 }
 
 std::unique_ptr<AecDump> AecDumpFactory::Create(FILE* handle,
@@ -209,7 +209,7 @@
   if (!debug_file->OpenFromFileHandle(handle)) {
     return nullptr;
   }
-  return rtc::MakeUnique<AecDumpImpl>(std::move(debug_file), max_log_size_bytes,
-                                      worker_queue);
+  return absl::make_unique<AecDumpImpl>(std::move(debug_file),
+                                        max_log_size_bytes, worker_queue);
 }
 }  // namespace webrtc
diff --git a/modules/audio_processing/aec_dump/aec_dump_integration_test.cc b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
index a7d53b5..53e731a 100644
--- a/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
+++ b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
@@ -10,9 +10,9 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/audio_processing/aec_dump/mock_aec_dump.h"
 #include "modules/audio_processing/include/audio_processing.h"
-#include "rtc_base/ptr_util.h"
 
 using testing::_;
 using testing::AtLeast;
@@ -31,14 +31,14 @@
 
 std::unique_ptr<webrtc::test::MockAecDump> CreateMockAecDump() {
   auto mock_aec_dump =
-      rtc::MakeUnique<testing::StrictMock<webrtc::test::MockAecDump>>();
+      absl::make_unique<testing::StrictMock<webrtc::test::MockAecDump>>();
   EXPECT_CALL(*mock_aec_dump.get(), WriteConfig(_)).Times(AtLeast(1));
   EXPECT_CALL(*mock_aec_dump.get(), WriteInitMessage(_)).Times(AtLeast(1));
   return std::unique_ptr<webrtc::test::MockAecDump>(std::move(mock_aec_dump));
 }
 
 std::unique_ptr<webrtc::AudioFrame> CreateFakeFrame() {
-  auto fake_frame = rtc::MakeUnique<webrtc::AudioFrame>();
+  auto fake_frame = absl::make_unique<webrtc::AudioFrame>();
   fake_frame->num_channels_ = 1;
   fake_frame->sample_rate_hz_ = 48000;
   fake_frame->samples_per_channel_ = 480;
diff --git a/modules/audio_processing/agc2/BUILD.gn b/modules/audio_processing/agc2/BUILD.gn
index 8501dd9..1eb8e61 100644
--- a/modules/audio_processing/agc2/BUILD.gn
+++ b/modules/audio_processing/agc2/BUILD.gn
@@ -208,6 +208,7 @@
     "../../../rtc_base:checks",
     "../../../rtc_base:rtc_base_approved",
     "../../../rtc_base:rtc_base_tests_utils",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
diff --git a/modules/audio_processing/agc2/fixed_gain_controller_unittest.cc b/modules/audio_processing/agc2/fixed_gain_controller_unittest.cc
index d688f6a..72bb409 100644
--- a/modules/audio_processing/agc2/fixed_gain_controller_unittest.cc
+++ b/modules/audio_processing/agc2/fixed_gain_controller_unittest.cc
@@ -10,12 +10,12 @@
 
 #include "modules/audio_processing/agc2/fixed_gain_controller.h"
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_processing/agc2/agc2_testing_common.h"
 #include "modules/audio_processing/agc2/vector_float_frame.h"
 #include "modules/audio_processing/logging/apm_data_dumper.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace {
@@ -51,7 +51,7 @@
     float gain_to_apply,
     size_t rate) {
   std::unique_ptr<FixedGainController> fgc =
-      rtc::MakeUnique<FixedGainController>(&test_data_dumper);
+      absl::make_unique<FixedGainController>(&test_data_dumper);
   fgc->SetGain(gain_to_apply);
   fgc->SetSampleRate(rate);
   return fgc;
diff --git a/modules/audio_processing/agc2/rnn_vad/BUILD.gn b/modules/audio_processing/agc2/rnn_vad/BUILD.gn
index 7269b9d..6bfec6d 100644
--- a/modules/audio_processing/agc2/rnn_vad/BUILD.gn
+++ b/modules/audio_processing/agc2/rnn_vad/BUILD.gn
@@ -62,6 +62,7 @@
       "../../../../rtc_base:ptr_util",
       "../../../../test:fileutils",
       "../../../../test:test_support",
+      "//third_party/abseil-cpp/absl/memory",
     ]
   }
 
diff --git a/modules/audio_processing/agc2/rnn_vad/test_utils.cc b/modules/audio_processing/agc2/rnn_vad/test_utils.cc
index e6dd865..db38cab 100644
--- a/modules/audio_processing/agc2/rnn_vad/test_utils.cc
+++ b/modules/audio_processing/agc2/rnn_vad/test_utils.cc
@@ -10,8 +10,8 @@
 
 #include "modules/audio_processing/agc2/rnn_vad/test_utils.h"
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gtest.h"
 #include "test/testsupport/fileutils.h"
 
@@ -48,14 +48,14 @@
 
 std::unique_ptr<BinaryFileReader<float>> CreatePitchSearchTestDataReader() {
   constexpr size_t cols = 1396;
-  return rtc::MakeUnique<BinaryFileReader<float>>(
+  return absl::make_unique<BinaryFileReader<float>>(
       ResourcePath("audio_processing/agc2/rnn_vad/pitch_search_int", "dat"),
       cols);
 }
 
 std::pair<std::unique_ptr<BinaryFileReader<int16_t, float>>, const size_t>
 CreatePcmSamplesReader(const size_t frame_length) {
-  auto ptr = rtc::MakeUnique<BinaryFileReader<int16_t, float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<int16_t, float>>(
       test::ResourcePath("audio_processing/agc2/rnn_vad/samples", "pcm"),
       frame_length);
   // The last incomplete frame is ignored.
@@ -64,14 +64,14 @@
 
 ReaderPairType CreatePitchBuffer24kHzReader() {
   constexpr size_t cols = 864;
-  auto ptr = rtc::MakeUnique<BinaryFileReader<float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<float>>(
       ResourcePath("audio_processing/agc2/rnn_vad/pitch_buf_24k", "dat"), cols);
   return {std::move(ptr), rtc::CheckedDivExact(ptr->data_length(), cols)};
 }
 
 ReaderPairType CreateLpResidualAndPitchPeriodGainReader() {
   constexpr size_t num_lp_residual_coeffs = 864;
-  auto ptr = rtc::MakeUnique<BinaryFileReader<float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<float>>(
       ResourcePath("audio_processing/agc2/rnn_vad/pitch_lp_res", "dat"),
       num_lp_residual_coeffs);
   return {std::move(ptr),
@@ -81,7 +81,7 @@
 ReaderPairType CreateFftCoeffsReader() {
   constexpr size_t num_fft_points = 481;
   constexpr size_t row_size = 2 * num_fft_points;  // Real and imaginary values.
-  auto ptr = rtc::MakeUnique<BinaryFileReader<float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<float>>(
       test::ResourcePath("audio_processing/agc2/rnn_vad/fft", "dat"),
       num_fft_points);
   return {std::move(ptr), rtc::CheckedDivExact(ptr->data_length(), row_size)};
@@ -89,7 +89,7 @@
 
 ReaderPairType CreateBandEnergyCoeffsReader() {
   constexpr size_t num_bands = 22;
-  auto ptr = rtc::MakeUnique<BinaryFileReader<float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<float>>(
       test::ResourcePath("audio_processing/agc2/rnn_vad/band_energies", "dat"),
       num_bands);
   return {std::move(ptr), rtc::CheckedDivExact(ptr->data_length(), num_bands)};
@@ -97,7 +97,7 @@
 
 ReaderPairType CreateSilenceFlagsFeatureMatrixReader() {
   constexpr size_t feature_vector_size = 42;
-  auto ptr = rtc::MakeUnique<BinaryFileReader<float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<float>>(
       test::ResourcePath("audio_processing/agc2/rnn_vad/sil_features", "dat"),
       feature_vector_size);
   // Features and silence flag.
@@ -106,7 +106,7 @@
 }
 
 ReaderPairType CreateVadProbsReader() {
-  auto ptr = rtc::MakeUnique<BinaryFileReader<float>>(
+  auto ptr = absl::make_unique<BinaryFileReader<float>>(
       test::ResourcePath("audio_processing/agc2/rnn_vad/vad_prob", "dat"));
   return {std::move(ptr), ptr->data_length()};
 }
diff --git a/modules/audio_processing/include/audio_generator_factory.cc b/modules/audio_processing/include/audio_generator_factory.cc
index 9084a1e..69a5401 100644
--- a/modules/audio_processing/include/audio_generator_factory.cc
+++ b/modules/audio_processing/include/audio_generator_factory.cc
@@ -10,16 +10,16 @@
 
 #include "modules/audio_processing/include/audio_generator_factory.h"
 
+#include "absl/memory/memory.h"
 #include "common_audio/wav_file.h"
 #include "modules/audio_processing/audio_generator/file_audio_generator.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
 std::unique_ptr<AudioGenerator> AudioGeneratorFactory::Create(
     const std::string& file_name) {
   std::unique_ptr<WavReader> input_audio_file(new WavReader(file_name));
-  return rtc::MakeUnique<FileAudioGenerator>(std::move(input_audio_file));
+  return absl::make_unique<FileAudioGenerator>(std::move(input_audio_file));
 }
 
 }  // namespace webrtc
diff --git a/modules/audio_processing/test/audio_processing_simulator.cc b/modules/audio_processing/test/audio_processing_simulator.cc
index dce875e..e9ca151 100644
--- a/modules/audio_processing/test/audio_processing_simulator.cc
+++ b/modules/audio_processing/test/audio_processing_simulator.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/audio/echo_canceller3_factory.h"
 #include "common_audio/include/audio_util.h"
 #include "modules/audio_processing/aec_dump/aec_dump_factory.h"
@@ -26,7 +27,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/json.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringutils.h"
 
 namespace webrtc {
@@ -355,7 +355,7 @@
     std::unique_ptr<AudioProcessingBuilder> ap_builder)
     : settings_(settings),
       ap_builder_(ap_builder ? std::move(ap_builder)
-                             : rtc::MakeUnique<AudioProcessingBuilder>()),
+                             : absl::make_unique<AudioProcessingBuilder>()),
       analog_mic_level_(settings.initial_mic_level),
       fake_recording_device_(
           settings.initial_mic_level,
diff --git a/modules/audio_processing/test/audioproc_float_main.cc b/modules/audio_processing/test/audioproc_float_main.cc
index af81e78..900b927 100644
--- a/modules/audio_processing/test/audioproc_float_main.cc
+++ b/modules/audio_processing/test/audioproc_float_main.cc
@@ -8,11 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "absl/memory/memory.h"
 #include "api/test/audioproc_float.h"
 #include "modules/audio_processing/include/audio_processing.h"
-#include "rtc_base/ptr_util.h"
 
 int main(int argc, char* argv[]) {
   return webrtc::test::AudioprocFloat(
-      rtc::MakeUnique<webrtc::AudioProcessingBuilder>(), argc, argv);
+      absl::make_unique<webrtc::AudioProcessingBuilder>(), argc, argv);
 }
diff --git a/modules/audio_processing/test/conversational_speech/BUILD.gn b/modules/audio_processing/test/conversational_speech/BUILD.gn
index d292604..2e6e50e 100644
--- a/modules/audio_processing/test/conversational_speech/BUILD.gn
+++ b/modules/audio_processing/test/conversational_speech/BUILD.gn
@@ -25,6 +25,7 @@
     "../../../../rtc_base:rtc_base_approved",
     "../../../../test:fileutils",
     "../../../../test:test_support",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -51,6 +52,7 @@
     "../../../../common_audio",
     "../../../../rtc_base:checks",
     "../../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
   ]
   visibility = [ ":*" ]  # Only targets in this file can depend on this.
 }
diff --git a/modules/audio_processing/test/conversational_speech/generator.cc b/modules/audio_processing/test/conversational_speech/generator.cc
index f6a0b46..741a1ca 100644
--- a/modules/audio_processing/test/conversational_speech/generator.cc
+++ b/modules/audio_processing/test/conversational_speech/generator.cc
@@ -10,13 +10,13 @@
 
 #include <iostream>
 
+#include "absl/memory/memory.h"
 #include "modules/audio_processing/test/conversational_speech/config.h"
 #include "modules/audio_processing/test/conversational_speech/multiend_call.h"
 #include "modules/audio_processing/test/conversational_speech/simulator.h"
 #include "modules/audio_processing/test/conversational_speech/timing.h"
 #include "modules/audio_processing/test/conversational_speech/wavreader_factory.h"
 #include "rtc_base/flags.h"
-#include "rtc_base/ptr_util.h"
 #include "test/testsupport/fileutils.h"
 
 namespace webrtc {
@@ -61,7 +61,7 @@
 
   // Parse timing and audio tracks.
   auto wavreader_factory =
-      rtc::MakeUnique<conversational_speech::WavReaderFactory>();
+      absl::make_unique<conversational_speech::WavReaderFactory>();
   conversational_speech::MultiEndCall multiend_call(
       timing, config.audiotracks_path(), std::move(wavreader_factory));
 
diff --git a/modules/audio_processing/test/conversational_speech/simulator.cc b/modules/audio_processing/test/conversational_speech/simulator.cc
index 946aee1..c2fb780 100644
--- a/modules/audio_processing/test/conversational_speech/simulator.cc
+++ b/modules/audio_processing/test/conversational_speech/simulator.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "common_audio/include/audio_util.h"
 #include "common_audio/wav_file.h"
@@ -25,7 +26,6 @@
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/pathutils.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace test {
@@ -42,7 +42,7 @@
                            const std::string& output_path) {
   // Create map.
   auto speaker_output_file_paths_map =
-      rtc::MakeUnique<std::map<std::string, SpeakerOutputFilePaths>>();
+      absl::make_unique<std::map<std::string, SpeakerOutputFilePaths>>();
 
   // Add near-end and far-end output paths into the map.
   for (const auto& speaker_name : speaker_names) {
@@ -90,7 +90,7 @@
                        int sample_rate) {
   // Create map.
   auto speaker_wav_writers_map =
-      rtc::MakeUnique<std::map<std::string, SpeakerWavWriters>>();
+      absl::make_unique<std::map<std::string, SpeakerWavWriters>>();
 
   // Add SpeakerWavWriters instance into the map.
   for (auto it = speaker_output_file_paths.begin();
@@ -109,7 +109,7 @@
         audiotrack_readers) {
   // Create map.
   auto audiotracks_map =
-      rtc::MakeUnique<std::map<std::string, std::vector<int16_t>>>();
+      absl::make_unique<std::map<std::string, std::vector<int16_t>>>();
 
   // Add audio track vectors.
   for (auto it = audiotrack_readers.begin(); it != audiotrack_readers.end();
diff --git a/modules/audio_processing/test/fake_recording_device.cc b/modules/audio_processing/test/fake_recording_device.cc
index 214cf91..ee134ea 100644
--- a/modules/audio_processing/test/fake_recording_device.cc
+++ b/modules/audio_processing/test/fake_recording_device.cc
@@ -12,12 +12,12 @@
 
 #include <algorithm>
 
+#include "absl/memory/memory.h"
 #include "absl/types/optional.h"
 #include "modules/audio_processing/agc/gain_map_internal.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace test {
@@ -140,13 +140,14 @@
                                          int device_kind) {
   switch (device_kind) {
     case 0:
-      worker_ = rtc::MakeUnique<FakeRecordingDeviceIdentity>(initial_mic_level);
+      worker_ =
+          absl::make_unique<FakeRecordingDeviceIdentity>(initial_mic_level);
       break;
     case 1:
-      worker_ = rtc::MakeUnique<FakeRecordingDeviceLinear>(initial_mic_level);
+      worker_ = absl::make_unique<FakeRecordingDeviceLinear>(initial_mic_level);
       break;
     case 2:
-      worker_ = rtc::MakeUnique<FakeRecordingDeviceAgc1>(initial_mic_level);
+      worker_ = absl::make_unique<FakeRecordingDeviceAgc1>(initial_mic_level);
       break;
     default:
       RTC_NOTREACHED();
diff --git a/modules/audio_processing/test/fake_recording_device_unittest.cc b/modules/audio_processing/test/fake_recording_device_unittest.cc
index 95a4f80..65940f2 100644
--- a/modules/audio_processing/test/fake_recording_device_unittest.cc
+++ b/modules/audio_processing/test/fake_recording_device_unittest.cc
@@ -14,9 +14,9 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_processing/test/fake_recording_device.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -47,7 +47,7 @@
 std::unique_ptr<ChannelBuffer<float>> CreateChannelBufferWithData(
     const std::vector<std::vector<float>>& data) {
   auto buff =
-      rtc::MakeUnique<ChannelBuffer<float>>(data[0].size(), data.size());
+      absl::make_unique<ChannelBuffer<float>>(data[0].size(), data.size());
   WritesDataIntoChannelBuffer(data, buff.get());
   return buff;
 }
diff --git a/modules/bitrate_controller/BUILD.gn b/modules/bitrate_controller/BUILD.gn
index 6650e7e..f9c7156 100644
--- a/modules/bitrate_controller/BUILD.gn
+++ b/modules/bitrate_controller/BUILD.gn
@@ -42,6 +42,7 @@
     "../remote_bitrate_estimator:remote_bitrate_estimator",
     "../rtp_rtcp",
     "../rtp_rtcp:rtp_rtcp_format",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
diff --git a/modules/bitrate_controller/send_side_bandwidth_estimation.cc b/modules/bitrate_controller/send_side_bandwidth_estimation.cc
index d304516..48eea3c 100644
--- a/modules/bitrate_controller/send_side_bandwidth_estimation.cc
+++ b/modules/bitrate_controller/send_side_bandwidth_estimation.cc
@@ -16,12 +16,12 @@
 #include <limits>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "modules/remote_bitrate_estimator/include/bwe_defines.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/field_trial.h"
 #include "system_wrappers/include/metrics.h"
 
@@ -434,7 +434,7 @@
   if (bitrate_bps != current_bitrate_bps_ ||
       last_fraction_loss_ != last_logged_fraction_loss_ ||
       now_ms - last_rtc_event_log_ms_ > kRtcEventLogPeriodMs) {
-    event_log_->Log(rtc::MakeUnique<RtcEventBweUpdateLossBased>(
+    event_log_->Log(absl::make_unique<RtcEventBweUpdateLossBased>(
         bitrate_bps, last_fraction_loss_,
         expected_packets_since_last_loss_update_));
     last_logged_fraction_loss_ = last_fraction_loss_;
diff --git a/modules/congestion_controller/BUILD.gn b/modules/congestion_controller/BUILD.gn
index 5d490ae..e281bee 100644
--- a/modules/congestion_controller/BUILD.gn
+++ b/modules/congestion_controller/BUILD.gn
@@ -51,6 +51,7 @@
     "../rtp_rtcp:rtp_rtcp_format",
     "goog_cc:delay_based_bwe",
     "goog_cc:estimators",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (!build_with_mozilla) {
diff --git a/modules/congestion_controller/bbr/BUILD.gn b/modules/congestion_controller/bbr/BUILD.gn
index fdee88c..a424c11 100644
--- a/modules/congestion_controller/bbr/BUILD.gn
+++ b/modules/congestion_controller/bbr/BUILD.gn
@@ -17,6 +17,7 @@
     ":bbr_controller",
     "../../../api/transport:network_control",
     "../../../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
diff --git a/modules/congestion_controller/bbr/bbr_factory.cc b/modules/congestion_controller/bbr/bbr_factory.cc
index 3d5feba..bf0419b 100644
--- a/modules/congestion_controller/bbr/bbr_factory.cc
+++ b/modules/congestion_controller/bbr/bbr_factory.cc
@@ -11,8 +11,8 @@
 #include "modules/congestion_controller/bbr/bbr_factory.h"
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "modules/congestion_controller/bbr/bbr_network_controller.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -20,7 +20,7 @@
 
 std::unique_ptr<NetworkControllerInterface> BbrNetworkControllerFactory::Create(
     NetworkControllerConfig config) {
-  return rtc::MakeUnique<bbr::BbrNetworkController>(config);
+  return absl::make_unique<bbr::BbrNetworkController>(config);
 }
 
 TimeDelta BbrNetworkControllerFactory::GetProcessInterval() const {
diff --git a/modules/congestion_controller/goog_cc/BUILD.gn b/modules/congestion_controller/goog_cc/BUILD.gn
index 502fb34..05f2212 100644
--- a/modules/congestion_controller/goog_cc/BUILD.gn
+++ b/modules/congestion_controller/goog_cc/BUILD.gn
@@ -51,6 +51,7 @@
     "../../bitrate_controller",
     "../../remote_bitrate_estimator",
     "../../rtp_rtcp:rtp_rtcp_format",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -74,6 +75,7 @@
     "../../../rtc_base/experiments:alr_experiment",
     "../../../system_wrappers:field_trial_api",
     "../../pacing:interval_budget",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -112,6 +114,7 @@
     "../../../system_wrappers:metrics_api",
     "../../remote_bitrate_estimator",
     "../../rtp_rtcp:rtp_rtcp_format",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -134,6 +137,7 @@
     "../../../system_wrappers:metrics_api",
     "../../pacing",
     "../../remote_bitrate_estimator",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (!build_with_chromium && is_clang) {
@@ -186,6 +190,7 @@
       "../../remote_bitrate_estimator",
       "../../rtp_rtcp:rtp_rtcp_format",
       "//testing/gmock",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc
index 70318c4..0722b22 100644
--- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc
+++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.cc
@@ -12,9 +12,9 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -25,7 +25,7 @@
 }  // namespace
 
 AcknowledgedBitrateEstimator::AcknowledgedBitrateEstimator()
-    : AcknowledgedBitrateEstimator(rtc::MakeUnique<BitrateEstimator>()) {}
+    : AcknowledgedBitrateEstimator(absl::make_unique<BitrateEstimator>()) {}
 
 AcknowledgedBitrateEstimator::~AcknowledgedBitrateEstimator() {}
 
diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc
index 92a24c6..4991ee6 100644
--- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc
+++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc
@@ -12,9 +12,9 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "rtc_base/fakeclock.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -46,10 +46,10 @@
 
 AcknowledgedBitrateEstimatorTestStates CreateTestStates() {
   AcknowledgedBitrateEstimatorTestStates states;
-  auto mock_bitrate_estimator = rtc::MakeUnique<MockBitrateEstimator>();
+  auto mock_bitrate_estimator = absl::make_unique<MockBitrateEstimator>();
   states.mock_bitrate_estimator = mock_bitrate_estimator.get();
   states.acknowledged_bitrate_estimator =
-      rtc::MakeUnique<AcknowledgedBitrateEstimator>(
+      absl::make_unique<AcknowledgedBitrateEstimator>(
           std::move(mock_bitrate_estimator));
   return states;
 }
diff --git a/modules/congestion_controller/goog_cc/alr_detector.cc b/modules/congestion_controller/goog_cc/alr_detector.cc
index 0a2cc74..ed8f3a6 100644
--- a/modules/congestion_controller/goog_cc/alr_detector.cc
+++ b/modules/congestion_controller/goog_cc/alr_detector.cc
@@ -14,6 +14,7 @@
 #include <cstdio>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_alr_state.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "rtc_base/checks.h"
@@ -21,7 +22,6 @@
 #include "rtc_base/format_macros.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/field_trial.h"
 
@@ -78,7 +78,7 @@
   }
   if (event_log_ && state_changed) {
     event_log_->Log(
-        rtc::MakeUnique<RtcEventAlrState>(alr_started_time_ms_.has_value()));
+        absl::make_unique<RtcEventAlrState>(alr_started_time_ms_.has_value()));
   }
 }
 
diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe.cc b/modules/congestion_controller/goog_cc/delay_based_bwe.cc
index d3c97a5..bc39b41 100644
--- a/modules/congestion_controller/goog_cc/delay_based_bwe.cc
+++ b/modules/congestion_controller/goog_cc/delay_based_bwe.cc
@@ -15,6 +15,7 @@
 #include <cstdio>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "modules/congestion_controller/goog_cc/trendline_estimator.h"
@@ -24,7 +25,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/constructormagic.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread_annotations.h"
 #include "system_wrappers/include/field_trial.h"
 #include "system_wrappers/include/metrics.h"
@@ -272,7 +272,7 @@
     BWE_TEST_LOGGING_PLOT(1, "target_bitrate_bps", now_ms, bitrate_bps);
 
     if (event_log_) {
-      event_log_->Log(rtc::MakeUnique<RtcEventBweUpdateDelayBased>(
+      event_log_->Log(absl::make_unique<RtcEventBweUpdateDelayBased>(
           bitrate_bps, detector_state));
     }
 
diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc b/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc
index e6bbeb3..b564c1a 100644
--- a/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc
+++ b/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc
@@ -13,9 +13,9 @@
 #include <limits>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/congestion_controller/goog_cc/delay_based_bwe.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 constexpr size_t kMtu = 1200;
@@ -150,7 +150,7 @@
 DelayBasedBweTest::DelayBasedBweTest()
     : clock_(100000000),
       acknowledged_bitrate_estimator_(
-          rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
+          absl::make_unique<AcknowledgedBitrateEstimator>()),
       bitrate_estimator_(new DelayBasedBwe(nullptr)),
       stream_generator_(new test::StreamGenerator(1e6,  // Capacity.
                                                   clock_.TimeInMicroseconds())),
diff --git a/modules/congestion_controller/goog_cc/goog_cc_factory.cc b/modules/congestion_controller/goog_cc/goog_cc_factory.cc
index c18317f..d4a40f1 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_factory.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_factory.cc
@@ -10,8 +10,8 @@
 
 #include "modules/congestion_controller/goog_cc/include/goog_cc_factory.h"
 
+#include "absl/memory/memory.h"
 #include "modules/congestion_controller/goog_cc/goog_cc_network_control.h"
-#include "rtc_base/ptr_util.h"
 namespace webrtc {
 GoogCcNetworkControllerFactory::GoogCcNetworkControllerFactory(
     RtcEventLog* event_log)
@@ -19,8 +19,8 @@
 
 std::unique_ptr<NetworkControllerInterface>
 GoogCcNetworkControllerFactory::Create(NetworkControllerConfig config) {
-  return rtc::MakeUnique<webrtc_cc::GoogCcNetworkController>(event_log_,
-                                                             config);
+  return absl::make_unique<webrtc_cc::GoogCcNetworkController>(event_log_,
+                                                               config);
 }
 
 TimeDelta GoogCcNetworkControllerFactory::GetProcessInterval() const {
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
index 9e62d84..845ffb8 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h"
 #include "modules/congestion_controller/goog_cc/alr_detector.h"
 #include "modules/congestion_controller/goog_cc/include/goog_cc_factory.h"
@@ -27,7 +28,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/format_macros.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/field_trial.h"
 
@@ -117,11 +117,11 @@
     : event_log_(event_log),
       probe_controller_(new ProbeController()),
       bandwidth_estimation_(
-          rtc::MakeUnique<SendSideBandwidthEstimation>(event_log_)),
-      alr_detector_(rtc::MakeUnique<AlrDetector>()),
+          absl::make_unique<SendSideBandwidthEstimation>(event_log_)),
+      alr_detector_(absl::make_unique<AlrDetector>()),
       delay_based_bwe_(new DelayBasedBwe(event_log_)),
       acknowledged_bitrate_estimator_(
-          rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
+          absl::make_unique<AcknowledgedBitrateEstimator>()),
       last_bandwidth_(config.starting_bandwidth),
       pacing_factor_(kDefaultPaceMultiplier),
       min_pacing_rate_(DataRate::Zero()),
@@ -157,7 +157,7 @@
   ClampBitrates(&start_bitrate_bps, &min_bitrate_bps, &max_bitrate_bps);
 
   bandwidth_estimation_ =
-      rtc::MakeUnique<SendSideBandwidthEstimation>(event_log_);
+      absl::make_unique<SendSideBandwidthEstimation>(event_log_);
   bandwidth_estimation_->SetBitrates(start_bitrate_bps, min_bitrate_bps,
                                      max_bitrate_bps);
   delay_based_bwe_.reset(new DelayBasedBwe(event_log_));
diff --git a/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc b/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc
index 17e4aca..0f0d17e 100644
--- a/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc
+++ b/modules/congestion_controller/goog_cc/probe_bitrate_estimator.cc
@@ -12,13 +12,13 @@
 
 #include <algorithm>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_probe_result_failure.h"
 #include "logging/rtc_event_log/events/rtc_event_probe_result_success.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 
 namespace {
 // The minumum number of probes we need to receive feedback about in percent
@@ -108,7 +108,7 @@
                      << "] [send interval: " << send_interval_ms << " ms]"
                      << " [receive interval: " << receive_interval_ms << " ms]";
     if (event_log_) {
-      event_log_->Log(rtc::MakeUnique<RtcEventProbeResultFailure>(
+      event_log_->Log(absl::make_unique<RtcEventProbeResultFailure>(
           cluster_id, ProbeFailureReason::kInvalidSendReceiveInterval));
     }
     return -1;
@@ -141,7 +141,7 @@
                      << send_bps / 1000 << " = " << ratio
                      << " > kMaxValidRatio (" << kMaxValidRatio << ")]";
     if (event_log_) {
-      event_log_->Log(rtc::MakeUnique<RtcEventProbeResultFailure>(
+      event_log_->Log(absl::make_unique<RtcEventProbeResultFailure>(
           cluster_id, ProbeFailureReason::kInvalidSendReceiveRatio));
     }
     return -1;
@@ -164,7 +164,7 @@
   }
   if (event_log_) {
     event_log_->Log(
-        rtc::MakeUnique<RtcEventProbeResultSuccess>(cluster_id, res));
+        absl::make_unique<RtcEventProbeResultSuccess>(cluster_id, res));
   }
   estimated_bitrate_bps_ = res;
   return *estimated_bitrate_bps_;
diff --git a/modules/congestion_controller/rtp/BUILD.gn b/modules/congestion_controller/rtp/BUILD.gn
index 25b200d..ddfe813 100644
--- a/modules/congestion_controller/rtp/BUILD.gn
+++ b/modules/congestion_controller/rtp/BUILD.gn
@@ -51,6 +51,7 @@
     "../../remote_bitrate_estimator",
     "../../rtp_rtcp:rtp_rtcp_format",
     "../goog_cc",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (!build_with_mozilla) {
diff --git a/modules/congestion_controller/rtp/send_side_congestion_controller.cc b/modules/congestion_controller/rtp/send_side_congestion_controller.cc
index 78a9b94..40b4356 100644
--- a/modules/congestion_controller/rtp/send_side_congestion_controller.cc
+++ b/modules/congestion_controller/rtp/send_side_congestion_controller.cc
@@ -14,6 +14,7 @@
 #include <functional>
 #include <memory>
 #include <vector>
+#include "absl/memory/memory.h"
 #include "api/transport/network_types.h"
 #include "modules/congestion_controller/goog_cc/include/goog_cc_factory.h"
 #include "modules/remote_bitrate_estimator/include/bwe_defines.h"
@@ -23,7 +24,6 @@
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_limiter.h"
 #include "rtc_base/sequenced_task_checker.h"
 #include "rtc_base/socket.h"
@@ -31,7 +31,7 @@
 #include "system_wrappers/include/field_trial.h"
 #include "system_wrappers/include/runtime_enabled_features.h"
 
-using rtc::MakeUnique;
+using absl::make_unique;
 
 namespace webrtc {
 namespace webrtc_cc {
@@ -136,10 +136,10 @@
     if (!running_)
       return true;
     closure_();
-    // WrapUnique lets us repost this task on the TaskQueue.
-    task_queue_->PostDelayedTask(rtc::WrapUnique(this), period_ms_);
+    // absl::WrapUnique lets us repost this task on the TaskQueue.
+    task_queue_->PostDelayedTask(absl::WrapUnique(this), period_ms_);
     // Return false to tell TaskQueue to not destruct this object, since we have
-    // taken ownership with WrapUnique.
+    // taken ownership with absl::WrapUnique.
     return false;
   }
   void Stop() override {
@@ -163,7 +163,7 @@
 static PeriodicTask* StartPeriodicTask(rtc::TaskQueue* task_queue,
                                        int64_t period_ms,
                                        Closure&& closure) {
-  auto periodic_task = rtc::MakeUnique<PeriodicTaskImpl<Closure>>(
+  auto periodic_task = absl::make_unique<PeriodicTaskImpl<Closure>>(
       task_queue, period_ms, std::forward<Closure>(closure));
   PeriodicTask* periodic_task_ptr = periodic_task.get();
   task_queue->PostDelayedTask(std::move(periodic_task), period_ms);
@@ -377,8 +377,8 @@
       transport_feedback_adapter_(clock_),
       controller_factory_with_feedback_(controller_factory),
       controller_factory_fallback_(
-          rtc::MakeUnique<GoogCcNetworkControllerFactory>(event_log)),
-      pacer_controller_(MakeUnique<PacerController>(pacer_)),
+          absl::make_unique<GoogCcNetworkControllerFactory>(event_log)),
+      pacer_controller_(absl::make_unique<PacerController>(pacer_)),
       process_interval_(controller_factory_fallback_->GetProcessInterval()),
       last_report_block_time_(Timestamp::ms(clock_->TimeInMilliseconds())),
       observer_(nullptr),
@@ -416,7 +416,7 @@
   if (!network_available_ || !observer_)
     return;
   if (!control_handler_) {
-    control_handler_ = MakeUnique<send_side_cc_internal::ControlHandler>(
+    control_handler_ = absl::make_unique<send_side_cc_internal::ControlHandler>(
         observer_, pacer_controller_.get(), clock_);
   }
 
diff --git a/modules/congestion_controller/rtp/send_side_congestion_controller_unittest.cc b/modules/congestion_controller/rtp/send_side_congestion_controller_unittest.cc
index df0c62a..d610afe 100644
--- a/modules/congestion_controller/rtp/send_side_congestion_controller_unittest.cc
+++ b/modules/congestion_controller/rtp/send_side_congestion_controller_unittest.cc
@@ -74,7 +74,7 @@
                 SetPacingRates(kInitialBitrateBps * kDefaultPacingRate, _));
     EXPECT_CALL(*pacer_, CreateProbeCluster(kInitialBitrateBps * 3));
     EXPECT_CALL(*pacer_, CreateProbeCluster(kInitialBitrateBps * 5));
-    task_queue_ = rtc::MakeUnique<rtc::TaskQueue>("SSCC Test");
+    task_queue_ = absl::make_unique<rtc::TaskQueue>("SSCC Test");
     controller_.reset(new SendSideCongestionControllerForTest(
         &clock_, task_queue_.get(), &event_log_, pacer_.get(),
         kInitialBitrateBps, 0, 5 * kInitialBitrateBps, nullptr));
@@ -94,7 +94,7 @@
   void TargetBitrateTrackingSetup() {
     bandwidth_observer_ = nullptr;
     pacer_.reset(new NiceMock<MockPacedSender>());
-    task_queue_ = rtc::MakeUnique<rtc::TaskQueue>("SSCC Test");
+    task_queue_ = absl::make_unique<rtc::TaskQueue>("SSCC Test");
     controller_.reset(new SendSideCongestionControllerForTest(
         &clock_, task_queue_.get(), &event_log_, pacer_.get(),
         kInitialBitrateBps, 0, 5 * kInitialBitrateBps, nullptr));
diff --git a/modules/congestion_controller/send_side_congestion_controller.cc b/modules/congestion_controller/send_side_congestion_controller.cc
index 3cc0a8b..8ede6ed 100644
--- a/modules/congestion_controller/send_side_congestion_controller.cc
+++ b/modules/congestion_controller/send_side_congestion_controller.cc
@@ -16,6 +16,7 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "modules/bitrate_controller/include/bitrate_controller.h"
 #include "modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h"
 #include "modules/congestion_controller/probe_controller.h"
@@ -24,7 +25,6 @@
 #include "rtc_base/format_macros.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_limiter.h"
 #include "rtc_base/socket.h"
 #include "rtc_base/timeutils.h"
@@ -116,7 +116,7 @@
       bitrate_controller_(
           BitrateController::CreateBitrateController(clock_, event_log)),
       acknowledged_bitrate_estimator_(
-          rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
+          absl::make_unique<AcknowledgedBitrateEstimator>()),
       probe_controller_(new ProbeController(pacer_, clock_)),
       retransmission_rate_limiter_(
           new RateLimiter(clock, kRetransmitWindowSizeMs)),
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index ad26eb3..8467f18 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -31,6 +31,7 @@
     "../..:webrtc_common",
     "../../:typedefs",
     "../../rtc_base:checks",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (!build_with_mozilla) {
@@ -45,6 +46,7 @@
     sources = []
     deps = [
       "../../rtc_base:checks",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (rtc_desktop_capture_supported) {
       deps += [
@@ -100,6 +102,7 @@
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers:cpu_features_api",
       "../../test:test_support",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (rtc_desktop_capture_supported) {
       sources += [
@@ -136,6 +139,7 @@
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     if (is_posix || is_fuchsia) {
@@ -380,6 +384,7 @@
     "../../system_wrappers",
     "../../system_wrappers:cpu_features_api",
     "../../system_wrappers:metrics_api",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 
   if (build_with_mozilla) {
diff --git a/modules/desktop_capture/cropped_desktop_frame_unittest.cc b/modules/desktop_capture/cropped_desktop_frame_unittest.cc
index fbd488f..34aff14 100644
--- a/modules/desktop_capture/cropped_desktop_frame_unittest.cc
+++ b/modules/desktop_capture/cropped_desktop_frame_unittest.cc
@@ -11,15 +11,15 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/cropped_desktop_frame.h"
 #include "modules/desktop_capture/desktop_frame.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gtest.h"
 
 namespace webrtc {
 
 std::unique_ptr<DesktopFrame> CreateTestFrame() {
-  return rtc::MakeUnique<BasicDesktopFrame>(DesktopSize(10, 20));
+  return absl::make_unique<BasicDesktopFrame>(DesktopSize(10, 20));
 }
 
 TEST(CroppedDesktopFrameTest, DoNotCreateWrapperIfSizeIsNotChanged) {
diff --git a/modules/desktop_capture/desktop_and_cursor_composer.cc b/modules/desktop_capture/desktop_and_cursor_composer.cc
index 7656ba3..67a6919 100644
--- a/modules/desktop_capture/desktop_and_cursor_composer.cc
+++ b/modules/desktop_capture/desktop_and_cursor_composer.cc
@@ -14,13 +14,13 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/desktop_capturer.h"
 #include "modules/desktop_capture/desktop_frame.h"
 #include "modules/desktop_capture/mouse_cursor.h"
 #include "modules/desktop_capture/mouse_cursor_monitor.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/constructormagic.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -176,7 +176,7 @@
           cursor_position_.subtract(frame->top_left());
       relative_position.set(relative_position.x() * scale,
                             relative_position.y() * scale);
-      frame = rtc::MakeUnique<DesktopFrameWithCursor>(
+      frame = absl::make_unique<DesktopFrameWithCursor>(
           std::move(frame), *cursor_, relative_position);
     }
   }
diff --git a/modules/desktop_capture/desktop_frame.cc b/modules/desktop_capture/desktop_frame.cc
index 1d315e2..925be43e 100644
--- a/modules/desktop_capture/desktop_frame.cc
+++ b/modules/desktop_capture/desktop_frame.cc
@@ -14,9 +14,9 @@
 
 #include <string.h>
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/desktop_geometry.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -129,7 +129,7 @@
   if (!shared_memory)
     return nullptr;
 
-  return rtc::MakeUnique<SharedMemoryDesktopFrame>(
+  return absl::make_unique<SharedMemoryDesktopFrame>(
       size, size.width() * kBytesPerPixel, std::move(shared_memory));
 }
 
diff --git a/modules/desktop_capture/screen_drawer_linux.cc b/modules/desktop_capture/screen_drawer_linux.cc
index cbd19a9..39ceca7 100644
--- a/modules/desktop_capture/screen_drawer_linux.cc
+++ b/modules/desktop_capture/screen_drawer_linux.cc
@@ -13,11 +13,11 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/screen_drawer.h"
 #include "modules/desktop_capture/screen_drawer_lock_posix.h"
 #include "modules/desktop_capture/x11/shared_x_display.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/sleep.h"
 
 namespace webrtc {
@@ -167,13 +167,13 @@
 
 // static
 std::unique_ptr<ScreenDrawerLock> ScreenDrawerLock::Create() {
-  return rtc::MakeUnique<ScreenDrawerLockPosix>();
+  return absl::make_unique<ScreenDrawerLockPosix>();
 }
 
 // static
 std::unique_ptr<ScreenDrawer> ScreenDrawer::Create() {
   if (SharedXDisplay::CreateDefault().get()) {
-    return rtc::MakeUnique<ScreenDrawerLinux>();
+    return absl::make_unique<ScreenDrawerLinux>();
   }
   return nullptr;
 }
diff --git a/modules/desktop_capture/screen_drawer_mac.cc b/modules/desktop_capture/screen_drawer_mac.cc
index bfc162c..156a2e9 100644
--- a/modules/desktop_capture/screen_drawer_mac.cc
+++ b/modules/desktop_capture/screen_drawer_mac.cc
@@ -10,15 +10,15 @@
 
 // TODO(zijiehe): Implement ScreenDrawerMac
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/screen_drawer.h"
 #include "modules/desktop_capture/screen_drawer_lock_posix.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
 // static
 std::unique_ptr<ScreenDrawerLock> ScreenDrawerLock::Create() {
-  return rtc::MakeUnique<ScreenDrawerLockPosix>();
+  return absl::make_unique<ScreenDrawerLockPosix>();
 }
 
 // static
diff --git a/modules/desktop_capture/screen_drawer_unittest.cc b/modules/desktop_capture/screen_drawer_unittest.cc
index 71429c5..5f0f3cc 100644
--- a/modules/desktop_capture/screen_drawer_unittest.cc
+++ b/modules/desktop_capture/screen_drawer_unittest.cc
@@ -13,11 +13,11 @@
 #include <stdint.h>
 #include <atomic>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/function_view.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/random.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/sleep.h"
@@ -148,7 +148,7 @@
   ScreenDrawerLockPosix::Unlink(semaphore_name);
 
   TestScreenDrawerLock([semaphore_name]() {
-    return rtc::MakeUnique<ScreenDrawerLockPosix>(semaphore_name);
+    return absl::make_unique<ScreenDrawerLockPosix>(semaphore_name);
   });
 #elif defined(WEBRTC_WIN)
   TestScreenDrawerLock([]() { return ScreenDrawerLock::Create(); });
diff --git a/modules/desktop_capture/shared_desktop_frame.cc b/modules/desktop_capture/shared_desktop_frame.cc
index 25345d7..267b5c8 100644
--- a/modules/desktop_capture/shared_desktop_frame.cc
+++ b/modules/desktop_capture/shared_desktop_frame.cc
@@ -13,8 +13,8 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/constructormagic.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
diff --git a/modules/desktop_capture/win/screen_capturer_win_directx.cc b/modules/desktop_capture/win/screen_capturer_win_directx.cc
index 0432bfb..f038c70 100644
--- a/modules/desktop_capture/win/screen_capturer_win_directx.cc
+++ b/modules/desktop_capture/win/screen_capturer_win_directx.cc
@@ -15,11 +15,11 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/desktop_frame.h"
 #include "modules/desktop_capture/win/screen_capture_utils.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "rtc_base/trace_event.h"
 
@@ -124,7 +124,7 @@
   frames_.MoveToNextFrame();
   if (!frames_.current_frame()) {
     frames_.ReplaceCurrentFrame(
-        rtc::MakeUnique<DxgiFrame>(shared_memory_factory_.get()));
+        absl::make_unique<DxgiFrame>(shared_memory_factory_.get()));
   }
 
   DxgiDuplicatorController::Result result;
diff --git a/modules/desktop_capture/window_finder_mac.mm b/modules/desktop_capture/window_finder_mac.mm
index 7f05121..f75822a 100644
--- a/modules/desktop_capture/window_finder_mac.mm
+++ b/modules/desktop_capture/window_finder_mac.mm
@@ -14,10 +14,10 @@
 
 #include <utility>
 
-#include "modules/desktop_capture/mac/window_list_utils.h"
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/mac/desktop_configuration.h"
 #include "modules/desktop_capture/mac/desktop_configuration_monitor.h"
-#include "rtc_base/ptr_util.h"
+#include "modules/desktop_capture/mac/window_list_utils.h"
 
 namespace webrtc {
 
@@ -45,7 +45,7 @@
 // static
 std::unique_ptr<WindowFinder> WindowFinder::Create(
     const WindowFinder::Options& options) {
-  return rtc::MakeUnique<WindowFinderMac>(options.configuration_monitor);
+  return absl::make_unique<WindowFinderMac>(options.configuration_monitor);
 }
 
 }  // namespace webrtc
diff --git a/modules/desktop_capture/window_finder_unittest.cc b/modules/desktop_capture/window_finder_unittest.cc
index 70f0d86..88327aa 100644
--- a/modules/desktop_capture/window_finder_unittest.cc
+++ b/modules/desktop_capture/window_finder_unittest.cc
@@ -20,9 +20,9 @@
 #include "test/gtest.h"
 
 #if defined(USE_X11)
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/x11/shared_x_display.h"
 #include "modules/desktop_capture/x11/x_atom_cache.h"
-#include "rtc_base/ptr_util.h"
 #endif
 
 #if defined(WEBRTC_WIN)
@@ -87,7 +87,7 @@
   std::unique_ptr<XAtomCache> cache;
   const auto shared_x_display = SharedXDisplay::CreateDefault();
   if (shared_x_display) {
-    cache = rtc::MakeUnique<XAtomCache>(shared_x_display->display());
+    cache = absl::make_unique<XAtomCache>(shared_x_display->display());
     options.cache = cache.get();
   }
 #endif
@@ -143,7 +143,7 @@
   std::unique_ptr<XAtomCache> cache;
   const auto shared_x_display = SharedXDisplay::CreateDefault();
   if (shared_x_display) {
-    cache = rtc::MakeUnique<XAtomCache>(shared_x_display->display());
+    cache = absl::make_unique<XAtomCache>(shared_x_display->display());
     options.cache = cache.get();
   }
 #endif
diff --git a/modules/desktop_capture/window_finder_win.cc b/modules/desktop_capture/window_finder_win.cc
index 7c31dea..10ffe0d 100644
--- a/modules/desktop_capture/window_finder_win.cc
+++ b/modules/desktop_capture/window_finder_win.cc
@@ -12,7 +12,7 @@
 
 #include <windows.h>
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 
 namespace webrtc {
 
@@ -40,7 +40,7 @@
 // static
 std::unique_ptr<WindowFinder> WindowFinder::Create(
     const WindowFinder::Options& options) {
-  return rtc::MakeUnique<WindowFinderWin>();
+  return absl::make_unique<WindowFinderWin>();
 }
 
 }  // namespace webrtc
diff --git a/modules/desktop_capture/window_finder_x11.cc b/modules/desktop_capture/window_finder_x11.cc
index 192f929..0369432 100644
--- a/modules/desktop_capture/window_finder_x11.cc
+++ b/modules/desktop_capture/window_finder_x11.cc
@@ -10,9 +10,9 @@
 
 #include "modules/desktop_capture/window_finder_x11.h"
 
+#include "absl/memory/memory.h"
 #include "modules/desktop_capture/x11/window_list_utils.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -43,7 +43,7 @@
     return nullptr;
   }
 
-  return rtc::MakeUnique<WindowFinderX11>(options.cache);
+  return absl::make_unique<WindowFinderX11>(options.cache);
 }
 
 }  // namespace webrtc
diff --git a/modules/pacing/BUILD.gn b/modules/pacing/BUILD.gn
index 3de1d4a..3083b3f 100644
--- a/modules/pacing/BUILD.gn
+++ b/modules/pacing/BUILD.gn
@@ -49,6 +49,7 @@
     "../rtp_rtcp",
     "../rtp_rtcp:rtp_rtcp_format",
     "../utility",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
diff --git a/modules/pacing/bitrate_prober.cc b/modules/pacing/bitrate_prober.cc
index 345855b..2ad4524 100644
--- a/modules/pacing/bitrate_prober.cc
+++ b/modules/pacing/bitrate_prober.cc
@@ -12,12 +12,12 @@
 
 #include <algorithm>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_probe_cluster_created.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "modules/pacing/paced_sender.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -100,7 +100,7 @@
   cluster.pace_info.probe_cluster_id = next_cluster_id_++;
   clusters_.push(cluster);
   if (event_log_)
-    event_log_->Log(rtc::MakeUnique<RtcEventProbeClusterCreated>(
+    event_log_->Log(absl::make_unique<RtcEventProbeClusterCreated>(
         cluster.pace_info.probe_cluster_id, cluster.pace_info.send_bitrate_bps,
         cluster.pace_info.probe_cluster_min_probes,
         cluster.pace_info.probe_cluster_min_bytes));
diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc
index eda640e..c64b161 100644
--- a/modules/pacing/paced_sender.cc
+++ b/modules/pacing/paced_sender.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "modules/congestion_controller/goog_cc/alr_detector.h"
 #include "modules/include/module_common_types.h"
 #include "modules/pacing/bitrate_prober.h"
@@ -25,7 +26,6 @@
 #include "modules/utility/include/process_thread.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/field_trial.h"
 #include "system_wrappers/include/runtime_enabled_features.h"
@@ -54,7 +54,7 @@
     : PacedSender(clock,
                   packet_sender,
                   event_log,
-                  rtc::MakeUnique<RoundRobinPacketQueue>(clock)) {}
+                  absl::make_unique<RoundRobinPacketQueue>(clock)) {}
 
 PacedSender::PacedSender(const Clock* clock,
                          PacketSender* packet_sender,
@@ -62,15 +62,15 @@
                          std::unique_ptr<PacketQueueInterface> packets)
     : clock_(clock),
       packet_sender_(packet_sender),
-      alr_detector_(rtc::MakeUnique<AlrDetector>(event_log)),
+      alr_detector_(absl::make_unique<AlrDetector>(event_log)),
       drain_large_queues_(!field_trial::IsDisabled("WebRTC-Pacer-DrainQueue")),
       send_padding_if_silent_(
           field_trial::IsEnabled("WebRTC-Pacer-PadInSilence")),
       video_blocks_audio_(!field_trial::IsDisabled("WebRTC-Pacer-BlockAudio")),
       paused_(false),
-      media_budget_(rtc::MakeUnique<IntervalBudget>(0)),
-      padding_budget_(rtc::MakeUnique<IntervalBudget>(0)),
-      prober_(rtc::MakeUnique<BitrateProber>(event_log)),
+      media_budget_(absl::make_unique<IntervalBudget>(0)),
+      padding_budget_(absl::make_unique<IntervalBudget>(0)),
+      prober_(absl::make_unique<BitrateProber>(event_log)),
       probing_send_failure_(false),
       estimated_bitrate_bps_(0),
       min_send_bitrate_kbps_(0u),
diff --git a/modules/remote_bitrate_estimator/BUILD.gn b/modules/remote_bitrate_estimator/BUILD.gn
index 5b038af..828a992 100644
--- a/modules/remote_bitrate_estimator/BUILD.gn
+++ b/modules/remote_bitrate_estimator/BUILD.gn
@@ -160,6 +160,7 @@
       "../rtp_rtcp:rtp_rtcp_format",
       "../video_coding:video_coding_utility",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
   }
diff --git a/modules/remote_bitrate_estimator/test/estimators/send_side.cc b/modules/remote_bitrate_estimator/test/estimators/send_side.cc
index 1943362..a444437 100644
--- a/modules/remote_bitrate_estimator/test/estimators/send_side.cc
+++ b/modules/remote_bitrate_estimator/test/estimators/send_side.cc
@@ -12,10 +12,10 @@
 
 #include <algorithm>
 
+#include "absl/memory/memory.h"
 #include "modules/congestion_controller/goog_cc/delay_based_bwe.h"
 #include "modules/remote_bitrate_estimator/test/bwe_test_logging.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace testing {
@@ -31,7 +31,7 @@
                                                      observer,
                                                      &event_log_)),
       acknowledged_bitrate_estimator_(
-          rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
+          absl::make_unique<AcknowledgedBitrateEstimator>()),
       bwe_(new DelayBasedBwe(nullptr)),
       feedback_observer_(bitrate_controller_.get()),
       clock_(clock),
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 40f7946..b8a0853 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -223,6 +223,7 @@
     "../../system_wrappers:metrics_api",
     "../audio_coding:audio_format_conversion",
     "../remote_bitrate_estimator",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -252,6 +253,7 @@
     "../../rtc_base:rtc_task_queue",
     "../../rtc_base:weak_ptr",
     "../../system_wrappers",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -427,6 +429,7 @@
       "../../test:test_common",
       "../../test:test_support",
       "../audio_coding:audio_format_conversion",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
   }
diff --git a/modules/rtp_rtcp/source/rtcp_sender.cc b/modules/rtp_rtcp/source/rtcp_sender.cc
index 515d858..55f545c 100644
--- a/modules/rtp_rtcp/source/rtcp_sender.cc
+++ b/modules/rtp_rtcp/source/rtcp_sender.cc
@@ -14,6 +14,7 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
@@ -38,7 +39,6 @@
 #include "rtc_base/constructormagic.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/trace_event.h"
 
 namespace webrtc {
@@ -79,7 +79,8 @@
       if (transport_->SendRtcp(packet.data(), packet.size())) {
         bytes_sent += packet.size();
         if (event_log_) {
-          event_log_->Log(rtc::MakeUnique<RtcEventRtcpPacketOutgoing>(packet));
+          event_log_->Log(
+              absl::make_unique<RtcEventRtcpPacketOutgoing>(packet));
         }
       }
     });
@@ -921,7 +922,7 @@
   auto callback = [&](rtc::ArrayView<const uint8_t> packet) {
     if (transport_->SendRtcp(packet.data(), packet.size())) {
       if (event_log_)
-        event_log_->Log(rtc::MakeUnique<RtcEventRtcpPacketOutgoing>(packet));
+        event_log_->Log(absl::make_unique<RtcEventRtcpPacketOutgoing>(packet));
     } else {
       send_failure = true;
     }
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver.cc b/modules/rtp_rtcp/source/rtcp_transceiver.cc
index f8f7750..9a17929 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver.cc
@@ -12,17 +12,17 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 
 namespace webrtc {
 
 RtcpTransceiver::RtcpTransceiver(const RtcpTransceiverConfig& config)
     : task_queue_(config.task_queue),
-      rtcp_transceiver_(rtc::MakeUnique<RtcpTransceiverImpl>(config)),
+      rtcp_transceiver_(absl::make_unique<RtcpTransceiverImpl>(config)),
       ptr_factory_(rtcp_transceiver_.get()),
       // Creating first weak ptr can be done on any thread, but is not
       // thread-safe, thus do it at construction. Creating second (e.g. making a
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
index 5cfe019..a4da63a 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
@@ -12,6 +12,7 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/call/transport.h"
 #include "api/video/video_bitrate_allocation.h"
 #include "modules/rtp_rtcp/include/receive_statistics.h"
@@ -30,7 +31,6 @@
 #include "modules/rtp_rtcp/source/time_util.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/task_queue.h"
 #include "rtc_base/timeutils.h"
 
@@ -334,7 +334,7 @@
       if (!ptr_)
         return true;
       ptr_->SendPeriodicCompoundPacket();
-      task_queue_->PostDelayedTask(rtc::WrapUnique(this),
+      task_queue_->PostDelayedTask(absl::WrapUnique(this),
                                    ptr_->config_.report_period_ms);
       return false;
     }
@@ -346,7 +346,7 @@
 
   RTC_DCHECK(config_.schedule_periodic_compound_packets);
 
-  auto task = rtc::MakeUnique<SendPeriodicCompoundPacketTask>(
+  auto task = absl::make_unique<SendPeriodicCompoundPacketTask>(
       config_.task_queue, ptr_factory_.GetWeakPtr());
   if (delay_ms > 0)
     config_.task_queue->PostDelayedTask(std::move(task), delay_ms);
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc
index c2ec58a..1675b66 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc
@@ -12,6 +12,7 @@
 
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/video/video_bitrate_allocation.h"
 #include "modules/rtp_rtcp/include/receive_statistics.h"
 #include "modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
@@ -21,7 +22,6 @@
 #include "modules/rtp_rtcp/source/time_util.h"
 #include "rtc_base/event.h"
 #include "rtc_base/fakeclock.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/task_queue.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc b/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc
index 74986bc..1305d9a 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc
@@ -12,10 +12,10 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
 #include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/mock_transport.h"
@@ -77,7 +77,7 @@
 
   std::unique_ptr<RtcpTransceiver> rtcp_transceiver;
   queue.PostTask([&] {
-    rtcp_transceiver = rtc::MakeUnique<RtcpTransceiver>(config);
+    rtcp_transceiver = absl::make_unique<RtcpTransceiver>(config);
     rtcp_transceiver->SendCompoundPacket();
   });
   WaitPostedTasks(&queue);
@@ -89,7 +89,7 @@
   RtcpTransceiverConfig config;
   config.outgoing_transport = &outgoing_transport;
   config.task_queue = &queue;
-  auto rtcp_transceiver = rtc::MakeUnique<RtcpTransceiver>(config);
+  auto rtcp_transceiver = absl::make_unique<RtcpTransceiver>(config);
 
   queue.PostTask([&] { rtcp_transceiver.reset(); });
   WaitPostedTasks(&queue);
@@ -116,7 +116,7 @@
   RtcpTransceiver rtcp_transceiver(config);
   rtc::Event observer_deleted(false, false);
 
-  auto observer = rtc::MakeUnique<MockMediaReceiverRtcpObserver>();
+  auto observer = absl::make_unique<MockMediaReceiverRtcpObserver>();
   EXPECT_CALL(*observer, OnSenderReport(kRemoteSsrc, _, 1));
   EXPECT_CALL(*observer, OnSenderReport(kRemoteSsrc, _, 2)).Times(0);
 
@@ -142,7 +142,7 @@
   config.outgoing_transport = &null_transport;
   config.task_queue = &queue;
   RtcpTransceiver rtcp_transceiver(config);
-  auto observer = rtc::MakeUnique<MockMediaReceiverRtcpObserver>();
+  auto observer = absl::make_unique<MockMediaReceiverRtcpObserver>();
   rtcp_transceiver.AddMediaReceiverRtcpObserver(kRemoteSsrc, observer.get());
 
   rtc::Event queue_blocker(false, false);
@@ -199,7 +199,7 @@
 
   EXPECT_CALL(outgoing_transport, SendRtcp(_, _)).Times(0);
 
-  auto rtcp_transceiver = rtc::MakeUnique<RtcpTransceiver>(config);
+  auto rtcp_transceiver = absl::make_unique<RtcpTransceiver>(config);
   rtc::Event pause(false, false);
   queue.PostTask([&] {
     pause.Wait(rtc::Event::kForever);
diff --git a/modules/rtp_rtcp/source/rtp_packet_history.cc b/modules/rtp_rtcp/source/rtp_packet_history.cc
index 4fd384d..62f1c82 100644
--- a/modules/rtp_rtcp/source/rtp_packet_history.cc
+++ b/modules/rtp_rtcp/source/rtp_packet_history.cc
@@ -14,10 +14,10 @@
 #include <limits>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 
 namespace webrtc {
@@ -143,7 +143,7 @@
     // Remove from history and return actual packet instance.
     return RemovePacket(rtp_it);
   }
-  return rtc::MakeUnique<RtpPacketToSend>(*packet.packet);
+  return absl::make_unique<RtpPacketToSend>(*packet.packet);
 }
 
 absl::optional<RtpPacketHistory::PacketState> RtpPacketHistory::GetPacketState(
@@ -203,7 +203,7 @@
     }
   }
 
-  return rtc::MakeUnique<RtpPacketToSend>(*best_packet);
+  return absl::make_unique<RtpPacketToSend>(*best_packet);
 }
 
 void RtpPacketHistory::Reset() {
diff --git a/modules/rtp_rtcp/source/rtp_sender.cc b/modules/rtp_rtcp/source/rtp_sender.cc
index 42cdcf8..e0347f0 100644
--- a/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/modules/rtp_rtcp/source/rtp_sender.cc
@@ -14,6 +14,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h"
 #include "logging/rtc_event_log/rtc_event_log.h"
 #include "modules/remote_bitrate_estimator/test/bwe_test_logging.h"
@@ -29,7 +30,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_limiter.h"
 #include "rtc_base/timeutils.h"
 #include "rtc_base/trace_event.h"
@@ -687,7 +687,7 @@
                      ? static_cast<int>(packet.size())
                      : -1;
     if (event_log_ && bytes_sent > 0) {
-      event_log_->Log(rtc::MakeUnique<RtcEventRtpPacketOutgoing>(
+      event_log_->Log(absl::make_unique<RtcEventRtpPacketOutgoing>(
           packet, pacing_info.probe_cluster_id));
     }
   }
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index 86b0aa3..e1c39e7 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -11,6 +11,7 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/video/video_timing.h"
 #include "logging/rtc_event_log/events/rtc_event.h"
 #include "logging/rtc_event_log/mock/mock_rtc_event_log.h"
@@ -28,7 +29,6 @@
 #include "modules/rtp_rtcp/source/rtp_utility.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/buffer.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_limiter.h"
 #include "test/field_trial.h"
 #include "test/gmock.h"
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index efac87c..3b77a15 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "modules/rtp_rtcp/source/byte_io.h"
 #include "modules/rtp_rtcp/source/rtp_format_video_generic.h"
@@ -27,7 +28,6 @@
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/trace_event.h"
 
 namespace webrtc {
@@ -289,7 +289,7 @@
   rtp_header->SetPayloadType(payload_type);
   rtp_header->SetTimestamp(rtp_timestamp);
   rtp_header->set_capture_time_ms(capture_time_ms);
-  auto last_packet = rtc::MakeUnique<RtpPacketToSend>(*rtp_header);
+  auto last_packet = absl::make_unique<RtpPacketToSend>(*rtp_header);
 
   size_t fec_packet_overhead;
   bool red_enabled;
@@ -368,7 +368,7 @@
   for (size_t i = 0; i < num_packets; ++i) {
     bool last = (i + 1) == num_packets;
     auto packet = last ? std::move(last_packet)
-                       : rtc::MakeUnique<RtpPacketToSend>(*rtp_header);
+                       : absl::make_unique<RtpPacketToSend>(*rtp_header);
     if (!packetizer->NextPacket(packet.get()))
       return false;
     RTC_DCHECK_LE(packet->payload_size(),
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 68d4426..fc2f943 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -296,6 +296,7 @@
     "../../rtc_base:checks",
     "../../rtc_base:rtc_base",
     "../../system_wrappers:metrics_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/libyuv",
   ]
 
@@ -413,6 +414,7 @@
     "../../system_wrappers",
     "../../system_wrappers:field_trial_api",
     "../../system_wrappers:metrics_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
     "//third_party/libyuv",
   ]
@@ -480,6 +482,7 @@
     "../../rtc_base:rtc_base",
     "../../system_wrappers",
     "../rtp_rtcp:rtp_rtcp_format",
+    "//third_party/abseil-cpp/absl/memory",
   ]
   if (rtc_build_libvpx) {
     deps += [ rtc_libvpx_dir ]
@@ -672,6 +675,7 @@
       "../../test:video_test_common",
       "../../test:video_test_support",
       "../rtp_rtcp:rtp_rtcp_format",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
@@ -721,6 +725,7 @@
       "../../test:test_support",
       "../../test:video_test_common",
       "../rtp_rtcp:rtp_rtcp_format",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
 
@@ -842,6 +847,7 @@
       "../../test:video_test_common",
       "../../test:video_test_support",
       "../rtp_rtcp:rtp_rtcp_format",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (rtc_build_libvpx) {
       deps += [ rtc_libvpx_dir ]
diff --git a/modules/video_coding/codecs/h264/h264.cc b/modules/video_coding/codecs/h264/h264.cc
index 93d4750..aff9f7d 100644
--- a/modules/video_coding/codecs/h264/h264.cc
+++ b/modules/video_coding/codecs/h264/h264.cc
@@ -19,9 +19,9 @@
 #include "modules/video_coding/codecs/h264/h264_encoder_impl.h"
 #endif
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -87,7 +87,7 @@
 #if defined(WEBRTC_USE_H264)
   RTC_CHECK(g_rtc_use_h264);
   RTC_LOG(LS_INFO) << "Creating H264EncoderImpl.";
-  return rtc::MakeUnique<H264EncoderImpl>(codec);
+  return absl::make_unique<H264EncoderImpl>(codec);
 #else
   RTC_NOTREACHED();
   return nullptr;
@@ -103,7 +103,7 @@
 #if defined(WEBRTC_USE_H264)
   RTC_CHECK(g_rtc_use_h264);
   RTC_LOG(LS_INFO) << "Creating H264DecoderImpl.";
-  return rtc::MakeUnique<H264DecoderImpl>();
+  return absl::make_unique<H264DecoderImpl>();
 #else
   RTC_NOTREACHED();
   return nullptr;
diff --git a/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
index 2377285..6c6fae8 100644
--- a/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
+++ b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
@@ -10,10 +10,10 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/test/create_simulcast_test_fixture.h"
 #include "api/test/simulcast_test_fixture.h"
 #include "modules/video_coding/codecs/h264/include/h264.h"
-#include "rtc_base/ptr_util.h"
 #include "test/function_video_decoder_factory.h"
 #include "test/function_video_encoder_factory.h"
 #include "test/gtest.h"
@@ -24,10 +24,10 @@
 namespace {
 std::unique_ptr<SimulcastTestFixture> CreateSpecificSimulcastTestFixture() {
   std::unique_ptr<VideoEncoderFactory> encoder_factory =
-      rtc::MakeUnique<FunctionVideoEncoderFactory>(
+      absl::make_unique<FunctionVideoEncoderFactory>(
           []() { return H264Encoder::Create(cricket::VideoCodec("H264")); });
   std::unique_ptr<VideoDecoderFactory> decoder_factory =
-      rtc::MakeUnique<FunctionVideoDecoderFactory>(
+      absl::make_unique<FunctionVideoDecoderFactory>(
           []() { return H264Decoder::Create(); });
   return CreateSimulcastTestFixture(std::move(encoder_factory),
                                     std::move(decoder_factory),
diff --git a/modules/video_coding/codecs/multiplex/test/multiplex_adapter_unittest.cc b/modules/video_coding/codecs/multiplex/test/multiplex_adapter_unittest.cc
index be5c2cc..064e8b3 100644
--- a/modules/video_coding/codecs/multiplex/test/multiplex_adapter_unittest.cc
+++ b/modules/video_coding/codecs/multiplex/test/multiplex_adapter_unittest.cc
@@ -8,6 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "absl/memory/memory.h"
 #include "api/test/mock_video_decoder_factory.h"
 #include "api/test/mock_video_encoder_factory.h"
 #include "api/video_codecs/sdp_video_format.h"
@@ -20,7 +21,6 @@
 #include "modules/video_coding/codecs/test/video_codec_unittest.h"
 #include "modules/video_coding/codecs/vp9/include/vp9.h"
 #include "rtc_base/keep_ref_until_done.h"
-#include "rtc_base/ptr_util.h"
 #include "test/video_codec_settings.h"
 
 using testing::_;
@@ -40,12 +40,12 @@
 
  protected:
   std::unique_ptr<VideoDecoder> CreateDecoder() override {
-    return rtc::MakeUnique<MultiplexDecoderAdapter>(
+    return absl::make_unique<MultiplexDecoderAdapter>(
         decoder_factory_.get(), SdpVideoFormat(kMultiplexAssociatedCodecName));
   }
 
   std::unique_ptr<VideoEncoder> CreateEncoder() override {
-    return rtc::MakeUnique<MultiplexEncoderAdapter>(
+    return absl::make_unique<MultiplexEncoderAdapter>(
         encoder_factory_.get(), SdpVideoFormat(kMultiplexAssociatedCodecName));
   }
 
@@ -65,7 +65,7 @@
         yuv_buffer->StrideY(), yuv_buffer->DataU(), yuv_buffer->StrideU(),
         yuv_buffer->DataV(), yuv_buffer->StrideV(), yuv_buffer->DataY(),
         yuv_buffer->StrideY(), rtc::KeepRefUntilDone(yuv_buffer));
-    return rtc::WrapUnique<VideoFrame>(
+    return absl::WrapUnique<VideoFrame>(
         new VideoFrame(yuva_buffer, 123 /* RTP timestamp */,
                        345 /* render_time_ms */, kVideoRotation_0));
   }
@@ -78,7 +78,7 @@
         yuva_buffer->StrideA(), yuva_buffer->DataU(), yuva_buffer->StrideU(),
         yuva_buffer->DataV(), yuva_buffer->StrideV(),
         rtc::KeepRefUntilDone(yuva_frame.video_frame_buffer()));
-    return rtc::WrapUnique<VideoFrame>(
+    return absl::WrapUnique<VideoFrame>(
         new VideoFrame(axx_buffer, 123 /* RTP timestamp */,
                        345 /* render_time_ms */, kVideoRotation_0));
   }
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
index beabdaa..8cfbbfd 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
@@ -14,6 +14,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "call/video_config.h"
 #include "common_types.h"  // NOLINT(build/include)
@@ -28,7 +29,6 @@
 #include "rtc_base/cpu_time.h"
 #include "rtc_base/event.h"
 #include "rtc_base/file.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/strings/string_builder.h"
 #include "system_wrappers/include/cpu_info.h"
 #include "system_wrappers/include/sleep.h"
@@ -380,8 +380,8 @@
 };
 
 VideoCodecTestFixtureImpl::VideoCodecTestFixtureImpl(Config config)
-    : encoder_factory_(rtc::MakeUnique<InternalEncoderFactory>()),
-      decoder_factory_(rtc::MakeUnique<InternalDecoderFactory>()),
+    : encoder_factory_(absl::make_unique<InternalEncoderFactory>()),
+      decoder_factory_(absl::make_unique<InternalDecoderFactory>()),
       config_(config) {}
 
 VideoCodecTestFixtureImpl::VideoCodecTestFixtureImpl(
@@ -647,7 +647,7 @@
 
   task_queue->SendTask([this]() {
     CreateEncoderAndDecoder();
-    processor_ = rtc::MakeUnique<VideoProcessor>(
+    processor_ = absl::make_unique<VideoProcessor>(
         encoder_.get(), &decoders_, source_frame_reader_.get(), config_,
         &stats_,
         encoded_frame_writers_.empty() ? nullptr : &encoded_frame_writers_,
diff --git a/modules/video_coding/codecs/test/videocodec_test_libvpx.cc b/modules/video_coding/codecs/test/videocodec_test_libvpx.cc
index ca2e80d..3bd0fe4 100644
--- a/modules/video_coding/codecs/test/videocodec_test_libvpx.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_libvpx.cc
@@ -10,6 +10,7 @@
 
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/test/create_videocodec_test_fixture.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "media/base/mediaconstants.h"
@@ -18,7 +19,6 @@
 #include "media/engine/simulcast_encoder_adapter.h"
 #include "modules/video_coding/utility/vp8_header_parser.h"
 #include "modules/video_coding/utility/vp9_uncompressed_header_parser.h"
-#include "rtc_base/ptr_util.h"
 #include "test/function_video_encoder_factory.h"
 #include "test/gtest.h"
 #include "test/testsupport/fileutils.h"
@@ -98,7 +98,7 @@
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, false,
                           kCifWidth, kCifHeight);
   config.num_frames = kNumFramesShort;
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -116,7 +116,7 @@
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, false,
                           kCifWidth, kCifHeight);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -140,7 +140,7 @@
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, false,
                           kCifWidth, kCifHeight);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -167,7 +167,7 @@
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, true, true, false,
                           kCifWidth, kCifHeight);
   config.num_frames = kNumFramesShort;
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -185,7 +185,7 @@
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 1, 1, false, true, true,
                           kCifWidth, kCifHeight);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -209,7 +209,7 @@
   config.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, true, true, false,
                           kCifWidth, kCifHeight);
   config.num_frames = kNumFramesShort;
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -245,7 +245,7 @@
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, true, true, false,
                           kCifWidth, kCifHeight);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -279,7 +279,7 @@
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, true, true, false,
                           kCifWidth, kCifHeight);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -318,7 +318,7 @@
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 3, true, true, false,
                           kCifWidth, kCifHeight);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -356,7 +356,7 @@
   config.num_frames = 100;
   config.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false,
                           1280, 720);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -381,13 +381,13 @@
   config.num_frames = 100;
   config.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false,
                           1280, 720);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
 
   InternalEncoderFactory internal_encoder_factory;
   std::unique_ptr<VideoEncoderFactory> adapted_encoder_factory =
-      rtc::MakeUnique<FunctionVideoEncoderFactory>([&]() {
-        return rtc::MakeUnique<SimulcastEncoderAdapter>(
+      absl::make_unique<FunctionVideoEncoderFactory>([&]() {
+        return absl::make_unique<SimulcastEncoderAdapter>(
             &internal_encoder_factory, SdpVideoFormat(cricket::kVp8CodecName));
       });
   std::unique_ptr<InternalDecoderFactory> internal_decoder_factory(
@@ -418,7 +418,7 @@
   config.num_frames = 100;
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 3, 3, true, true, false,
                           1280, 720);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -439,7 +439,7 @@
   config.print_frame_level_stats = true;
   config.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false,
                           1280, 720);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
@@ -466,7 +466,7 @@
   config.print_frame_level_stats = true;
   config.SetCodecSettings(cricket::kVp9CodecName, 1, 3, 3, true, true, false,
                           1280, 720);
-  const auto frame_checker = rtc::MakeUnique<QpFrameChecker>();
+  const auto frame_checker = absl::make_unique<QpFrameChecker>();
   config.encoded_frame_checker = frame_checker.get();
   auto fixture = CreateVideoCodecTestFixture(config);
 
diff --git a/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc b/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc
index f8580fc..4fc4c3a 100644
--- a/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc
@@ -12,12 +12,12 @@
 #include <tuple>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/test/create_videocodec_test_fixture.h"
 #include "common_types.h"  // NOLINT(build/include)
 #include "media/base/mediaconstants.h"
 #include "modules/video_coding/codecs/test/android_codec_factory_helper.h"
 #include "modules/video_coding/codecs/test/videocodec_test_fixture_impl.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gtest.h"
 #include "test/testsupport/fileutils.h"
 
@@ -71,7 +71,7 @@
 TEST(VideoCodecTestMediaCodec, ForemanCif500kbpsH264CBP) {
   auto config = CreateConfig();
   const auto frame_checker =
-      rtc::MakeUnique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
+      absl::make_unique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
   config.encoded_frame_checker = frame_checker.get();
   config.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, false,
                           352, 288);
@@ -96,7 +96,7 @@
 TEST(VideoCodecTestMediaCodec, DISABLED_ForemanCif500kbpsH264CHP) {
   auto config = CreateConfig();
   const auto frame_checker =
-      rtc::MakeUnique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
+      absl::make_unique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
 
   config.h264_codec_settings.profile = H264::kProfileConstrainedHigh;
   config.encoded_frame_checker = frame_checker.get();
diff --git a/modules/video_coding/codecs/test/videocodec_test_openh264.cc b/modules/video_coding/codecs/test/videocodec_test_openh264.cc
index a0743d1..e5cf71b 100644
--- a/modules/video_coding/codecs/test/videocodec_test_openh264.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_openh264.cc
@@ -40,7 +40,7 @@
 
 TEST(VideoCodecTestOpenH264, ConstantHighBitrate) {
   auto frame_checker =
-      rtc::MakeUnique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
+      absl::make_unique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, true, false,
                           kCifWidth, kCifHeight);
@@ -61,7 +61,7 @@
 // large frames into multiple slices and limit length of NAL units.
 TEST(VideoCodecTestOpenH264, SingleNalUnit) {
   auto frame_checker =
-      rtc::MakeUnique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
+      absl::make_unique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
   auto config = CreateConfig();
   config.h264_codec_settings.packetization_mode =
       H264PacketizationMode::SingleNalUnit;
diff --git a/modules/video_coding/codecs/test/videocodec_test_videotoolbox.cc b/modules/video_coding/codecs/test/videocodec_test_videotoolbox.cc
index a5667bc..f31ff54 100644
--- a/modules/video_coding/codecs/test/videocodec_test_videotoolbox.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_videotoolbox.cc
@@ -54,7 +54,7 @@
 // longer in use.
 MAYBE_TEST(VideoCodecTestVideoToolbox, ForemanCif500kbpsH264CBP) {
   const auto frame_checker =
-      rtc::MakeUnique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
+      absl::make_unique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
   auto config = CreateConfig();
   config.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, false,
                           352, 288);
@@ -70,7 +70,7 @@
 
 MAYBE_TEST(VideoCodecTestVideoToolbox, ForemanCif500kbpsH264CHP) {
   const auto frame_checker =
-      rtc::MakeUnique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
+      absl::make_unique<VideoCodecTestFixtureImpl::H264KeyframeChecker>();
   auto config = CreateConfig();
   config.h264_codec_settings.profile = H264::kProfileConstrainedHigh;
   config.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, false,
diff --git a/modules/video_coding/codecs/test/videoprocessor.cc b/modules/video_coding/codecs/test/videoprocessor.cc
index 24a0f01..71206a2 100644
--- a/modules/video_coding/codecs/test/videoprocessor.cc
+++ b/modules/video_coding/codecs/test/videoprocessor.cc
@@ -219,7 +219,7 @@
 
   for (size_t i = 0; i < num_simulcast_or_spatial_layers_; ++i) {
     decode_callback_.push_back(
-        rtc::MakeUnique<VideoProcessorDecodeCompleteCallback>(this, i));
+        absl::make_unique<VideoProcessorDecodeCompleteCallback>(this, i));
     RTC_CHECK_EQ(
         decoders_->at(i)->InitDecode(&config_.codec_settings,
                                      static_cast<int>(config_.NumberOfCores())),
diff --git a/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
index 8d70bf7..da7b72b 100644
--- a/modules/video_coding/codecs/test/videoprocessor_unittest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
@@ -10,6 +10,7 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/test/videocodec_test_fixture.h"
 #include "api/video/i420_buffer.h"
 #include "common_types.h"  // NOLINT(build/include)
@@ -19,7 +20,6 @@
 #include "modules/video_coding/include/mock/mock_video_codec_interface.h"
 #include "modules/video_coding/include/video_coding.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/task_queue_for_test.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -54,7 +54,7 @@
     EXPECT_CALL(frame_reader_mock_, FrameLength())
         .WillRepeatedly(Return(kFrameSize));
     q_.SendTask([this] {
-      video_processor_ = rtc::MakeUnique<VideoProcessor>(
+      video_processor_ = absl::make_unique<VideoProcessor>(
           &encoder_mock_, &decoders_, &frame_reader_mock_, config_, &stats_,
           nullptr /* encoded_frame_writer */,
           nullptr /* decoded_frame_writer */);
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc
index 9df5544..49959ef 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc
@@ -11,11 +11,11 @@
 #include <algorithm>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "common_video/libyuv/include/webrtc_libyuv.h"
 #include "modules/video_coding/codecs/vp8/libvpx_vp8_decoder.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/exp_filter.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "system_wrappers/include/field_trial.h"
 #include "system_wrappers/include/metrics.h"
@@ -56,7 +56,7 @@
 }  // namespace
 
 std::unique_ptr<VP8Decoder> VP8Decoder::Create() {
-  return rtc::MakeUnique<LibvpxVp8Decoder>();
+  return absl::make_unique<LibvpxVp8Decoder>();
 }
 
 class LibvpxVp8Decoder::QpSmoother {
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
index c345027..ffe28d6 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
@@ -12,12 +12,12 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "common_video/libyuv/include/webrtc_libyuv.h"
 #include "modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h"
 #include "modules/video_coding/utility/simulcast_rate_allocator.h"
 #include "modules/video_coding/utility/simulcast_utility.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "rtc_base/trace_event.h"
 #include "system_wrappers/include/field_trial.h"
@@ -123,7 +123,7 @@
 }  // namespace
 
 std::unique_ptr<VP8Encoder> VP8Encoder::Create() {
-  return rtc::MakeUnique<LibvpxVp8Encoder>();
+  return absl::make_unique<LibvpxVp8Encoder>();
 }
 
 vpx_enc_frame_flags_t LibvpxVp8Encoder::EncodeFlags(
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc
index d8c0dbb..5f974d6 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc
@@ -10,10 +10,10 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/test/create_simulcast_test_fixture.h"
 #include "api/test/simulcast_test_fixture.h"
 #include "modules/video_coding/codecs/vp8/include/vp8.h"
-#include "rtc_base/ptr_util.h"
 #include "test/function_video_decoder_factory.h"
 #include "test/function_video_encoder_factory.h"
 #include "test/gtest.h"
@@ -24,10 +24,10 @@
 namespace {
 std::unique_ptr<SimulcastTestFixture> CreateSpecificSimulcastTestFixture() {
   std::unique_ptr<VideoEncoderFactory> encoder_factory =
-      rtc::MakeUnique<FunctionVideoEncoderFactory>(
+      absl::make_unique<FunctionVideoEncoderFactory>(
           []() { return VP8Encoder::Create(); });
   std::unique_ptr<VideoDecoderFactory> decoder_factory =
-      rtc::MakeUnique<FunctionVideoDecoderFactory>(
+      absl::make_unique<FunctionVideoDecoderFactory>(
           []() { return VP8Decoder::Create(); });
   return CreateSimulcastTestFixture(std::move(encoder_factory),
                                     std::move(decoder_factory),
diff --git a/modules/video_coding/codecs/vp8/temporal_layers.cc b/modules/video_coding/codecs/vp8/temporal_layers.cc
index 9ee5ce3..1372f7a 100644
--- a/modules/video_coding/codecs/vp8/temporal_layers.cc
+++ b/modules/video_coding/codecs/vp8/temporal_layers.cc
@@ -14,13 +14,13 @@
 #include <set>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "modules/include/module_common_types.h"
 #include "modules/video_coding/codecs/vp8/default_temporal_layers.h"
 #include "modules/video_coding/codecs/vp8/screenshare_layers.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/field_trial.h"
 
@@ -51,10 +51,10 @@
     size_t spatial_id) {
   if (IsConferenceModeScreenshare(codec) && spatial_id == 0) {
     // Conference mode temporal layering for screen content in base stream.
-    return rtc::MakeUnique<ScreenshareLayers>(2, Clock::GetRealTimeClock());
+    return absl::make_unique<ScreenshareLayers>(2, Clock::GetRealTimeClock());
   }
 
-  return rtc::MakeUnique<DefaultTemporalLayers>(
+  return absl::make_unique<DefaultTemporalLayers>(
       NumTemporalLayers(codec, spatial_id));
 }
 
@@ -64,10 +64,10 @@
   if (IsConferenceModeScreenshare(codec) && spatial_id == 0) {
     // Conference mode temporal layering for screen content in base stream,
     // use generic checker.
-    return rtc::MakeUnique<TemporalLayersChecker>(2);
+    return absl::make_unique<TemporalLayersChecker>(2);
   }
 
-  return rtc::MakeUnique<DefaultTemporalLayersChecker>(
+  return absl::make_unique<DefaultTemporalLayersChecker>(
       NumTemporalLayers(codec, spatial_id));
 }
 
diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc
index 39ab7b3..2877ece 100644
--- a/modules/video_coding/codecs/vp9/vp9_impl.cc
+++ b/modules/video_coding/codecs/vp9/vp9_impl.cc
@@ -20,6 +20,7 @@
 #include "vpx/vpx_decoder.h"
 #include "vpx/vpx_encoder.h"
 
+#include "absl/memory/memory.h"
 #include "common_video/include/video_frame_buffer.h"
 #include "common_video/libyuv/include/webrtc_libyuv.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@@ -27,7 +28,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/keep_ref_until_done.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "rtc_base/trace_event.h"
 
@@ -59,12 +59,12 @@
 }
 
 std::unique_ptr<VP9Encoder> VP9Encoder::Create() {
-  return rtc::MakeUnique<VP9EncoderImpl>(cricket::VideoCodec());
+  return absl::make_unique<VP9EncoderImpl>(cricket::VideoCodec());
 }
 
 std::unique_ptr<VP9Encoder> VP9Encoder::Create(
     const cricket::VideoCodec& codec) {
-  return rtc::MakeUnique<VP9EncoderImpl>(codec);
+  return absl::make_unique<VP9EncoderImpl>(codec);
 }
 
 void VP9EncoderImpl::EncoderOutputCodedPacketCallback(vpx_codec_cx_pkt* pkt,
@@ -971,7 +971,7 @@
 }
 
 std::unique_ptr<VP9Decoder> VP9Decoder::Create() {
-  return rtc::MakeUnique<VP9DecoderImpl>();
+  return absl::make_unique<VP9DecoderImpl>();
 }
 
 VP9DecoderImpl::VP9DecoderImpl()
diff --git a/ortc/BUILD.gn b/ortc/BUILD.gn
index 6ac2d81..828558a 100644
--- a/ortc/BUILD.gn
+++ b/ortc/BUILD.gn
@@ -51,6 +51,7 @@
     "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 
diff --git a/ortc/ortcfactory.cc b/ortc/ortcfactory.cc
index c0ae049..66ae77d 100644
--- a/ortc/ortcfactory.cc
+++ b/ortc/ortcfactory.cc
@@ -14,6 +14,7 @@
 #include <utility>  // For std::move.
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/mediastreamtrackproxy.h"
 #include "api/proxy.h"
 #include "api/rtcerror.h"
@@ -40,7 +41,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace {
 
@@ -533,7 +533,7 @@
   }
 
   channel_manager_.reset(new cricket::ChannelManager(
-      std::move(media_engine), rtc::MakeUnique<cricket::RtpDataEngine>(),
+      std::move(media_engine), absl::make_unique<cricket::RtpDataEngine>(),
       worker_thread_.get(), network_thread_));
   channel_manager_->SetVideoRtxEnabled(true);
   if (!channel_manager_->Init()) {
diff --git a/ortc/rtptransportadapter.cc b/ortc/rtptransportadapter.cc
index 7705e17..2829427 100644
--- a/ortc/rtptransportadapter.cc
+++ b/ortc/rtptransportadapter.cc
@@ -15,9 +15,9 @@
 #include <sstream>
 #include <utility>  // For std::move.
 
+#include "absl/memory/memory.h"
 #include "api/proxy.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -154,10 +154,11 @@
   RTC_DCHECK(rtp_transport_controller);
 
   if (is_srtp_transport) {
-    srtp_transport_ = rtc::MakeUnique<SrtpTransport>(rtcp == nullptr);
+    srtp_transport_ = absl::make_unique<SrtpTransport>(rtcp == nullptr);
     transport_ = srtp_transport_.get();
   } else {
-    unencrypted_rtp_transport_ = rtc::MakeUnique<RtpTransport>(rtcp == nullptr);
+    unencrypted_rtp_transport_ =
+        absl::make_unique<RtpTransport>(rtcp == nullptr);
     transport_ = unencrypted_rtp_transport_.get();
   }
   RTC_DCHECK(transport_);
diff --git a/ortc/rtptransportcontrolleradapter.cc b/ortc/rtptransportcontrolleradapter.cc
index ad6a992..e4c9ea2 100644
--- a/ortc/rtptransportcontrolleradapter.cc
+++ b/ortc/rtptransportcontrolleradapter.cc
@@ -16,6 +16,7 @@
 #include <unordered_map>
 #include <utility>  // For std::move.
 
+#include "absl/memory/memory.h"
 #include "api/proxy.h"
 #include "media/base/mediaconstants.h"
 #include "ortc/ortcrtpreceiveradapter.h"
@@ -24,7 +25,6 @@
 #include "pc/rtpmediautils.h"
 #include "pc/rtpparametersconversion.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -654,7 +654,7 @@
   call_config.bitrate_config.start_bitrate_bps = kStartBandwidthBps;
   call_config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps;
   std::unique_ptr<RtpTransportControllerSend> controller_send =
-      rtc::MakeUnique<RtpTransportControllerSend>(
+      absl::make_unique<RtpTransportControllerSend>(
           Clock::GetRealTimeClock(), event_log_,
           call_config.network_controller_factory, call_config.bitrate_config);
   call_send_rtp_transport_controller_ = controller_send.get();
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index 473281a..a2f5160 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -91,6 +91,7 @@
     "../rtc_base:safe_minmax",
     "../rtc_base:stringutils",
     "../system_wrappers:field_trial_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 
@@ -138,6 +139,7 @@
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../test:test_support",
+      "//third_party/abseil-cpp/absl/memory",
     ]
   }
 
@@ -178,6 +180,7 @@
       "../rtc_base:stringutils",
       "../test:test_support",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
diff --git a/p2p/base/fakedtlstransport.h b/p2p/base/fakedtlstransport.h
index 2422ec9..cb944d3 100644
--- a/p2p/base/fakedtlstransport.h
+++ b/p2p/base/fakedtlstransport.h
@@ -16,10 +16,10 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/dtlstransportinternal.h"
 #include "p2p/base/fakeicetransport.h"
 #include "rtc_base/fakesslidentity.h"
-#include "rtc_base/ptr_util.h"
 
 namespace cricket {
 
@@ -55,7 +55,8 @@
   // If this constructor is called, a new fake ICE transport will be created,
   // and this FakeDtlsTransport will take the ownership.
   explicit FakeDtlsTransport(const std::string& name, int component)
-      : FakeDtlsTransport(rtc::MakeUnique<FakeIceTransport>(name, component)) {}
+      : FakeDtlsTransport(
+            absl::make_unique<FakeIceTransport>(name, component)) {}
 
   ~FakeDtlsTransport() override {
     if (dest_ && dest_->dest_ == this) {
@@ -177,7 +178,7 @@
     return local_cert_;
   }
   std::unique_ptr<rtc::SSLCertChain> GetRemoteSSLCertChain() const override {
-    return remote_cert_ ? rtc::MakeUnique<rtc::SSLCertChain>(remote_cert_)
+    return remote_cert_ ? absl::make_unique<rtc::SSLCertChain>(remote_cert_)
                         : nullptr;
   }
   bool ExportKeyingMaterial(const std::string& label,
diff --git a/p2p/base/p2ptransportchannel_unittest.cc b/p2p/base/p2ptransportchannel_unittest.cc
index 4cf3c53..cbf8b25 100644
--- a/p2p/base/p2ptransportchannel_unittest.cc
+++ b/p2p/base/p2ptransportchannel_unittest.cc
@@ -12,6 +12,7 @@
 #include <list>
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/fakemetricsobserver.h"
 #include "p2p/base/fakeportallocator.h"
 #include "p2p/base/icetransportinternal.h"
@@ -32,7 +33,6 @@
 #include "rtc_base/natserver.h"
 #include "rtc_base/natsocketfactory.h"
 #include "rtc_base/proxyserver.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketaddress.h"
 #include "rtc_base/ssladapter.h"
 #include "rtc_base/thread.h"
@@ -3209,13 +3209,13 @@
                                uint32_t nomination = 0) {
     IceMessage msg;
     msg.SetType(STUN_BINDING_REQUEST);
-    msg.AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+    msg.AddAttribute(absl::make_unique<StunByteStringAttribute>(
         STUN_ATTR_USERNAME,
         conn->local_candidate().username() + ":" + remote_ufrag));
     msg.AddAttribute(
-        rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_PRIORITY, priority));
+        absl::make_unique<StunUInt32Attribute>(STUN_ATTR_PRIORITY, priority));
     if (nomination != 0) {
-      msg.AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+      msg.AddAttribute(absl::make_unique<StunUInt32Attribute>(
           STUN_ATTR_NOMINATION, nomination));
     }
     msg.SetTransactionID(rtc::CreateRandomString(kStunTransactionIdLength));
@@ -3421,11 +3421,11 @@
   // candidate pair while we still don't have remote ICE parameters.
   IceMessage request;
   request.SetType(STUN_BINDING_REQUEST);
-  request.AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  request.AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_USERNAME, kIceUfrag[1]));
   uint32_t prflx_priority = ICE_TYPE_PREFERENCE_PRFLX << 24;
-  request.AddAttribute(
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_PRIORITY, prflx_priority));
+  request.AddAttribute(absl::make_unique<StunUInt32Attribute>(
+      STUN_ATTR_PRIORITY, prflx_priority));
   Port* port = GetPort(&ch);
   ASSERT_NE(nullptr, port);
   port->SignalUnknownAddress(port, rtc::SocketAddress("1.1.1.1", 1), PROTO_UDP,
@@ -3590,11 +3590,11 @@
   // Create a minimal STUN message with prflx priority.
   IceMessage request;
   request.SetType(STUN_BINDING_REQUEST);
-  request.AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  request.AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_USERNAME, kIceUfrag[1]));
   uint32_t prflx_priority = ICE_TYPE_PREFERENCE_PRFLX << 24;
-  request.AddAttribute(
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_PRIORITY, prflx_priority));
+  request.AddAttribute(absl::make_unique<StunUInt32Attribute>(
+      STUN_ATTR_PRIORITY, prflx_priority));
   EXPECT_NE(prflx_priority, remote_priority);
 
   Port* port = GetPort(&ch);
@@ -3733,11 +3733,11 @@
   // A minimal STUN message with prflx priority.
   IceMessage request;
   request.SetType(STUN_BINDING_REQUEST);
-  request.AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  request.AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_USERNAME, kIceUfrag[1]));
   uint32_t prflx_priority = ICE_TYPE_PREFERENCE_PRFLX << 24;
-  request.AddAttribute(
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_PRIORITY, prflx_priority));
+  request.AddAttribute(absl::make_unique<StunUInt32Attribute>(
+      STUN_ATTR_PRIORITY, prflx_priority));
   TestUDPPort* port = static_cast<TestUDPPort*>(GetPort(&ch));
   port->SignalUnknownAddress(port, rtc::SocketAddress("1.1.1.1", 1), PROTO_UDP,
                              &request, kIceUfrag[1], false);
@@ -3776,7 +3776,7 @@
   // However if the request contains use_candidate attribute, it will be
   // selected as the selected connection.
   request.AddAttribute(
-      rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_USE_CANDIDATE));
+      absl::make_unique<StunByteStringAttribute>(STUN_ATTR_USE_CANDIDATE));
   port->SignalUnknownAddress(port, rtc::SocketAddress("4.4.4.4", 4), PROTO_UDP,
                              &request, kIceUfrag[1], false);
   Connection* conn4 = WaitForConnectionTo(&ch, "4.4.4.4", 4);
@@ -3831,13 +3831,13 @@
   // nominate the selected connection.
   IceMessage request;
   request.SetType(STUN_BINDING_REQUEST);
-  request.AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  request.AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_USERNAME, kIceUfrag[1]));
   uint32_t prflx_priority = ICE_TYPE_PREFERENCE_PRFLX << 24;
+  request.AddAttribute(absl::make_unique<StunUInt32Attribute>(
+      STUN_ATTR_PRIORITY, prflx_priority));
   request.AddAttribute(
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_PRIORITY, prflx_priority));
-  request.AddAttribute(
-      rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_USE_CANDIDATE));
+      absl::make_unique<StunByteStringAttribute>(STUN_ATTR_USE_CANDIDATE));
   Port* port = GetPort(&ch);
   port->SignalUnknownAddress(port, rtc::SocketAddress("3.3.3.3", 3), PROTO_UDP,
                              &request, kIceUfrag[1], false);
diff --git a/p2p/base/port.cc b/p2p/base/port.cc
index fd4764d..5beb2bf 100644
--- a/p2p/base/port.cc
+++ b/p2p/base/port.cc
@@ -16,6 +16,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/portallocator.h"
 #include "rtc_base/base64.h"
 #include "rtc_base/checks.h"
@@ -25,7 +26,6 @@
 #include "rtc_base/messagedigest.h"
 #include "rtc_base/network.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 #include "rtc_base/stringutils.h"
 
@@ -762,7 +762,7 @@
   if (retransmit_attr) {
     // Inherit the incoming retransmit value in the response so the other side
     // can see our view of lost pings.
-    response.AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+    response.AddAttribute(absl::make_unique<StunUInt32Attribute>(
         STUN_ATTR_RETRANSMIT_COUNT, retransmit_attr->value()));
 
     if (retransmit_attr->value() > CONNECTION_WRITE_CONNECT_FAILURES) {
@@ -773,7 +773,7 @@
     }
   }
 
-  response.AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+  response.AddAttribute(absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_MAPPED_ADDRESS, addr));
   response.AddMessageIntegrity(password_);
   response.AddFingerprint();
@@ -954,38 +954,38 @@
     std::string username;
     connection_->port()->CreateStunUsername(
         connection_->remote_candidate().username(), &username);
-    request->AddAttribute(
-        rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_USERNAME, username));
+    request->AddAttribute(absl::make_unique<StunByteStringAttribute>(
+        STUN_ATTR_USERNAME, username));
 
     // connection_ already holds this ping, so subtract one from count.
     if (connection_->port()->send_retransmit_count_attribute()) {
-      request->AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+      request->AddAttribute(absl::make_unique<StunUInt32Attribute>(
           STUN_ATTR_RETRANSMIT_COUNT,
           static_cast<uint32_t>(connection_->pings_since_last_response_.size() -
                                 1)));
     }
     uint32_t network_info = connection_->port()->Network()->id();
     network_info = (network_info << 16) | connection_->port()->network_cost();
-    request->AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+    request->AddAttribute(absl::make_unique<StunUInt32Attribute>(
         STUN_ATTR_NETWORK_INFO, network_info));
 
     // Adding ICE_CONTROLLED or ICE_CONTROLLING attribute based on the role.
     if (connection_->port()->GetIceRole() == ICEROLE_CONTROLLING) {
-      request->AddAttribute(rtc::MakeUnique<StunUInt64Attribute>(
+      request->AddAttribute(absl::make_unique<StunUInt64Attribute>(
           STUN_ATTR_ICE_CONTROLLING, connection_->port()->IceTiebreaker()));
       // We should have either USE_CANDIDATE attribute or ICE_NOMINATION
       // attribute but not both. That was enforced in p2ptransportchannel.
       if (connection_->use_candidate_attr()) {
-        request->AddAttribute(
-            rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_USE_CANDIDATE));
+        request->AddAttribute(absl::make_unique<StunByteStringAttribute>(
+            STUN_ATTR_USE_CANDIDATE));
       }
       if (connection_->nomination() &&
           connection_->nomination() != connection_->acked_nomination()) {
-        request->AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+        request->AddAttribute(absl::make_unique<StunUInt32Attribute>(
             STUN_ATTR_NOMINATION, connection_->nomination()));
       }
     } else if (connection_->port()->GetIceRole() == ICEROLE_CONTROLLED) {
-      request->AddAttribute(rtc::MakeUnique<StunUInt64Attribute>(
+      request->AddAttribute(absl::make_unique<StunUInt64Attribute>(
           STUN_ATTR_ICE_CONTROLLED, connection_->port()->IceTiebreaker()));
     } else {
       RTC_NOTREACHED();
@@ -1004,7 +1004,7 @@
     uint32_t prflx_priority =
         type_preference << 24 |
         (connection_->local_candidate().priority() & 0x00FFFFFF);
-    request->AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+    request->AddAttribute(absl::make_unique<StunUInt32Attribute>(
         STUN_ATTR_PRIORITY, prflx_priority));
 
     // Adding Message Integrity attribute.
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index 423db3e..5aaf315 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -11,6 +11,7 @@
 #include <list>
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/basicpacketsocketfactory.h"
 #include "p2p/base/p2pconstants.h"
 #include "p2p/base/relayport.h"
@@ -28,7 +29,6 @@
 #include "rtc_base/logging.h"
 #include "rtc_base/natserver.h"
 #include "rtc_base/natsocketfactory.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketaddress.h"
 #include "rtc_base/ssladapter.h"
 #include "rtc_base/stringutils.h"
@@ -762,8 +762,8 @@
   IceMessage* CreateStunMessageWithUsername(int type,
                                             const std::string& username) {
     IceMessage* msg = CreateStunMessage(type);
-    msg->AddAttribute(
-        rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_USERNAME, username));
+    msg->AddAttribute(absl::make_unique<StunByteStringAttribute>(
+        STUN_ATTR_USERNAME, username));
     return msg;
   }
   TestPort* CreateTestPort(const rtc::SocketAddress& addr,
@@ -1412,11 +1412,11 @@
       CreateStunMessage(STUN_BINDING_REQUEST));
   const StunByteStringAttribute* username_attr =
       msg->GetByteString(STUN_ATTR_USERNAME);
-  modified_req->AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  modified_req->AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_USERNAME, username_attr->GetString()));
   // To make sure we receive error response, adding tiebreaker less than
   // what's present in request.
-  modified_req->AddAttribute(rtc::MakeUnique<StunUInt64Attribute>(
+  modified_req->AddAttribute(absl::make_unique<StunUInt64Attribute>(
       STUN_ATTR_ICE_CONTROLLING, kTiebreaker1 - 1));
   modified_req->AddMessageIntegrity("lpass");
   modified_req->AddFingerprint();
@@ -2058,7 +2058,7 @@
 
   // BINDING-RESPONSE without username, with MESSAGE-INTEGRITY and FINGERPRINT.
   in_msg.reset(CreateStunMessage(STUN_BINDING_RESPONSE));
-  in_msg->AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+  in_msg->AddAttribute(absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_MAPPED_ADDRESS, kLocalAddr2));
   in_msg->AddMessageIntegrity("rpass");
   in_msg->AddFingerprint();
@@ -2070,7 +2070,7 @@
 
   // BINDING-ERROR-RESPONSE without username, with error, M-I, and FINGERPRINT.
   in_msg.reset(CreateStunMessage(STUN_BINDING_ERROR_RESPONSE));
-  in_msg->AddAttribute(rtc::MakeUnique<StunErrorCodeAttribute>(
+  in_msg->AddAttribute(absl::make_unique<StunErrorCodeAttribute>(
       STUN_ATTR_ERROR_CODE, STUN_ERROR_SERVER_ERROR,
       STUN_ERROR_REASON_SERVER_ERROR));
   in_msg->AddFingerprint();
@@ -2222,7 +2222,7 @@
 
   // Valid BINDING-RESPONSE, except no FINGERPRINT.
   in_msg.reset(CreateStunMessage(STUN_BINDING_RESPONSE));
-  in_msg->AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+  in_msg->AddAttribute(absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_MAPPED_ADDRESS, kLocalAddr2));
   in_msg->AddMessageIntegrity("rpass");
   WriteStunMessage(in_msg.get(), buf.get());
@@ -2240,7 +2240,7 @@
 
   // Valid BINDING-ERROR-RESPONSE, except no FINGERPRINT.
   in_msg.reset(CreateStunMessage(STUN_BINDING_ERROR_RESPONSE));
-  in_msg->AddAttribute(rtc::MakeUnique<StunErrorCodeAttribute>(
+  in_msg->AddAttribute(absl::make_unique<StunErrorCodeAttribute>(
       STUN_ATTR_ERROR_CODE, STUN_ERROR_SERVER_ERROR,
       STUN_ERROR_REASON_SERVER_ERROR));
   in_msg->AddMessageIntegrity("rpass");
diff --git a/p2p/base/relayserver_unittest.cc b/p2p/base/relayserver_unittest.cc
index 36b51f1..c4c026a 100644
--- a/p2p/base/relayserver_unittest.cc
+++ b/p2p/base/relayserver_unittest.cc
@@ -12,11 +12,11 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/relayserver.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketaddress.h"
 #include "rtc_base/ssladapter.h"
 #include "rtc_base/testclient.h"
@@ -59,10 +59,10 @@
     server_->AddExternalSocket(
         rtc::AsyncUDPSocket::Create(ss_.get(), server_ext_addr));
 
-    client1_.reset(new rtc::TestClient(
-        WrapUnique(rtc::AsyncUDPSocket::Create(ss_.get(), client1_addr))));
-    client2_.reset(new rtc::TestClient(
-        WrapUnique(rtc::AsyncUDPSocket::Create(ss_.get(), client2_addr))));
+    client1_.reset(new rtc::TestClient(absl::WrapUnique(
+        rtc::AsyncUDPSocket::Create(ss_.get(), client1_addr))));
+    client2_.reset(new rtc::TestClient(absl::WrapUnique(
+        rtc::AsyncUDPSocket::Create(ss_.get(), client2_addr))));
   }
 
   void Allocate() {
diff --git a/p2p/base/stun.cc b/p2p/base/stun.cc
index 38990f9..cc9fb4e 100644
--- a/p2p/base/stun.cc
+++ b/p2p/base/stun.cc
@@ -16,12 +16,12 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/byteorder.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/crc32.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/messagedigest.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 
 using rtc::ByteBufferReader;
@@ -246,7 +246,7 @@
 bool StunMessage::AddMessageIntegrity(const char* key, size_t keylen) {
   // Add the attribute with a dummy value. Since this is a known attribute, it
   // can't fail.
-  auto msg_integrity_attr_ptr = rtc::MakeUnique<StunByteStringAttribute>(
+  auto msg_integrity_attr_ptr = absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_MESSAGE_INTEGRITY, std::string(kStunMessageIntegritySize, '0'));
   auto* msg_integrity_attr = msg_integrity_attr_ptr.get();
   AddAttribute(std::move(msg_integrity_attr_ptr));
@@ -307,7 +307,7 @@
   // Add the attribute with a dummy value. Since this is a known attribute,
   // it can't fail.
   auto fingerprint_attr_ptr =
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_FINGERPRINT, 0);
+      absl::make_unique<StunUInt32Attribute>(STUN_ATTR_FINGERPRINT, 0);
   auto* fingerprint_attr = fingerprint_attr_ptr.get();
   AddAttribute(std::move(fingerprint_attr_ptr));
 
@@ -522,38 +522,38 @@
 
 std::unique_ptr<StunAddressAttribute> StunAttribute::CreateAddress(
     uint16_t type) {
-  return rtc::MakeUnique<StunAddressAttribute>(type, 0);
+  return absl::make_unique<StunAddressAttribute>(type, 0);
 }
 
 std::unique_ptr<StunXorAddressAttribute> StunAttribute::CreateXorAddress(
     uint16_t type) {
-  return rtc::MakeUnique<StunXorAddressAttribute>(type, 0, nullptr);
+  return absl::make_unique<StunXorAddressAttribute>(type, 0, nullptr);
 }
 
 std::unique_ptr<StunUInt64Attribute> StunAttribute::CreateUInt64(
     uint16_t type) {
-  return rtc::MakeUnique<StunUInt64Attribute>(type);
+  return absl::make_unique<StunUInt64Attribute>(type);
 }
 
 std::unique_ptr<StunUInt32Attribute> StunAttribute::CreateUInt32(
     uint16_t type) {
-  return rtc::MakeUnique<StunUInt32Attribute>(type);
+  return absl::make_unique<StunUInt32Attribute>(type);
 }
 
 std::unique_ptr<StunByteStringAttribute> StunAttribute::CreateByteString(
     uint16_t type) {
-  return rtc::MakeUnique<StunByteStringAttribute>(type, 0);
+  return absl::make_unique<StunByteStringAttribute>(type, 0);
 }
 
 std::unique_ptr<StunErrorCodeAttribute> StunAttribute::CreateErrorCode() {
-  return rtc::MakeUnique<StunErrorCodeAttribute>(
+  return absl::make_unique<StunErrorCodeAttribute>(
       STUN_ATTR_ERROR_CODE, StunErrorCodeAttribute::MIN_SIZE);
 }
 
 std::unique_ptr<StunUInt16ListAttribute>
 StunAttribute::CreateUnknownAttributes() {
-  return rtc::MakeUnique<StunUInt16ListAttribute>(STUN_ATTR_UNKNOWN_ATTRIBUTES,
-                                                  0);
+  return absl::make_unique<StunUInt16ListAttribute>(
+      STUN_ATTR_UNKNOWN_ATTRIBUTES, 0);
 }
 
 StunAddressAttribute::StunAddressAttribute(uint16_t type,
diff --git a/p2p/base/stun_unittest.cc b/p2p/base/stun_unittest.cc
index 65b976e..6d95108 100644
--- a/p2p/base/stun_unittest.cc
+++ b/p2p/base/stun_unittest.cc
@@ -11,13 +11,13 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/stun.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/bytebuffer.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/messagedigest.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketaddress.h"
 
 namespace cricket {
@@ -1116,7 +1116,7 @@
       std::string(reinterpret_cast<const char*>(kTestTransactionId1),
                   kStunTransactionIdLength));
   auto origin =
-      rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_ORIGIN, kTestOrigin);
+      absl::make_unique<StunByteStringAttribute>(STUN_ATTR_ORIGIN, kTestOrigin);
   msg.AddAttribute(std::move(origin));
 
   rtc::ByteBufferWriter out;
diff --git a/p2p/base/stunrequest.cc b/p2p/base/stunrequest.cc
index a639ee3..56410be 100644
--- a/p2p/base/stunrequest.cc
+++ b/p2p/base/stunrequest.cc
@@ -14,10 +14,10 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 
 namespace cricket {
@@ -190,8 +190,8 @@
 void StunRequest::Construct() {
   if (msg_->type() == 0) {
     if (!origin_.empty()) {
-      msg_->AddAttribute(
-          rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_ORIGIN, origin_));
+      msg_->AddAttribute(absl::make_unique<StunByteStringAttribute>(
+          STUN_ATTR_ORIGIN, origin_));
     }
     Prepare(msg_);
     RTC_DCHECK(msg_->type() != 0);
diff --git a/p2p/base/stunserver_unittest.cc b/p2p/base/stunserver_unittest.cc
index f9c7ad7..eb94e72 100644
--- a/p2p/base/stunserver_unittest.cc
+++ b/p2p/base/stunserver_unittest.cc
@@ -11,10 +11,10 @@
 #include <memory>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/stunserver.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/testclient.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/virtualsocketserver.h"
@@ -33,7 +33,7 @@
     server_.reset(
         new StunServer(rtc::AsyncUDPSocket::Create(ss_.get(), server_addr)));
     client_.reset(new rtc::TestClient(
-        WrapUnique(rtc::AsyncUDPSocket::Create(ss_.get(), client_addr))));
+        absl::WrapUnique(rtc::AsyncUDPSocket::Create(ss_.get(), client_addr))));
 
     network_.Start();
   }
diff --git a/p2p/base/testturncustomizer.h b/p2p/base/testturncustomizer.h
index 265b536..7ca4579 100644
--- a/p2p/base/testturncustomizer.h
+++ b/p2p/base/testturncustomizer.h
@@ -11,9 +11,9 @@
 #ifndef P2P_BASE_TESTTURNCUSTOMIZER_H_
 #define P2P_BASE_TESTTURNCUSTOMIZER_H_
 
+#include "absl/memory/memory.h"
 #include "api/turncustomizer.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 
 namespace cricket {
 
@@ -33,7 +33,7 @@
 
     ASSERT_NE(0, message->type());
     if (add_counter_) {
-      message->AddAttribute(rtc::MakeUnique<cricket::StunUInt32Attribute>(
+      message->AddAttribute(absl::make_unique<cricket::StunUInt32Attribute>(
           STUN_ATTR_COUNTER, modify_cnt_));
     }
     return;
diff --git a/p2p/base/turnport.cc b/p2p/base/turnport.cc
index cb7cfa8..13c9a46 100644
--- a/p2p/base/turnport.cc
+++ b/p2p/base/turnport.cc
@@ -15,6 +15,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "absl/types/optional.h"
 #include "p2p/base/stun.h"
 #include "rtc_base/asyncpacketsocket.h"
@@ -22,7 +23,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/nethelpers.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketaddress.h"
 #include "rtc_base/stringencode.h"
 
@@ -1058,12 +1058,12 @@
 void TurnPort::AddRequestAuthInfo(StunMessage* msg) {
   // If we've gotten the necessary data from the server, add it to our request.
   RTC_DCHECK(!hash_.empty());
-  msg->AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  msg->AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_USERNAME, credentials_.username));
   msg->AddAttribute(
-      rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_REALM, realm_));
+      absl::make_unique<StunByteStringAttribute>(STUN_ATTR_REALM, realm_));
   msg->AddAttribute(
-      rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_NONCE, nonce_));
+      absl::make_unique<StunByteStringAttribute>(STUN_ATTR_NONCE, nonce_));
   const bool success = msg->AddMessageIntegrity(hash());
   RTC_DCHECK(success);
 }
@@ -1453,7 +1453,7 @@
   request->SetType(TURN_REFRESH_REQUEST);
   if (lifetime_ > -1) {
     request->AddAttribute(
-        rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_LIFETIME, lifetime_));
+        absl::make_unique<StunUInt32Attribute>(STUN_ATTR_LIFETIME, lifetime_));
   }
 
   port_->AddRequestAuthInfo(request);
@@ -1536,7 +1536,7 @@
 void TurnCreatePermissionRequest::Prepare(StunMessage* request) {
   // Create the request as indicated in RFC5766, Section 9.1.
   request->SetType(TURN_CREATE_PERMISSION_REQUEST);
-  request->AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+  request->AddAttribute(absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_PEER_ADDRESS, ext_addr_));
   port_->AddRequestAuthInfo(request);
   port_->TurnCustomizerMaybeModifyOutgoingStunMessage(request);
@@ -1604,9 +1604,9 @@
 void TurnChannelBindRequest::Prepare(StunMessage* request) {
   // Create the request as indicated in RFC5766, Section 11.1.
   request->SetType(TURN_CHANNEL_BIND_REQUEST);
-  request->AddAttribute(rtc::MakeUnique<StunUInt32Attribute>(
+  request->AddAttribute(absl::make_unique<StunUInt32Attribute>(
       STUN_ATTR_CHANNEL_NUMBER, channel_id_ << 16));
-  request->AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+  request->AddAttribute(absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_PEER_ADDRESS, ext_addr_));
   port_->AddRequestAuthInfo(request);
   port_->TurnCustomizerMaybeModifyOutgoingStunMessage(request);
@@ -1697,10 +1697,10 @@
     TurnMessage msg;
     msg.SetType(TURN_SEND_INDICATION);
     msg.SetTransactionID(rtc::CreateRandomString(kStunTransactionIdLength));
-    msg.AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+    msg.AddAttribute(absl::make_unique<StunXorAddressAttribute>(
         STUN_ATTR_XOR_PEER_ADDRESS, ext_addr_));
     msg.AddAttribute(
-        rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_DATA, data, size));
+        absl::make_unique<StunByteStringAttribute>(STUN_ATTR_DATA, data, size));
 
     port_->TurnCustomizerMaybeModifyOutgoingStunMessage(&msg);
 
diff --git a/p2p/base/turnport_unittest.cc b/p2p/base/turnport_unittest.cc
index 5917a7f..bac35e8 100644
--- a/p2p/base/turnport_unittest.cc
+++ b/p2p/base/turnport_unittest.cc
@@ -16,6 +16,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/basicpacketsocketfactory.h"
 #include "p2p/base/p2pconstants.h"
 #include "p2p/base/portallocator.h"
@@ -33,7 +34,6 @@
 #include "rtc_base/gunit.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketadapters.h"
 #include "rtc_base/socketaddress.h"
 #include "rtc_base/ssladapter.h"
diff --git a/p2p/base/turnserver.cc b/p2p/base/turnserver.cc
index b7ab2e3..a7a8c57 100644
--- a/p2p/base/turnserver.cc
+++ b/p2p/base/turnserver.cc
@@ -13,6 +13,7 @@
 #include <tuple>  // for std::tie
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/asyncstuntcpsocket.h"
 #include "p2p/base/packetsocketfactory.h"
 #include "p2p/base/stun.h"
@@ -22,7 +23,6 @@
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/messagedigest.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketadapters.h"
 #include "rtc_base/stringencode.h"
 #include "rtc_base/thread.h"
@@ -114,7 +114,7 @@
     return false;
   resp->SetType(resp_type);
   resp->SetTransactionID(req->transaction_id());
-  resp->AddAttribute(rtc::MakeUnique<cricket::StunErrorCodeAttribute>(
+  resp->AddAttribute(absl::make_unique<cricket::StunErrorCodeAttribute>(
       STUN_ATTR_ERROR_CODE, code, reason));
   return true;
 }
@@ -373,7 +373,7 @@
   InitResponse(req, &response);
 
   // Tell the user the address that we received their request from.
-  auto mapped_addr_attr = rtc::MakeUnique<StunXorAddressAttribute>(
+  auto mapped_addr_attr = absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_MAPPED_ADDRESS, conn->src());
   response.AddAttribute(std::move(mapped_addr_attr));
 
@@ -496,10 +496,10 @@
     timestamp = ts_for_next_nonce_;
     ts_for_next_nonce_ = 0;
   }
-  resp.AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+  resp.AddAttribute(absl::make_unique<StunByteStringAttribute>(
       STUN_ATTR_NONCE, GenerateNonce(timestamp)));
   resp.AddAttribute(
-      rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_REALM, realm_));
+      absl::make_unique<StunByteStringAttribute>(STUN_ATTR_REALM, realm_));
   SendStun(conn, &resp);
 }
 
@@ -510,8 +510,8 @@
   TurnMessage resp;
   InitErrorResponse(msg, STUN_ERROR_TRY_ALTERNATE,
                     STUN_ERROR_REASON_TRY_ALTERNATE_SERVER, &resp);
-  resp.AddAttribute(
-      rtc::MakeUnique<StunAddressAttribute>(STUN_ATTR_ALTERNATE_SERVER, addr));
+  resp.AddAttribute(absl::make_unique<StunAddressAttribute>(
+      STUN_ATTR_ALTERNATE_SERVER, addr));
   SendStun(conn, &resp);
 }
 
@@ -520,7 +520,7 @@
   rtc::ByteBufferWriter buf;
   // Add a SOFTWARE attribute if one is set.
   if (!software_.empty()) {
-    msg->AddAttribute(rtc::MakeUnique<StunByteStringAttribute>(
+    msg->AddAttribute(absl::make_unique<StunByteStringAttribute>(
         STUN_ATTR_SOFTWARE, software_));
   }
   msg->Write(&buf);
@@ -686,12 +686,12 @@
   TurnMessage response;
   InitResponse(msg, &response);
 
-  auto mapped_addr_attr = rtc::MakeUnique<StunXorAddressAttribute>(
+  auto mapped_addr_attr = absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_MAPPED_ADDRESS, conn_.src());
-  auto relayed_addr_attr = rtc::MakeUnique<StunXorAddressAttribute>(
+  auto relayed_addr_attr = absl::make_unique<StunXorAddressAttribute>(
       STUN_ATTR_XOR_RELAYED_ADDRESS, external_socket_->GetLocalAddress());
   auto lifetime_attr =
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_LIFETIME, lifetime_secs);
+      absl::make_unique<StunUInt32Attribute>(STUN_ATTR_LIFETIME, lifetime_secs);
   response.AddAttribute(std::move(mapped_addr_attr));
   response.AddAttribute(std::move(relayed_addr_attr));
   response.AddAttribute(std::move(lifetime_attr));
@@ -716,7 +716,7 @@
   InitResponse(msg, &response);
 
   auto lifetime_attr =
-      rtc::MakeUnique<StunUInt32Attribute>(STUN_ATTR_LIFETIME, lifetime_secs);
+      absl::make_unique<StunUInt32Attribute>(STUN_ATTR_LIFETIME, lifetime_secs);
   response.AddAttribute(std::move(lifetime_attr));
 
   SendResponse(&response);
@@ -860,10 +860,10 @@
     msg.SetType(TURN_DATA_INDICATION);
     msg.SetTransactionID(
         rtc::CreateRandomString(kStunTransactionIdLength));
-    msg.AddAttribute(rtc::MakeUnique<StunXorAddressAttribute>(
+    msg.AddAttribute(absl::make_unique<StunXorAddressAttribute>(
         STUN_ATTR_XOR_PEER_ADDRESS, addr));
     msg.AddAttribute(
-        rtc::MakeUnique<StunByteStringAttribute>(STUN_ATTR_DATA, data, size));
+        absl::make_unique<StunByteStringAttribute>(STUN_ATTR_DATA, data, size));
     server_->SendStun(&conn_, &msg);
   } else {
     RTC_LOG(LS_WARNING)
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index a3ca3ce..195d185 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -85,6 +85,7 @@
     "../rtc_base:rtc_task_queue",
     "../rtc_base:stringutils",
     "../system_wrappers:metrics_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 
@@ -205,6 +206,7 @@
     "../stats",
     "../system_wrappers",
     "../system_wrappers:field_trial_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -311,6 +313,7 @@
       "../system_wrappers:metrics_default",
       "../system_wrappers:runtime_enabled_features_default",
       "../test:test_support",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     if (rtc_build_libsrtp) {
@@ -348,6 +351,7 @@
       "../rtc_base:rtc_base_tests_utils",
       "../test:perf_test",
       "../test:test_support",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
@@ -408,6 +412,7 @@
       "../rtc_base:rtc_task_queue",
       "../test:test_support",
       "../test:video_test_common",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     if (!build_with_chromium && is_clang) {
@@ -478,6 +483,7 @@
       "../rtc_base:checks",
       "../rtc_base:stringutils",
       "../test:fileutils",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (is_android) {
       deps += [ ":android_black_magic" ]
diff --git a/pc/channel.cc b/pc/channel.cc
index 713cd39..cb3672a 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -14,6 +14,7 @@
 
 #include "pc/channel.h"
 
+#include "absl/memory/memory.h"
 #include "api/call/audio_sink.h"
 #include "media/base/mediaconstants.h"
 #include "media/base/rtputils.h"
@@ -25,7 +26,6 @@
 #include "rtc_base/dscp.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/networkroute.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/trace_event.h"
 // Adding 'nogncheck' to disable the gn include headers check to support modular
 // WebRTC build targets.
diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc
index 29d2bd7..9a28143 100644
--- a/pc/channel_unittest.cc
+++ b/pc/channel_unittest.cc
@@ -117,9 +117,9 @@
   }
 
   void CreateChannels(int flags1, int flags2) {
-    CreateChannels(rtc::MakeUnique<typename T::MediaChannel>(
+    CreateChannels(absl::make_unique<typename T::MediaChannel>(
                        nullptr, typename T::Options()),
-                   rtc::MakeUnique<typename T::MediaChannel>(
+                   absl::make_unique<typename T::MediaChannel>(
                        nullptr, typename T::Options()),
                    flags1, flags2);
   }
@@ -248,7 +248,7 @@
       webrtc::RtpTransportInternal* rtp_transport,
       int flags) {
     rtc::Thread* signaling_thread = rtc::Thread::Current();
-    auto channel = rtc::MakeUnique<typename T::Channel>(
+    auto channel = absl::make_unique<typename T::Channel>(
         worker_thread, network_thread, signaling_thread, engine, std::move(ch),
         cricket::CN_AUDIO, (flags & DTLS) != 0, rtc::CryptoOptions());
     channel->Init_w(rtp_transport);
@@ -282,8 +282,8 @@
   std::unique_ptr<webrtc::RtpTransport> CreateUnencryptedTransport(
       rtc::PacketTransportInternal* rtp_packet_transport,
       rtc::PacketTransportInternal* rtcp_packet_transport) {
-    auto rtp_transport =
-        rtc::MakeUnique<webrtc::RtpTransport>(rtcp_packet_transport == nullptr);
+    auto rtp_transport = absl::make_unique<webrtc::RtpTransport>(
+        rtcp_packet_transport == nullptr);
 
     rtp_transport->SetRtpPacketTransport(rtp_packet_transport);
     if (rtcp_packet_transport) {
@@ -295,7 +295,7 @@
   std::unique_ptr<webrtc::DtlsSrtpTransport> CreateDtlsSrtpTransport(
       cricket::DtlsTransportInternal* rtp_dtls_transport,
       cricket::DtlsTransportInternal* rtcp_dtls_transport) {
-    auto dtls_srtp_transport = rtc::MakeUnique<webrtc::DtlsSrtpTransport>(
+    auto dtls_srtp_transport = absl::make_unique<webrtc::DtlsSrtpTransport>(
         rtcp_dtls_transport == nullptr);
 
     dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport,
@@ -927,8 +927,9 @@
         T::MediaChannel::SendRtcp(kRtcpReport, sizeof(kRtcpReport));
       }
     };
-    CreateChannels(rtc::MakeUnique<LastWordMediaChannel>(),
-                   rtc::MakeUnique<LastWordMediaChannel>(), RTCP_MUX, RTCP_MUX);
+    CreateChannels(absl::make_unique<LastWordMediaChannel>(),
+                   absl::make_unique<LastWordMediaChannel>(), RTCP_MUX,
+                   RTCP_MUX);
     EXPECT_TRUE(SendInitiate());
     EXPECT_TRUE(SendAccept());
     EXPECT_TRUE(Terminate());
@@ -1539,7 +1540,7 @@
     webrtc::RtpTransportInternal* rtp_transport,
     int flags) {
   rtc::Thread* signaling_thread = rtc::Thread::Current();
-  auto channel = rtc::MakeUnique<cricket::VideoChannel>(
+  auto channel = absl::make_unique<cricket::VideoChannel>(
       worker_thread, network_thread, signaling_thread, std::move(ch),
       cricket::CN_VIDEO, (flags & DTLS) != 0, rtc::CryptoOptions());
   channel->Init_w(rtp_transport);
@@ -2158,7 +2159,7 @@
     webrtc::RtpTransportInternal* rtp_transport,
     int flags) {
   rtc::Thread* signaling_thread = rtc::Thread::Current();
-  auto channel = rtc::MakeUnique<cricket::RtpDataChannel>(
+  auto channel = absl::make_unique<cricket::RtpDataChannel>(
       worker_thread, network_thread, signaling_thread, std::move(ch),
       cricket::CN_DATA, (flags & DTLS) != 0, rtc::CryptoOptions());
   channel->Init_w(rtp_transport);
diff --git a/pc/channelmanager.cc b/pc/channelmanager.cc
index ac97ea8..dab622a 100644
--- a/pc/channelmanager.cc
+++ b/pc/channelmanager.cc
@@ -13,10 +13,10 @@
 #include <algorithm>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "media/base/rtpdataengine.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringutils.h"
 #include "rtc_base/trace_event.h"
 
@@ -182,9 +182,9 @@
     return nullptr;
   }
 
-  auto voice_channel = rtc::MakeUnique<VoiceChannel>(
+  auto voice_channel = absl::make_unique<VoiceChannel>(
       worker_thread_, network_thread_, signaling_thread, media_engine_.get(),
-      rtc::WrapUnique(media_channel), content_name, srtp_required,
+      absl::WrapUnique(media_channel), content_name, srtp_required,
       crypto_options);
 
   voice_channel->Init_w(rtp_transport);
@@ -249,9 +249,9 @@
     return nullptr;
   }
 
-  auto video_channel = rtc::MakeUnique<VideoChannel>(
+  auto video_channel = absl::make_unique<VideoChannel>(
       worker_thread_, network_thread_, signaling_thread,
-      rtc::WrapUnique(media_channel), content_name, srtp_required,
+      absl::WrapUnique(media_channel), content_name, srtp_required,
       crypto_options);
   video_channel->Init_w(rtp_transport);
 
@@ -307,9 +307,9 @@
     return nullptr;
   }
 
-  auto data_channel = rtc::MakeUnique<RtpDataChannel>(
+  auto data_channel = absl::make_unique<RtpDataChannel>(
       worker_thread_, network_thread_, signaling_thread,
-      rtc::WrapUnique(media_channel), content_name, srtp_required,
+      absl::WrapUnique(media_channel), content_name, srtp_required,
       crypto_options);
   data_channel->Init_w(rtp_transport);
 
diff --git a/pc/channelmanager_unittest.cc b/pc/channelmanager_unittest.cc
index 3699c5b..47c9530 100644
--- a/pc/channelmanager_unittest.cc
+++ b/pc/channelmanager_unittest.cc
@@ -52,10 +52,10 @@
   }
 
   std::unique_ptr<webrtc::RtpTransportInternal> CreateDtlsSrtpTransport() {
-    rtp_dtls_transport_ = rtc::MakeUnique<FakeDtlsTransport>(
+    rtp_dtls_transport_ = absl::make_unique<FakeDtlsTransport>(
         "fake_dtls_transport", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-    auto dtls_srtp_transport =
-        rtc::MakeUnique<webrtc::DtlsSrtpTransport>(/*rtcp_mux_required=*/true);
+    auto dtls_srtp_transport = absl::make_unique<webrtc::DtlsSrtpTransport>(
+        /*rtcp_mux_required=*/true);
     dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport_.get(),
                                            /*rtcp_dtls_transport=*/nullptr);
     return dtls_srtp_transport;
diff --git a/pc/dtlssrtptransport_unittest.cc b/pc/dtlssrtptransport_unittest.cc
index cfe817f..2012c49 100644
--- a/pc/dtlssrtptransport_unittest.cc
+++ b/pc/dtlssrtptransport_unittest.cc
@@ -13,6 +13,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "media/base/fakertp.h"
 #include "p2p/base/dtlstransportinternal.h"
 #include "p2p/base/fakedtlstransport.h"
@@ -22,7 +23,6 @@
 #include "pc/rtptransporttestutil.h"
 #include "rtc_base/asyncpacketsocket.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sslstreamadapter.h"
 
 using cricket::FakeDtlsTransport;
@@ -52,7 +52,7 @@
       FakeDtlsTransport* rtcp_dtls,
       bool rtcp_mux_enabled) {
     auto dtls_srtp_transport =
-        rtc::MakeUnique<DtlsSrtpTransport>(rtcp_mux_enabled);
+        absl::make_unique<DtlsSrtpTransport>(rtcp_mux_enabled);
 
     dtls_srtp_transport->SetDtlsTransports(rtp_dtls, rtcp_dtls);
 
@@ -254,17 +254,17 @@
 // Tests that if RTCP muxing is enabled and transports are set after RTP
 // transport finished the handshake, SRTP is set up.
 TEST_F(DtlsSrtpTransportTest, SetTransportsAfterHandshakeCompleteWithRtcpMux) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "video", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "video", cricket::ICE_CANDIDATE_COMPONENT_RTP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), nullptr, rtp_dtls2.get(), nullptr,
                          /*rtcp_mux_enabled=*/true);
 
-  auto rtp_dtls3 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls3 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtp_dtls4 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls4 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
 
   CompleteDtlsHandshake(rtp_dtls3.get(), rtp_dtls4.get());
@@ -279,25 +279,25 @@
 // RTP and RTCP transports finished the handshake, SRTP is set up.
 TEST_F(DtlsSrtpTransportTest,
        SetTransportsAfterHandshakeCompleteWithoutRtcpMux) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "video", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "video", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "video", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "video", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
                          rtcp_dtls2.get(), /*rtcp_mux_enabled=*/false);
 
-  auto rtp_dtls3 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls3 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls3 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls3 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls4 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls4 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls4 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls4 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
   CompleteDtlsHandshake(rtp_dtls3.get(), rtp_dtls4.get());
   CompleteDtlsHandshake(rtcp_dtls3.get(), rtcp_dtls4.get());
@@ -311,13 +311,13 @@
 // Tests if RTCP muxing is enabled, SRTP is set up as soon as the RTP DTLS
 // handshake is finished.
 TEST_F(DtlsSrtpTransportTest, SetTransportsBeforeHandshakeCompleteWithRtcpMux) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
@@ -334,13 +334,13 @@
 // RTCP DTLS handshake are finished.
 TEST_F(DtlsSrtpTransportTest,
        SetTransportsBeforeHandshakeCompleteWithoutRtcpMux) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
@@ -357,9 +357,9 @@
 // context will be reset and will be re-setup once the new transports' handshake
 // complete.
 TEST_F(DtlsSrtpTransportTest, DtlsSrtpResetAfterDtlsTransportChange) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), nullptr, rtp_dtls2.get(), nullptr,
@@ -369,9 +369,9 @@
   EXPECT_TRUE(dtls_srtp_transport1_->IsSrtpActive());
   EXPECT_TRUE(dtls_srtp_transport2_->IsSrtpActive());
 
-  auto rtp_dtls3 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls3 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtp_dtls4 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls4 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
 
   // The previous context is reset.
@@ -389,13 +389,13 @@
 // enabled, SRTP is set up.
 TEST_F(DtlsSrtpTransportTest,
        RtcpMuxEnabledAfterRtpTransportHandshakeComplete) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
@@ -416,9 +416,9 @@
 // Tests that when SetSend/RecvEncryptedHeaderExtensionIds is called, the SRTP
 // sessions are updated with new encryped header extension IDs immediately.
 TEST_F(DtlsSrtpTransportTest, EncryptedHeaderExtensionIdUpdated) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), nullptr, rtp_dtls2.get(), nullptr,
@@ -442,9 +442,9 @@
 // Tests if RTCP muxing is enabled. DtlsSrtpTransport is ready to send once the
 // RTP DtlsTransport is ready.
 TEST_F(DtlsSrtpTransportTest, SignalReadyToSendFiredWithRtcpMux) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), nullptr, rtp_dtls2.get(), nullptr,
@@ -458,13 +458,13 @@
 // Tests if RTCP muxing is not enabled. DtlsSrtpTransport is ready to send once
 // both the RTP and RTCP DtlsTransport are ready.
 TEST_F(DtlsSrtpTransportTest, SignalReadyToSendFiredWithoutRtcpMux) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
@@ -485,13 +485,13 @@
 // when attempting to unprotect packets.
 // Regression test for bugs.webrtc.org/8996
 TEST_F(DtlsSrtpTransportTest, SrtpSessionNotResetWhenRtcpTransportRemoved) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
@@ -514,13 +514,13 @@
 // Tests that RTCP packets can be sent and received if both sides actively reset
 // the SRTP parameters with the |active_reset_srtp_params_| flag.
 TEST_F(DtlsSrtpTransportTest, ActivelyResetSrtpParams) {
-  auto rtp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls1 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls1 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
-  auto rtp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  auto rtcp_dtls2 = rtc::MakeUnique<FakeDtlsTransport>(
+  auto rtcp_dtls2 = absl::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTCP);
 
   MakeDtlsSrtpTransports(rtp_dtls1.get(), rtcp_dtls1.get(), rtp_dtls2.get(),
diff --git a/pc/jsepsessiondescription.cc b/pc/jsepsessiondescription.cc
index f52faf1..2adf69d 100644
--- a/pc/jsepsessiondescription.cc
+++ b/pc/jsepsessiondescription.cc
@@ -12,11 +12,11 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/port.h"
 #include "pc/mediasession.h"
 #include "pc/webrtcsdp.h"
 #include "rtc_base/arraysize.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 
 using cricket::SessionDescription;
@@ -160,7 +160,7 @@
     SdpType type,
     const std::string& sdp,
     SdpParseError* error_out) {
-  auto jsep_desc = rtc::MakeUnique<JsepSessionDescription>(type);
+  auto jsep_desc = absl::make_unique<JsepSessionDescription>(type);
   if (!SdpDeserialize(sdp, jsep_desc.get(), error_out)) {
     return nullptr;
   }
diff --git a/pc/jsepsessiondescription_unittest.cc b/pc/jsepsessiondescription_unittest.cc
index 614b23d..d9e2588 100644
--- a/pc/jsepsessiondescription_unittest.cc
+++ b/pc/jsepsessiondescription_unittest.cc
@@ -11,6 +11,7 @@
 #include <memory>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "api/candidate.h"
 #include "api/jsepicecandidate.h"
 #include "api/jsepsessiondescription.h"
@@ -20,7 +21,6 @@
 #include "pc/sessiondescription.h"
 #include "pc/webrtcsdp.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 
 using cricket::MediaProtocolType;
@@ -83,7 +83,7 @@
     candidate_ = candidate;
     const std::string session_id = rtc::ToString(rtc::CreateRandomId64());
     const std::string session_version = rtc::ToString(rtc::CreateRandomId());
-    jsep_desc_ = rtc::MakeUnique<JsepSessionDescription>(SdpType::kOffer);
+    jsep_desc_ = absl::make_unique<JsepSessionDescription>(SdpType::kOffer);
     ASSERT_TRUE(jsep_desc_->Initialize(CreateCricketSessionDescription(),
                                        session_id, session_version));
   }
@@ -97,7 +97,7 @@
 
   std::unique_ptr<SessionDescriptionInterface> DeSerialize(
       const std::string& sdp) {
-    auto jsep_desc = rtc::MakeUnique<JsepSessionDescription>(SdpType::kOffer);
+    auto jsep_desc = absl::make_unique<JsepSessionDescription>(SdpType::kOffer);
     EXPECT_TRUE(webrtc::SdpDeserialize(sdp, jsep_desc.get(), nullptr));
     return std::move(jsep_desc);
   }
diff --git a/pc/jseptransport.cc b/pc/jseptransport.cc
index bea5d30..c3dfd32 100644
--- a/pc/jseptransport.cc
+++ b/pc/jseptransport.cc
@@ -13,6 +13,7 @@
 #include <memory>
 #include <utility>  // for std::pair
 
+#include "absl/memory/memory.h"
 #include "api/candidate.h"
 #include "p2p/base/p2pconstants.h"
 #include "p2p/base/p2ptransportchannel.h"
@@ -20,7 +21,6 @@
 #include "rtc_base/bind.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/strings/string_builder.h"
 
 using webrtc::SdpType;
@@ -490,7 +490,7 @@
   rtc::SSLFingerprint* remote_fp =
       remote_description_->transport_desc.identity_fingerprint.get();
   if (remote_fp && local_fp) {
-    remote_fingerprint = rtc::MakeUnique<rtc::SSLFingerprint>(*remote_fp);
+    remote_fingerprint = absl::make_unique<rtc::SSLFingerprint>(*remote_fp);
     webrtc::RTCError error =
         NegotiateDtlsRole(local_description_type,
                           local_description_->transport_desc.connection_role,
@@ -505,7 +505,7 @@
         "Local fingerprint supplied when caller didn't offer DTLS.");
   } else {
     // We are not doing DTLS
-    remote_fingerprint = rtc::MakeUnique<rtc::SSLFingerprint>("", nullptr, 0);
+    remote_fingerprint = absl::make_unique<rtc::SSLFingerprint>("", nullptr, 0);
   }
   // Now that we have negotiated everything, push it downward.
   // Note that we cache the result so that if we have race conditions
diff --git a/pc/jseptransport_unittest.cc b/pc/jseptransport_unittest.cc
index 16cc526..56a742c 100644
--- a/pc/jseptransport_unittest.cc
+++ b/pc/jseptransport_unittest.cc
@@ -44,7 +44,7 @@
   std::unique_ptr<webrtc::SrtpTransport> CreateSdesTransport(
       rtc::PacketTransportInternal* rtp_packet_transport,
       rtc::PacketTransportInternal* rtcp_packet_transport) {
-    auto srtp_transport = rtc::MakeUnique<webrtc::SrtpTransport>(
+    auto srtp_transport = absl::make_unique<webrtc::SrtpTransport>(
         rtcp_packet_transport == nullptr);
 
     srtp_transport->SetRtpPacketTransport(rtp_packet_transport);
@@ -57,7 +57,7 @@
   std::unique_ptr<webrtc::DtlsSrtpTransport> CreateDtlsSrtpTransport(
       cricket::DtlsTransportInternal* rtp_dtls_transport,
       cricket::DtlsTransportInternal* rtcp_dtls_transport) {
-    auto dtls_srtp_transport = rtc::MakeUnique<webrtc::DtlsSrtpTransport>(
+    auto dtls_srtp_transport = absl::make_unique<webrtc::DtlsSrtpTransport>(
         rtcp_dtls_transport == nullptr);
     dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport,
                                            rtcp_dtls_transport);
@@ -68,16 +68,17 @@
   // FakeIceTransport.
   std::unique_ptr<JsepTransport> CreateJsepTransport2(bool rtcp_mux_enabled,
                                                       SrtpMode srtp_mode) {
-    auto ice = rtc::MakeUnique<FakeIceTransport>(kTransportName,
-                                                 ICE_CANDIDATE_COMPONENT_RTP);
+    auto ice = absl::make_unique<FakeIceTransport>(kTransportName,
+                                                   ICE_CANDIDATE_COMPONENT_RTP);
     auto rtp_dtls_transport =
-        rtc::MakeUnique<FakeDtlsTransport>(std::move(ice));
+        absl::make_unique<FakeDtlsTransport>(std::move(ice));
 
     std::unique_ptr<FakeDtlsTransport> rtcp_dtls_transport;
     if (!rtcp_mux_enabled) {
-      ice = rtc::MakeUnique<FakeIceTransport>(kTransportName,
-                                              ICE_CANDIDATE_COMPONENT_RTCP);
-      rtcp_dtls_transport = rtc::MakeUnique<FakeDtlsTransport>(std::move(ice));
+      ice = absl::make_unique<FakeIceTransport>(kTransportName,
+                                                ICE_CANDIDATE_COMPONENT_RTCP);
+      rtcp_dtls_transport =
+          absl::make_unique<FakeDtlsTransport>(std::move(ice));
     }
 
     std::unique_ptr<webrtc::RtpTransport> unencrypted_rtp_transport;
@@ -97,7 +98,7 @@
         RTC_NOTREACHED();
     }
 
-    auto jsep_transport = rtc::MakeUnique<JsepTransport>(
+    auto jsep_transport = absl::make_unique<JsepTransport>(
         kTransportName, /*local_certificate=*/nullptr,
         std::move(unencrypted_rtp_transport), std::move(sdes_transport),
         std::move(dtls_srtp_transport), std::move(rtp_dtls_transport),
diff --git a/pc/jseptransportcontroller.cc b/pc/jseptransportcontroller.cc
index 80b7237..a44ae16 100644
--- a/pc/jseptransportcontroller.cc
+++ b/pc/jseptransportcontroller.cc
@@ -14,10 +14,10 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/port.h"
 #include "rtc_base/bind.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread.h"
 
 using webrtc::SdpType;
@@ -411,10 +411,10 @@
     dtls = config_.external_transport_factory->CreateDtlsTransport(
         std::move(ice), config_.crypto_options);
   } else {
-    auto ice = rtc::MakeUnique<cricket::P2PTransportChannel>(
+    auto ice = absl::make_unique<cricket::P2PTransportChannel>(
         transport_name, component, port_allocator_, config_.event_log);
-    dtls = rtc::MakeUnique<cricket::DtlsTransport>(std::move(ice),
-                                                   config_.crypto_options);
+    dtls = absl::make_unique<cricket::DtlsTransport>(std::move(ice),
+                                                     config_.crypto_options);
   }
 
   RTC_DCHECK(dtls);
@@ -455,7 +455,7 @@
     rtc::PacketTransportInternal* rtcp_packet_transport) {
   RTC_DCHECK(network_thread_->IsCurrent());
   auto unencrypted_rtp_transport =
-      rtc::MakeUnique<RtpTransport>(rtcp_packet_transport == nullptr);
+      absl::make_unique<RtpTransport>(rtcp_packet_transport == nullptr);
   unencrypted_rtp_transport->SetRtpPacketTransport(rtp_packet_transport);
   if (rtcp_packet_transport) {
     unencrypted_rtp_transport->SetRtcpPacketTransport(rtcp_packet_transport);
@@ -470,7 +470,7 @@
     cricket::DtlsTransportInternal* rtcp_dtls_transport) {
   RTC_DCHECK(network_thread_->IsCurrent());
   auto srtp_transport =
-      rtc::MakeUnique<webrtc::SrtpTransport>(rtcp_dtls_transport == nullptr);
+      absl::make_unique<webrtc::SrtpTransport>(rtcp_dtls_transport == nullptr);
   RTC_DCHECK(rtp_dtls_transport);
   srtp_transport->SetRtpPacketTransport(rtp_dtls_transport);
   if (rtcp_dtls_transport) {
@@ -488,7 +488,7 @@
     cricket::DtlsTransportInternal* rtp_dtls_transport,
     cricket::DtlsTransportInternal* rtcp_dtls_transport) {
   RTC_DCHECK(network_thread_->IsCurrent());
-  auto dtls_srtp_transport = rtc::MakeUnique<webrtc::DtlsSrtpTransport>(
+  auto dtls_srtp_transport = absl::make_unique<webrtc::DtlsSrtpTransport>(
       rtcp_dtls_transport == nullptr);
   if (config_.enable_external_auth) {
     dtls_srtp_transport->EnableExternalAuth();
@@ -987,7 +987,7 @@
   }
 
   std::unique_ptr<cricket::JsepTransport> jsep_transport =
-      rtc::MakeUnique<cricket::JsepTransport>(
+      absl::make_unique<cricket::JsepTransport>(
           content_info.name, certificate_, std::move(unencrypted_rtp_transport),
           std::move(sdes_transport), std::move(dtls_srtp_transport),
           std::move(rtp_dtls_transport), std::move(rtcp_dtls_transport));
diff --git a/pc/jseptransportcontroller_unittest.cc b/pc/jseptransportcontroller_unittest.cc
index 93f14c8..7bda977 100644
--- a/pc/jseptransportcontroller_unittest.cc
+++ b/pc/jseptransportcontroller_unittest.cc
@@ -11,13 +11,13 @@
 #include <map>
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "p2p/base/fakedtlstransport.h"
 #include "p2p/base/fakeicetransport.h"
 #include "p2p/base/transportfactoryinterface.h"
 #include "p2p/base/transportinfo.h"
 #include "pc/jseptransportcontroller.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread.h"
 #include "test/gtest.h"
 
@@ -46,8 +46,8 @@
   std::unique_ptr<cricket::IceTransportInternal> CreateIceTransport(
       const std::string& transport_name,
       int component) override {
-    return rtc::MakeUnique<cricket::FakeIceTransport>(transport_name,
-                                                      component);
+    return absl::make_unique<cricket::FakeIceTransport>(transport_name,
+                                                        component);
   }
 
   std::unique_ptr<cricket::DtlsTransportInternal> CreateDtlsTransport(
@@ -55,7 +55,7 @@
       const rtc::CryptoOptions& crypto_options) override {
     std::unique_ptr<cricket::FakeIceTransport> fake_ice(
         static_cast<cricket::FakeIceTransport*>(ice.release()));
-    return rtc::MakeUnique<FakeDtlsTransport>(std::move(fake_ice));
+    return absl::make_unique<FakeDtlsTransport>(std::move(fake_ice));
   }
 };
 
@@ -64,7 +64,7 @@
                                     public sigslot::has_slots<> {
  public:
   JsepTransportControllerTest() : signaling_thread_(rtc::Thread::Current()) {
-    fake_transport_factory_ = rtc::MakeUnique<FakeTransportFactory>();
+    fake_transport_factory_ = absl::make_unique<FakeTransportFactory>();
   }
 
   void CreateJsepTransportController(
@@ -75,7 +75,7 @@
     config.transport_observer = this;
     // The tests only works with |fake_transport_factory|;
     config.external_transport_factory = fake_transport_factory_.get();
-    transport_controller_ = rtc::MakeUnique<JsepTransportController>(
+    transport_controller_ = absl::make_unique<JsepTransportController>(
         signaling_thread, network_thread, port_allocator, config);
     ConnectTransportControllerSignals();
   }
@@ -91,7 +91,7 @@
 
   std::unique_ptr<cricket::SessionDescription>
   CreateSessionDescriptionWithoutBundle() {
-    auto description = rtc::MakeUnique<cricket::SessionDescription>();
+    auto description = absl::make_unique<cricket::SessionDescription>();
     AddAudioSection(description.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                     cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                     nullptr);
@@ -453,7 +453,7 @@
           rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
   rtc::scoped_refptr<rtc::RTCCertificate> returned_certificate;
 
-  auto description = rtc::MakeUnique<cricket::SessionDescription>();
+  auto description = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(description.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   certificate1);
@@ -511,11 +511,11 @@
           rtc::SSLIdentity::Generate("answer", rtc::KT_DEFAULT)));
   transport_controller_->SetLocalCertificate(offer_certificate);
 
-  auto offer_desc = rtc::MakeUnique<cricket::SessionDescription>();
+  auto offer_desc = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(offer_desc.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   offer_certificate);
-  auto answer_desc = rtc::MakeUnique<cricket::SessionDescription>();
+  auto answer_desc = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(answer_desc.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   answer_certificate);
@@ -772,11 +772,11 @@
 TEST_F(JsepTransportControllerTest, IceRoleRedeterminedOnIceRestartByDefault) {
   CreateJsepTransportController(JsepTransportController::Config());
   // Let the |transport_controller_| be the controlled side initially.
-  auto remote_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
-  auto local_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_answer.get(), kAudioMid1, kIceUfrag2, kIcePwd2,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -794,7 +794,7 @@
             fake_dtls->fake_ice_transport()->GetIceRole());
 
   // New offer will trigger the ICE restart.
-  auto restart_local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto restart_local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(restart_local_offer.get(), kAudioMid1, kIceUfrag3, kIcePwd3,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -815,11 +815,11 @@
 
   CreateJsepTransportController(config);
   // Let the |transport_controller_| be the controlled side initially.
-  auto remote_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
-  auto local_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_answer.get(), kAudioMid1, kIceUfrag2, kIcePwd2,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -837,7 +837,7 @@
             fake_dtls->fake_ice_transport()->GetIceRole());
 
   // New offer will trigger the ICE restart.
-  auto restart_local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto restart_local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(restart_local_offer.get(), kAudioMid1, kIceUfrag3, kIcePwd3,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -852,7 +852,7 @@
 // Tests ICE-Lite mode in remote answer.
 TEST_F(JsepTransportControllerTest, SetIceRoleWhenIceLiteInRemoteAnswer) {
   CreateJsepTransportController(JsepTransportController::Config());
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -866,7 +866,7 @@
   EXPECT_EQ(cricket::ICEMODE_FULL,
             fake_dtls->fake_ice_transport()->remote_ice_mode());
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag2, kIcePwd2,
                   cricket::ICEMODE_LITE, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -885,11 +885,11 @@
 TEST_F(JsepTransportControllerTest,
        IceRoleIsControllingAfterIceRestartFromIceLiteEndpoint) {
   CreateJsepTransportController(JsepTransportController::Config());
-  auto remote_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_LITE, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
-  auto local_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -907,11 +907,11 @@
             fake_dtls->fake_ice_transport()->GetIceRole());
 
   // In the subsequence remote offer triggers an ICE restart.
-  auto remote_offer2 = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_offer2 = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_offer2.get(), kAudioMid1, kIceUfrag2, kIcePwd2,
                   cricket::ICEMODE_LITE, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
-  auto local_answer2 = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_answer2 = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_answer2.get(), kAudioMid1, kIceUfrag2, kIcePwd2,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -938,7 +938,7 @@
   bundle_group.AddContentName(kVideoMid1);
   bundle_group.AddContentName(kDataMid1);
 
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -953,7 +953,7 @@
                  cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                  nullptr);
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -1009,7 +1009,7 @@
   bundle_group.AddContentName(kAudioMid1);
   bundle_group.AddContentName(kVideoMid1);
 
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -1020,7 +1020,7 @@
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -1061,12 +1061,12 @@
   cricket::ContentGroup bundle_group(cricket::GROUP_TYPE_BUNDLE);
   bundle_group.AddContentName(kDataMid1);
 
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddDataSection(local_offer.get(), kDataMid1,
                  cricket::MediaProtocolType::kSctp, kIceUfrag1, kIcePwd1,
                  cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                  nullptr);
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddDataSection(remote_answer.get(), kDataMid1,
                  cricket::MediaProtocolType::kSctp, kIceUfrag1, kIcePwd1,
                  cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
@@ -1124,7 +1124,7 @@
   bundle_group.AddContentName(kVideoMid1);
   bundle_group.AddContentName(kDataMid1);
 
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -1136,7 +1136,7 @@
                  cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                  nullptr);
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -1183,7 +1183,7 @@
   bundle_group.AddContentName(kAudioMid1);
   bundle_group.AddContentName(kVideoMid1);
 
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -1191,7 +1191,7 @@
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -1233,7 +1233,7 @@
   bundle_group.AddContentName(kVideoMid1);
   bundle_group.AddContentName(kDataMid1);
 
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -1245,7 +1245,7 @@
                  cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                  nullptr);
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
@@ -1286,7 +1286,7 @@
   JsepTransportController::Config config;
   config.rtcp_mux_policy = PeerConnectionInterface::kRtcpMuxPolicyRequire;
   CreateJsepTransportController(config);
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -1304,7 +1304,7 @@
   JsepTransportController::Config config;
   config.rtcp_mux_policy = PeerConnectionInterface::kRtcpMuxPolicyRequire;
   CreateJsepTransportController(config);
-  auto local_offer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto local_offer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(local_offer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_ACTPASS,
                   nullptr);
@@ -1312,7 +1312,7 @@
                   ->SetLocalDescription(SdpType::kOffer, local_offer.get())
                   .ok());
 
-  auto remote_answer = rtc::MakeUnique<cricket::SessionDescription>();
+  auto remote_answer = absl::make_unique<cricket::SessionDescription>();
   AddAudioSection(remote_answer.get(), kAudioMid1, kIceUfrag1, kIcePwd1,
                   cricket::ICEMODE_FULL, cricket::CONNECTIONROLE_PASSIVE,
                   nullptr);
diff --git a/pc/peerconnection.cc b/pc/peerconnection.cc
index 348569a..89f35c2 100644
--- a/pc/peerconnection.cc
+++ b/pc/peerconnection.cc
@@ -17,6 +17,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/jsepicecandidate.h"
 #include "api/jsepsessiondescription.h"
 #include "api/mediaconstraintsinterface.h"
@@ -46,7 +47,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 #include "rtc_base/stringutils.h"
 #include "rtc_base/trace_event.h"
@@ -3142,7 +3142,7 @@
         bitrate_allocation_strategy.release();
     auto functor = [this, strategy_raw]() {
       call_->SetBitrateAllocationStrategy(
-          rtc::WrapUnique<rtc::BitrateAllocationStrategy>(strategy_raw));
+          absl::WrapUnique<rtc::BitrateAllocationStrategy>(strategy_raw));
     };
     worker_thread->Invoke<void>(RTC_FROM_HERE, functor);
     return;
@@ -3211,7 +3211,7 @@
                               ? RtcEventLog::kUnlimitedOutput
                               : rtc::saturated_cast<size_t>(max_size_bytes);
   return StartRtcEventLog(
-      rtc::MakeUnique<RtcEventLogOutputFile>(file, max_size),
+      absl::make_unique<RtcEventLogOutputFile>(file, max_size),
       webrtc::RtcEventLog::kImmediateOutput);
 }
 
diff --git a/pc/peerconnection_bundle_unittest.cc b/pc/peerconnection_bundle_unittest.cc
index b31861d..3211f26 100644
--- a/pc/peerconnection_bundle_unittest.cc
+++ b/pc/peerconnection_bundle_unittest.cc
@@ -23,10 +23,10 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "pc/test/fakeaudiocapturemodule.h"
 #include "rtc_base/fakenetwork.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 #include "test/gmock.h"
 
@@ -183,11 +183,11 @@
   WrapperPtr CreatePeerConnection(const RTCConfiguration& config) {
     auto* fake_network = NewFakeNetwork();
     auto port_allocator =
-        rtc::MakeUnique<cricket::BasicPortAllocator>(fake_network);
+        absl::make_unique<cricket::BasicPortAllocator>(fake_network);
     port_allocator->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
                               cricket::PORTALLOCATOR_DISABLE_RELAY);
     port_allocator->set_step_delay(cricket::kMinimumStepDelay);
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     RTCConfiguration modified_config = config;
     modified_config.sdp_semantics = sdp_semantics_;
     auto pc = pc_factory_->CreatePeerConnection(
@@ -196,7 +196,7 @@
       return nullptr;
     }
 
-    auto wrapper = rtc::MakeUnique<PeerConnectionWrapperForBundleTest>(
+    auto wrapper = absl::make_unique<PeerConnectionWrapperForBundleTest>(
         pc_factory_, pc, std::move(observer));
     wrapper->set_network(fake_network);
     return wrapper;
diff --git a/pc/peerconnection_crypto_unittest.cc b/pc/peerconnection_crypto_unittest.cc
index 5077358..5a8b5b8 100644
--- a/pc/peerconnection_crypto_unittest.cc
+++ b/pc/peerconnection_crypto_unittest.cc
@@ -19,10 +19,10 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "pc/test/fakeaudiocapturemodule.h"
 #include "pc/test/fakertccertificategenerator.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 
 namespace webrtc {
@@ -64,9 +64,9 @@
   WrapperPtr CreatePeerConnection(
       const RTCConfiguration& config,
       std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_gen) {
-    auto fake_port_allocator = rtc::MakeUnique<cricket::FakePortAllocator>(
+    auto fake_port_allocator = absl::make_unique<cricket::FakePortAllocator>(
         rtc::Thread::Current(), nullptr);
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     RTCConfiguration modified_config = config;
     modified_config.sdp_semantics = sdp_semantics_;
     auto pc = pc_factory_->CreatePeerConnection(
@@ -76,8 +76,8 @@
       return nullptr;
     }
 
-    return rtc::MakeUnique<PeerConnectionWrapper>(pc_factory_, pc,
-                                                  std::move(observer));
+    return absl::make_unique<PeerConnectionWrapper>(pc_factory_, pc,
+                                                    std::move(observer));
   }
 
   // Accepts the same arguments as CreatePeerConnection and adds default audio
@@ -566,7 +566,7 @@
   RTCConfiguration config;
   config.enable_dtls_srtp.emplace(true);
   auto owned_fake_certificate_generator =
-      rtc::MakeUnique<FakeRTCCertificateGenerator>();
+      absl::make_unique<FakeRTCCertificateGenerator>();
   auto* fake_certificate_generator = owned_fake_certificate_generator.get();
   fake_certificate_generator->set_should_fail(cert_gen_result_ ==
                                               CertGenResult::kFail);
diff --git a/pc/peerconnection_datachannel_unittest.cc b/pc/peerconnection_datachannel_unittest.cc
index 224d0e9..033a609 100644
--- a/pc/peerconnection_datachannel_unittest.cc
+++ b/pc/peerconnection_datachannel_unittest.cc
@@ -20,9 +20,9 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "pc/test/fakesctptransport.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 
 namespace webrtc {
@@ -39,13 +39,13 @@
             rtc::Thread::Current(),
             rtc::Thread::Current(),
             rtc::Thread::Current(),
-            rtc::MakeUnique<cricket::FakeMediaEngine>(),
+            absl::make_unique<cricket::FakeMediaEngine>(),
             CreateCallFactory(),
             nullptr) {}
 
   std::unique_ptr<cricket::SctpTransportInternalFactory>
   CreateSctpTransportInternalFactory() {
-    auto factory = rtc::MakeUnique<FakeSctpTransportFactory>();
+    auto factory = absl::make_unique<FakeSctpTransportFactory>();
     last_fake_sctp_transport_factory_ = factory.get();
     return factory;
   }
@@ -114,7 +114,7 @@
         new PeerConnectionFactoryForDataChannelTest());
     pc_factory->SetOptions(factory_options);
     RTC_CHECK(pc_factory->Initialize());
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     RTCConfiguration modified_config = config;
     modified_config.sdp_semantics = sdp_semantics_;
     auto pc = pc_factory->CreatePeerConnection(modified_config, nullptr,
@@ -123,7 +123,7 @@
       return nullptr;
     }
 
-    auto wrapper = rtc::MakeUnique<PeerConnectionWrapperForDataChannelTest>(
+    auto wrapper = absl::make_unique<PeerConnectionWrapperForDataChannelTest>(
         pc_factory, pc, std::move(observer));
     RTC_DCHECK(pc_factory->last_fake_sctp_transport_factory_);
     wrapper->set_sctp_transport_factory(
diff --git a/pc/peerconnection_histogram_unittest.cc b/pc/peerconnection_histogram_unittest.cc
index e5c0426..b998372 100644
--- a/pc/peerconnection_histogram_unittest.cc
+++ b/pc/peerconnection_histogram_unittest.cc
@@ -10,6 +10,7 @@
 
 #include <tuple>
 
+#include "absl/memory/memory.h"
 #include "api/fakemetricsobserver.h"
 #include "api/peerconnectionproxy.h"
 #include "media/base/fakemediaengine.h"
@@ -20,7 +21,6 @@
 #include "pc/sdputils.h"
 #include "pc/test/fakesctptransport.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 
 namespace webrtc {
@@ -47,7 +47,7 @@
             rtc::Thread::Current(),
             rtc::Thread::Current(),
             rtc::Thread::Current(),
-            rtc::MakeUnique<cricket::FakeMediaEngine>(),
+            absl::make_unique<cricket::FakeMediaEngine>(),
             CreateCallFactory(),
             nullptr) {}
 
@@ -155,15 +155,16 @@
     if (immediate_report) {
       pc_factory->ReturnHistogramVeryQuickly();
     }
-    auto observer = rtc::MakeUnique<ObserverForUsageHistogramTest>();
+    auto observer = absl::make_unique<ObserverForUsageHistogramTest>();
     auto pc = pc_factory->CreatePeerConnection(config, nullptr, nullptr,
                                                observer.get());
     if (!pc) {
       return nullptr;
     }
 
-    auto wrapper = rtc::MakeUnique<PeerConnectionWrapperForUsageHistogramTest>(
-        pc_factory, pc, std::move(observer));
+    auto wrapper =
+        absl::make_unique<PeerConnectionWrapperForUsageHistogramTest>(
+            pc_factory, pc, std::move(observer));
     return wrapper;
   }
 
diff --git a/pc/peerconnection_ice_unittest.cc b/pc/peerconnection_ice_unittest.cc
index cf9f016..fcd5fac 100644
--- a/pc/peerconnection_ice_unittest.cc
+++ b/pc/peerconnection_ice_unittest.cc
@@ -18,6 +18,7 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/peerconnectionproxy.h"
@@ -26,7 +27,6 @@
 #include "pc/test/fakeaudiocapturemodule.h"
 #include "rtc_base/fakenetwork.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 
 namespace webrtc {
@@ -104,20 +104,20 @@
   WrapperPtr CreatePeerConnection(const RTCConfiguration& config) {
     auto* fake_network = NewFakeNetwork();
     auto port_allocator =
-        rtc::MakeUnique<cricket::BasicPortAllocator>(fake_network);
+        absl::make_unique<cricket::BasicPortAllocator>(fake_network);
     port_allocator->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
                               cricket::PORTALLOCATOR_DISABLE_RELAY);
     port_allocator->set_step_delay(cricket::kMinimumStepDelay);
     RTCConfiguration modified_config = config;
     modified_config.sdp_semantics = sdp_semantics_;
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     auto pc = pc_factory_->CreatePeerConnection(
         modified_config, std::move(port_allocator), nullptr, observer.get());
     if (!pc) {
       return nullptr;
     }
 
-    auto wrapper = rtc::MakeUnique<PeerConnectionWrapperForIceTest>(
+    auto wrapper = absl::make_unique<PeerConnectionWrapperForIceTest>(
         pc_factory_, pc, std::move(observer));
     wrapper->set_network(fake_network);
     return wrapper;
diff --git a/pc/peerconnection_integrationtest.cc b/pc/peerconnection_integrationtest.cc
index 0bd9066..ed5db1f 100644
--- a/pc/peerconnection_integrationtest.cc
+++ b/pc/peerconnection_integrationtest.cc
@@ -885,7 +885,7 @@
       ASSERT_TRUE(fake_video_renderers_.find(video_track->id()) ==
                   fake_video_renderers_.end());
       fake_video_renderers_[video_track->id()] =
-          rtc::MakeUnique<FakeVideoTrackRenderer>(video_track);
+          absl::make_unique<FakeVideoTrackRenderer>(video_track);
     }
   }
   void OnRemoveTrack(
@@ -1165,7 +1165,7 @@
     modified_config.sdp_semantics = sdp_semantics_;
     if (!dependencies.cert_generator) {
       dependencies.cert_generator =
-          rtc::MakeUnique<FakeRTCCertificateGenerator>();
+          absl::make_unique<FakeRTCCertificateGenerator>();
     }
     std::unique_ptr<PeerConnectionWrapper> client(
         new PeerConnectionWrapper(debug_name));
@@ -1303,7 +1303,7 @@
         network_thread()->Invoke<std::unique_ptr<cricket::TestTurnServer>>(
             RTC_FROM_HERE,
             [thread, internal_address, external_address, type, common_name] {
-              return rtc::MakeUnique<cricket::TestTurnServer>(
+              return absl::make_unique<cricket::TestTurnServer>(
                   thread, internal_address, external_address, type,
                   /*ignore_bad_certs=*/true, common_name);
             });
@@ -1316,7 +1316,7 @@
     std::unique_ptr<cricket::TestTurnCustomizer> turn_customizer =
         network_thread()->Invoke<std::unique_ptr<cricket::TestTurnCustomizer>>(
             RTC_FROM_HERE,
-            [] { return rtc::MakeUnique<cricket::TestTurnCustomizer>(); });
+            [] { return absl::make_unique<cricket::TestTurnCustomizer>(); });
     turn_customizers_.push_back(std::move(turn_customizer));
     // Interactions with the turn customizer should be done on the network
     // thread.
@@ -4282,7 +4282,7 @@
   ASSERT_TRUE(CreatePeerConnectionWrappers());
   ConnectFakeSignaling();
 
-  auto output = rtc::MakeUnique<testing::NiceMock<MockRtcEventLogOutput>>();
+  auto output = absl::make_unique<testing::NiceMock<MockRtcEventLogOutput>>();
   ON_CALL(*output, IsActive()).WillByDefault(testing::Return(true));
   ON_CALL(*output, Write(::testing::_)).WillByDefault(testing::Return(true));
   EXPECT_CALL(*output, Write(::testing::_)).Times(::testing::AtLeast(1));
diff --git a/pc/peerconnection_jsep_unittest.cc b/pc/peerconnection_jsep_unittest.cc
index 4cd3799..7de0a3f 100644
--- a/pc/peerconnection_jsep_unittest.cc
+++ b/pc/peerconnection_jsep_unittest.cc
@@ -21,10 +21,10 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "pc/test/fakeaudiocapturemodule.h"
 #include "pc/test/fakesctptransport.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 #include "test/gmock.h"
 
@@ -63,7 +63,7 @@
 
   std::unique_ptr<cricket::SctpTransportInternalFactory>
   CreateSctpTransportInternalFactory() {
-    return rtc::MakeUnique<FakeSctpTransportFactory>();
+    return absl::make_unique<FakeSctpTransportFactory>();
   }
 };
 
@@ -88,15 +88,15 @@
     rtc::scoped_refptr<PeerConnectionFactory> pc_factory(
         new rtc::RefCountedObject<PeerConnectionFactoryForJsepTest>());
     RTC_CHECK(pc_factory->Initialize());
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     auto pc = pc_factory->CreatePeerConnection(config, nullptr, nullptr,
                                                observer.get());
     if (!pc) {
       return nullptr;
     }
 
-    return rtc::MakeUnique<PeerConnectionWrapper>(pc_factory, pc,
-                                                  std::move(observer));
+    return absl::make_unique<PeerConnectionWrapper>(pc_factory, pc,
+                                                    std::move(observer));
   }
 
   std::unique_ptr<rtc::VirtualSocketServer> vss_;
diff --git a/pc/peerconnection_media_unittest.cc b/pc/peerconnection_media_unittest.cc
index f59d6aa..cc7ae9a 100644
--- a/pc/peerconnection_media_unittest.cc
+++ b/pc/peerconnection_media_unittest.cc
@@ -25,9 +25,9 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "pc/test/fakertccertificategenerator.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/virtualsocketserver.h"
 #include "test/gmock.h"
 
@@ -72,16 +72,16 @@
   }
 
   WrapperPtr CreatePeerConnection(const RTCConfiguration& config) {
-    auto media_engine = rtc::MakeUnique<FakeMediaEngine>();
+    auto media_engine = absl::make_unique<FakeMediaEngine>();
     auto* media_engine_ptr = media_engine.get();
     auto pc_factory = CreateModularPeerConnectionFactory(
         rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(),
         std::move(media_engine), CreateCallFactory(),
         CreateRtcEventLogFactory());
 
-    auto fake_port_allocator = rtc::MakeUnique<cricket::FakePortAllocator>(
+    auto fake_port_allocator = absl::make_unique<cricket::FakePortAllocator>(
         rtc::Thread::Current(), nullptr);
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     auto modified_config = config;
     modified_config.sdp_semantics = sdp_semantics_;
     auto pc = pc_factory->CreatePeerConnection(modified_config,
@@ -91,7 +91,7 @@
       return nullptr;
     }
 
-    auto wrapper = rtc::MakeUnique<PeerConnectionWrapperForMediaTest>(
+    auto wrapper = absl::make_unique<PeerConnectionWrapperForMediaTest>(
         pc_factory, pc, std::move(observer));
     wrapper->set_media_engine(media_engine_ptr);
     return wrapper;
diff --git a/pc/peerconnection_rampup_tests.cc b/pc/peerconnection_rampup_tests.cc
index 7a77a9e..6d6a9fc 100644
--- a/pc/peerconnection_rampup_tests.cc
+++ b/pc/peerconnection_rampup_tests.cc
@@ -156,7 +156,7 @@
     fake_network_manager->AddInterface(kDefaultLocalAddress);
     fake_network_managers_.emplace_back(fake_network_manager);
 
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     webrtc::PeerConnectionDependencies dependencies(observer.get());
     cricket::BasicPortAllocator* port_allocator =
         new cricket::BasicPortAllocator(fake_network_manager);
@@ -164,7 +164,7 @@
     dependencies.allocator =
         std::unique_ptr<cricket::BasicPortAllocator>(port_allocator);
     dependencies.tls_cert_verifier =
-        rtc::MakeUnique<rtc::TestCertificateVerifier>();
+        absl::make_unique<rtc::TestCertificateVerifier>();
 
     auto pc =
         pc_factory_->CreatePeerConnection(config, std::move(dependencies));
@@ -172,7 +172,7 @@
       return nullptr;
     }
 
-    return rtc::MakeUnique<PeerConnectionWrapperForRampUpTest>(
+    return absl::make_unique<PeerConnectionWrapperForRampUpTest>(
         pc_factory_, pc, std::move(observer));
   }
 
@@ -214,7 +214,7 @@
                   kTurnInternalAddress, kTurnInternalPort};
               static const rtc::SocketAddress turn_server_external_address{
                   kTurnExternalAddress, kTurnExternalPort};
-              return rtc::MakeUnique<cricket::TestTurnServer>(
+              return absl::make_unique<cricket::TestTurnServer>(
                   thread, turn_server_internal_address,
                   turn_server_external_address, type,
                   true /*ignore_bad_certs=*/, common_name);
diff --git a/pc/peerconnection_rtp_unittest.cc b/pc/peerconnection_rtp_unittest.cc
index 2bbf77c..50fe0dc 100644
--- a/pc/peerconnection_rtp_unittest.cc
+++ b/pc/peerconnection_rtp_unittest.cc
@@ -11,6 +11,7 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/jsep.h"
@@ -28,7 +29,6 @@
 #include "pc/test/mockpeerconnectionobservers.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/refcountedobject.h"
 #include "rtc_base/scoped_ref_ptr.h"
 #include "rtc_base/thread.h"
@@ -111,11 +111,11 @@
   // adjustment.
   std::unique_ptr<PeerConnectionWrapper> CreatePeerConnectionInternal(
       const RTCConfiguration& config) {
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     auto pc = pc_factory_->CreatePeerConnection(config, nullptr, nullptr,
                                                 observer.get());
-    return rtc::MakeUnique<PeerConnectionWrapper>(pc_factory_, pc,
-                                                  std::move(observer));
+    return absl::make_unique<PeerConnectionWrapper>(pc_factory_, pc,
+                                                    std::move(observer));
   }
 };
 
diff --git a/pc/peerconnection_signaling_unittest.cc b/pc/peerconnection_signaling_unittest.cc
index 73a659b..95f464b 100644
--- a/pc/peerconnection_signaling_unittest.cc
+++ b/pc/peerconnection_signaling_unittest.cc
@@ -24,10 +24,10 @@
 #ifdef WEBRTC_ANDROID
 #include "pc/test/androidtestinitializer.h"
 #endif
+#include "absl/memory/memory.h"
 #include "pc/test/fakeaudiocapturemodule.h"
 #include "pc/test/fakertccertificategenerator.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringutils.h"
 #include "rtc_base/virtualsocketserver.h"
 #include "test/gmock.h"
@@ -81,7 +81,7 @@
   }
 
   WrapperPtr CreatePeerConnection(const RTCConfiguration& config) {
-    auto observer = rtc::MakeUnique<MockPeerConnectionObserver>();
+    auto observer = absl::make_unique<MockPeerConnectionObserver>();
     RTCConfiguration modified_config = config;
     modified_config.sdp_semantics = sdp_semantics_;
     auto pc = pc_factory_->CreatePeerConnection(modified_config, nullptr,
@@ -90,7 +90,7 @@
       return nullptr;
     }
 
-    return rtc::MakeUnique<PeerConnectionWrapperForSignalingTest>(
+    return absl::make_unique<PeerConnectionWrapperForSignalingTest>(
         pc_factory_, pc, std::move(observer));
   }
 
diff --git a/pc/peerconnectionendtoend_unittest.cc b/pc/peerconnectionendtoend_unittest.cc
index f9b3dc3..61de4a8 100644
--- a/pc/peerconnectionendtoend_unittest.cc
+++ b/pc/peerconnectionendtoend_unittest.cc
@@ -10,6 +10,7 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/L16/audio_decoder_L16.h"
 #include "api/audio_codecs/L16/audio_encoder_L16.h"
 #include "api/audio_codecs/audio_codec_pair_id.h"
@@ -19,7 +20,6 @@
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringencode.h"
 #include "rtc_base/stringutils.h"
 
@@ -210,7 +210,7 @@
 
   const auto dec = real_decoder.get();  // For lambda capturing.
   auto mock_decoder =
-      rtc::MakeUnique<ForwardingMockDecoder>(std::move(real_decoder));
+      absl::make_unique<ForwardingMockDecoder>(std::move(real_decoder));
   EXPECT_CALL(*mock_decoder, Channels())
       .Times(AtLeast(1))
       .WillRepeatedly(Invoke([dec] { return dec->Channels(); }));
diff --git a/pc/peerconnectionfactory.cc b/pc/peerconnectionfactory.cc
index cade31c..4d9455c 100644
--- a/pc/peerconnectionfactory.cc
+++ b/pc/peerconnectionfactory.cc
@@ -13,6 +13,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/fec_controller.h"
 #include "api/mediaconstraintsinterface.h"
 #include "api/mediastreamproxy.h"
@@ -27,7 +28,6 @@
 #include "pc/rtpparametersconversion.h"
 #include "rtc_base/bind.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 // Adding 'nogncheck' to disable the gn include headers check to support modular
 // WebRTC build targets.
 // TODO(zhihuang): This wouldn't be necessary if the interface and
@@ -147,7 +147,7 @@
       injected_network_controller_factory_(
           std::move(network_controller_factory)),
       bbr_network_controller_factory_(
-          rtc::MakeUnique<BbrNetworkControllerFactory>()) {
+          absl::make_unique<BbrNetworkControllerFactory>()) {
   if (!network_thread_) {
     owned_network_thread_ = rtc::Thread::CreateWithSocketServer();
     owned_network_thread_->SetName("pc_network_thread", nullptr);
@@ -217,8 +217,8 @@
     return false;
   }
 
-  channel_manager_ = rtc::MakeUnique<cricket::ChannelManager>(
-      std::move(media_engine_), rtc::MakeUnique<cricket::RtpDataEngine>(),
+  channel_manager_ = absl::make_unique<cricket::ChannelManager>(
+      std::move(media_engine_), absl::make_unique<cricket::RtpDataEngine>(),
       worker_thread_, network_thread_);
 
   channel_manager_->SetVideoRtxEnabled(true);
@@ -368,8 +368,9 @@
 
   // Set internal defaults if optional dependencies are not set.
   if (!dependencies.cert_generator) {
-    dependencies.cert_generator = rtc::MakeUnique<rtc::RTCCertificateGenerator>(
-        signaling_thread_, network_thread_);
+    dependencies.cert_generator =
+        absl::make_unique<rtc::RTCCertificateGenerator>(signaling_thread_,
+                                                        network_thread_);
   }
   if (!dependencies.allocator) {
     dependencies.allocator.reset(new cricket::BasicPortAllocator(
@@ -428,7 +429,7 @@
 std::unique_ptr<cricket::SctpTransportInternalFactory>
 PeerConnectionFactory::CreateSctpTransportInternalFactory() {
 #ifdef HAVE_SCTP
-  return rtc::MakeUnique<cricket::SctpTransportFactory>(network_thread());
+  return absl::make_unique<cricket::SctpTransportFactory>(network_thread());
 #else
   return nullptr;
 #endif
@@ -457,7 +458,7 @@
   const auto encoding_type = RtcEventLog::EncodingType::Legacy;
   return event_log_factory_
              ? event_log_factory_->CreateRtcEventLog(encoding_type)
-             : rtc::MakeUnique<RtcEventLogNullImpl>();
+             : absl::make_unique<RtcEventLogNullImpl>();
 }
 
 std::unique_ptr<Call> PeerConnectionFactory::CreateCall_w(
diff --git a/pc/peerconnectioninterface_unittest.cc b/pc/peerconnectioninterface_unittest.cc
index 9b4a9e7..25e7a2c 100644
--- a/pc/peerconnectioninterface_unittest.cc
+++ b/pc/peerconnectioninterface_unittest.cc
@@ -14,6 +14,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/jsepsessiondescription.h"
@@ -44,7 +45,6 @@
 #include "pc/videocapturertracksource.h"
 #include "pc/videotrack.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringutils.h"
 #include "rtc_base/virtualsocketserver.h"
 #include "test/gmock.h"
@@ -826,7 +826,7 @@
   rtc::scoped_refptr<VideoTrackInterface> CreateVideoTrack(
       const std::string& label) {
     auto video_source = pc_factory_->CreateVideoSource(
-        rtc::MakeUnique<cricket::FakeVideoCapturer>(), nullptr);
+        absl::make_unique<cricket::FakeVideoCapturer>(), nullptr);
     return pc_factory_->CreateVideoTrack(label, video_source);
   }
 
@@ -3200,8 +3200,8 @@
   std::unique_ptr<SessionDescriptionInterface> offer;
   ASSERT_TRUE(DoCreateOffer(&offer, nullptr));
   // Grab a copy of the offer before it gets passed into the PC.
-  auto modified_offer =
-      rtc::MakeUnique<webrtc::JsepSessionDescription>(webrtc::SdpType::kOffer);
+  auto modified_offer = absl::make_unique<webrtc::JsepSessionDescription>(
+      webrtc::SdpType::kOffer);
   modified_offer->Initialize(offer->description()->Copy(), offer->session_id(),
                              offer->session_version());
   EXPECT_TRUE(DoSetLocalDescription(std::move(offer)));
@@ -3531,7 +3531,7 @@
   rtc::PlatformFile file = 0;
   int64_t max_size_bytes = 1024;
   EXPECT_FALSE(pc_->StartRtcEventLog(
-      rtc::MakeUnique<webrtc::RtcEventLogOutputFile>(file, max_size_bytes),
+      absl::make_unique<webrtc::RtcEventLogOutputFile>(file, max_size_bytes),
       webrtc::RtcEventLog::kImmediateOutput));
   pc_->StopRtcEventLog();
 }
diff --git a/pc/peerconnectionwrapper.cc b/pc/peerconnectionwrapper.cc
index dfc5af7..0d19cf3 100644
--- a/pc/peerconnectionwrapper.cc
+++ b/pc/peerconnectionwrapper.cc
@@ -15,12 +15,12 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/jsepsessiondescription.h"
 #include "pc/sdputils.h"
 #include "pc/test/fakevideotracksource.h"
 #include "rtc_base/function_view.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
diff --git a/pc/remoteaudiosource.cc b/pc/remoteaudiosource.cc
index f58e23d..94fdb87 100644
--- a/pc/remoteaudiosource.cc
+++ b/pc/remoteaudiosource.cc
@@ -15,10 +15,10 @@
 #include <memory>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/constructormagic.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread.h"
 
 namespace webrtc {
@@ -66,7 +66,8 @@
   // notified when a channel goes out of scope (signaled when "AudioDataProxy"
   // is destroyed).
   worker_thread_->Invoke<void>(RTC_FROM_HERE, [&] {
-    media_channel->SetRawAudioSink(ssrc, rtc::MakeUnique<AudioDataProxy>(this));
+    media_channel->SetRawAudioSink(ssrc,
+                                   absl::make_unique<AudioDataProxy>(this));
   });
 }
 
diff --git a/pc/rtcstatscollector.cc b/pc/rtcstatscollector.cc
index 35cae8c..9b7708e 100644
--- a/pc/rtcstatscollector.cc
+++ b/pc/rtcstatscollector.cc
@@ -15,6 +15,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/candidate.h"
 #include "api/mediastreaminterface.h"
 #include "api/peerconnectioninterface.h"
@@ -24,7 +25,6 @@
 #include "pc/peerconnection.h"
 #include "pc/rtcstatstraversal.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/strings/string_builder.h"
 #include "rtc_base/timeutils.h"
 #include "rtc_base/trace_event.h"
@@ -1195,7 +1195,7 @@
        track_media_info_map.voice_media_info()->receivers) {
     if (!voice_receiver_info.connected())
       continue;
-    auto inbound_audio = rtc::MakeUnique<RTCInboundRTPStreamStats>(
+    auto inbound_audio = absl::make_unique<RTCInboundRTPStreamStats>(
         RTCInboundRTPStreamStatsIDFromSSRC(true, voice_receiver_info.ssrc()),
         timestamp_us);
     SetInboundRTPStreamStatsFromVoiceReceiverInfo(mid, voice_receiver_info,
@@ -1217,7 +1217,7 @@
        track_media_info_map.voice_media_info()->senders) {
     if (!voice_sender_info.connected())
       continue;
-    auto outbound_audio = rtc::MakeUnique<RTCOutboundRTPStreamStats>(
+    auto outbound_audio = absl::make_unique<RTCOutboundRTPStreamStats>(
         RTCOutboundRTPStreamStatsIDFromSSRC(true, voice_sender_info.ssrc()),
         timestamp_us);
     SetOutboundRTPStreamStatsFromVoiceSenderInfo(mid, voice_sender_info,
@@ -1253,7 +1253,7 @@
        track_media_info_map.video_media_info()->receivers) {
     if (!video_receiver_info.connected())
       continue;
-    auto inbound_video = rtc::MakeUnique<RTCInboundRTPStreamStats>(
+    auto inbound_video = absl::make_unique<RTCInboundRTPStreamStats>(
         RTCInboundRTPStreamStatsIDFromSSRC(false, video_receiver_info.ssrc()),
         timestamp_us);
     SetInboundRTPStreamStatsFromVideoReceiverInfo(mid, video_receiver_info,
@@ -1274,7 +1274,7 @@
        track_media_info_map.video_media_info()->senders) {
     if (!video_sender_info.connected())
       continue;
-    auto outbound_video = rtc::MakeUnique<RTCOutboundRTPStreamStats>(
+    auto outbound_video = absl::make_unique<RTCOutboundRTPStreamStats>(
         RTCOutboundRTPStreamStatsIDFromSSRC(false, video_sender_info.ssrc()),
         timestamp_us);
     SetOutboundRTPStreamStatsFromVideoSenderInfo(mid, video_sender_info,
@@ -1429,13 +1429,13 @@
       RTC_DCHECK(voice_stats.find(voice_channel->media_channel()) ==
                  voice_stats.end());
       voice_stats[voice_channel->media_channel()] =
-          rtc::MakeUnique<cricket::VoiceMediaInfo>();
+          absl::make_unique<cricket::VoiceMediaInfo>();
     } else if (media_type == cricket::MEDIA_TYPE_VIDEO) {
       auto* video_channel = static_cast<cricket::VideoChannel*>(channel);
       RTC_DCHECK(video_stats.find(video_channel->media_channel()) ==
                  video_stats.end());
       video_stats[video_channel->media_channel()] =
-          rtc::MakeUnique<cricket::VideoMediaInfo>();
+          absl::make_unique<cricket::VideoMediaInfo>();
     } else {
       RTC_NOTREACHED();
     }
@@ -1485,7 +1485,7 @@
     for (auto receiver : transceiver->receivers()) {
       receivers.push_back(receiver->internal());
     }
-    stats.track_media_info_map = rtc::MakeUnique<TrackMediaInfoMap>(
+    stats.track_media_info_map = absl::make_unique<TrackMediaInfoMap>(
         std::move(voice_media_info), std::move(video_media_info), senders,
         receivers);
   }
diff --git a/pc/rtcstatscollector_unittest.cc b/pc/rtcstatscollector_unittest.cc
index ea99c8d..178440b 100644
--- a/pc/rtcstatscollector_unittest.cc
+++ b/pc/rtcstatscollector_unittest.cc
@@ -15,6 +15,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/rtpparameters.h"
 #include "api/stats/rtcstats_objects.h"
 #include "api/stats/rtcstatsreport.h"
@@ -34,7 +35,6 @@
 #include "rtc_base/fakesslidentity.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/stringutils.h"
 #include "rtc_base/timeutils.h"
 
diff --git a/pc/rtpsenderreceiver_unittest.cc b/pc/rtpsenderreceiver_unittest.cc
index 2adc5be..3e0488d 100644
--- a/pc/rtpsenderreceiver_unittest.cc
+++ b/pc/rtpsenderreceiver_unittest.cc
@@ -61,8 +61,8 @@
         // Create fake media engine/etc. so we can create channels to use to
         // test RtpSenders/RtpReceivers.
         media_engine_(new cricket::FakeMediaEngine()),
-        channel_manager_(rtc::WrapUnique(media_engine_),
-                         rtc::MakeUnique<cricket::RtpDataEngine>(),
+        channel_manager_(absl::WrapUnique(media_engine_),
+                         absl::make_unique<cricket::RtpDataEngine>(),
                          worker_thread_,
                          network_thread_),
         fake_call_(),
@@ -70,7 +70,7 @@
     // Create channels to be used by the RtpSenders and RtpReceivers.
     channel_manager_.Init();
     bool srtp_required = true;
-    rtp_dtls_transport_ = rtc::MakeUnique<cricket::FakeDtlsTransport>(
+    rtp_dtls_transport_ = absl::make_unique<cricket::FakeDtlsTransport>(
         "fake_dtls_transport", cricket::ICE_CANDIDATE_COMPONENT_RTP);
     rtp_transport_ = CreateDtlsSrtpTransport();
 
@@ -114,8 +114,8 @@
   }
 
   std::unique_ptr<webrtc::RtpTransportInternal> CreateDtlsSrtpTransport() {
-    auto dtls_srtp_transport =
-        rtc::MakeUnique<webrtc::DtlsSrtpTransport>(/*rtcp_mux_required=*/true);
+    auto dtls_srtp_transport = absl::make_unique<webrtc::DtlsSrtpTransport>(
+        /*rtcp_mux_required=*/true);
     dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport_.get(),
                                            /*rtcp_dtls_transport=*/nullptr);
     return dtls_srtp_transport;
diff --git a/pc/sdputils.cc b/pc/sdputils.cc
index de77d63..07bff7b 100644
--- a/pc/sdputils.cc
+++ b/pc/sdputils.cc
@@ -13,8 +13,8 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/jsepsessiondescription.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -28,7 +28,7 @@
     const SessionDescriptionInterface* sdesc,
     SdpType type) {
   RTC_DCHECK(sdesc);
-  auto clone = rtc::MakeUnique<JsepSessionDescription>(type);
+  auto clone = absl::make_unique<JsepSessionDescription>(type);
   clone->Initialize(sdesc->description()->Copy(), sdesc->session_id(),
                     sdesc->session_version());
   // As of writing, our version of GCC does not allow returning a unique_ptr of
diff --git a/pc/srtpsession_unittest.cc b/pc/srtpsession_unittest.cc
index d73bcbe..66e1cea 100644
--- a/pc/srtpsession_unittest.cc
+++ b/pc/srtpsession_unittest.cc
@@ -12,11 +12,11 @@
 
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "api/fakemetricsobserver.h"
 #include "media/base/fakertp.h"
 #include "pc/srtptestutil.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sslstreamadapter.h"  // For rtc::SRTP_*
 #include "third_party/libsrtp/include/srtp.h"
 
diff --git a/pc/srtptransport.cc b/pc/srtptransport.cc
index a1c1a8a..b2cb3aa 100644
--- a/pc/srtptransport.cc
+++ b/pc/srtptransport.cc
@@ -13,6 +13,7 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "media/base/rtputils.h"
 #include "pc/rtptransport.h"
 #include "pc/srtpsession.h"
@@ -20,7 +21,6 @@
 #include "rtc_base/base64.h"
 #include "rtc_base/copyonwritebuffer.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/trace_event.h"
 #include "rtc_base/zero_memory.h"
 
diff --git a/pc/srtptransport_unittest.cc b/pc/srtptransport_unittest.cc
index 5af45c8..2ac64c8 100644
--- a/pc/srtptransport_unittest.cc
+++ b/pc/srtptransport_unittest.cc
@@ -12,6 +12,7 @@
 
 #include "pc/srtptransport.h"
 
+#include "absl/memory/memory.h"
 #include "media/base/fakertp.h"
 #include "p2p/base/dtlstransportinternal.h"
 #include "p2p/base/fakepackettransport.h"
@@ -20,7 +21,6 @@
 #include "pc/srtptestutil.h"
 #include "rtc_base/asyncpacketsocket.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sslstreamadapter.h"
 
 using rtc::kTestKey1;
@@ -44,16 +44,16 @@
     bool rtcp_mux_enabled = true;
 
     rtp_packet_transport1_ =
-        rtc::MakeUnique<rtc::FakePacketTransport>("fake_packet_transport1");
+        absl::make_unique<rtc::FakePacketTransport>("fake_packet_transport1");
     rtp_packet_transport2_ =
-        rtc::MakeUnique<rtc::FakePacketTransport>("fake_packet_transport2");
+        absl::make_unique<rtc::FakePacketTransport>("fake_packet_transport2");
 
     bool asymmetric = false;
     rtp_packet_transport1_->SetDestination(rtp_packet_transport2_.get(),
                                            asymmetric);
 
-    srtp_transport1_ = rtc::MakeUnique<SrtpTransport>(rtcp_mux_enabled);
-    srtp_transport2_ = rtc::MakeUnique<SrtpTransport>(rtcp_mux_enabled);
+    srtp_transport1_ = absl::make_unique<SrtpTransport>(rtcp_mux_enabled);
+    srtp_transport2_ = absl::make_unique<SrtpTransport>(rtcp_mux_enabled);
 
     srtp_transport1_->SetRtpPacketTransport(rtp_packet_transport1_.get());
     srtp_transport2_->SetRtpPacketTransport(rtp_packet_transport2_.get());
diff --git a/pc/statscollector_unittest.cc b/pc/statscollector_unittest.cc
index 58fdb80..f7e30e4 100644
--- a/pc/statscollector_unittest.cc
+++ b/pc/statscollector_unittest.cc
@@ -570,7 +570,7 @@
 
   std::unique_ptr<StatsCollectorForTest> CreateStatsCollector(
       PeerConnectionInternal* pc) {
-    return rtc::MakeUnique<StatsCollectorForTest>(pc);
+    return absl::make_unique<StatsCollectorForTest>(pc);
   }
 
   void VerifyAudioTrackStats(FakeAudioTrack* audio_track,
diff --git a/pc/test/fakepeerconnectionforstats.h b/pc/test/fakepeerconnectionforstats.h
index c8cc29b..642fa01 100644
--- a/pc/test/fakepeerconnectionforstats.h
+++ b/pc/test/fakepeerconnectionforstats.h
@@ -120,9 +120,10 @@
       const std::string& mid,
       const std::string& transport_name) {
     RTC_DCHECK(!voice_channel_);
-    auto voice_media_channel = rtc::MakeUnique<FakeVoiceMediaChannelForStats>();
+    auto voice_media_channel =
+        absl::make_unique<FakeVoiceMediaChannelForStats>();
     auto* voice_media_channel_ptr = voice_media_channel.get();
-    voice_channel_ = rtc::MakeUnique<cricket::VoiceChannel>(
+    voice_channel_ = absl::make_unique<cricket::VoiceChannel>(
         worker_thread_, network_thread_, signaling_thread_, nullptr,
         std::move(voice_media_channel), mid, kDefaultSrtpRequired,
         rtc::CryptoOptions());
@@ -137,9 +138,10 @@
       const std::string& mid,
       const std::string& transport_name) {
     RTC_DCHECK(!video_channel_);
-    auto video_media_channel = rtc::MakeUnique<FakeVideoMediaChannelForStats>();
+    auto video_media_channel =
+        absl::make_unique<FakeVideoMediaChannelForStats>();
     auto video_media_channel_ptr = video_media_channel.get();
-    video_channel_ = rtc::MakeUnique<cricket::VideoChannel>(
+    video_channel_ = absl::make_unique<cricket::VideoChannel>(
         worker_thread_, network_thread_, signaling_thread_,
         std::move(video_media_channel), mid, kDefaultSrtpRequired,
         rtc::CryptoOptions());
diff --git a/pc/test/fakeperiodicvideosource.h b/pc/test/fakeperiodicvideosource.h
index 2cdd104..087deeb 100644
--- a/pc/test/fakeperiodicvideosource.h
+++ b/pc/test/fakeperiodicvideosource.h
@@ -13,10 +13,10 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "api/video/video_source_interface.h"
 #include "media/base/fakeframesource.h"
 #include "media/base/videobroadcaster.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/task_queue.h"
 
 namespace webrtc {
@@ -38,9 +38,9 @@
   FakePeriodicVideoSource() : FakePeriodicVideoSource(Config()) {}
   explicit FakePeriodicVideoSource(Config config)
       : task_queue_(
-            rtc::MakeUnique<rtc::TaskQueue>("FakePeriodicVideoTrackSource")) {
+            absl::make_unique<rtc::TaskQueue>("FakePeriodicVideoTrackSource")) {
     thread_checker_.DetachFromThread();
-    task_queue_->PostTask(rtc::MakeUnique<FrameTask>(config, &broadcaster_));
+    task_queue_->PostTask(absl::make_unique<FrameTask>(config, &broadcaster_));
   }
 
   void RemoveSink(rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) override {
@@ -79,7 +79,7 @@
         broadcaster_->OnFrame(frame_source_.GetFrame());
       }
 
-      rtc::TaskQueue::Current()->PostDelayedTask(rtc::WrapUnique(this),
+      rtc::TaskQueue::Current()->PostDelayedTask(absl::WrapUnique(this),
                                                  frame_interval_ms_);
       return false;
     }
diff --git a/pc/test/mockpeerconnectionobservers.h b/pc/test/mockpeerconnectionobservers.h
index 147b674..6f5e9bc 100644
--- a/pc/test/mockpeerconnectionobservers.h
+++ b/pc/test/mockpeerconnectionobservers.h
@@ -20,11 +20,11 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/datachannelinterface.h"
 #include "api/jsepicecandidate.h"
 #include "pc/streamcollection.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -112,7 +112,7 @@
   void OnIceCandidate(const IceCandidateInterface* candidate) override {
     RTC_DCHECK(PeerConnectionInterface::kIceGatheringNew !=
                pc_->ice_gathering_state());
-    candidates_.push_back(rtc::MakeUnique<JsepIceCandidate>(
+    candidates_.push_back(absl::make_unique<JsepIceCandidate>(
         candidate->sdp_mid(), candidate->sdp_mline_index(),
         candidate->candidate()));
     callback_triggered_ = true;
diff --git a/pc/test/peerconnectiontestwrapper.cc b/pc/test/peerconnectiontestwrapper.cc
index 4ce13f4..145a095 100644
--- a/pc/test/peerconnectiontestwrapper.cc
+++ b/pc/test/peerconnectiontestwrapper.cc
@@ -115,7 +115,7 @@
   if (receiver->track()->kind() == MediaStreamTrackInterface::kVideoKind) {
     auto* video_track =
         static_cast<VideoTrackInterface*>(receiver->track().get());
-    renderer_ = rtc::MakeUnique<FakeVideoTrackRenderer>(video_track);
+    renderer_ = absl::make_unique<FakeVideoTrackRenderer>(video_track);
   }
 }
 
diff --git a/pc/webrtcsessiondescriptionfactory.cc b/pc/webrtcsessiondescriptionfactory.cc
index 3d89932..2255143 100644
--- a/pc/webrtcsessiondescriptionfactory.cc
+++ b/pc/webrtcsessiondescriptionfactory.cc
@@ -15,11 +15,11 @@
 #include <utility>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/jsep.h"
 #include "api/jsepsessiondescription.h"
 #include "api/mediaconstraintsinterface.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sslidentity.h"
 
 using cricket::MediaSessionOptions;
@@ -343,7 +343,7 @@
   // is created regardless if it's identical to the previous one or not.
   // The |session_version_| is a uint64_t, the wrap around should not happen.
   RTC_DCHECK(session_version_ + 1 > session_version_);
-  auto offer = rtc::MakeUnique<JsepSessionDescription>(SdpType::kOffer);
+  auto offer = absl::make_unique<JsepSessionDescription>(SdpType::kOffer);
   if (!offer->Initialize(desc, session_id_,
                          rtc::ToString(session_version_++))) {
     PostCreateSessionDescriptionFailed(request.observer,
@@ -396,7 +396,7 @@
   // Get a new version number by increasing the |session_version_answer_|.
   // The |session_version_| is a uint64_t, the wrap around should not happen.
   RTC_DCHECK(session_version_ + 1 > session_version_);
-  auto answer = rtc::MakeUnique<JsepSessionDescription>(SdpType::kAnswer);
+  auto answer = absl::make_unique<JsepSessionDescription>(SdpType::kAnswer);
   if (!answer->Initialize(desc, session_id_,
                           rtc::ToString(session_version_++))) {
     PostCreateSessionDescriptionFailed(request.observer,
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 716d0b2..533eed8 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -533,6 +533,7 @@
   deps = [
     ":macromagic",
     ":ptr_util",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -727,6 +728,7 @@
     ":stringutils",
     "..:webrtc_common",
     "../api:array_view",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
   public_deps = [
@@ -1036,6 +1038,7 @@
     "../test:field_trial",
     "../test:test_support",
     "system:fallthrough",
+    "//third_party/abseil-cpp/absl/memory",
   ]
   public_deps = [
     "//testing/gtest",
@@ -1100,6 +1103,7 @@
       "../test:fileutils",
       "../test:test_support",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     if (is_win) {
       sources += [ "win32socketserver_unittest.cc" ]
@@ -1178,6 +1182,7 @@
       "../test:fileutils",
       "../test:test_support",
       "memory:unittests",
+      "//third_party/abseil-cpp/absl/memory",
     ]
   }
 
@@ -1303,6 +1308,7 @@
       "../api:array_view",
       "../test:fileutils",
       "../test:test_support",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
     public_deps = [
diff --git a/rtc_base/fakesslidentity.cc b/rtc_base/fakesslidentity.cc
index 825c89b..80a3e78 100644
--- a/rtc_base/fakesslidentity.cc
+++ b/rtc_base/fakesslidentity.cc
@@ -14,9 +14,9 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/messagedigest.h"
-#include "rtc_base/ptr_util.h"
 
 namespace rtc {
 
@@ -77,13 +77,13 @@
 FakeSSLIdentity::FakeSSLIdentity(const std::vector<std::string>& pem_strings) {
   std::vector<std::unique_ptr<SSLCertificate>> certs;
   for (const std::string& pem_string : pem_strings) {
-    certs.push_back(MakeUnique<FakeSSLCertificate>(pem_string));
+    certs.push_back(absl::make_unique<FakeSSLCertificate>(pem_string));
   }
-  cert_chain_ = MakeUnique<SSLCertChain>(std::move(certs));
+  cert_chain_ = absl::make_unique<SSLCertChain>(std::move(certs));
 }
 
 FakeSSLIdentity::FakeSSLIdentity(const FakeSSLCertificate& cert)
-    : cert_chain_(MakeUnique<SSLCertChain>(&cert)) {}
+    : cert_chain_(absl::make_unique<SSLCertChain>(&cert)) {}
 
 FakeSSLIdentity::FakeSSLIdentity(const FakeSSLIdentity& o)
     : cert_chain_(o.cert_chain_->UniqueCopy()) {}
diff --git a/rtc_base/nat_unittest.cc b/rtc_base/nat_unittest.cc
index e860f52..ee94427 100644
--- a/rtc_base/nat_unittest.cc
+++ b/rtc_base/nat_unittest.cc
@@ -12,6 +12,7 @@
 #include <memory>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/asynctcpsocket.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
@@ -20,7 +21,6 @@
 #include "rtc_base/nethelpers.h"
 #include "rtc_base/network.h"
 #include "rtc_base/physicalsocketserver.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/testclient.h"
 #include "rtc_base/virtualsocketserver.h"
 
@@ -37,11 +37,11 @@
 TestClient* CreateTestClient(SocketFactory* factory,
                              const SocketAddress& local_addr) {
   return new TestClient(
-      WrapUnique(AsyncUDPSocket::Create(factory, local_addr)));
+      absl::WrapUnique(AsyncUDPSocket::Create(factory, local_addr)));
 }
 
 TestClient* CreateTCPTestClient(AsyncSocket* socket) {
-  return new TestClient(MakeUnique<AsyncTCPSocket>(socket, false));
+  return new TestClient(absl::make_unique<AsyncTCPSocket>(socket, false));
 }
 
 // Tests that when sending from internal_addr to external_addrs through the
diff --git a/rtc_base/openssladapter.cc b/rtc_base/openssladapter.cc
index 9d6c7d1..05de6d0 100644
--- a/rtc_base/openssladapter.cc
+++ b/rtc_base/openssladapter.cc
@@ -988,7 +988,8 @@
       return nullptr;
     }
     // The OpenSSLSessionCache will upref the ssl_ctx.
-    ssl_session_cache_ = MakeUnique<OpenSSLSessionCache>(ssl_mode_, ssl_ctx);
+    ssl_session_cache_ =
+        absl::make_unique<OpenSSLSessionCache>(ssl_mode_, ssl_ctx);
     SSL_CTX_free(ssl_ctx);
   }
   return new OpenSSLAdapter(socket, ssl_session_cache_.get(),
diff --git a/rtc_base/openssladapter.h b/rtc_base/openssladapter.h
index 986f0f8..50a7c08 100644
--- a/rtc_base/openssladapter.h
+++ b/rtc_base/openssladapter.h
@@ -18,13 +18,13 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/buffer.h"
 #include "rtc_base/messagehandler.h"
 #include "rtc_base/messagequeue.h"
 #include "rtc_base/opensslcertificate.h"
 #include "rtc_base/opensslidentity.h"
 #include "rtc_base/opensslsessioncache.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/ssladapter.h"
 
 namespace rtc {
diff --git a/rtc_base/openssladapter_unittest.cc b/rtc_base/openssladapter_unittest.cc
index d6f34b0..4db00e5 100644
--- a/rtc_base/openssladapter_unittest.cc
+++ b/rtc_base/openssladapter_unittest.cc
@@ -12,10 +12,10 @@
 #include <string>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/asyncsocket.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/openssladapter.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gmock.h"
 
 namespace rtc {
diff --git a/rtc_base/opensslcertificate.cc b/rtc_base/opensslcertificate.cc
index bdcf694..15fc3038 100644
--- a/rtc_base/opensslcertificate.cc
+++ b/rtc_base/opensslcertificate.cc
@@ -26,6 +26,7 @@
 #include <openssl/pem.h>
 #include <openssl/rsa.h>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
@@ -35,7 +36,6 @@
 #include "rtc_base/openssldigest.h"
 #include "rtc_base/opensslidentity.h"
 #include "rtc_base/opensslutility.h"
-#include "rtc_base/ptr_util.h"
 #ifdef WEBRTC_BUILT_IN_SSL_ROOT_CERTIFICATES
 #include "rtc_base/sslroots.h"
 #endif
diff --git a/rtc_base/opensslidentity.cc b/rtc_base/opensslidentity.cc
index 8ae4dbe..a8c6919 100644
--- a/rtc_base/opensslidentity.cc
+++ b/rtc_base/opensslidentity.cc
@@ -26,6 +26,7 @@
 #include <openssl/pem.h>
 #include <openssl/rsa.h>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
@@ -33,7 +34,6 @@
 #include "rtc_base/openssl.h"
 #include "rtc_base/openssldigest.h"
 #include "rtc_base/opensslutility.h"
-#include "rtc_base/ptr_util.h"
 
 namespace rtc {
 
@@ -303,7 +303,7 @@
   }
 
   return new OpenSSLIdentity(std::move(key_pair),
-                             MakeUnique<SSLCertChain>(std::move(certs)));
+                             absl::make_unique<SSLCertChain>(std::move(certs)));
 }
 
 const OpenSSLCertificate& OpenSSLIdentity::certificate() const {
@@ -315,8 +315,8 @@
 }
 
 OpenSSLIdentity* OpenSSLIdentity::GetReference() const {
-  return new OpenSSLIdentity(WrapUnique(key_pair_->GetReference()),
-                             WrapUnique(cert_chain_->Copy()));
+  return new OpenSSLIdentity(absl::WrapUnique(key_pair_->GetReference()),
+                             absl::WrapUnique(cert_chain_->Copy()));
 }
 
 bool OpenSSLIdentity::ConfigureIdentity(SSL_CTX* ctx) {
diff --git a/rtc_base/signalthread.cc b/rtc_base/signalthread.cc
index 4ab1b5c..58f8761 100644
--- a/rtc_base/signalthread.cc
+++ b/rtc_base/signalthread.cc
@@ -10,8 +10,8 @@
 
 #include "rtc_base/signalthread.h"
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/ptr_util.h"
 
 namespace rtc {
 
@@ -123,7 +123,7 @@
 }
 
 SignalThread::Worker::Worker(SignalThread* parent)
-    : Thread(MakeUnique<NullSocketServer>(), /*do_init=*/false),
+    : Thread(absl::make_unique<NullSocketServer>(), /*do_init=*/false),
       parent_(parent) {
   DoInit();
 }
diff --git a/rtc_base/socket_unittest.cc b/rtc_base/socket_unittest.cc
index 01ef014..cbc5eb5 100644
--- a/rtc_base/socket_unittest.cc
+++ b/rtc_base/socket_unittest.cc
@@ -12,12 +12,12 @@
 
 #include "rtc_base/socket_unittest.h"
 
+#include "absl/memory/memory.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/asyncudpsocket.h"
 #include "rtc_base/buffer.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/nethelpers.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketserver.h"
 #include "rtc_base/testclient.h"
 #include "rtc_base/testutils.h"
@@ -905,9 +905,9 @@
 
   // Test send/receive behavior.
   std::unique_ptr<TestClient> client1(
-      new TestClient(WrapUnique(AsyncUDPSocket::Create(ss_, addr1))));
+      new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, addr1))));
   std::unique_ptr<TestClient> client2(
-      new TestClient(WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
+      new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
 
   SocketAddress addr2;
   EXPECT_EQ(3, client2->SendTo("foo", 3, addr1));
@@ -920,7 +920,7 @@
   // TODO: figure out what the intent is here
   for (int i = 0; i < 10; ++i) {
     client2.reset(
-        new TestClient(WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
+        new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
 
     SocketAddress addr4;
     EXPECT_EQ(3, client2->SendTo("foo", 3, addr1));
@@ -947,7 +947,7 @@
 
   // Test send
   std::unique_ptr<TestClient> client(
-      new TestClient(WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
+      new TestClient(absl::WrapUnique(AsyncUDPSocket::Create(ss_, empty))));
   int test_packet_size = 1200;
   std::unique_ptr<char[]> test_packet(new char[test_packet_size]);
   // Init the test packet just to avoid memcheck warning.
diff --git a/rtc_base/ssladapter_unittest.cc b/rtc_base/ssladapter_unittest.cc
index 0fdb1bc..ec532b1 100644
--- a/rtc_base/ssladapter_unittest.cc
+++ b/rtc_base/ssladapter_unittest.cc
@@ -12,9 +12,9 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/ipaddress.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/socketstream.h"
 #include "rtc_base/ssladapter.h"
 #include "rtc_base/sslidentity.h"
@@ -322,7 +322,7 @@
   }
 
   void SetMockCertVerifier(bool return_value) {
-    auto mock_verifier = rtc::MakeUnique<MockCertVerifier>();
+    auto mock_verifier = absl::make_unique<MockCertVerifier>();
     EXPECT_CALL(*mock_verifier, Verify(_)).WillRepeatedly(Return(return_value));
     cert_verifier_ =
         std::unique_ptr<rtc::SSLCertificateVerifier>(std::move(mock_verifier));
diff --git a/rtc_base/sslcertificate.cc b/rtc_base/sslcertificate.cc
index fcbd102..d99da60 100644
--- a/rtc_base/sslcertificate.cc
+++ b/rtc_base/sslcertificate.cc
@@ -14,11 +14,11 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/base64.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/opensslcertificate.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sslfingerprint.h"
 
 namespace rtc {
@@ -66,13 +66,13 @@
   std::string der_base64;
   Base64::EncodeFromArray(der_buffer.data(), der_buffer.size(), &der_base64);
 
-  return rtc::MakeUnique<SSLCertificateStats>(std::move(fingerprint),
-                                              std::move(digest_algorithm),
-                                              std::move(der_base64), nullptr);
+  return absl::make_unique<SSLCertificateStats>(std::move(fingerprint),
+                                                std::move(digest_algorithm),
+                                                std::move(der_base64), nullptr);
 }
 
 std::unique_ptr<SSLCertificate> SSLCertificate::GetUniqueReference() const {
-  return WrapUnique(GetReference());
+  return absl::WrapUnique(GetReference());
 }
 
 //////////////////////////////////////////////////////////////////////
@@ -113,7 +113,7 @@
 }
 
 std::unique_ptr<SSLCertChain> SSLCertChain::UniqueCopy() const {
-  return WrapUnique(Copy());
+  return absl::WrapUnique(Copy());
 }
 
 std::unique_ptr<SSLCertificateStats> SSLCertChain::GetStats() const {
diff --git a/rtc_base/sslidentity.cc b/rtc_base/sslidentity.cc
index ca4cd1c..94944f9 100644
--- a/rtc_base/sslidentity.cc
+++ b/rtc_base/sslidentity.cc
@@ -15,11 +15,11 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/base64.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/opensslidentity.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/sslfingerprint.h"
 
 namespace rtc {
diff --git a/rtc_base/task_queue.h b/rtc_base/task_queue.h
index 41d6a10..b8b307c 100644
--- a/rtc_base/task_queue.h
+++ b/rtc_base/task_queue.h
@@ -15,8 +15,8 @@
 #include <type_traits>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/constructormagic.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/scoped_ref_ptr.h"
 #include "rtc_base/thread_annotations.h"
 
@@ -79,13 +79,14 @@
 // based parameters.
 template <class Closure>
 static std::unique_ptr<QueuedTask> NewClosure(Closure&& closure) {
-  return rtc::MakeUnique<ClosureTask<Closure>>(std::forward<Closure>(closure));
+  return absl::make_unique<ClosureTask<Closure>>(
+      std::forward<Closure>(closure));
 }
 
 template <class Closure, class Cleanup>
 static std::unique_ptr<QueuedTask> NewClosure(Closure&& closure,
                                               Cleanup&& cleanup) {
-  return rtc::MakeUnique<ClosureTaskWithCleanup<Closure, Cleanup>>(
+  return absl::make_unique<ClosureTaskWithCleanup<Closure, Cleanup>>(
       std::forward<Closure>(closure), std::forward<Cleanup>(cleanup));
 }
 
diff --git a/rtc_base/testclient.cc b/rtc_base/testclient.cc
index 1df7c08..7c151c7 100644
--- a/rtc_base/testclient.cc
+++ b/rtc_base/testclient.cc
@@ -10,8 +10,8 @@
 
 #include "rtc_base/testclient.h"
 
+#include "absl/memory/memory.h"
 #include "rtc_base/gunit.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/timeutils.h"
 
@@ -146,7 +146,8 @@
                           const SocketAddress& remote_addr,
                           const PacketTime& packet_time) {
   CritScope cs(&crit_);
-  packets_.push_back(MakeUnique<Packet>(remote_addr, buf, size, packet_time));
+  packets_.push_back(
+      absl::make_unique<Packet>(remote_addr, buf, size, packet_time));
 }
 
 void TestClient::OnReadyToSend(AsyncPacketSocket* socket) {
diff --git a/rtc_base/testclient_unittest.cc b/rtc_base/testclient_unittest.cc
index dda1dae..b3a6c80 100644
--- a/rtc_base/testclient_unittest.cc
+++ b/rtc_base/testclient_unittest.cc
@@ -9,10 +9,10 @@
  */
 
 #include "rtc_base/testclient.h"
+#include "absl/memory/memory.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/nethelpers.h"
 #include "rtc_base/physicalsocketserver.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/testechoserver.h"
 #include "rtc_base/thread.h"
 
@@ -36,7 +36,7 @@
       main->socketserver()->CreateAsyncSocket(loopback.family(), SOCK_DGRAM);
   socket->Bind(loopback);
 
-  TestClient client(MakeUnique<AsyncUDPSocket>(socket));
+  TestClient client(absl::make_unique<AsyncUDPSocket>(socket));
   SocketAddress addr = client.address(), from;
   EXPECT_EQ(3, client.SendTo("foo", 3, addr));
   EXPECT_TRUE(client.CheckNextPacket("foo", 3, &from));
@@ -50,8 +50,8 @@
 
   AsyncSocket* socket =
       main->socketserver()->CreateAsyncSocket(loopback.family(), SOCK_STREAM);
-  std::unique_ptr<AsyncTCPSocket> tcp_socket =
-      WrapUnique(AsyncTCPSocket::Create(socket, loopback, server.address()));
+  std::unique_ptr<AsyncTCPSocket> tcp_socket = absl::WrapUnique(
+      AsyncTCPSocket::Create(socket, loopback, server.address()));
   ASSERT_TRUE(tcp_socket != nullptr);
 
   TestClient client(std::move(tcp_socket));
diff --git a/rtc_base/virtualsocket_unittest.cc b/rtc_base/virtualsocket_unittest.cc
index 34b227e..d2bff54 100644
--- a/rtc_base/virtualsocket_unittest.cc
+++ b/rtc_base/virtualsocket_unittest.cc
@@ -16,11 +16,11 @@
 
 #include <memory>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/fakeclock.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/testclient.h"
 #include "rtc_base/testutils.h"
 #include "rtc_base/thread.h"
@@ -40,7 +40,7 @@
 struct Sender : public MessageHandler {
   Sender(Thread* th, AsyncSocket* s, uint32_t rt)
       : thread(th),
-        socket(MakeUnique<AsyncUDPSocket>(s)),
+        socket(absl::make_unique<AsyncUDPSocket>(s)),
         done(false),
         rate(rt),
         count(0) {
@@ -86,7 +86,7 @@
 struct Receiver : public MessageHandler, public sigslot::has_slots<> {
   Receiver(Thread* th, AsyncSocket* s, uint32_t bw)
       : thread(th),
-        socket(MakeUnique<AsyncUDPSocket>(s)),
+        socket(absl::make_unique<AsyncUDPSocket>(s)),
         bandwidth(bw),
         done(false),
         count(0),
@@ -184,8 +184,8 @@
     socket->Bind(EmptySocketAddressWithFamily(default_route.family()));
     SocketAddress client1_any_addr = socket->GetLocalAddress();
     EXPECT_TRUE(client1_any_addr.IsAnyIP());
-    auto client1 = MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket),
-                                          &fake_clock_);
+    auto client1 = absl::make_unique<TestClient>(
+        absl::make_unique<AsyncUDPSocket>(socket), &fake_clock_);
 
     // Create client2 bound to the default route.
     AsyncSocket* socket2 =
@@ -193,8 +193,8 @@
     socket2->Bind(SocketAddress(default_route, 0));
     SocketAddress client2_addr = socket2->GetLocalAddress();
     EXPECT_FALSE(client2_addr.IsAnyIP());
-    auto client2 = MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket2),
-                                          &fake_clock_);
+    auto client2 = absl::make_unique<TestClient>(
+        absl::make_unique<AsyncUDPSocket>(socket2), &fake_clock_);
 
     // Client1 sends to client2, client2 should see the default route as
     // client1's address.
@@ -217,12 +217,12 @@
     // Make sure VSS didn't switch families on us.
     EXPECT_EQ(server_addr.family(), initial_addr.family());
 
-    auto client1 = MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket),
-                                          &fake_clock_);
+    auto client1 = absl::make_unique<TestClient>(
+        absl::make_unique<AsyncUDPSocket>(socket), &fake_clock_);
     AsyncSocket* socket2 =
         ss_.CreateAsyncSocket(initial_addr.family(), SOCK_DGRAM);
-    auto client2 = MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket2),
-                                          &fake_clock_);
+    auto client2 = absl::make_unique<TestClient>(
+        absl::make_unique<AsyncUDPSocket>(socket2), &fake_clock_);
 
     SocketAddress client2_addr;
     EXPECT_EQ(3, client2->SendTo("foo", 3, server_addr));
@@ -235,8 +235,8 @@
 
     SocketAddress empty = EmptySocketAddressWithFamily(initial_addr.family());
     for (int i = 0; i < 10; i++) {
-      client2 = MakeUnique<TestClient>(
-          WrapUnique(AsyncUDPSocket::Create(&ss_, empty)), &fake_clock_);
+      client2 = absl::make_unique<TestClient>(
+          absl::WrapUnique(AsyncUDPSocket::Create(&ss_, empty)), &fake_clock_);
 
       SocketAddress next_client2_addr;
       EXPECT_EQ(3, client2->SendTo("foo", 3, server_addr));
@@ -261,15 +261,15 @@
         EmptySocketAddressWithFamily(initial_addr.family());
 
     // Create client
-    std::unique_ptr<AsyncSocket> client =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> client = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(client.get());
     EXPECT_EQ(client->GetState(), AsyncSocket::CS_CLOSED);
     EXPECT_TRUE(client->GetLocalAddress().IsNil());
 
     // Create server
-    std::unique_ptr<AsyncSocket> server =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> server = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(server.get());
     EXPECT_NE(0, server->Listen(5));  // Bind required
     EXPECT_EQ(0, server->Bind(initial_addr));
@@ -302,7 +302,8 @@
 
     // Server has pending connection
     EXPECT_TRUE(sink.Check(server.get(), SSE_READ));
-    std::unique_ptr<Socket> accepted = WrapUnique(server->Accept(&accept_addr));
+    std::unique_ptr<Socket> accepted =
+        absl::WrapUnique(server->Accept(&accept_addr));
     EXPECT_TRUE(nullptr != accepted);
     EXPECT_NE(accept_addr, kEmptyAddr);
     EXPECT_EQ(accepted->GetRemoteAddress(), accept_addr);
@@ -329,13 +330,13 @@
         EmptySocketAddressWithFamily(initial_addr.family());
 
     // Create client
-    std::unique_ptr<AsyncSocket> client =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> client = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(client.get());
 
     // Create server
-    std::unique_ptr<AsyncSocket> server =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> server = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(server.get());
     EXPECT_EQ(0, server->Bind(initial_addr));
     EXPECT_EQ(server->GetLocalAddress().family(), initial_addr.family());
@@ -448,14 +449,14 @@
     const SocketAddress kEmptyAddr;
 
     // Create clients
-    std::unique_ptr<AsyncSocket> a =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> a = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(a.get());
     a->Bind(initial_addr);
     EXPECT_EQ(a->GetLocalAddress().family(), initial_addr.family());
 
-    std::unique_ptr<AsyncSocket> b =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> b = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(b.get());
     b->Bind(initial_addr);
     EXPECT_EQ(b->GetLocalAddress().family(), initial_addr.family());
@@ -498,14 +499,14 @@
     const SocketAddress kEmptyAddr;
 
     // Connect two sockets
-    std::unique_ptr<AsyncSocket> a =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> a = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(a.get());
     a->Bind(initial_addr);
     EXPECT_EQ(a->GetLocalAddress().family(), initial_addr.family());
 
-    std::unique_ptr<AsyncSocket> b =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> b = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     sink.Monitor(b.get());
     b->Bind(initial_addr);
     EXPECT_EQ(b->GetLocalAddress().family(), initial_addr.family());
@@ -620,10 +621,10 @@
     const SocketAddress kEmptyAddr;
 
     // Connect two sockets
-    std::unique_ptr<AsyncSocket> a =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
-    std::unique_ptr<AsyncSocket> b =
-        WrapUnique(ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> a = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> b = absl::WrapUnique(
+        ss_.CreateAsyncSocket(initial_addr.family(), SOCK_STREAM));
     a->Bind(initial_addr);
     EXPECT_EQ(a->GetLocalAddress().family(), initial_addr.family());
 
@@ -771,8 +772,8 @@
     const SocketAddress kEmptyAddr;
 
     // Client gets a IPv4 address
-    std::unique_ptr<AsyncSocket> client =
-        WrapUnique(ss_.CreateAsyncSocket(client_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> client = absl::WrapUnique(
+        ss_.CreateAsyncSocket(client_addr.family(), SOCK_STREAM));
     sink.Monitor(client.get());
     EXPECT_EQ(client->GetState(), AsyncSocket::CS_CLOSED);
     EXPECT_EQ(client->GetLocalAddress(), kEmptyAddr);
@@ -780,8 +781,8 @@
 
     // Server gets a non-mapped non-any IPv6 address.
     // IPv4 sockets should not be able to connect to this.
-    std::unique_ptr<AsyncSocket> server =
-        WrapUnique(ss_.CreateAsyncSocket(server_addr.family(), SOCK_STREAM));
+    std::unique_ptr<AsyncSocket> server = absl::WrapUnique(
+        ss_.CreateAsyncSocket(server_addr.family(), SOCK_STREAM));
     sink.Monitor(server.get());
     server->Bind(server_addr);
     server->Listen(5);
@@ -791,7 +792,7 @@
       ss_.ProcessMessagesUntilIdle();
       EXPECT_TRUE(sink.Check(server.get(), SSE_READ));
       std::unique_ptr<Socket> accepted =
-          WrapUnique(server->Accept(&accept_address));
+          absl::WrapUnique(server->Accept(&accept_address));
       EXPECT_TRUE(nullptr != accepted);
       EXPECT_NE(kEmptyAddr, accept_address);
       ss_.ProcessMessagesUntilIdle();
@@ -820,13 +821,13 @@
     AsyncSocket* socket = ss_.CreateAsyncSocket(AF_INET, SOCK_DGRAM);
     socket->Bind(server_addr);
     SocketAddress bound_server_addr = socket->GetLocalAddress();
-    auto client1 = MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket),
-                                          &fake_clock_);
+    auto client1 = absl::make_unique<TestClient>(
+        absl::make_unique<AsyncUDPSocket>(socket), &fake_clock_);
 
     AsyncSocket* socket2 = ss_.CreateAsyncSocket(AF_INET, SOCK_DGRAM);
     socket2->Bind(client_addr);
-    auto client2 = MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket2),
-                                          &fake_clock_);
+    auto client2 = absl::make_unique<TestClient>(
+        absl::make_unique<AsyncUDPSocket>(socket2), &fake_clock_);
     SocketAddress client2_addr;
 
     if (shouldSucceed) {
@@ -1027,12 +1028,12 @@
 TEST_F(VirtualSocketServerTest, SetSendingBlockedWithUdpSocket) {
   AsyncSocket* socket1 =
       ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_DGRAM);
-  std::unique_ptr<AsyncSocket> socket2 =
-      WrapUnique(ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_DGRAM));
+  std::unique_ptr<AsyncSocket> socket2 = absl::WrapUnique(
+      ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_DGRAM));
   socket1->Bind(kIPv4AnyAddress);
   socket2->Bind(kIPv4AnyAddress);
-  auto client1 =
-      MakeUnique<TestClient>(MakeUnique<AsyncUDPSocket>(socket1), &fake_clock_);
+  auto client1 = absl::make_unique<TestClient>(
+      absl::make_unique<AsyncUDPSocket>(socket1), &fake_clock_);
 
   ss_.SetSendingBlocked(true);
   EXPECT_EQ(-1, client1->SendTo("foo", 3, socket2->GetLocalAddress()));
@@ -1050,10 +1051,10 @@
   ss_.set_recv_buffer_capacity(kBufferSize);
 
   StreamSink sink;
-  std::unique_ptr<AsyncSocket> socket1 =
-      WrapUnique(ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_STREAM));
-  std::unique_ptr<AsyncSocket> socket2 =
-      WrapUnique(ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_STREAM));
+  std::unique_ptr<AsyncSocket> socket1 = absl::WrapUnique(
+      ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_STREAM));
+  std::unique_ptr<AsyncSocket> socket2 = absl::WrapUnique(
+      ss_.CreateAsyncSocket(kIPv4AnyAddress.family(), SOCK_STREAM));
   sink.Monitor(socket1.get());
   sink.Monitor(socket2.get());
   socket1->Bind(kIPv4AnyAddress);
diff --git a/rtc_base/weak_ptr_unittest.cc b/rtc_base/weak_ptr_unittest.cc
index 6b0b452..9541718 100644
--- a/rtc_base/weak_ptr_unittest.cc
+++ b/rtc_base/weak_ptr_unittest.cc
@@ -225,7 +225,7 @@
   // Test that it is OK to create a WeakPtr on one thread, but use it on
   // another. This tests that we do not trip runtime checks that ensure that a
   // WeakPtr is not used by multiple threads.
-  auto target = rtc::MakeUnique<TargetWithFactory>();
+  auto target = absl::make_unique<TargetWithFactory>();
   // Create weak ptr on main thread
   WeakPtr<Target> weak_ptr = target->factory.GetWeakPtr();
   rtc::TaskQueue queue("queue");
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn
index 53d47bf..d31ffc9 100644
--- a/rtc_tools/BUILD.gn
+++ b/rtc_tools/BUILD.gn
@@ -244,6 +244,7 @@
         "../modules/pacing",
         "../modules/rtp_rtcp",
         "../system_wrappers:system_wrappers_default",
+        "//third_party/abseil-cpp/absl/memory",
       ]
     }
   }
@@ -343,6 +344,7 @@
       "../test:fileutils",
       "../test:test_main",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
 
     if (rtc_enable_protobuf) {
diff --git a/rtc_tools/event_log_visualizer/analyzer.cc b/rtc_tools/event_log_visualizer/analyzer.cc
index d86b995..7555845 100644
--- a/rtc_tools/event_log_visualizer/analyzer.cc
+++ b/rtc_tools/event_log_visualizer/analyzer.cc
@@ -17,6 +17,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "call/audio_receive_stream.h"
 #include "call/audio_send_stream.h"
 #include "call/call.h"
@@ -53,7 +54,6 @@
 #include "rtc_base/function_view.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/sequence_number_util.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/rate_statistics.h"
 
 #ifndef BWE_TEST_LOGGING_COMPILE_TIME_ENABLE
@@ -1127,7 +1127,7 @@
   // we don't instantiate the AcknowledgedBitrateEstimator both here and in
   // SendSideCongestionController since that would lead to duplicate outputs.
   AcknowledgedBitrateEstimator acknowledged_bitrate_estimator(
-      rtc::MakeUnique<BitrateEstimator>());
+      absl::make_unique<BitrateEstimator>());
 #endif  // !(BWE_TEST_LOGGING_COMPILE_TIME_ENABLE)
   int64_t time_us = std::min(NextRtpTime(), NextRtcpTime());
   int64_t last_update_us = 0;
diff --git a/rtc_tools/sanitizers_unittest.cc b/rtc_tools/sanitizers_unittest.cc
index 69c11fe..077cf7e 100644
--- a/rtc_tools/sanitizers_unittest.cc
+++ b/rtc_tools/sanitizers_unittest.cc
@@ -12,9 +12,9 @@
 #include <stdio.h>
 #include <random>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/nullsocketserver.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread.h"
 #include "test/gtest.h"
 
@@ -83,7 +83,7 @@
 class IncrementThread : public Thread {
  public:
   explicit IncrementThread(int* value)
-      : Thread(rtc::MakeUnique<NullSocketServer>()), value_(value) {}
+      : Thread(absl::make_unique<NullSocketServer>()), value_(value) {}
 
   void Run() override {
     ++*value_;
diff --git a/sdk/android/native_api/audio_device_module/audio_device_android.cc b/sdk/android/native_api/audio_device_module/audio_device_android.cc
index b7843d6..89ffeb6 100644
--- a/sdk/android/native_api/audio_device_module/audio_device_android.cc
+++ b/sdk/android/native_api/audio_device_module/audio_device_android.cc
@@ -13,8 +13,8 @@
 #include <stdlib.h>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/refcount.h"
 #include "rtc_base/refcountedobject.h"
 
@@ -64,8 +64,8 @@
       AudioDeviceModule::kAndroidAAudioAudio, false /* use_stereo_input */,
       false /* use_stereo_output */,
       jni::kLowLatencyModeDelayEstimateInMilliseconds,
-      rtc::MakeUnique<jni::AAudioRecorder>(input_parameters),
-      rtc::MakeUnique<jni::AAudioPlayer>(output_parameters));
+      absl::make_unique<jni::AAudioRecorder>(input_parameters),
+      absl::make_unique<jni::AAudioPlayer>(output_parameters));
 }
 #endif
 
@@ -82,11 +82,11 @@
   GetDefaultAudioParameters(env, application_context, &input_parameters,
                             &output_parameters);
   // Create ADM from AudioRecord and AudioTrack.
-  auto audio_input = rtc::MakeUnique<jni::AudioRecordJni>(
+  auto audio_input = absl::make_unique<jni::AudioRecordJni>(
       env, input_parameters, jni::kHighLatencyModeDelayEstimateInMilliseconds,
       jni::AudioRecordJni::CreateJavaWebRtcAudioRecord(env, j_context,
                                                        j_audio_manager));
-  auto audio_output = rtc::MakeUnique<jni::AudioTrackJni>(
+  auto audio_output = absl::make_unique<jni::AudioTrackJni>(
       env, output_parameters,
       jni::AudioTrackJni::CreateJavaWebRtcAudioTrack(env, j_context,
                                                      j_audio_manager));
@@ -107,10 +107,10 @@
   GetDefaultAudioParameters(env, application_context, &input_parameters,
                             &output_parameters);
   // Create ADM from OpenSLESRecorder and OpenSLESPlayer.
-  auto engine_manager = rtc::MakeUnique<jni::OpenSLEngineManager>();
-  auto audio_input = rtc::MakeUnique<jni::OpenSLESRecorder>(
+  auto engine_manager = absl::make_unique<jni::OpenSLEngineManager>();
+  auto audio_input = absl::make_unique<jni::OpenSLESRecorder>(
       input_parameters, engine_manager.get());
-  auto audio_output = rtc::MakeUnique<jni::OpenSLESPlayer>(
+  auto audio_output = absl::make_unique<jni::OpenSLESPlayer>(
       output_parameters, std::move(engine_manager));
   return CreateAudioDeviceModuleFromInputAndOutput(
       AudioDeviceModule::kAndroidOpenSLESAudio, false /* use_stereo_input */,
@@ -132,12 +132,12 @@
   GetDefaultAudioParameters(env, application_context, &input_parameters,
                             &output_parameters);
   // Create ADM from AudioRecord and OpenSLESPlayer.
-  auto audio_input = rtc::MakeUnique<jni::AudioRecordJni>(
+  auto audio_input = absl::make_unique<jni::AudioRecordJni>(
       env, input_parameters, jni::kLowLatencyModeDelayEstimateInMilliseconds,
       jni::AudioRecordJni::CreateJavaWebRtcAudioRecord(env, j_context,
                                                        j_audio_manager));
-  auto audio_output = rtc::MakeUnique<jni::OpenSLESPlayer>(
-      output_parameters, rtc::MakeUnique<jni::OpenSLEngineManager>());
+  auto audio_output = absl::make_unique<jni::OpenSLESPlayer>(
+      output_parameters, absl::make_unique<jni::OpenSLEngineManager>());
   return CreateAudioDeviceModuleFromInputAndOutput(
       AudioDeviceModule::kAndroidJavaInputAndOpenSLESOutputAudio,
       false /* use_stereo_input */, false /* use_stereo_output */,
diff --git a/sdk/android/native_api/base/networkmonitor.cc b/sdk/android/native_api/base/networkmonitor.cc
index a7cf456..5d33ab7 100644
--- a/sdk/android/native_api/base/networkmonitor.cc
+++ b/sdk/android/native_api/base/networkmonitor.cc
@@ -12,7 +12,7 @@
 
 #include <memory>
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/android/src/jni/androidnetworkmonitor.h"
 
 namespace webrtc {
@@ -20,13 +20,13 @@
 std::unique_ptr<rtc::NetworkMonitorFactory> CreateAndroidNetworkMonitorFactory(
     JNIEnv* env,
     jobject application_context) {
-  return rtc::MakeUnique<jni::AndroidNetworkMonitorFactory>(
+  return absl::make_unique<jni::AndroidNetworkMonitorFactory>(
       env, JavaParamRef<jobject>(application_context));
 }
 
 std::unique_ptr<rtc::NetworkMonitorFactory>
 CreateAndroidNetworkMonitorFactory() {
-  return rtc::MakeUnique<jni::AndroidNetworkMonitorFactory>();
+  return absl::make_unique<jni::AndroidNetworkMonitorFactory>();
 }
 
 }  // namespace webrtc
diff --git a/sdk/android/native_api/codecs/wrapper.cc b/sdk/android/native_api/codecs/wrapper.cc
index d7ff44d..5448955 100644
--- a/sdk/android/native_api/codecs/wrapper.cc
+++ b/sdk/android/native_api/codecs/wrapper.cc
@@ -10,7 +10,7 @@
 
 #include "sdk/android/native_api/codecs/wrapper.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/android/src/jni/videodecoderfactorywrapper.h"
 #include "sdk/android/src/jni/videoencoderfactorywrapper.h"
 
@@ -19,14 +19,14 @@
 std::unique_ptr<VideoDecoderFactory> JavaToNativeVideoDecoderFactory(
     JNIEnv* jni,
     jobject decoder_factory) {
-  return rtc::MakeUnique<jni::VideoDecoderFactoryWrapper>(
+  return absl::make_unique<jni::VideoDecoderFactoryWrapper>(
       jni, JavaParamRef<jobject>(decoder_factory));
 }
 
 std::unique_ptr<VideoEncoderFactory> JavaToNativeVideoEncoderFactory(
     JNIEnv* jni,
     jobject en) {
-  return rtc::MakeUnique<jni::VideoEncoderFactoryWrapper>(
+  return absl::make_unique<jni::VideoEncoderFactoryWrapper>(
       jni, JavaParamRef<jobject>(en));
 }
 
diff --git a/sdk/android/native_api/video/wrapper.cc b/sdk/android/native_api/video/wrapper.cc
index cc626c8..fe2d45a 100644
--- a/sdk/android/native_api/video/wrapper.cc
+++ b/sdk/android/native_api/video/wrapper.cc
@@ -10,7 +10,7 @@
 
 #include "sdk/android/native_api/video/wrapper.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/videoframe.h"
 #include "sdk/android/src/jni/videosink.h"
@@ -20,7 +20,7 @@
 std::unique_ptr<rtc::VideoSinkInterface<VideoFrame>> JavaToNativeVideoSink(
     JNIEnv* jni,
     jobject video_sink) {
-  return rtc::MakeUnique<jni::VideoSinkWrapper>(
+  return absl::make_unique<jni::VideoSinkWrapper>(
       jni, JavaParamRef<jobject>(video_sink));
 }
 
diff --git a/sdk/android/native_unittests/peerconnection/peerconnectionfactory_unittest.cc b/sdk/android/native_unittests/peerconnection/peerconnectionfactory_unittest.cc
index b06290f..7477860 100644
--- a/sdk/android/native_unittests/peerconnection/peerconnectionfactory_unittest.cc
+++ b/sdk/android/native_unittests/peerconnection/peerconnectionfactory_unittest.cc
@@ -9,6 +9,7 @@
  */
 #include "sdk/android/native_api/peerconnection/peerconnectionfactory.h"
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "media/base/mediaengine.h"
@@ -17,7 +18,6 @@
 #include "media/engine/webrtcmediaengine.h"
 #include "modules/audio_processing/include/audio_processing.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "sdk/android/generated_native_unittests_jni/jni/PeerConnectionFactoryInitializationHelper_jni.h"
 #include "sdk/android/native_api/jni/jvm.h"
 #include "test/gtest.h"
@@ -42,8 +42,8 @@
       cricket::WebRtcMediaEngineFactory::Create(
           nullptr /* adm */, webrtc::CreateBuiltinAudioEncoderFactory(),
           webrtc::CreateBuiltinAudioDecoderFactory(),
-          rtc::MakeUnique<webrtc::InternalEncoderFactory>(),
-          rtc::MakeUnique<webrtc::InternalDecoderFactory>(),
+          absl::make_unique<webrtc::InternalEncoderFactory>(),
+          absl::make_unique<webrtc::InternalDecoderFactory>(),
           nullptr /* audio_mixer */, webrtc::AudioProcessingBuilder().Create());
   RTC_LOG(LS_INFO) << "Media engine created: " << media_engine.get();
 
diff --git a/sdk/android/src/jni/audio_device/aaudio_player.cc b/sdk/android/src/jni/audio_device/aaudio_player.cc
index f32c265..ac45e90 100644
--- a/sdk/android/src/jni/audio_device/aaudio_player.cc
+++ b/sdk/android/src/jni/audio_device/aaudio_player.cc
@@ -10,11 +10,11 @@
 
 #include "sdk/android/src/jni/audio_device/aaudio_player.h"
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -124,7 +124,7 @@
   // Create a modified audio buffer class which allows us to ask for any number
   // of samples (and not only multiple of 10ms) to match the optimal buffer
   // size per callback used by AAudio.
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
 }
 
 bool AAudioPlayer::SpeakerVolumeIsAvailable() {
diff --git a/sdk/android/src/jni/audio_device/aaudio_recorder.cc b/sdk/android/src/jni/audio_device/aaudio_recorder.cc
index 7235e18..5ba9d3a 100644
--- a/sdk/android/src/jni/audio_device/aaudio_recorder.cc
+++ b/sdk/android/src/jni/audio_device/aaudio_recorder.cc
@@ -10,11 +10,11 @@
 
 #include "sdk/android/src/jni/audio_device/aaudio_recorder.h"
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 
 #include "system_wrappers/include/sleep.h"
@@ -120,7 +120,7 @@
   // Create a modified audio buffer class which allows us to deliver any number
   // of samples (and not only multiples of 10ms which WebRTC uses) to match the
   // native AAudio buffer size.
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
 }
 
 bool AAudioRecorder::IsAcousticEchoCancelerSupported() const {
diff --git a/sdk/android/src/jni/audio_device/audio_device_module.cc b/sdk/android/src/jni/audio_device/audio_device_module.cc
index c44ac91..dc3a8fe 100644
--- a/sdk/android/src/jni/audio_device/audio_device_module.cc
+++ b/sdk/android/src/jni/audio_device/audio_device_module.cc
@@ -86,7 +86,7 @@
   int32_t Init() override {
     RTC_LOG(INFO) << __FUNCTION__;
     RTC_DCHECK(thread_checker_.CalledOnValidThread());
-    audio_device_buffer_ = rtc::MakeUnique<AudioDeviceBuffer>();
+    audio_device_buffer_ = absl::make_unique<AudioDeviceBuffer>();
     AttachAudioBuffer();
     if (initialized_) {
       return 0;
diff --git a/sdk/android/src/jni/audio_device/java_audio_device_module.cc b/sdk/android/src/jni/audio_device/java_audio_device_module.cc
index 50c0291..e4b2352 100644
--- a/sdk/android/src/jni/audio_device/java_audio_device_module.cc
+++ b/sdk/android/src/jni/audio_device/java_audio_device_module.cc
@@ -31,11 +31,11 @@
   GetAudioParameters(env, j_context, j_audio_manager, sample_rate,
                      j_use_stereo_input, j_use_stereo_output, &input_parameters,
                      &output_parameters);
-  auto audio_input = rtc::MakeUnique<AudioRecordJni>(
+  auto audio_input = absl::make_unique<AudioRecordJni>(
       env, input_parameters, kHighLatencyModeDelayEstimateInMilliseconds,
       j_webrtc_audio_record);
-  auto audio_output = rtc::MakeUnique<AudioTrackJni>(env, output_parameters,
-                                                     j_webrtc_audio_track);
+  auto audio_output = absl::make_unique<AudioTrackJni>(env, output_parameters,
+                                                       j_webrtc_audio_track);
   return jlongFromPointer(CreateAudioDeviceModuleFromInputAndOutput(
                               AudioDeviceModule::kAndroidJavaAudio,
                               j_use_stereo_input, j_use_stereo_output,
diff --git a/sdk/android/src/jni/audio_device/opensles_player.cc b/sdk/android/src/jni/audio_device/opensles_player.cc
index 3e831a9..00a5f1e 100644
--- a/sdk/android/src/jni/audio_device/opensles_player.cc
+++ b/sdk/android/src/jni/audio_device/opensles_player.cc
@@ -12,13 +12,13 @@
 
 #include <android/log.h>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/format_macros.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "sdk/android/src/jni/audio_device/audio_common.h"
 
@@ -226,7 +226,7 @@
   ALOGD("native buffer size: %" PRIuS, buffer_size_in_samples);
   ALOGD("native buffer size in ms: %.2f",
         audio_parameters_.GetBufferSizeInMilliseconds());
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
   // Allocated memory for audio buffers.
   for (int i = 0; i < kNumOfOpenSLESBuffers; ++i) {
     audio_buffers_[i].reset(new SLint16[buffer_size_in_samples]);
diff --git a/sdk/android/src/jni/audio_device/opensles_recorder.cc b/sdk/android/src/jni/audio_device/opensles_recorder.cc
index 4c51d38..32d9e5c 100644
--- a/sdk/android/src/jni/audio_device/opensles_recorder.cc
+++ b/sdk/android/src/jni/audio_device/opensles_recorder.cc
@@ -12,13 +12,13 @@
 
 #include <android/log.h>
 
+#include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/format_macros.h"
 #include "rtc_base/platform_thread.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 #include "sdk/android/src/jni/audio_device/audio_common.h"
 
@@ -352,7 +352,7 @@
         audio_parameters_.GetBytesPerBuffer());
   ALOGD("native sample rate: %d", audio_parameters_.sample_rate());
   RTC_DCHECK(audio_device_buffer_);
-  fine_audio_buffer_ = rtc::MakeUnique<FineAudioBuffer>(audio_device_buffer_);
+  fine_audio_buffer_ = absl::make_unique<FineAudioBuffer>(audio_device_buffer_);
   // Allocate queue of audio buffers that stores recorded audio samples.
   const int buffer_size_samples =
       audio_parameters_.frames_per_buffer() * audio_parameters_.channels();
diff --git a/sdk/android/src/jni/pc/datachannel.cc b/sdk/android/src/jni/pc/datachannel.cc
index 030ae2b..717c12a 100644
--- a/sdk/android/src/jni/pc/datachannel.cc
+++ b/sdk/android/src/jni/pc/datachannel.cc
@@ -12,9 +12,9 @@
 
 #include <limits>
 
+#include "absl/memory/memory.h"
 #include "api/datachannelinterface.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "sdk/android/generated_peerconnection_jni/jni/DataChannel_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
@@ -97,7 +97,7 @@
     JNIEnv* jni,
     const JavaParamRef<jobject>& j_dc,
     const JavaParamRef<jobject>& j_observer) {
-  auto observer = rtc::MakeUnique<DataChannelObserverJni>(jni, j_observer);
+  auto observer = absl::make_unique<DataChannelObserverJni>(jni, j_observer);
   ExtractNativeDC(jni, j_dc)->RegisterObserver(observer.get());
   return jlongFromPointer(observer.release());
 }
diff --git a/sdk/android/src/jni/pc/mediaconstraints.cc b/sdk/android/src/jni/pc/mediaconstraints.cc
index 868abc4..77c6e09 100644
--- a/sdk/android/src/jni/pc/mediaconstraints.cc
+++ b/sdk/android/src/jni/pc/mediaconstraints.cc
@@ -10,7 +10,7 @@
 
 #include "sdk/android/src/jni/pc/mediaconstraints.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/android/generated_peerconnection_jni/jni/MediaConstraints_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
@@ -60,7 +60,7 @@
 std::unique_ptr<MediaConstraintsInterface> JavaToNativeMediaConstraints(
     JNIEnv* env,
     const JavaRef<jobject>& j_constraints) {
-  return rtc::MakeUnique<MediaConstraintsJni>(env, j_constraints);
+  return absl::make_unique<MediaConstraintsJni>(env, j_constraints);
 }
 
 }  // namespace jni
diff --git a/sdk/android/src/jni/pc/mediastream.cc b/sdk/android/src/jni/pc/mediastream.cc
index 5f36414..d70996b 100644
--- a/sdk/android/src/jni/pc/mediastream.cc
+++ b/sdk/android/src/jni/pc/mediastream.cc
@@ -10,7 +10,7 @@
 
 #include "sdk/android/src/jni/pc/mediastream.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/android/generated_peerconnection_jni/jni/MediaStream_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
@@ -25,7 +25,7 @@
           env,
           Java_MediaStream_Constructor(env,
                                        jlongFromPointer(media_stream.get()))),
-      observer_(rtc::MakeUnique<MediaStreamObserver>(media_stream)) {
+      observer_(absl::make_unique<MediaStreamObserver>(media_stream)) {
   for (rtc::scoped_refptr<AudioTrackInterface> track :
        media_stream->GetAudioTracks()) {
     Java_MediaStream_addNativeAudioTrack(env, j_media_stream_,
diff --git a/sdk/android/src/jni/pc/peerconnection.cc b/sdk/android/src/jni/pc/peerconnection.cc
index c7ef09b..de246a7 100644
--- a/sdk/android/src/jni/pc/peerconnection.cc
+++ b/sdk/android/src/jni/pc/peerconnection.cc
@@ -32,6 +32,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "api/mediaconstraintsinterface.h"
 #include "api/peerconnectioninterface.h"
 #include "api/rtpreceiverinterface.h"
@@ -39,7 +40,6 @@
 #include "api/rtptransceiverinterface.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "sdk/android/generated_peerconnection_jni/jni/PeerConnection_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
diff --git a/sdk/android/src/jni/pc/peerconnectionfactory.cc b/sdk/android/src/jni/pc/peerconnectionfactory.cc
index 211d583..04f9353 100644
--- a/sdk/android/src/jni/pc/peerconnectionfactory.cc
+++ b/sdk/android/src/jni/pc/peerconnectionfactory.cc
@@ -142,7 +142,7 @@
     field_trial::InitFieldTrialsFromString(nullptr);
     return;
   }
-  field_trials_init_string = rtc::MakeUnique<std::string>(
+  field_trials_init_string = absl::make_unique<std::string>(
       JavaToNativeString(jni, j_trials_init_string));
   RTC_LOG(LS_INFO) << "initializeFieldTrials: " << *field_trials_init_string;
   field_trial::InitFieldTrialsFromString(field_trials_init_string->c_str());
@@ -510,7 +510,7 @@
   if (jni_log_sink) {
     rtc::LogMessage::RemoveLogToStream(jni_log_sink.get());
   }
-  jni_log_sink = rtc::MakeUnique<JNILogSink>(jni, j_logging);
+  jni_log_sink = absl::make_unique<JNILogSink>(jni, j_logging);
   rtc::LogMessage::AddLogToStream(
       jni_log_sink.get(), static_cast<rtc::LoggingSeverity>(nativeSeverity));
   rtc::LogMessage::LogToDebug(rtc::LS_NONE);
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
index 263adbd..4061c02 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
@@ -47,8 +47,8 @@
 // C++ target.
 // TODO(zhihuang): Remove nogncheck once MediaEngineInterface is moved to C++
 // API layer.
+#include "absl/memory/memory.h"
 #include "media/engine/webrtcmediaengine.h"  // nogncheck
-#include "rtc_base/ptr_util.h"
 
 @implementation RTCPeerConnectionFactory {
   std::unique_ptr<rtc::Thread> _networkThread;
diff --git a/sdk/objc/Framework/Native/api/video_capturer.mm b/sdk/objc/Framework/Native/api/video_capturer.mm
index 2d67f2d..4868c2e 100644
--- a/sdk/objc/Framework/Native/api/video_capturer.mm
+++ b/sdk/objc/Framework/Native/api/video_capturer.mm
@@ -10,8 +10,8 @@
 
 #include "sdk/objc/Framework/Native/api/video_capturer.h"
 
+#include "absl/memory/memory.h"
 #include "api/videosourceproxy.h"
-#include "rtc_base/ptr_util.h"
 #include "sdk/objc/Framework/Native/src/objc_video_track_source.h"
 
 namespace webrtc {
diff --git a/sdk/objc/Framework/Native/api/video_decoder_factory.mm b/sdk/objc/Framework/Native/api/video_decoder_factory.mm
index 4d5a711..32d286a 100644
--- a/sdk/objc/Framework/Native/api/video_decoder_factory.mm
+++ b/sdk/objc/Framework/Native/api/video_decoder_factory.mm
@@ -10,14 +10,14 @@
 
 #include "sdk/objc/Framework/Native/api/video_decoder_factory.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/objc/Framework/Native/src/objc_video_decoder_factory.h"
 
 namespace webrtc {
 
 std::unique_ptr<VideoDecoderFactory> ObjCToNativeVideoDecoderFactory(
     id<RTCVideoDecoderFactory> objc_video_decoder_factory) {
-  return rtc::MakeUnique<ObjCVideoDecoderFactory>(objc_video_decoder_factory);
+  return absl::make_unique<ObjCVideoDecoderFactory>(objc_video_decoder_factory);
 }
 
 }  // namespace webrtc
diff --git a/sdk/objc/Framework/Native/api/video_encoder_factory.mm b/sdk/objc/Framework/Native/api/video_encoder_factory.mm
index e92c25d..f94c41a 100644
--- a/sdk/objc/Framework/Native/api/video_encoder_factory.mm
+++ b/sdk/objc/Framework/Native/api/video_encoder_factory.mm
@@ -10,14 +10,14 @@
 
 #include "sdk/objc/Framework/Native/api/video_encoder_factory.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/objc/Framework/Native/src/objc_video_encoder_factory.h"
 
 namespace webrtc {
 
 std::unique_ptr<VideoEncoderFactory> ObjCToNativeVideoEncoderFactory(
     id<RTCVideoEncoderFactory> objc_video_encoder_factory) {
-  return rtc::MakeUnique<ObjCVideoEncoderFactory>(objc_video_encoder_factory);
+  return absl::make_unique<ObjCVideoEncoderFactory>(objc_video_encoder_factory);
 }
 
 }  // namespace webrtc
diff --git a/sdk/objc/Framework/Native/api/video_renderer.mm b/sdk/objc/Framework/Native/api/video_renderer.mm
index 3fb5539..963e474 100644
--- a/sdk/objc/Framework/Native/api/video_renderer.mm
+++ b/sdk/objc/Framework/Native/api/video_renderer.mm
@@ -10,14 +10,14 @@
 
 #include "sdk/objc/Framework/Native/api/video_renderer.h"
 
-#include "rtc_base/ptr_util.h"
+#include "absl/memory/memory.h"
 #include "sdk/objc/Framework/Native/src/objc_video_renderer.h"
 
 namespace webrtc {
 
 std::unique_ptr<rtc::VideoSinkInterface<VideoFrame>> ObjCToNativeVideoRenderer(
     id<RTCVideoRenderer> objc_video_renderer) {
-  return rtc::MakeUnique<ObjCVideoRenderer>(objc_video_renderer);
+  return absl::make_unique<ObjCVideoRenderer>(objc_video_renderer);
 }
 
 }  // namespace webrtc
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 24b3735..9acf941 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -323,6 +323,7 @@
       "../rtc_base:rtc_base_approved",
       "../test:single_threaded_task_queue",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
     ]
     sources = [
       "direct_transport_unittest.cc",
@@ -477,6 +478,7 @@
     "../rtc_base:rtc_base_approved",
     "../rtc_base:sequenced_task_checker",
     "../system_wrappers",
+    "//third_party/abseil-cpp/absl/memory",
   ]
   public_deps = [
     ":single_threaded_task_queue",
@@ -493,6 +495,7 @@
   deps = [
     "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
+    "//third_party/abseil-cpp/absl/memory",
   ]
 }
 
@@ -588,6 +591,7 @@
     "../system_wrappers:runtime_enabled_features_api",
     "../video",
     "//testing/gtest",
+    "//third_party/abseil-cpp/absl/memory",
   ]
   if (!is_android && !build_with_chromium) {
     deps += [ "../modules/video_capture:video_capture_internal_impl" ]
diff --git a/test/call_test.cc b/test/call_test.cc
index c735e06..79869be 100644
--- a/test/call_test.cc
+++ b/test/call_test.cc
@@ -12,6 +12,7 @@
 
 #include <algorithm>
 
+#include "absl/memory/memory.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "api/video_codecs/video_encoder_config.h"
@@ -19,7 +20,6 @@
 #include "modules/audio_mixer/audio_mixer_impl.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 #include "test/fake_encoder.h"
 #include "test/testsupport/fileutils.h"
 
@@ -39,7 +39,7 @@
       audio_send_config_(nullptr),
       audio_send_stream_(nullptr),
       fake_encoder_factory_([this]() {
-        auto encoder = rtc::MakeUnique<test::FakeEncoder>(clock_);
+        auto encoder = absl::make_unique<test::FakeEncoder>(clock_);
         encoder->SetMaxBitrate(fake_encoder_max_bitrate_);
         return encoder;
       }),
@@ -178,7 +178,7 @@
 
 void CallTest::CreateSenderCall(const Call::Config& config) {
   std::unique_ptr<RtpTransportControllerSend> controller_send =
-      rtc::MakeUnique<RtpTransportControllerSend>(
+      absl::make_unique<RtpTransportControllerSend>(
           Clock::GetRealTimeClock(), config.event_log,
           config.network_controller_factory, config.bitrate_config);
   sender_call_transport_controller_ = controller_send.get();
diff --git a/test/direct_transport.cc b/test/direct_transport.cc
index 672e553..7a496b1 100644
--- a/test/direct_transport.cc
+++ b/test/direct_transport.cc
@@ -9,9 +9,9 @@
  */
 #include "test/direct_transport.h"
 
+#include "absl/memory/memory.h"
 #include "call/call.h"
 #include "modules/rtp_rtcp/include/rtp_header_parser.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 #include "test/single_threaded_task_queue.h"
 
@@ -53,7 +53,7 @@
       clock_(Clock::GetRealTimeClock()),
       task_queue_(task_queue),
       demuxer_(payload_type_map),
-      fake_network_(rtc::MakeUnique<FakeNetworkPipe>(clock_, config)) {
+      fake_network_(absl::make_unique<FakeNetworkPipe>(clock_, config)) {
   Start();
 }
 
diff --git a/test/encoder_proxy_factory.h b/test/encoder_proxy_factory.h
index 2982010..8672a46 100644
--- a/test/encoder_proxy_factory.h
+++ b/test/encoder_proxy_factory.h
@@ -14,9 +14,9 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "api/video_codecs/video_encoder.h"
 #include "api/video_codecs/video_encoder_factory.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 namespace test {
@@ -43,7 +43,7 @@
 
   std::unique_ptr<VideoEncoder> CreateVideoEncoder(
       const SdpVideoFormat& format) override {
-    return rtc::MakeUnique<EncoderProxy>(encoder_);
+    return absl::make_unique<EncoderProxy>(encoder_);
   }
 
   void SetIsHardwareAccelerated(bool is_hardware_accelerated) {
diff --git a/test/fuzzers/agc_fuzzer.cc b/test/fuzzers/agc_fuzzer.cc
index 7253802..5bd921e 100644
--- a/test/fuzzers/agc_fuzzer.cc
+++ b/test/fuzzers/agc_fuzzer.cc
@@ -8,11 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "absl/memory/memory.h"
 #include "modules/audio_processing/audio_buffer.h"
 #include "modules/audio_processing/gain_control_impl.h"
 #include "modules/audio_processing/include/audio_processing.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/thread_annotations.h"
 #include "test/fuzzers/fuzz_data_helper.h"
 
@@ -112,7 +112,7 @@
   test::FuzzDataHelper fuzz_data(rtc::ArrayView<const uint8_t>(data, size));
   rtc::CriticalSection crit_capture;
   rtc::CriticalSection crit_render;
-  auto gci = rtc::MakeUnique<GainControlImpl>(&crit_render, &crit_capture);
+  auto gci = absl::make_unique<GainControlImpl>(&crit_render, &crit_capture);
   FuzzGainController(&fuzz_data, gci.get());
 }
 }  // namespace webrtc
diff --git a/test/fuzzers/audio_processing_configs_fuzzer.cc b/test/fuzzers/audio_processing_configs_fuzzer.cc
index f298760..5295181 100644
--- a/test/fuzzers/audio_processing_configs_fuzzer.cc
+++ b/test/fuzzers/audio_processing_configs_fuzzer.cc
@@ -11,12 +11,12 @@
 #include <bitset>
 #include <string>
 
+#include "absl/memory/memory.h"
 #include "api/audio/echo_canceller3_factory.h"
 #include "modules/audio_processing/aec_dump/mock_aec_dump.h"
 #include "modules/audio_processing/include/audio_processing.h"
 #include "rtc_base/arraysize.h"
 #include "rtc_base/numerics/safe_minmax.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/field_trial_default.h"
 #include "test/fuzzers/audio_processing_fuzzer_helper.h"
 #include "test/fuzzers/fuzz_data_helper.h"
@@ -116,7 +116,7 @@
           .Create(config));
 
   apm->AttachAecDump(
-      rtc::MakeUnique<testing::NiceMock<webrtc::test::MockAecDump>>());
+      absl::make_unique<testing::NiceMock<webrtc::test::MockAecDump>>());
 
   webrtc::AudioProcessing::Config apm_config;
   apm_config.residual_echo_detector.enabled = red;
diff --git a/test/fuzzers/rtp_frame_reference_finder_fuzzer.cc b/test/fuzzers/rtp_frame_reference_finder_fuzzer.cc
index 30c4df4..fd98892 100644
--- a/test/fuzzers/rtp_frame_reference_finder_fuzzer.cc
+++ b/test/fuzzers/rtp_frame_reference_finder_fuzzer.cc
@@ -10,9 +10,9 @@
 
 #include "modules/video_coding/rtp_frame_reference_finder.h"
 
+#include "absl/memory/memory.h"
 #include "modules/video_coding/frame_object.h"
 #include "modules/video_coding/packet_buffer.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 
 namespace webrtc {
@@ -107,7 +107,7 @@
   video_coding::RtpFrameReferenceFinder reference_finder(&cb);
 
   while (reader.MoreToRead()) {
-    auto frame = rtc::MakeUnique<video_coding::RtpFrameObject>(
+    auto frame = absl::make_unique<video_coding::RtpFrameObject>(
         pb, reader.GetNum<uint16_t>(), reader.GetNum<uint16_t>(), 0, 0, 0);
     reference_finder.ManageFrame(std::move(frame));
   }
diff --git a/test/single_threaded_task_queue.cc b/test/single_threaded_task_queue.cc
index bfb8c9c..ad7a503 100644
--- a/test/single_threaded_task_queue.cc
+++ b/test/single_threaded_task_queue.cc
@@ -12,9 +12,9 @@
 
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/timeutils.h"
 
 namespace webrtc {
@@ -70,7 +70,8 @@
       break;
     }
   }
-  tasks_.insert(it, rtc::MakeUnique<QueuedTask>(id, earliest_exec_time, task));
+  tasks_.insert(it,
+                absl::make_unique<QueuedTask>(id, earliest_exec_time, task));
 
   // This class is optimized for simplicty, not for performance. This will wake
   // the thread up even if the next task in the queue is only scheduled for
diff --git a/test/single_threaded_task_queue_unittest.cc b/test/single_threaded_task_queue_unittest.cc
index 3929574..084f0d7 100644
--- a/test/single_threaded_task_queue_unittest.cc
+++ b/test/single_threaded_task_queue_unittest.cc
@@ -14,8 +14,8 @@
 #include <memory>
 #include <vector>
 
+#include "absl/memory/memory.h"
 #include "rtc_base/event.h"
-#include "rtc_base/ptr_util.h"
 #include "test/gtest.h"
 
 namespace webrtc {
@@ -60,7 +60,7 @@
 
   std::vector<std::unique_ptr<rtc::Event>> done_events;
   for (size_t i = 0; i < kCount; i++) {
-    done_events.emplace_back(rtc::MakeUnique<rtc::Event>(false, false));
+    done_events.emplace_back(absl::make_unique<rtc::Event>(false, false));
   }
 
   // To avoid the tasks which comprise the actual test from running before they
@@ -327,7 +327,7 @@
 TEST(SingleThreadedTaskQueueForTestingTest,
      DestructTaskQueueWhileTasksPending) {
   auto task_queue =
-      rtc::MakeUnique<SingleThreadedTaskQueueForTesting>("task_queue");
+      absl::make_unique<SingleThreadedTaskQueueForTesting>("task_queue");
 
   std::atomic<size_t> counter(0);
 
diff --git a/video/BUILD.gn b/video/BUILD.gn
index c64697f..1b8221e 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -83,6 +83,7 @@
     "../rtc_base/system:fallthrough",
     "../system_wrappers:field_trial_api",
     "../system_wrappers:metrics_api",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
 
     # For RtxReceiveStream.
@@ -129,6 +130,7 @@
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue_api",
     "../system_wrappers:system_wrappers",
+    "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
 }
@@ -425,6 +427,7 @@
       "../test:test_support",
       "../test:video_test_common",
       "//testing/gtest",
+      "//third_party/abseil-cpp/absl/memory",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
     if (!build_with_chromium && is_clang) {
diff --git a/video/end_to_end_tests/call_operation_tests.cc b/video/end_to_end_tests/call_operation_tests.cc
index dad4c42..c0e1ffa 100644
--- a/video/end_to_end_tests/call_operation_tests.cc
+++ b/video/end_to_end_tests/call_operation_tests.cc
@@ -115,9 +115,9 @@
                         &receiver_transport]() {
     CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
 
-    sender_transport = rtc::MakeUnique<test::DirectTransport>(
+    sender_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, sender_call_.get(), payload_type_map_);
-    receiver_transport = rtc::MakeUnique<test::DirectTransport>(
+    receiver_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, receiver_call_.get(), payload_type_map_);
     sender_transport->SetReceiver(receiver_call_->Receiver());
     receiver_transport->SetReceiver(sender_call_->Receiver());
@@ -175,9 +175,9 @@
                         &sender_transport, &receiver_transport]() {
     CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
 
-    sender_transport = rtc::MakeUnique<test::DirectTransport>(
+    sender_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, sender_call_.get(), payload_type_map_);
-    receiver_transport = rtc::MakeUnique<test::DirectTransport>(
+    receiver_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, receiver_call_.get(), payload_type_map_);
     sender_transport->SetReceiver(receiver_call_->Receiver());
     receiver_transport->SetReceiver(sender_call_->Receiver());
@@ -242,9 +242,9 @@
   task_queue_.SendTask([&]() {
     CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
 
-    sender_transport = rtc::MakeUnique<test::DirectTransport>(
+    sender_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, sender_call_.get(), payload_type_map_);
-    receiver_transport = rtc::MakeUnique<test::DirectTransport>(
+    receiver_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, receiver_call_.get(), payload_type_map_);
     sender_transport->SetReceiver(receiver_call_->Receiver());
     receiver_transport->SetReceiver(sender_call_->Receiver());
diff --git a/video/end_to_end_tests/codec_tests.cc b/video/end_to_end_tests/codec_tests.cc
index 71034cc..ab246f6 100644
--- a/video/end_to_end_tests/codec_tests.cc
+++ b/video/end_to_end_tests/codec_tests.cc
@@ -142,12 +142,12 @@
   InternalDecoderFactory decoder_factory;
   test::FunctionVideoEncoderFactory encoder_factory(
       [&internal_encoder_factory]() {
-        return rtc::MakeUnique<MultiplexEncoderAdapter>(
+        return absl::make_unique<MultiplexEncoderAdapter>(
             &internal_encoder_factory, SdpVideoFormat(cricket::kVp9CodecName));
       });
   CodecObserver test(
       5, kVideoRotation_0, "multiplex", &encoder_factory,
-      rtc::MakeUnique<MultiplexDecoderAdapter>(
+      absl::make_unique<MultiplexDecoderAdapter>(
           &decoder_factory, SdpVideoFormat(cricket::kVp9CodecName)));
   RunBaseTest(&test);
 }
@@ -157,12 +157,12 @@
   InternalDecoderFactory decoder_factory;
   test::FunctionVideoEncoderFactory encoder_factory(
       [&internal_encoder_factory]() {
-        return rtc::MakeUnique<MultiplexEncoderAdapter>(
+        return absl::make_unique<MultiplexEncoderAdapter>(
             &internal_encoder_factory, SdpVideoFormat(cricket::kVp9CodecName));
       });
   CodecObserver test(
       5, kVideoRotation_90, "multiplex", &encoder_factory,
-      rtc::MakeUnique<MultiplexDecoderAdapter>(
+      absl::make_unique<MultiplexDecoderAdapter>(
           &decoder_factory, SdpVideoFormat(cricket::kVp9CodecName)));
   RunBaseTest(&test);
 }
diff --git a/video/end_to_end_tests/multi_stream_tester.cc b/video/end_to_end_tests/multi_stream_tester.cc
index 92fa938..57387aa 100644
--- a/video/end_to_end_tests/multi_stream_tester.cc
+++ b/video/end_to_end_tests/multi_stream_tester.cc
@@ -53,11 +53,11 @@
       []() { return VP8Encoder::Create(); });
 
   task_queue_->SendTask([&]() {
-    sender_call = rtc::WrapUnique(Call::Create(config));
-    receiver_call = rtc::WrapUnique(Call::Create(config));
+    sender_call = absl::WrapUnique(Call::Create(config));
+    receiver_call = absl::WrapUnique(Call::Create(config));
     sender_transport =
-        rtc::WrapUnique(CreateSendTransport(task_queue_, sender_call.get()));
-    receiver_transport = rtc::WrapUnique(
+        absl::WrapUnique(CreateSendTransport(task_queue_, sender_call.get()));
+    receiver_transport = absl::WrapUnique(
         CreateReceiveTransport(task_queue_, receiver_call.get()));
 
     sender_transport->SetReceiver(receiver_call->Receiver());
diff --git a/video/end_to_end_tests/network_state_tests.cc b/video/end_to_end_tests/network_state_tests.cc
index 9af0c47..0b2be4b 100644
--- a/video/end_to_end_tests/network_state_tests.cc
+++ b/video/end_to_end_tests/network_state_tests.cc
@@ -114,7 +114,7 @@
     Call::Config config(event_log_.get());
     CreateCalls(config, config);
     receiver_call_->SignalChannelNetworkState(network_to_bring_up, kNetworkUp);
-    sender_transport = rtc::MakeUnique<test::DirectTransport>(
+    sender_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, sender_call_.get(), payload_type_map_);
     sender_transport->SetReceiver(receiver_call_->Receiver());
     CreateSendConfig(1, 0, 0, sender_transport.get());
diff --git a/video/end_to_end_tests/rtp_rtcp_tests.cc b/video/end_to_end_tests/rtp_rtcp_tests.cc
index 1c953ac..b54cc69 100644
--- a/video/end_to_end_tests/rtp_rtcp_tests.cc
+++ b/video/end_to_end_tests/rtp_rtcp_tests.cc
@@ -275,11 +275,11 @@
                         &config, &one_stream, use_rtx]() {
     CreateCalls(config, config);
 
-    send_transport = rtc::MakeUnique<test::PacketTransport>(
+    send_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, sender_call_.get(), &observer,
         test::PacketTransport::kSender, payload_type_map_,
         FakeNetworkPipe::Config());
-    receive_transport = rtc::MakeUnique<test::PacketTransport>(
+    receive_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, nullptr, &observer, test::PacketTransport::kReceiver,
         payload_type_map_, FakeNetworkPipe::Config());
     send_transport->SetReceiver(receiver_call_->Receiver());
@@ -478,13 +478,13 @@
     lossy_delayed_link.loss_percent = 2;
     lossy_delayed_link.queue_delay_ms = 50;
 
-    send_transport = rtc::MakeUnique<test::PacketTransport>(
+    send_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, sender_call_.get(), &observer,
         test::PacketTransport::kSender, payload_type_map_, lossy_delayed_link);
     send_transport->SetReceiver(receiver_call_->Receiver());
 
     FakeNetworkPipe::Config flawless_link;
-    receive_transport = rtc::MakeUnique<test::PacketTransport>(
+    receive_transport = absl::make_unique<test::PacketTransport>(
         &task_queue_, nullptr, &observer, test::PacketTransport::kReceiver,
         payload_type_map_, flawless_link);
     receive_transport->SetReceiver(sender_call_->Receiver());
diff --git a/video/end_to_end_tests/ssrc_tests.cc b/video/end_to_end_tests/ssrc_tests.cc
index 1bd96dd..860ac78 100644
--- a/video/end_to_end_tests/ssrc_tests.cc
+++ b/video/end_to_end_tests/ssrc_tests.cc
@@ -77,12 +77,12 @@
                         &input_observer]() {
     CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
 
-    send_transport = rtc::MakeUnique<test::DirectTransport>(
+    send_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, sender_call_.get(), payload_type_map_);
-    receive_transport = rtc::MakeUnique<test::DirectTransport>(
+    receive_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, receiver_call_.get(), payload_type_map_);
     input_observer =
-        rtc::MakeUnique<PacketInputObserver>(receiver_call_->Receiver());
+        absl::make_unique<PacketInputObserver>(receiver_call_->Receiver());
     send_transport->SetReceiver(input_observer.get());
     receive_transport->SetReceiver(sender_call_->Receiver());
 
diff --git a/video/end_to_end_tests/stats_tests.cc b/video/end_to_end_tests/stats_tests.cc
index 8a04461..e2f7019 100644
--- a/video/end_to_end_tests/stats_tests.cc
+++ b/video/end_to_end_tests/stats_tests.cc
@@ -40,7 +40,7 @@
     StatsObserver()
         : EndToEndTest(kLongTimeoutMs),
           encoder_factory_([]() {
-            return rtc::MakeUnique<test::DelayedEncoder>(
+            return absl::make_unique<test::DelayedEncoder>(
                 Clock::GetRealTimeClock(), 10);
           }),
           send_stream_(nullptr),
@@ -712,10 +712,10 @@
     FakeNetworkPipe::Config config;
     config.queue_delay_ms = kSendDelayMs;
     CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
-    sender_transport = rtc::MakeUnique<test::DirectTransport>(
+    sender_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, config, sender_call_.get(), payload_type_map_);
     config.queue_delay_ms = kReceiveDelayMs;
-    receiver_transport = rtc::MakeUnique<test::DirectTransport>(
+    receiver_transport = absl::make_unique<test::DirectTransport>(
         &task_queue_, config, receiver_call_.get(), payload_type_map_);
     sender_transport->SetReceiver(receiver_call_->Receiver());
     receiver_transport->SetReceiver(sender_call_->Receiver());
diff --git a/video/full_stack_tests.cc b/video/full_stack_tests.cc
index 79bef26..988f1e8 100644
--- a/video/full_stack_tests.cc
+++ b/video/full_stack_tests.cc
@@ -69,7 +69,7 @@
 
 std::unique_ptr<VideoQualityTestFixtureInterface>
 CreateVideoQualityTestFixture() {
-  return rtc::MakeUnique<VideoQualityTest>(nullptr);
+  return absl::make_unique<VideoQualityTest>(nullptr);
 }
 
 }  // namespace
diff --git a/video/overuse_frame_detector.cc b/video/overuse_frame_detector.cc
index d6055c8..77cca61 100644
--- a/video/overuse_frame_detector.cc
+++ b/video/overuse_frame_detector.cc
@@ -446,9 +446,9 @@
 OveruseFrameDetector::CreateProcessingUsage(const CpuOveruseOptions& options) {
   std::unique_ptr<ProcessingUsage> instance;
   if (options.filter_time_ms > 0) {
-    instance = rtc::MakeUnique<SendProcessingUsage2>(options);
+    instance = absl::make_unique<SendProcessingUsage2>(options);
   } else {
-    instance = rtc::MakeUnique<SendProcessingUsage1>(options);
+    instance = absl::make_unique<SendProcessingUsage1>(options);
   }
   std::string toggling_interval =
       field_trial::FindFullName("WebRTC-ForceSimulatedOveruseIntervalMs");
@@ -460,7 +460,7 @@
                &overuse_period_ms, &underuse_period_ms) == 3) {
       if (normal_period_ms > 0 && overuse_period_ms > 0 &&
           underuse_period_ms > 0) {
-        instance = rtc::MakeUnique<OverdoseInjector>(
+        instance = absl::make_unique<OverdoseInjector>(
             std::move(instance), normal_period_ms, overuse_period_ms,
             underuse_period_ms);
       } else {
diff --git a/video/overuse_frame_detector_unittest.cc b/video/overuse_frame_detector_unittest.cc
index 3fc6c17..5ebc203 100644
--- a/video/overuse_frame_detector_unittest.cc
+++ b/video/overuse_frame_detector_unittest.cc
@@ -71,7 +71,7 @@
   void SetUp() override {
     observer_ = &mock_observer_;
     options_.min_process_count = 0;
-    overuse_detector_ = rtc::MakeUnique<OveruseFrameDetectorUnderTest>(this);
+    overuse_detector_ = absl::make_unique<OveruseFrameDetectorUnderTest>(this);
     // Unfortunately, we can't call SetOptions here, since that would break
     // single-threading requirements in the RunOnTqNormalUsage test.
   }
diff --git a/video/picture_id_tests.cc b/video/picture_id_tests.cc
index 073a560..84d0e81 100644
--- a/video/picture_id_tests.cc
+++ b/video/picture_id_tests.cc
@@ -409,7 +409,7 @@
   InternalEncoderFactory internal_encoder_factory;
   test::FunctionVideoEncoderFactory encoder_factory(
       [&internal_encoder_factory]() {
-        return rtc::MakeUnique<SimulcastEncoderAdapter>(
+        return absl::make_unique<SimulcastEncoderAdapter>(
             &internal_encoder_factory, SdpVideoFormat("VP8"));
       });
   SetupEncoder(&encoder_factory, "VP8");
@@ -420,7 +420,7 @@
   InternalEncoderFactory internal_encoder_factory;
   test::FunctionVideoEncoderFactory encoder_factory(
       [&internal_encoder_factory]() {
-        return rtc::MakeUnique<SimulcastEncoderAdapter>(
+        return absl::make_unique<SimulcastEncoderAdapter>(
             &internal_encoder_factory, SdpVideoFormat("VP8"));
       });
   SetupEncoder(&encoder_factory, "VP8");
@@ -431,7 +431,7 @@
   InternalEncoderFactory internal_encoder_factory;
   test::FunctionVideoEncoderFactory encoder_factory(
       [&internal_encoder_factory]() {
-        return rtc::MakeUnique<SimulcastEncoderAdapter>(
+        return absl::make_unique<SimulcastEncoderAdapter>(
             &internal_encoder_factory, SdpVideoFormat("VP8"));
       });
   // Make sure that the picture id is not reset if the stream count goes
diff --git a/video/rtp_video_stream_receiver_unittest.cc b/video/rtp_video_stream_receiver_unittest.cc
index b6d049e..abc00eb 100644
--- a/video/rtp_video_stream_receiver_unittest.cc
+++ b/video/rtp_video_stream_receiver_unittest.cc
@@ -11,6 +11,7 @@
 #include "test/gmock.h"
 #include "test/gtest.h"
 
+#include "absl/memory/memory.h"
 #include "common_video/h264/h264_common.h"
 #include "media/base/mediaconstants.h"
 #include "modules/pacing/packet_router.h"
@@ -22,7 +23,6 @@
 #include "modules/video_coding/rtp_frame_reference_finder.h"
 #include "rtc_base/bytebuffer.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/field_trial_default.h"
 #include "test/field_trial.h"
@@ -102,7 +102,7 @@
 std::unique_ptr<RtpPacketReceived> CreateRtpPacketReceived(
     uint32_t ssrc = kSsrc,
     uint16_t sequence_number = kSequenceNumber) {
-  auto packet = rtc::MakeUnique<RtpPacketReceived>();
+  auto packet = absl::make_unique<RtpPacketReceived>();
   packet->SetSsrc(ssrc);
   packet->SetSequenceNumber(sequence_number);
   return packet;
@@ -125,8 +125,8 @@
 
   void SetUp() {
     rtp_receive_statistics_ =
-        rtc::WrapUnique(ReceiveStatistics::Create(Clock::GetRealTimeClock()));
-    rtp_video_stream_receiver_ = rtc::MakeUnique<RtpVideoStreamReceiver>(
+        absl::WrapUnique(ReceiveStatistics::Create(Clock::GetRealTimeClock()));
+    rtp_video_stream_receiver_ = absl::make_unique<RtpVideoStreamReceiver>(
         &mock_transport_, nullptr, &packet_router_, &config_,
         rtp_receive_statistics_.get(), nullptr, process_thread_.get(),
         &mock_nack_sender_, &mock_key_frame_request_sender_,
diff --git a/video/screenshare_loopback.cc b/video/screenshare_loopback.cc
index 19106d3..328ed90 100644
--- a/video/screenshare_loopback.cc
+++ b/video/screenshare_loopback.cc
@@ -333,7 +333,7 @@
       flags::SelectedStream(), flags::NumSpatialLayers(), flags::SelectedSL(),
       flags::InterLayerPred(), SL_descriptors);
 
-  auto fixture = rtc::MakeUnique<VideoQualityTest>(nullptr);
+  auto fixture = absl::make_unique<VideoQualityTest>(nullptr);
   if (flags::DurationSecs()) {
     fixture->RunWithAnalyzer(params);
   } else {
diff --git a/video/sv_loopback.cc b/video/sv_loopback.cc
index 9c33610..cb77f70 100644
--- a/video/sv_loopback.cc
+++ b/video/sv_loopback.cc
@@ -578,7 +578,7 @@
       flags::VideoSelectedStream(), flags::VideoNumSpatialLayers(),
       flags::VideoSelectedSL(), flags::VideoInterLayerPred(), SL_descriptors);
 
-  auto fixture = rtc::MakeUnique<VideoQualityTest>(nullptr);
+  auto fixture = absl::make_unique<VideoQualityTest>(nullptr);
   if (flags::DurationSecs()) {
     fixture->RunWithAnalyzer(params);
   } else {
diff --git a/video/video_loopback.cc b/video/video_loopback.cc
index 2f6d66d..089c4db 100644
--- a/video/video_loopback.cc
+++ b/video/video_loopback.cc
@@ -334,7 +334,7 @@
       flags::SelectedStream(), flags::NumSpatialLayers(), flags::SelectedSL(),
       flags::InterLayerPred(), SL_descriptors);
 
-  auto fixture = rtc::MakeUnique<VideoQualityTest>(nullptr);
+  auto fixture = absl::make_unique<VideoQualityTest>(nullptr);
   if (flags::DurationSecs()) {
     fixture->RunWithAnalyzer(params);
   } else {
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index ba0e23b..756fe33 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1078,10 +1078,10 @@
 VideoQualityTest::TestVideoEncoderFactory::CreateVideoEncoder(
     const SdpVideoFormat& format) {
   if (format.name == "VP8") {
-    return rtc::MakeUnique<VP8EncoderSimulcastProxy>(&internal_encoder_factory_,
-                                                     format);
+    return absl::make_unique<VP8EncoderSimulcastProxy>(
+        &internal_encoder_factory_, format);
   } else if (format.name == "multiplex") {
-    return rtc::MakeUnique<MultiplexEncoderAdapter>(
+    return absl::make_unique<MultiplexEncoderAdapter>(
         &internal_encoder_factory_, SdpVideoFormat(cricket::kVp9CodecName));
   } else {
     return internal_encoder_factory_.CreateVideoEncoder(format);
@@ -1837,7 +1837,7 @@
 
 std::unique_ptr<test::LayerFilteringTransport>
 VideoQualityTest::CreateSendTransport() {
-  return rtc::MakeUnique<test::LayerFilteringTransport>(
+  return absl::make_unique<test::LayerFilteringTransport>(
       &task_queue_, params_.pipe, sender_call_.get(), kPayloadTypeVP8,
       kPayloadTypeVP9, params_.video[0].selected_tl, params_.ss[0].selected_sl,
       payload_type_map_, kVideoSendSsrcs[0],
@@ -1847,7 +1847,7 @@
 
 std::unique_ptr<test::DirectTransport>
 VideoQualityTest::CreateReceiveTransport() {
-  return rtc::MakeUnique<test::DirectTransport>(
+  return absl::make_unique<test::DirectTransport>(
       &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_);
 }
 
@@ -1929,11 +1929,11 @@
     send_event_log_ = RtcEventLog::Create(RtcEventLog::EncodingType::Legacy);
     recv_event_log_ = RtcEventLog::Create(RtcEventLog::EncodingType::Legacy);
     std::unique_ptr<RtcEventLogOutputFile> send_output(
-        rtc::MakeUnique<RtcEventLogOutputFile>(
+        absl::make_unique<RtcEventLogOutputFile>(
             params.logging.rtc_event_log_name + "_send",
             RtcEventLog::kUnlimitedOutput));
     std::unique_ptr<RtcEventLogOutputFile> recv_output(
-        rtc::MakeUnique<RtcEventLogOutputFile>(
+        absl::make_unique<RtcEventLogOutputFile>(
             params.logging.rtc_event_log_name + "_recv",
             RtcEventLog::kUnlimitedOutput));
     bool event_log_started =
@@ -1963,7 +1963,7 @@
   if (graph_title.empty())
     graph_title = VideoQualityTest::GenerateGraphTitle();
   bool is_quick_test_enabled = field_trial::IsEnabled("WebRTC-QuickPerfTest");
-  analyzer = rtc::MakeUnique<VideoAnalyzer>(
+  analyzer = absl::make_unique<VideoAnalyzer>(
       send_transport.get(), params_.analyzer.test_label,
       params_.analyzer.avg_psnr_threshold, params_.analyzer.avg_ssim_threshold,
       is_quick_test_enabled
diff --git a/video/video_receive_stream.cc b/video/video_receive_stream.cc
index 3c10c4e..bca6d94 100644
--- a/video/video_receive_stream.cc
+++ b/video/video_receive_stream.cc
@@ -16,6 +16,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/memory/memory.h"
 #include "absl/types/optional.h"
 #include "call/rtp_stream_receiver_controller_interface.h"
 #include "call/rtx_receive_stream.h"
@@ -34,7 +35,6 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ptr_util.h"
 #include "rtc_base/trace_event.h"
 #include "system_wrappers/include/clock.h"
 #include "system_wrappers/include/field_trial.h"
@@ -141,7 +141,7 @@
   media_receiver_ = receiver_controller->CreateReceiver(
       config_.rtp.remote_ssrc, &rtp_video_stream_receiver_);
   if (config_.rtp.rtx_ssrc) {
-    rtx_receive_stream_ = rtc::MakeUnique<RtxReceiveStream>(
+    rtx_receive_stream_ = absl::make_unique<RtxReceiveStream>(
         &rtp_video_stream_receiver_, config.rtp.rtx_associated_payload_types,
         config_.rtp.remote_ssrc, rtp_receive_statistics_.get());
     rtx_receiver_ = receiver_controller->CreateReceiver(
diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc
index bb6bcb5..4885fc3 100644
--- a/video/video_send_stream.cc
+++ b/video/video_send_stream.cc
@@ -77,10 +77,10 @@
       content_type_(encoder_config.content_type) {
   RTC_DCHECK(config_.encoder_settings.encoder_factory);
 
-  video_stream_encoder_ = rtc::MakeUnique<VideoStreamEncoder>(
+  video_stream_encoder_ = absl::make_unique<VideoStreamEncoder>(
       num_cpu_cores, &stats_proxy_, config_.encoder_settings,
       config_.pre_encode_callback,
-      rtc::MakeUnique<OveruseFrameDetector>(&stats_proxy_));
+      absl::make_unique<OveruseFrameDetector>(&stats_proxy_));
   // TODO(srte): Initialization should not be done posted on a task queue.
   // Note that the posted task must not outlive this scope since the closure
   // references local variables.
diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc
index d8798b7..462f243 100644
--- a/video/video_send_stream_impl.cc
+++ b/video/video_send_stream_impl.cc
@@ -133,7 +133,7 @@
   }
 
   RTC_DCHECK_EQ(1U, config.rtp.flexfec.protected_media_ssrcs.size());
-  return rtc::MakeUnique<FlexfecSender>(
+  return absl::make_unique<FlexfecSender>(
       config.rtp.flexfec.payload_type, config.rtp.flexfec.ssrc,
       config.rtp.flexfec.protected_media_ssrcs[0], config.rtp.mid,
       config.rtp.extensions, RTPSender::FecExtensionSizes(), rtp_state,
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index b8f6d95..b50dfec 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -76,13 +76,13 @@
         .WillOnce(Return(123000));
     std::map<uint32_t, RtpState> suspended_ssrcs;
     std::map<uint32_t, RtpPayloadState> suspended_payload_states;
-    return rtc::MakeUnique<VideoSendStreamImpl>(
+    return absl::make_unique<VideoSendStreamImpl>(
         &stats_proxy_, &test_queue_, &call_stats_, &transport_controller_,
         &bitrate_allocator_, &send_delay_stats_, &video_stream_encoder_,
         &event_log_, &config_, initial_encoder_max_bitrate,
         initial_encoder_bitrate_priority, suspended_ssrcs,
         suspended_payload_states, content_type,
-        rtc::MakeUnique<FecControllerDefault>(&clock_),
+        absl::make_unique<FecControllerDefault>(&clock_),
         &retransmission_limiter_);
   }
 
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index c6122a7..89c048f 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -204,7 +204,7 @@
    public:
     TransmissionTimeOffsetObserver()
         : SendTest(kDefaultTimeoutMs), encoder_factory_([]() {
-            return rtc::MakeUnique<test::DelayedEncoder>(
+            return absl::make_unique<test::DelayedEncoder>(
                 Clock::GetRealTimeClock(), kEncodeDelayMs);
           }) {
       EXPECT_TRUE(parser_->RegisterRtpHeaderExtension(
@@ -251,7 +251,7 @@
    public:
     TransportWideSequenceNumberObserver()
         : SendTest(kDefaultTimeoutMs), encoder_factory_([]() {
-            return rtc::MakeUnique<test::FakeEncoder>(
+            return absl::make_unique<test::FakeEncoder>(
                 Clock::GetRealTimeClock());
           }) {
       EXPECT_TRUE(parser_->RegisterRtpHeaderExtension(
@@ -612,7 +612,7 @@
 // that the received state is actually decodable.
 TEST_F(VideoSendStreamTest, DoesNotUtilizeUlpfecForH264WithNackEnabled) {
   test::FunctionVideoEncoderFactory encoder_factory([]() {
-    return rtc::MakeUnique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
+    return absl::make_unique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
   });
   UlpfecObserver test(false, true, true, false, "H264", &encoder_factory);
   RunBaseTest(&test);
@@ -621,7 +621,7 @@
 // Without retransmissions FEC for H264 is fine.
 TEST_F(VideoSendStreamTest, DoesUtilizeUlpfecForH264WithoutNackEnabled) {
   test::FunctionVideoEncoderFactory encoder_factory([]() {
-    return rtc::MakeUnique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
+    return absl::make_unique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
   });
   UlpfecObserver test(false, false, true, true, "H264", &encoder_factory);
   RunBaseTest(&test);
@@ -647,7 +647,7 @@
 
 TEST_F(VideoSendStreamTest, SupportsUlpfecWithMultithreadedH264) {
   test::FunctionVideoEncoderFactory encoder_factory([]() {
-    return rtc::MakeUnique<test::MultithreadedFakeH264Encoder>(
+    return absl::make_unique<test::MultithreadedFakeH264Encoder>(
         Clock::GetRealTimeClock());
   });
   UlpfecObserver test(false, false, true, true, "H264", &encoder_factory);
@@ -801,7 +801,7 @@
 
 TEST_F(VideoSendStreamTest, SupportsFlexfecH264) {
   test::FunctionVideoEncoderFactory encoder_factory([]() {
-    return rtc::MakeUnique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
+    return absl::make_unique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
   });
   FlexfecObserver test(false, false, "H264", &encoder_factory, 1);
   RunBaseTest(&test);
@@ -809,7 +809,7 @@
 
 TEST_F(VideoSendStreamTest, SupportsFlexfecWithNackH264) {
   test::FunctionVideoEncoderFactory encoder_factory([]() {
-    return rtc::MakeUnique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
+    return absl::make_unique<test::FakeH264Encoder>(Clock::GetRealTimeClock());
   });
   FlexfecObserver test(false, true, "H264", &encoder_factory, 1);
   RunBaseTest(&test);
@@ -817,7 +817,7 @@
 
 TEST_F(VideoSendStreamTest, SupportsFlexfecWithMultithreadedH264) {
   test::FunctionVideoEncoderFactory encoder_factory([]() {
-    return rtc::MakeUnique<test::MultithreadedFakeH264Encoder>(
+    return absl::make_unique<test::MultithreadedFakeH264Encoder>(
         Clock::GetRealTimeClock());
   });
 
diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc
index 19e75a8..5313d6a 100644
--- a/video/video_stream_decoder_impl.cc
+++ b/video/video_stream_decoder_impl.cc
@@ -10,9 +10,9 @@
 
 #include "video/video_stream_decoder_impl.h"
 
+#include "absl/memory/memory.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/mod_ops.h"
-#include "rtc_base/ptr_util.h"
 
 namespace webrtc {
 
@@ -63,7 +63,7 @@
     };
 
     bookkeeping_queue_.PostTask(
-        rtc::MakeUnique<OnFrameTask>(std::move(frame), this));
+        absl::make_unique<OnFrameTask>(std::move(frame), this));
     return;
   }
 
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index 3bf45ca..48b823a 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -611,9 +611,10 @@
         experimental_thresholds = QualityScalingExperiment::GetQpThresholds(
             encoder_config_.codec_type);
       }
-      // Since the interface is non-public, MakeUnique can't do this upcast.
+      // Since the interface is non-public, absl::make_unique can't do this
+      // upcast.
       AdaptationObserverInterface* observer = this;
-      quality_scaler_ = rtc::MakeUnique<QualityScaler>(
+      quality_scaler_ = absl::make_unique<QualityScaler>(
           observer, experimental_thresholds ? *experimental_thresholds
                                             : *(scaling_settings.thresholds));
     }