Replace more instances of rtc::RefCountedObject with make_ref_counted.

This is essentially replacing `new rtc::RefCountedObject` with
`rtc::make_ref_counted` in many files. In a couple of places I
made minor tweaks to make things compile such as adding parenthesis
when they were missing.

Bug: webrtc:12701
Change-Id: I3828dbf3ee0eb0232f3a47067474484ac2f4aed2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215973
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33852}
diff --git a/modules/audio_coding/neteq/decoder_database_unittest.cc b/modules/audio_coding/neteq/decoder_database_unittest.cc
index c1b92b5..33bee8d 100644
--- a/modules/audio_coding/neteq/decoder_database_unittest.cc
+++ b/modules/audio_coding/neteq/decoder_database_unittest.cc
@@ -27,15 +27,14 @@
 namespace webrtc {
 
 TEST(DecoderDatabase, CreateAndDestroy) {
-  DecoderDatabase db(new rtc::RefCountedObject<MockAudioDecoderFactory>,
+  DecoderDatabase db(rtc::make_ref_counted<MockAudioDecoderFactory>(),
                      absl::nullopt);
   EXPECT_EQ(0, db.Size());
   EXPECT_TRUE(db.Empty());
 }
 
 TEST(DecoderDatabase, InsertAndRemove) {
-  rtc::scoped_refptr<MockAudioDecoderFactory> factory(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>);
+  auto factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
   DecoderDatabase db(factory, absl::nullopt);
   const uint8_t kPayloadType = 0;
   const std::string kCodecName = "Robert\'); DROP TABLE Students;";
@@ -50,8 +49,7 @@
 }
 
 TEST(DecoderDatabase, InsertAndRemoveAll) {
-  rtc::scoped_refptr<MockAudioDecoderFactory> factory(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>);
+  auto factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
   DecoderDatabase db(factory, absl::nullopt);
   const std::string kCodecName1 = "Robert\'); DROP TABLE Students;";
   const std::string kCodecName2 = "https://xkcd.com/327/";
@@ -67,8 +65,7 @@
 }
 
 TEST(DecoderDatabase, GetDecoderInfo) {
-  rtc::scoped_refptr<MockAudioDecoderFactory> factory(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>);
+  auto factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
   auto* decoder = new MockAudioDecoder;
   EXPECT_CALL(*factory, MakeAudioDecoderMock(_, _, _))
       .WillOnce(Invoke([decoder](const SdpAudioFormat& format,
@@ -103,8 +100,7 @@
 }
 
 TEST(DecoderDatabase, TypeTests) {
-  rtc::scoped_refptr<MockAudioDecoderFactory> factory(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>);
+  auto factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
   DecoderDatabase db(factory, absl::nullopt);
   const uint8_t kPayloadTypePcmU = 0;
   const uint8_t kPayloadTypeCng = 13;
@@ -140,8 +136,7 @@
 
 TEST(DecoderDatabase, CheckPayloadTypes) {
   constexpr int kNumPayloads = 10;
-  rtc::scoped_refptr<MockAudioDecoderFactory> factory(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>);
+  auto factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
   DecoderDatabase db(factory, absl::nullopt);
   // Load a number of payloads into the database. Payload types are 0, 1, ...,
   // while the decoder type is the same for all payload types (this does not
diff --git a/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc b/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
index cb0a3d8..2b4ae7e 100644
--- a/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_decoder_plc_unittest.cc
@@ -208,7 +208,7 @@
 
   NetEqTest neteq_test(
       config, /*decoder_factory=*/
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&dec),
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&dec),
       /*codecs=*/decoders, /*text_log=*/nullptr, /*neteq_factory=*/nullptr,
       /*input=*/std::move(lossy_input), std::move(output), callbacks);
   EXPECT_LE(kRunTimeMs, neteq_test.Run());
diff --git a/modules/audio_coding/neteq/neteq_impl_unittest.cc b/modules/audio_coding/neteq/neteq_impl_unittest.cc
index a073d82..c2a2bee 100644
--- a/modules/audio_coding/neteq/neteq_impl_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_impl_unittest.cc
@@ -303,8 +303,7 @@
   fake_packet.sequence_number = kFirstSequenceNumber;
   fake_packet.timestamp = kFirstTimestamp;
 
-  rtc::scoped_refptr<MockAudioDecoderFactory> mock_decoder_factory(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>);
+  auto mock_decoder_factory = rtc::make_ref_counted<MockAudioDecoderFactory>();
   EXPECT_CALL(*mock_decoder_factory, MakeAudioDecoderMock(_, _, _))
       .WillOnce(Invoke([&](const SdpAudioFormat& format,
                            absl::optional<AudioCodecPairId> codec_pair_id,
@@ -487,8 +486,8 @@
     int16_t next_value_;
   } decoder_;
 
-  rtc::scoped_refptr<AudioDecoderFactory> decoder_factory =
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&decoder_);
+  auto decoder_factory =
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&decoder_);
 
   UseNoMocks();
   CreateInstance(decoder_factory);
@@ -555,7 +554,7 @@
   MockAudioDecoder mock_decoder;
 
   CreateInstance(
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&mock_decoder));
 
   const uint8_t kPayloadType = 17;   // Just an arbitrary number.
   const int kSampleRateHz = 8000;
@@ -927,7 +926,7 @@
   // Create a mock decoder object.
   MockAudioDecoder mock_decoder;
   CreateInstance(
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&mock_decoder));
 
   const uint8_t kPayloadType = 17;   // Just an arbitrary number.
   const int kSampleRateKhz = 48;
@@ -1066,7 +1065,7 @@
   ::testing::NiceMock<MockAudioDecoder> decoder;
 
   CreateInstance(
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&decoder));
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&decoder));
   static const size_t kNetEqMaxFrameSize = 5760;  // 120 ms @ 48 kHz.
   static const size_t kChannels = 2;
 
@@ -1193,7 +1192,7 @@
   MockAudioDecoder mock_decoder;
 
   CreateInstance(
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&mock_decoder));
 
   const uint8_t kPayloadType = 17;   // Just an arbitrary number.
   const int kSampleRateHz = 8000;
@@ -1252,7 +1251,7 @@
   MockAudioDecoder mock_decoder;
 
   CreateInstance(
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&mock_decoder));
 
   const uint8_t kPayloadType = 17;   // Just an arbitrary number.
   const int kSampleRateHz = 8000;
@@ -1364,7 +1363,7 @@
   // Create a mock decoder object.
   MockAudioDecoder mock_decoder;
   CreateInstance(
-      new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
+      rtc::make_ref_counted<test::AudioDecoderProxyFactory>(&mock_decoder));
 
   const uint8_t kPayloadType = 17;   // Just an arbitrary number.
   const int kSampleRateHz = 8000;
@@ -1658,14 +1657,13 @@
 
   void Register120msCodec(AudioDecoder::SpeechType speech_type) {
     const uint32_t sampling_freq = kSamplingFreq_;
-    decoder_factory_ =
-        new rtc::RefCountedObject<test::FunctionAudioDecoderFactory>(
-            [sampling_freq, speech_type]() {
-              std::unique_ptr<AudioDecoder> decoder =
-                  std::make_unique<Decoder120ms>(sampling_freq, speech_type);
-              RTC_CHECK_EQ(2, decoder->Channels());
-              return decoder;
-            });
+    decoder_factory_ = rtc::make_ref_counted<test::FunctionAudioDecoderFactory>(
+        [sampling_freq, speech_type]() {
+          std::unique_ptr<AudioDecoder> decoder =
+              std::make_unique<Decoder120ms>(sampling_freq, speech_type);
+          RTC_CHECK_EQ(2, decoder->Channels());
+          return decoder;
+        });
   }
 
   rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
diff --git a/modules/audio_coding/neteq/neteq_network_stats_unittest.cc b/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
index 5f15bab..8f72734 100644
--- a/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
+++ b/modules/audio_coding/neteq/neteq_network_stats_unittest.cc
@@ -162,7 +162,7 @@
   NetEqNetworkStatsTest(const SdpAudioFormat& format, MockAudioDecoder* decoder)
       : decoder_(decoder),
         decoder_factory_(
-            new rtc::RefCountedObject<AudioDecoderProxyFactory>(decoder)),
+            rtc::make_ref_counted<AudioDecoderProxyFactory>(decoder)),
         samples_per_ms_(format.clockrate_hz / 1000),
         frame_size_samples_(kFrameSizeMs * samples_per_ms_),
         rtp_generator_(new RtpGenerator(samples_per_ms_)),
diff --git a/modules/audio_coding/neteq/red_payload_splitter_unittest.cc b/modules/audio_coding/neteq/red_payload_splitter_unittest.cc
index 5956971..1cf6167 100644
--- a/modules/audio_coding/neteq/red_payload_splitter_unittest.cc
+++ b/modules/audio_coding/neteq/red_payload_splitter_unittest.cc
@@ -298,7 +298,7 @@
   // easier to just register the payload types and let the actual implementation
   // do its job.
   DecoderDatabase decoder_database(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>, absl::nullopt);
+      rtc::make_ref_counted<MockAudioDecoderFactory>(), absl::nullopt);
   decoder_database.RegisterPayload(0, SdpAudioFormat("cn", 8000, 1));
   decoder_database.RegisterPayload(1, SdpAudioFormat("pcmu", 8000, 1));
   decoder_database.RegisterPayload(2,
@@ -333,7 +333,7 @@
   // easier to just register the payload types and let the actual implementation
   // do its job.
   DecoderDatabase decoder_database(
-      new rtc::RefCountedObject<MockAudioDecoderFactory>, absl::nullopt);
+      rtc::make_ref_counted<MockAudioDecoderFactory>(), absl::nullopt);
   decoder_database.RegisterPayload(kRedPayloadType,
                                    SdpAudioFormat("red", 8000, 1));
 
diff --git a/modules/audio_coding/neteq/tools/neteq_test_factory.cc b/modules/audio_coding/neteq/tools/neteq_test_factory.cc
index f8ec36b..1a0ea15 100644
--- a/modules/audio_coding/neteq/tools/neteq_test_factory.cc
+++ b/modules/audio_coding/neteq/tools/neteq_test_factory.cc
@@ -285,7 +285,7 @@
 
     // Note that capture-by-copy implies that the lambda captures the value of
     // decoder_factory before it's reassigned on the left-hand side.
-    decoder_factory = new rtc::RefCountedObject<FunctionAudioDecoderFactory>(
+    decoder_factory = rtc::make_ref_counted<FunctionAudioDecoderFactory>(
         [decoder_factory, config](
             const SdpAudioFormat& format,
             absl::optional<AudioCodecPairId> codec_pair_id) {
diff --git a/modules/audio_device/audio_device_data_observer.cc b/modules/audio_device/audio_device_data_observer.cc
index 89265a2..be78fd1 100644
--- a/modules/audio_device/audio_device_data_observer.cc
+++ b/modules/audio_device/audio_device_data_observer.cc
@@ -301,9 +301,8 @@
 rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
     rtc::scoped_refptr<AudioDeviceModule> impl,
     std::unique_ptr<AudioDeviceDataObserver> observer) {
-  rtc::scoped_refptr<ADMWrapper> audio_device(
-      new rtc::RefCountedObject<ADMWrapper>(impl, observer.get(),
-                                            std::move(observer)));
+  auto audio_device = rtc::make_ref_counted<ADMWrapper>(impl, observer.get(),
+                                                        std::move(observer));
 
   if (!audio_device->IsValid()) {
     return nullptr;
@@ -315,8 +314,8 @@
 rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceWithDataObserver(
     rtc::scoped_refptr<AudioDeviceModule> impl,
     AudioDeviceDataObserver* legacy_observer) {
-  rtc::scoped_refptr<ADMWrapper> audio_device(
-      new rtc::RefCountedObject<ADMWrapper>(impl, legacy_observer, nullptr));
+  auto audio_device =
+      rtc::make_ref_counted<ADMWrapper>(impl, legacy_observer, nullptr);
 
   if (!audio_device->IsValid()) {
     return nullptr;
@@ -329,10 +328,8 @@
     AudioDeviceModule::AudioLayer audio_layer,
     TaskQueueFactory* task_queue_factory,
     std::unique_ptr<AudioDeviceDataObserver> observer) {
-  rtc::scoped_refptr<ADMWrapper> audio_device(
-      new rtc::RefCountedObject<ADMWrapper>(audio_layer, task_queue_factory,
-                                            observer.get(),
-                                            std::move(observer)));
+  auto audio_device = rtc::make_ref_counted<ADMWrapper>(
+      audio_layer, task_queue_factory, observer.get(), std::move(observer));
 
   if (!audio_device->IsValid()) {
     return nullptr;
@@ -345,9 +342,8 @@
     AudioDeviceModule::AudioLayer audio_layer,
     TaskQueueFactory* task_queue_factory,
     AudioDeviceDataObserver* legacy_observer) {
-  rtc::scoped_refptr<ADMWrapper> audio_device(
-      new rtc::RefCountedObject<ADMWrapper>(audio_layer, task_queue_factory,
-                                            legacy_observer, nullptr));
+  auto audio_device = rtc::make_ref_counted<ADMWrapper>(
+      audio_layer, task_queue_factory, legacy_observer, nullptr);
 
   if (!audio_device->IsValid()) {
     return nullptr;
diff --git a/modules/audio_device/audio_device_impl.cc b/modules/audio_device/audio_device_impl.cc
index 0e8bd28..84460ff 100644
--- a/modules/audio_device/audio_device_impl.cc
+++ b/modules/audio_device/audio_device_impl.cc
@@ -92,27 +92,26 @@
   }
 
   // Create the generic reference counted (platform independent) implementation.
-  rtc::scoped_refptr<AudioDeviceModuleImpl> audioDevice(
-      new rtc::RefCountedObject<AudioDeviceModuleImpl>(audio_layer,
-                                                       task_queue_factory));
+  auto audio_device = rtc::make_ref_counted<AudioDeviceModuleImpl>(
+      audio_layer, task_queue_factory);
 
   // Ensure that the current platform is supported.
-  if (audioDevice->CheckPlatform() == -1) {
+  if (audio_device->CheckPlatform() == -1) {
     return nullptr;
   }
 
   // Create the platform-dependent implementation.
-  if (audioDevice->CreatePlatformSpecificObjects() == -1) {
+  if (audio_device->CreatePlatformSpecificObjects() == -1) {
     return nullptr;
   }
 
   // Ensure that the generic audio buffer can communicate with the platform
   // specific parts.
-  if (audioDevice->AttachAudioBuffer() == -1) {
+  if (audio_device->AttachAudioBuffer() == -1) {
     return nullptr;
   }
 
-  return audioDevice;
+  return audio_device;
 }
 
 AudioDeviceModuleImpl::AudioDeviceModuleImpl(
diff --git a/modules/audio_device/include/mock_audio_device.h b/modules/audio_device/include/mock_audio_device.h
index 0ca19de..8483aa3 100644
--- a/modules/audio_device/include/mock_audio_device.h
+++ b/modules/audio_device/include/mock_audio_device.h
@@ -23,11 +23,10 @@
 class MockAudioDeviceModule : public AudioDeviceModule {
  public:
   static rtc::scoped_refptr<MockAudioDeviceModule> CreateNice() {
-    return new rtc::RefCountedObject<
-        ::testing::NiceMock<MockAudioDeviceModule>>();
+    return rtc::make_ref_counted<::testing::NiceMock<MockAudioDeviceModule>>();
   }
   static rtc::scoped_refptr<MockAudioDeviceModule> CreateStrict() {
-    return new rtc::RefCountedObject<
+    return rtc::make_ref_counted<
         ::testing::StrictMock<MockAudioDeviceModule>>();
   }
 
diff --git a/modules/audio_device/include/test_audio_device.cc b/modules/audio_device/include/test_audio_device.cc
index 46bf216..8351e8a 100644
--- a/modules/audio_device/include/test_audio_device.cc
+++ b/modules/audio_device/include/test_audio_device.cc
@@ -447,7 +447,7 @@
     std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
     std::unique_ptr<TestAudioDeviceModule::Renderer> renderer,
     float speed) {
-  return new rtc::RefCountedObject<TestAudioDeviceModuleImpl>(
+  return rtc::make_ref_counted<TestAudioDeviceModuleImpl>(
       task_queue_factory, std::move(capturer), std::move(renderer), speed);
 }
 
diff --git a/modules/audio_device/win/audio_device_module_win.cc b/modules/audio_device/win/audio_device_module_win.cc
index 9c10e71..8cc4b7f 100644
--- a/modules/audio_device/win/audio_device_module_win.cc
+++ b/modules/audio_device/win/audio_device_module_win.cc
@@ -514,7 +514,7 @@
     std::unique_ptr<AudioOutput> audio_output,
     TaskQueueFactory* task_queue_factory) {
   RTC_DLOG(INFO) << __FUNCTION__;
-  return new rtc::RefCountedObject<WindowsAudioDeviceModule>(
+  return rtc::make_ref_counted<WindowsAudioDeviceModule>(
       std::move(audio_input), std::move(audio_output), task_queue_factory);
 }
 
diff --git a/modules/audio_mixer/audio_mixer_impl.cc b/modules/audio_mixer/audio_mixer_impl.cc
index 04a8bcf..925cee5 100644
--- a/modules/audio_mixer/audio_mixer_impl.cc
+++ b/modules/audio_mixer/audio_mixer_impl.cc
@@ -147,9 +147,8 @@
 rtc::scoped_refptr<AudioMixerImpl> AudioMixerImpl::Create(
     std::unique_ptr<OutputRateCalculator> output_rate_calculator,
     bool use_limiter) {
-  return rtc::scoped_refptr<AudioMixerImpl>(
-      new rtc::RefCountedObject<AudioMixerImpl>(
-          std::move(output_rate_calculator), use_limiter));
+  return rtc::make_ref_counted<AudioMixerImpl>(
+      std::move(output_rate_calculator), use_limiter);
 }
 
 void AudioMixerImpl::Mix(size_t number_of_channels,
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index 12646fd..842fd88 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -290,8 +290,7 @@
 
   // If no echo detector is injected, use the ResidualEchoDetector.
   if (!submodules_.echo_detector) {
-    submodules_.echo_detector =
-        new rtc::RefCountedObject<ResidualEchoDetector>();
+    submodules_.echo_detector = rtc::make_ref_counted<ResidualEchoDetector>();
   }
 
 #if !(defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS))
diff --git a/modules/audio_processing/audio_processing_impl_unittest.cc b/modules/audio_processing/audio_processing_impl_unittest.cc
index ef18303..ca8b8b4 100644
--- a/modules/audio_processing/audio_processing_impl_unittest.cc
+++ b/modules/audio_processing/audio_processing_impl_unittest.cc
@@ -544,8 +544,7 @@
 TEST(AudioProcessingImplTest, RenderPreProcessorBeforeEchoDetector) {
   // Make sure that signal changes caused by a render pre-processing sub-module
   // take place before any echo detector analysis.
-  rtc::scoped_refptr<TestEchoDetector> test_echo_detector(
-      new rtc::RefCountedObject<TestEchoDetector>());
+  auto test_echo_detector = rtc::make_ref_counted<TestEchoDetector>();
   std::unique_ptr<CustomProcessing> test_render_pre_processor(
       new TestRenderPreProcessor());
   // Create APM injecting the test echo detector and render pre-processor.
@@ -605,8 +604,7 @@
 // config should be bit-exact with running APM with said submodules disabled.
 // This mainly tests that SetCreateOptionalSubmodulesForTesting has an effect.
 TEST(ApmWithSubmodulesExcludedTest, BitexactWithDisabledModules) {
-  rtc::scoped_refptr<AudioProcessingImpl> apm =
-      new rtc::RefCountedObject<AudioProcessingImpl>(webrtc::Config());
+  auto apm = rtc::make_ref_counted<AudioProcessingImpl>(webrtc::Config());
   ASSERT_EQ(apm->Initialize(), AudioProcessing::kNoError);
 
   ApmSubmoduleCreationOverrides overrides;
@@ -654,8 +652,7 @@
 // Disable transient suppressor creation and run APM in ways that should trigger
 // calls to the transient suppressor API.
 TEST(ApmWithSubmodulesExcludedTest, ReinitializeTransientSuppressor) {
-  rtc::scoped_refptr<AudioProcessingImpl> apm =
-      new rtc::RefCountedObject<AudioProcessingImpl>(webrtc::Config());
+  auto apm = rtc::make_ref_counted<AudioProcessingImpl>(webrtc::Config());
   ASSERT_EQ(apm->Initialize(), kNoErr);
 
   ApmSubmoduleCreationOverrides overrides;
@@ -716,8 +713,7 @@
 // Disable transient suppressor creation and run APM in ways that should trigger
 // calls to the transient suppressor API.
 TEST(ApmWithSubmodulesExcludedTest, ToggleTransientSuppressor) {
-  rtc::scoped_refptr<AudioProcessingImpl> apm =
-      new rtc::RefCountedObject<AudioProcessingImpl>(webrtc::Config());
+  auto apm = rtc::make_ref_counted<AudioProcessingImpl>(webrtc::Config());
   ASSERT_EQ(apm->Initialize(), AudioProcessing::kNoError);
 
   ApmSubmoduleCreationOverrides overrides;
diff --git a/modules/audio_processing/residual_echo_detector_unittest.cc b/modules/audio_processing/residual_echo_detector_unittest.cc
index 6697cf0..a5f1409 100644
--- a/modules/audio_processing/residual_echo_detector_unittest.cc
+++ b/modules/audio_processing/residual_echo_detector_unittest.cc
@@ -18,8 +18,7 @@
 namespace webrtc {
 
 TEST(ResidualEchoDetectorTests, Echo) {
-  rtc::scoped_refptr<ResidualEchoDetector> echo_detector =
-      new rtc::RefCountedObject<ResidualEchoDetector>();
+  auto echo_detector = rtc::make_ref_counted<ResidualEchoDetector>();
   echo_detector->SetReliabilityForTest(1.0f);
   std::vector<float> ones(160, 1.f);
   std::vector<float> zeros(160, 0.f);
@@ -46,8 +45,7 @@
 }
 
 TEST(ResidualEchoDetectorTests, NoEcho) {
-  rtc::scoped_refptr<ResidualEchoDetector> echo_detector =
-      new rtc::RefCountedObject<ResidualEchoDetector>();
+  auto echo_detector = rtc::make_ref_counted<ResidualEchoDetector>();
   echo_detector->SetReliabilityForTest(1.0f);
   std::vector<float> ones(160, 1.f);
   std::vector<float> zeros(160, 0.f);
@@ -69,8 +67,7 @@
 }
 
 TEST(ResidualEchoDetectorTests, EchoWithRenderClockDrift) {
-  rtc::scoped_refptr<ResidualEchoDetector> echo_detector =
-      new rtc::RefCountedObject<ResidualEchoDetector>();
+  auto echo_detector = rtc::make_ref_counted<ResidualEchoDetector>();
   echo_detector->SetReliabilityForTest(1.0f);
   std::vector<float> ones(160, 1.f);
   std::vector<float> zeros(160, 0.f);
@@ -107,8 +104,7 @@
 }
 
 TEST(ResidualEchoDetectorTests, EchoWithCaptureClockDrift) {
-  rtc::scoped_refptr<ResidualEchoDetector> echo_detector =
-      new rtc::RefCountedObject<ResidualEchoDetector>();
+  auto echo_detector = rtc::make_ref_counted<ResidualEchoDetector>();
   echo_detector->SetReliabilityForTest(1.0f);
   std::vector<float> ones(160, 1.f);
   std::vector<float> zeros(160, 0.f);
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index 3b992dc..6e62077 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -169,8 +169,7 @@
       absolute_capture_time_sender_(config.clock),
       frame_transformer_delegate_(
           config.frame_transformer
-              ? new rtc::RefCountedObject<
-                    RTPSenderVideoFrameTransformerDelegate>(
+              ? rtc::make_ref_counted<RTPSenderVideoFrameTransformerDelegate>(
                     this,
                     config.frame_transformer,
                     rtp_sender_->SSRC(),
diff --git a/modules/video_capture/linux/video_capture_linux.cc b/modules/video_capture/linux/video_capture_linux.cc
index bffb67c..49237cd 100644
--- a/modules/video_capture/linux/video_capture_linux.cc
+++ b/modules/video_capture/linux/video_capture_linux.cc
@@ -34,8 +34,7 @@
 namespace videocapturemodule {
 rtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create(
     const char* deviceUniqueId) {
-  rtc::scoped_refptr<VideoCaptureModuleV4L2> implementation(
-      new rtc::RefCountedObject<VideoCaptureModuleV4L2>());
+  auto implementation = rtc::make_ref_counted<VideoCaptureModuleV4L2>();
 
   if (implementation->Init(deviceUniqueId) != 0)
     return nullptr;
diff --git a/modules/video_capture/windows/video_capture_factory_windows.cc b/modules/video_capture/windows/video_capture_factory_windows.cc
index ea9d31a..34cc982 100644
--- a/modules/video_capture/windows/video_capture_factory_windows.cc
+++ b/modules/video_capture/windows/video_capture_factory_windows.cc
@@ -27,8 +27,7 @@
     return nullptr;
 
   // TODO(tommi): Use Media Foundation implementation for Vista and up.
-  rtc::scoped_refptr<VideoCaptureDS> capture(
-      new rtc::RefCountedObject<VideoCaptureDS>());
+  auto capture = rtc::make_ref_counted<VideoCaptureDS>();
   if (capture->Init(device_id) != 0) {
     return nullptr;
   }
diff --git a/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc b/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc
index 8d23c6d..2332fcd 100644
--- a/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc
+++ b/modules/video_coding/codecs/multiplex/multiplex_decoder_adapter.cc
@@ -248,9 +248,8 @@
         [yuv_buffer, alpha_buffer] {});
   }
   if (supports_augmenting_data_) {
-    merged_buffer = rtc::scoped_refptr<webrtc::AugmentedVideoFrameBuffer>(
-        new rtc::RefCountedObject<AugmentedVideoFrameBuffer>(
-            merged_buffer, std::move(augmenting_data), augmenting_data_length));
+    merged_buffer = rtc::make_ref_counted<AugmentedVideoFrameBuffer>(
+        merged_buffer, std::move(augmenting_data), augmenting_data_length);
   }
 
   VideoFrame merged_image = VideoFrame::Builder()
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 2e7b0cb..7ecb24a 100644
--- a/modules/video_coding/codecs/multiplex/test/multiplex_adapter_unittest.cc
+++ b/modules/video_coding/codecs/multiplex/test/multiplex_adapter_unittest.cc
@@ -90,9 +90,9 @@
     for (int i = 0; i < 16; i++) {
       data[i] = i;
     }
-    rtc::scoped_refptr<AugmentedVideoFrameBuffer> augmented_video_frame_buffer =
-        new rtc::RefCountedObject<AugmentedVideoFrameBuffer>(
-            video_buffer, std::move(data), 16);
+    auto augmented_video_frame_buffer =
+        rtc::make_ref_counted<AugmentedVideoFrameBuffer>(video_buffer,
+                                                         std::move(data), 16);
     return std::make_unique<VideoFrame>(
         VideoFrame::Builder()
             .set_video_frame_buffer(augmented_video_frame_buffer)
diff --git a/modules/video_coding/video_codec_initializer_unittest.cc b/modules/video_coding/video_codec_initializer_unittest.cc
index 1ea145e..f7fde8d 100644
--- a/modules/video_coding/video_codec_initializer_unittest.cc
+++ b/modules/video_coding/video_codec_initializer_unittest.cc
@@ -74,13 +74,13 @@
       config_.number_of_streams = num_spatial_streams;
       VideoCodecVP8 vp8_settings = VideoEncoder::GetDefaultVp8Settings();
       vp8_settings.numberOfTemporalLayers = num_temporal_streams;
-      config_.encoder_specific_settings = new rtc::RefCountedObject<
+      config_.encoder_specific_settings = rtc::make_ref_counted<
           webrtc::VideoEncoderConfig::Vp8EncoderSpecificSettings>(vp8_settings);
     } else if (type == VideoCodecType::kVideoCodecVP9) {
       VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
       vp9_settings.numberOfSpatialLayers = num_spatial_streams;
       vp9_settings.numberOfTemporalLayers = num_temporal_streams;
-      config_.encoder_specific_settings = new rtc::RefCountedObject<
+      config_.encoder_specific_settings = rtc::make_ref_counted<
           webrtc::VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9_settings);
     } else if (type != VideoCodecType::kVideoCodecMultiplex) {
       ADD_FAILURE() << "Unexpected codec type: " << type;
diff --git a/pc/audio_rtp_receiver.cc b/pc/audio_rtp_receiver.cc
index 48553ba..382b5a0 100644
--- a/pc/audio_rtp_receiver.cc
+++ b/pc/audio_rtp_receiver.cc
@@ -42,7 +42,7 @@
     bool is_unified_plan)
     : worker_thread_(worker_thread),
       id_(receiver_id),
-      source_(new rtc::RefCountedObject<RemoteAudioSource>(
+      source_(rtc::make_ref_counted<RemoteAudioSource>(
           worker_thread,
           is_unified_plan
               ? RemoteAudioSource::OnAudioChannelGoneAction::kSurvive
@@ -55,7 +55,7 @@
       delay_(JitterBufferDelayProxy::Create(
           rtc::Thread::Current(),
           worker_thread_,
-          new rtc::RefCountedObject<JitterBufferDelay>(worker_thread))) {
+          rtc::make_ref_counted<JitterBufferDelay>(worker_thread))) {
   RTC_DCHECK(worker_thread_);
   RTC_DCHECK(track_->GetSource()->remote());
   track_->RegisterObserver(this);
diff --git a/pc/audio_track.cc b/pc/audio_track.cc
index 4f4c6b4..191d4ef 100644
--- a/pc/audio_track.cc
+++ b/pc/audio_track.cc
@@ -19,7 +19,7 @@
 rtc::scoped_refptr<AudioTrack> AudioTrack::Create(
     const std::string& id,
     const rtc::scoped_refptr<AudioSourceInterface>& source) {
-  return new rtc::RefCountedObject<AudioTrack>(id, source);
+  return rtc::make_ref_counted<AudioTrack>(id, source);
 }
 
 AudioTrack::AudioTrack(const std::string& label,
diff --git a/pc/dtls_transport.cc b/pc/dtls_transport.cc
index 0b6d367..1369db1 100644
--- a/pc/dtls_transport.cc
+++ b/pc/dtls_transport.cc
@@ -48,7 +48,7 @@
     : owner_thread_(rtc::Thread::Current()),
       info_(DtlsTransportState::kNew),
       internal_dtls_transport_(std::move(internal)),
-      ice_transport_(new rtc::RefCountedObject<IceTransportWithPointer>(
+      ice_transport_(rtc::make_ref_counted<IceTransportWithPointer>(
           internal_dtls_transport_->ice_transport())) {
   RTC_DCHECK(internal_dtls_transport_.get());
   internal_dtls_transport_->SubscribeDtlsState(
diff --git a/pc/dtls_transport_unittest.cc b/pc/dtls_transport_unittest.cc
index a3f0a7c..f80d99b 100644
--- a/pc/dtls_transport_unittest.cc
+++ b/pc/dtls_transport_unittest.cc
@@ -63,7 +63,7 @@
     }
     cricket_transport->SetSslCipherSuite(kNonsenseCipherSuite);
     transport_ =
-        new rtc::RefCountedObject<DtlsTransport>(std::move(cricket_transport));
+        rtc::make_ref_counted<DtlsTransport>(std::move(cricket_transport));
   }
 
   void CompleteDtlsHandshake() {
@@ -86,8 +86,8 @@
 TEST_F(DtlsTransportTest, CreateClearDelete) {
   auto cricket_transport = std::make_unique<FakeDtlsTransport>(
       "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
-  rtc::scoped_refptr<DtlsTransport> webrtc_transport =
-      new rtc::RefCountedObject<DtlsTransport>(std::move(cricket_transport));
+  auto webrtc_transport =
+      rtc::make_ref_counted<DtlsTransport>(std::move(cricket_transport));
   ASSERT_TRUE(webrtc_transport->internal());
   ASSERT_EQ(DtlsTransportState::kNew, webrtc_transport->Information().state());
   webrtc_transport->Clear();
diff --git a/pc/dtmf_sender.cc b/pc/dtmf_sender.cc
index 5af05c8..67c3fac 100644
--- a/pc/dtmf_sender.cc
+++ b/pc/dtmf_sender.cc
@@ -65,9 +65,7 @@
   if (!signaling_thread) {
     return nullptr;
   }
-  rtc::scoped_refptr<DtmfSender> dtmf_sender(
-      new rtc::RefCountedObject<DtmfSender>(signaling_thread, provider));
-  return dtmf_sender;
+  return rtc::make_ref_counted<DtmfSender>(signaling_thread, provider);
 }
 
 DtmfSender::DtmfSender(rtc::Thread* signaling_thread,
diff --git a/pc/ice_transport_unittest.cc b/pc/ice_transport_unittest.cc
index 3711a86..ebb46cb 100644
--- a/pc/ice_transport_unittest.cc
+++ b/pc/ice_transport_unittest.cc
@@ -28,9 +28,8 @@
 TEST_F(IceTransportTest, CreateNonSelfDeletingTransport) {
   auto cricket_transport =
       std::make_unique<cricket::FakeIceTransport>("name", 0, nullptr);
-  rtc::scoped_refptr<IceTransportWithPointer> ice_transport =
-      new rtc::RefCountedObject<IceTransportWithPointer>(
-          cricket_transport.get());
+  auto ice_transport =
+      rtc::make_ref_counted<IceTransportWithPointer>(cricket_transport.get());
   EXPECT_EQ(ice_transport->internal(), cricket_transport.get());
   ice_transport->Clear();
   EXPECT_NE(ice_transport->internal(), cricket_transport.get());
diff --git a/pc/jitter_buffer_delay_unittest.cc b/pc/jitter_buffer_delay_unittest.cc
index 7edd09a..61adb2d 100644
--- a/pc/jitter_buffer_delay_unittest.cc
+++ b/pc/jitter_buffer_delay_unittest.cc
@@ -31,8 +31,8 @@
 class JitterBufferDelayTest : public ::testing::Test {
  public:
   JitterBufferDelayTest()
-      : delay_(new rtc::RefCountedObject<JitterBufferDelay>(
-            rtc::Thread::Current())) {}
+      : delay_(
+            rtc::make_ref_counted<JitterBufferDelay>(rtc::Thread::Current())) {}
 
  protected:
   rtc::scoped_refptr<JitterBufferDelayInterface> delay_;
diff --git a/pc/jsep_transport.cc b/pc/jsep_transport.cc
index 1bdcafd..dc4649b 100644
--- a/pc/jsep_transport.cc
+++ b/pc/jsep_transport.cc
@@ -88,21 +88,20 @@
       unencrypted_rtp_transport_(std::move(unencrypted_rtp_transport)),
       sdes_transport_(std::move(sdes_transport)),
       dtls_srtp_transport_(std::move(dtls_srtp_transport)),
-      rtp_dtls_transport_(
-          rtp_dtls_transport ? new rtc::RefCountedObject<webrtc::DtlsTransport>(
-                                   std::move(rtp_dtls_transport))
-                             : nullptr),
-      rtcp_dtls_transport_(
-          rtcp_dtls_transport
-              ? new rtc::RefCountedObject<webrtc::DtlsTransport>(
-                    std::move(rtcp_dtls_transport))
-              : nullptr),
+      rtp_dtls_transport_(rtp_dtls_transport
+                              ? rtc::make_ref_counted<webrtc::DtlsTransport>(
+                                    std::move(rtp_dtls_transport))
+                              : nullptr),
+      rtcp_dtls_transport_(rtcp_dtls_transport
+                               ? rtc::make_ref_counted<webrtc::DtlsTransport>(
+                                     std::move(rtcp_dtls_transport))
+                               : nullptr),
       sctp_data_channel_transport_(
           sctp_transport ? std::make_unique<webrtc::SctpDataChannelTransport>(
                                sctp_transport.get())
                          : nullptr),
       sctp_transport_(sctp_transport
-                          ? new rtc::RefCountedObject<webrtc::SctpTransport>(
+                          ? rtc::make_ref_counted<webrtc::SctpTransport>(
                                 std::move(sctp_transport))
                           : nullptr) {
   RTC_DCHECK(ice_transport_);
diff --git a/pc/jsep_transport_controller_unittest.cc b/pc/jsep_transport_controller_unittest.cc
index 5c621fd..d13a94c 100644
--- a/pc/jsep_transport_controller_unittest.cc
+++ b/pc/jsep_transport_controller_unittest.cc
@@ -50,7 +50,7 @@
       const std::string& transport_name,
       int component,
       IceTransportInit init) override {
-    return new rtc::RefCountedObject<cricket::FakeIceTransportWrapper>(
+    return rtc::make_ref_counted<cricket::FakeIceTransportWrapper>(
         std::make_unique<cricket::FakeIceTransport>(transport_name, component));
   }
 };
diff --git a/pc/jsep_transport_unittest.cc b/pc/jsep_transport_unittest.cc
index 4dd2b5c..5f43340 100644
--- a/pc/jsep_transport_unittest.cc
+++ b/pc/jsep_transport_unittest.cc
@@ -48,8 +48,7 @@
     return nullptr;
   }
 
-  return new rtc::RefCountedObject<FakeIceTransportWrapper>(
-      std::move(internal));
+  return rtc::make_ref_counted<FakeIceTransportWrapper>(std::move(internal));
 }
 
 class JsepTransport2Test : public ::testing::Test, public sigslot::has_slots<> {
diff --git a/pc/local_audio_source.cc b/pc/local_audio_source.cc
index 22ab1c3..3fcad50 100644
--- a/pc/local_audio_source.cc
+++ b/pc/local_audio_source.cc
@@ -18,8 +18,7 @@
 
 rtc::scoped_refptr<LocalAudioSource> LocalAudioSource::Create(
     const cricket::AudioOptions* audio_options) {
-  rtc::scoped_refptr<LocalAudioSource> source(
-      new rtc::RefCountedObject<LocalAudioSource>());
+  auto source = rtc::make_ref_counted<LocalAudioSource>();
   source->Initialize(audio_options);
   return source;
 }
diff --git a/pc/media_stream.cc b/pc/media_stream.cc
index 00f491b..08a2a72 100644
--- a/pc/media_stream.cc
+++ b/pc/media_stream.cc
@@ -31,9 +31,7 @@
 }
 
 rtc::scoped_refptr<MediaStream> MediaStream::Create(const std::string& id) {
-  rtc::RefCountedObject<MediaStream>* stream =
-      new rtc::RefCountedObject<MediaStream>(id);
-  return stream;
+  return rtc::make_ref_counted<MediaStream>(id);
 }
 
 MediaStream::MediaStream(const std::string& id) : id_(id) {}
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 7177764..1efb0ab 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -465,10 +465,9 @@
   }
 
   // The PeerConnection constructor consumes some, but not all, dependencies.
-  rtc::scoped_refptr<PeerConnection> pc(
-      new rtc::RefCountedObject<PeerConnection>(
-          context, options, is_unified_plan, std::move(event_log),
-          std::move(call), dependencies, dtls_enabled));
+  auto pc = rtc::make_ref_counted<PeerConnection>(
+      context, options, is_unified_plan, std::move(event_log), std::move(call),
+      dependencies, dtls_enabled);
   RTCError init_error = pc->Initialize(configuration, std::move(dependencies));
   if (!init_error.ok()) {
     RTC_LOG(LS_ERROR) << "PeerConnection initialization failed";
diff --git a/pc/peer_connection_adaptation_integrationtest.cc b/pc/peer_connection_adaptation_integrationtest.cc
index 71d054e..dfb1297 100644
--- a/pc/peer_connection_adaptation_integrationtest.cc
+++ b/pc/peer_connection_adaptation_integrationtest.cc
@@ -50,7 +50,7 @@
   periodic_track_source_config.frame_interval_ms = 100;
   periodic_track_source_config.timestamp_offset_ms = rtc::TimeMillis();
   rtc::scoped_refptr<FakePeriodicVideoTrackSource> periodic_track_source =
-      new rtc::RefCountedObject<FakePeriodicVideoTrackSource>(
+      rtc::make_ref_counted<FakePeriodicVideoTrackSource>(
           periodic_track_source_config, /* remote */ false);
   TrackWithPeriodicSource track_with_source;
   track_with_source.track =
@@ -83,7 +83,7 @@
   rtc::scoped_refptr<PeerConnectionTestWrapper> CreatePcWrapper(
       const char* name) {
     rtc::scoped_refptr<PeerConnectionTestWrapper> pc_wrapper =
-        new rtc::RefCountedObject<PeerConnectionTestWrapper>(
+        rtc::make_ref_counted<PeerConnectionTestWrapper>(
             name, network_thread_.get(), worker_thread_.get());
     PeerConnectionInterface::RTCConfiguration config;
     config.sdp_semantics = SdpSemantics::kUnifiedPlan;
diff --git a/pc/peer_connection_crypto_unittest.cc b/pc/peer_connection_crypto_unittest.cc
index 32e8cbd..394203c 100644
--- a/pc/peer_connection_crypto_unittest.cc
+++ b/pc/peer_connection_crypto_unittest.cc
@@ -631,7 +631,7 @@
       observers;
   for (size_t i = 0; i < concurrent_calls_; i++) {
     rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer =
-        new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>();
+        rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
     observers.push_back(observer);
     if (sdp_type_ == SdpType::kOffer) {
       pc->pc()->CreateOffer(observer,
diff --git a/pc/peer_connection_factory.cc b/pc/peer_connection_factory.cc
index c911871..515494d 100644
--- a/pc/peer_connection_factory.cc
+++ b/pc/peer_connection_factory.cc
@@ -84,8 +84,7 @@
   if (!context) {
     return nullptr;
   }
-  return new rtc::RefCountedObject<PeerConnectionFactory>(context,
-                                                          &dependencies);
+  return rtc::make_ref_counted<PeerConnectionFactory>(context, &dependencies);
 }
 
 PeerConnectionFactory::PeerConnectionFactory(
diff --git a/pc/peer_connection_ice_unittest.cc b/pc/peer_connection_ice_unittest.cc
index b9b8966..ed30377 100644
--- a/pc/peer_connection_ice_unittest.cc
+++ b/pc/peer_connection_ice_unittest.cc
@@ -768,8 +768,8 @@
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
 
   // Chain an operation that will block AddIceCandidate() from executing.
-  rtc::scoped_refptr<MockCreateSessionDescriptionObserver> answer_observer(
-      new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+  auto answer_observer =
+      rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
   callee->pc()->CreateAnswer(answer_observer, RTCOfferAnswerOptions());
 
   auto jsep_candidate =
@@ -816,8 +816,8 @@
   ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
 
   // Chain an operation that will block AddIceCandidate() from executing.
-  rtc::scoped_refptr<MockCreateSessionDescriptionObserver> answer_observer(
-      new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+  auto answer_observer =
+      rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
   callee->pc()->CreateAnswer(answer_observer, RTCOfferAnswerOptions());
 
   auto jsep_candidate =
diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc
index b240102..dfceacd 100644
--- a/pc/peer_connection_integrationtest.cc
+++ b/pc/peer_connection_integrationtest.cc
@@ -2833,8 +2833,7 @@
                                              /*reset_decoder_factory=*/false);
   ASSERT_TRUE(wrapper);
   wrapper->CreateDataChannel();
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   wrapper->pc()->SetLocalDescription(observer,
                                      wrapper->CreateOfferAndWait().release());
 }
@@ -3319,8 +3318,7 @@
   SetSignalIceCandidates(false);  // Workaround candidate outrace sdp.
   caller()->AddVideoTrack();
   callee()->AddVideoTrack();
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   callee()->pc()->SetLocalDescription(observer,
                                       callee()->CreateOfferAndWait().release());
   EXPECT_TRUE_WAIT(observer->called(), kDefaultTimeout);
@@ -3337,15 +3335,15 @@
 
   ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(config, config));
 
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> sld_observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto sld_observer =
+      rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   callee()->pc()->SetLocalDescription(sld_observer,
                                       callee()->CreateOfferAndWait().release());
   EXPECT_TRUE_WAIT(sld_observer->called(), kDefaultTimeout);
   EXPECT_EQ(sld_observer->error(), "");
 
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> srd_observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto srd_observer =
+      rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   callee()->pc()->SetRemoteDescription(
       srd_observer, caller()->CreateOfferAndWait().release());
   EXPECT_TRUE_WAIT(srd_observer->called(), kDefaultTimeout);
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index d454dd2..fcea842 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -661,7 +661,7 @@
     dependencies.event_log_factory = std::make_unique<RtcEventLogFactory>(
         dependencies.task_queue_factory.get());
 
-    return new rtc::RefCountedObject<PeerConnectionFactoryForTest>(
+    return rtc::make_ref_counted<PeerConnectionFactoryForTest>(
         std::move(dependencies));
   }
 
@@ -879,8 +879,8 @@
   bool DoCreateOfferAnswer(std::unique_ptr<SessionDescriptionInterface>* desc,
                            const RTCOfferAnswerOptions* options,
                            bool offer) {
-    rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+    auto observer =
+        rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
     if (offer) {
       pc_->CreateOffer(observer, options ? *options : RTCOfferAnswerOptions());
     } else {
@@ -904,8 +904,7 @@
   bool DoSetSessionDescription(
       std::unique_ptr<SessionDescriptionInterface> desc,
       bool local) {
-    rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+    auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
     if (local) {
       pc_->SetLocalDescription(observer, desc.release());
     } else {
@@ -931,8 +930,7 @@
   // It does not verify the values in the StatReports since a RTCP packet might
   // be required.
   bool DoGetStats(MediaStreamTrackInterface* track) {
-    rtc::scoped_refptr<MockStatsObserver> observer(
-        new rtc::RefCountedObject<MockStatsObserver>());
+    auto observer = rtc::make_ref_counted<MockStatsObserver>();
     if (!pc_->GetStats(observer, track,
                        PeerConnectionInterface::kStatsOutputLevelStandard))
       return false;
@@ -942,8 +940,8 @@
 
   // Call the standards-compliant GetStats function.
   bool DoGetRTCStats() {
-    rtc::scoped_refptr<webrtc::MockRTCStatsCollectorCallback> callback(
-        new rtc::RefCountedObject<webrtc::MockRTCStatsCollectorCallback>());
+    auto callback =
+        rtc::make_ref_counted<webrtc::MockRTCStatsCollectorCallback>();
     pc_->GetStats(callback);
     EXPECT_TRUE_WAIT(callback->called(), kTimeout);
     return callback->called();
@@ -1198,8 +1196,8 @@
   std::unique_ptr<SessionDescriptionInterface> CreateOfferWithOptions(
       const RTCOfferAnswerOptions& offer_answer_options) {
     RTC_DCHECK(pc_);
-    rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+    auto observer =
+        rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
     pc_->CreateOffer(observer, offer_answer_options);
     EXPECT_EQ_WAIT(true, observer->called(), kTimeout);
     return observer->MoveDescription();
diff --git a/pc/peer_connection_rampup_tests.cc b/pc/peer_connection_rampup_tests.cc
index cf3b0a2..c353ae5 100644
--- a/pc/peer_connection_rampup_tests.cc
+++ b/pc/peer_connection_rampup_tests.cc
@@ -120,7 +120,7 @@
       FrameGeneratorCapturerVideoTrackSource::Config config,
       Clock* clock) {
     video_track_sources_.emplace_back(
-        new rtc::RefCountedObject<FrameGeneratorCapturerVideoTrackSource>(
+        rtc::make_ref_counted<FrameGeneratorCapturerVideoTrackSource>(
             config, clock, /*is_screencast=*/false));
     video_track_sources_.back()->Start();
     return rtc::scoped_refptr<VideoTrackInterface>(
diff --git a/pc/peer_connection_rtp_unittest.cc b/pc/peer_connection_rtp_unittest.cc
index 54287e7..2822854 100644
--- a/pc/peer_connection_rtp_unittest.cc
+++ b/pc/peer_connection_rtp_unittest.cc
@@ -919,7 +919,7 @@
   auto callee = CreatePeerConnection();
 
   rtc::scoped_refptr<webrtc::MockSetSessionDescriptionObserver> observer =
-      new rtc::RefCountedObject<webrtc::MockSetSessionDescriptionObserver>();
+      rtc::make_ref_counted<webrtc::MockSetSessionDescriptionObserver>();
 
   auto offer = caller->CreateOfferAndSetAsLocal();
   callee->pc()->SetRemoteDescription(observer, offer.release());
diff --git a/pc/peer_connection_signaling_unittest.cc b/pc/peer_connection_signaling_unittest.cc
index 74c2c7b..ba7d813 100644
--- a/pc/peer_connection_signaling_unittest.cc
+++ b/pc/peer_connection_signaling_unittest.cc
@@ -537,8 +537,7 @@
 
   rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observers[100];
   for (auto& observer : observers) {
-    observer =
-        new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>();
+    observer = rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
     caller->pc()->CreateOffer(observer, options);
   }
 
@@ -559,8 +558,7 @@
 // the WebRtcSessionDescriptionFactory is responsible for it.
 TEST_P(PeerConnectionSignalingTest, CloseCreateOfferAndShutdown) {
   auto caller = CreatePeerConnection();
-  rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer =
-      new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>();
+  auto observer = rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
   caller->pc()->Close();
   caller->pc()->CreateOffer(observer, RTCOfferAnswerOptions());
   caller.reset(nullptr);
@@ -687,8 +685,8 @@
   auto offer = caller->CreateOffer(RTCOfferAnswerOptions());
 
   EXPECT_EQ(0u, callee->pc()->GetReceivers().size());
-  rtc::scoped_refptr<MockCreateSessionDescriptionObserver> offer_observer(
-      new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+  auto offer_observer =
+      rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
   // Synchronously invoke CreateOffer() and SetRemoteDescription(). The
   // SetRemoteDescription() operation should be chained to be executed
   // asynchronously, when CreateOffer() completes.
@@ -985,7 +983,7 @@
   // waiting for it would not ensure synchronicity.
   RTC_DCHECK(!caller->pc()->GetTransceivers()[0]->mid().has_value());
   caller->pc()->SetLocalDescription(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>(),
+      rtc::make_ref_counted<MockSetSessionDescriptionObserver>(),
       offer.release());
   EXPECT_TRUE(caller->pc()->GetTransceivers()[0]->mid().has_value());
 }
@@ -1013,9 +1011,8 @@
   // This offer will cause transceiver mids to get assigned.
   auto offer = caller->CreateOffer(RTCOfferAnswerOptions());
 
-  rtc::scoped_refptr<ExecuteFunctionOnCreateSessionDescriptionObserver>
-      offer_observer(new rtc::RefCountedObject<
-                     ExecuteFunctionOnCreateSessionDescriptionObserver>(
+  auto offer_observer =
+      rtc::make_ref_counted<ExecuteFunctionOnCreateSessionDescriptionObserver>(
           [pc = caller->pc()](SessionDescriptionInterface* desc) {
             // By not waiting for the observer's callback we can verify that the
             // operation executed immediately.
@@ -1024,7 +1021,7 @@
                 new rtc::RefCountedObject<MockSetSessionDescriptionObserver>(),
                 desc);
             EXPECT_TRUE(pc->GetTransceivers()[0]->mid().has_value());
-          }));
+          });
   caller->pc()->CreateOffer(offer_observer, RTCOfferAnswerOptions());
   EXPECT_TRUE_WAIT(offer_observer->was_called(), kWaitTimeout);
 }
@@ -1111,8 +1108,7 @@
       caller->AddTransceiver(cricket::MEDIA_TYPE_AUDIO, RtpTransceiverInit());
   EXPECT_TRUE(caller->observer()->has_negotiation_needed_event());
 
-  rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer =
-      new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>();
+  auto observer = rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
   caller->pc()->CreateOffer(observer, RTCOfferAnswerOptions());
   // For this test to work, the operation has to be pending, i.e. the observer
   // has not yet been invoked.
diff --git a/pc/peer_connection_wrapper.cc b/pc/peer_connection_wrapper.cc
index 65384ee..6aed8f1 100644
--- a/pc/peer_connection_wrapper.cc
+++ b/pc/peer_connection_wrapper.cc
@@ -136,8 +136,7 @@
 std::unique_ptr<SessionDescriptionInterface> PeerConnectionWrapper::CreateSdp(
     rtc::FunctionView<void(CreateSessionDescriptionObserver*)> fn,
     std::string* error_out) {
-  rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer(
-      new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+  auto observer = rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
   fn(observer);
   EXPECT_EQ_WAIT(true, observer->called(), kDefaultTimeout);
   if (error_out && !observer->result()) {
@@ -182,8 +181,7 @@
 bool PeerConnectionWrapper::SetSdp(
     rtc::FunctionView<void(SetSessionDescriptionObserver*)> fn,
     std::string* error_out) {
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   fn(observer);
   EXPECT_EQ_WAIT(true, observer->called(), kDefaultTimeout);
   if (error_out && !observer->result()) {
@@ -326,8 +324,7 @@
 
 rtc::scoped_refptr<const webrtc::RTCStatsReport>
 PeerConnectionWrapper::GetStats() {
-  rtc::scoped_refptr<webrtc::MockRTCStatsCollectorCallback> callback(
-      new rtc::RefCountedObject<webrtc::MockRTCStatsCollectorCallback>());
+  auto callback = rtc::make_ref_counted<MockRTCStatsCollectorCallback>();
   pc()->GetStats(callback);
   EXPECT_TRUE_WAIT(callback->called(), kDefaultTimeout);
   return callback->report();
diff --git a/pc/proxy_unittest.cc b/pc/proxy_unittest.cc
index fdc7dc3..f59250d 100644
--- a/pc/proxy_unittest.cc
+++ b/pc/proxy_unittest.cc
@@ -43,7 +43,7 @@
 class Fake : public FakeInterface {
  public:
   static rtc::scoped_refptr<Fake> Create() {
-    return new rtc::RefCountedObject<Fake>();
+    return rtc::make_ref_counted<Fake>();
   }
   // Used to verify destructor is called on the correct thread.
   MOCK_METHOD(void, Destroy, ());
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index 93aa6af..7e781a7 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -1097,8 +1097,7 @@
 rtc::scoped_refptr<RTCStatsCollector> RTCStatsCollector::Create(
     PeerConnectionInternal* pc,
     int64_t cache_lifetime_us) {
-  return rtc::scoped_refptr<RTCStatsCollector>(
-      new rtc::RefCountedObject<RTCStatsCollector>(pc, cache_lifetime_us));
+  return rtc::make_ref_counted<RTCStatsCollector>(pc, cache_lifetime_us);
 }
 
 RTCStatsCollector::RTCStatsCollector(PeerConnectionInternal* pc,
diff --git a/pc/rtc_stats_integrationtest.cc b/pc/rtc_stats_integrationtest.cc
index 2bf026e..d92e7ff 100644
--- a/pc/rtc_stats_integrationtest.cc
+++ b/pc/rtc_stats_integrationtest.cc
@@ -114,9 +114,9 @@
     RTC_CHECK(network_thread_->Start());
     RTC_CHECK(worker_thread_->Start());
 
-    caller_ = new rtc::RefCountedObject<PeerConnectionTestWrapper>(
+    caller_ = rtc::make_ref_counted<PeerConnectionTestWrapper>(
         "caller", network_thread_.get(), worker_thread_.get());
-    callee_ = new rtc::RefCountedObject<PeerConnectionTestWrapper>(
+    callee_ = rtc::make_ref_counted<PeerConnectionTestWrapper>(
         "callee", network_thread_.get(), worker_thread_.get());
   }
 
diff --git a/pc/rtp_sender.cc b/pc/rtp_sender.cc
index 7026dd9..aa268ce 100644
--- a/pc/rtp_sender.cc
+++ b/pc/rtp_sender.cc
@@ -424,9 +424,8 @@
     const std::string& id,
     StatsCollectorInterface* stats,
     SetStreamsObserver* set_streams_observer) {
-  return rtc::scoped_refptr<AudioRtpSender>(
-      new rtc::RefCountedObject<AudioRtpSender>(worker_thread, id, stats,
-                                                set_streams_observer));
+  return rtc::make_ref_counted<AudioRtpSender>(worker_thread, id, stats,
+                                               set_streams_observer);
 }
 
 AudioRtpSender::AudioRtpSender(rtc::Thread* worker_thread,
@@ -571,9 +570,8 @@
     rtc::Thread* worker_thread,
     const std::string& id,
     SetStreamsObserver* set_streams_observer) {
-  return rtc::scoped_refptr<VideoRtpSender>(
-      new rtc::RefCountedObject<VideoRtpSender>(worker_thread, id,
-                                                set_streams_observer));
+  return rtc::make_ref_counted<VideoRtpSender>(worker_thread, id,
+                                               set_streams_observer);
 }
 
 VideoRtpSender::VideoRtpSender(rtc::Thread* worker_thread,
diff --git a/pc/scenario_tests/goog_cc_test.cc b/pc/scenario_tests/goog_cc_test.cc
index 4a996b8..d9e27e2 100644
--- a/pc/scenario_tests/goog_cc_test.cc
+++ b/pc/scenario_tests/goog_cc_test.cc
@@ -73,8 +73,8 @@
   ASSERT_EQ(num_video_streams, 1);  // Exactly 1 video stream.
 
   auto get_bwe = [&] {
-    rtc::scoped_refptr<webrtc::MockRTCStatsCollectorCallback> callback(
-        new rtc::RefCountedObject<webrtc::MockRTCStatsCollectorCallback>());
+    auto callback =
+        rtc::make_ref_counted<webrtc::MockRTCStatsCollectorCallback>();
     caller->pc()->GetStats(callback);
     s.net()->time_controller()->Wait([&] { return callback->called(); });
     auto stats =
diff --git a/pc/sctp_data_channel.cc b/pc/sctp_data_channel.cc
index be20c3d..f67a0e7 100644
--- a/pc/sctp_data_channel.cc
+++ b/pc/sctp_data_channel.cc
@@ -135,9 +135,8 @@
     const InternalDataChannelInit& config,
     rtc::Thread* signaling_thread,
     rtc::Thread* network_thread) {
-  rtc::scoped_refptr<SctpDataChannel> channel(
-      new rtc::RefCountedObject<SctpDataChannel>(
-          config, provider, label, signaling_thread, network_thread));
+  auto channel = rtc::make_ref_counted<SctpDataChannel>(
+      config, provider, label, signaling_thread, network_thread);
   if (!channel->Init()) {
     return nullptr;
   }
diff --git a/pc/sctp_transport_unittest.cc b/pc/sctp_transport_unittest.cc
index f3070cd..8ab4482 100644
--- a/pc/sctp_transport_unittest.cc
+++ b/pc/sctp_transport_unittest.cc
@@ -112,8 +112,8 @@
   void CreateTransport() {
     auto cricket_sctp_transport =
         absl::WrapUnique(new FakeCricketSctpTransport());
-    transport_ = new rtc::RefCountedObject<SctpTransport>(
-        std::move(cricket_sctp_transport));
+    transport_ =
+        rtc::make_ref_counted<SctpTransport>(std::move(cricket_sctp_transport));
   }
 
   void AddDtlsTransport() {
@@ -121,7 +121,7 @@
         std::make_unique<FakeDtlsTransport>(
             "audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
     dtls_transport_ =
-        new rtc::RefCountedObject<DtlsTransport>(std::move(cricket_transport));
+        rtc::make_ref_counted<DtlsTransport>(std::move(cricket_transport));
     transport_->SetDtlsTransport(dtls_transport_);
   }
 
@@ -147,7 +147,7 @@
   std::unique_ptr<cricket::SctpTransportInternal> fake_cricket_sctp_transport =
       absl::WrapUnique(new FakeCricketSctpTransport());
   rtc::scoped_refptr<SctpTransport> sctp_transport =
-      new rtc::RefCountedObject<SctpTransport>(
+      rtc::make_ref_counted<SctpTransport>(
           std::move(fake_cricket_sctp_transport));
   ASSERT_TRUE(sctp_transport->internal());
   ASSERT_EQ(SctpTransportState::kNew, sctp_transport->Information().state());
diff --git a/pc/stats_collector_unittest.cc b/pc/stats_collector_unittest.cc
index 3767081..c630c3a 100644
--- a/pc/stats_collector_unittest.cc
+++ b/pc/stats_collector_unittest.cc
@@ -96,7 +96,7 @@
  public:
   explicit FakeAudioTrack(const std::string& id)
       : MediaStreamTrack<AudioTrackInterface>(id),
-        processor_(new rtc::RefCountedObject<FakeAudioProcessor>()) {}
+        processor_(rtc::make_ref_counted<FakeAudioProcessor>()) {}
   std::string kind() const override { return "audio"; }
   AudioSourceInterface* GetSource() const override { return NULL; }
   void AddSink(AudioTrackSinkInterface* sink) override {}
@@ -134,8 +134,7 @@
  public:
   explicit FakeAudioTrackWithInitValue(const std::string& id)
       : MediaStreamTrack<AudioTrackInterface>(id),
-        processor_(
-            new rtc::RefCountedObject<FakeAudioProcessorWithInitValue>()) {}
+        processor_(rtc::make_ref_counted<FakeAudioProcessorWithInitValue>()) {}
   std::string kind() const override { return "audio"; }
   AudioSourceInterface* GetSource() const override { return NULL; }
   void AddSink(AudioTrackSinkInterface* sink) override {}
@@ -600,7 +599,7 @@
 class StatsCollectorTest : public ::testing::Test {
  protected:
   rtc::scoped_refptr<FakePeerConnectionForStats> CreatePeerConnection() {
-    return new rtc::RefCountedObject<FakePeerConnectionForStats>();
+    return rtc::make_ref_counted<FakePeerConnectionForStats>();
   }
 
   std::unique_ptr<StatsCollectorForTest> CreateStatsCollector(
@@ -738,8 +737,7 @@
 static rtc::scoped_refptr<MockRtpSenderInternal> CreateMockSender(
     rtc::scoped_refptr<MediaStreamTrackInterface> track,
     uint32_t ssrc) {
-  rtc::scoped_refptr<MockRtpSenderInternal> sender(
-      new rtc::RefCountedObject<MockRtpSenderInternal>());
+  auto sender = rtc::make_ref_counted<MockRtpSenderInternal>();
   EXPECT_CALL(*sender, track()).WillRepeatedly(Return(track));
   EXPECT_CALL(*sender, ssrc()).WillRepeatedly(Return(ssrc));
   EXPECT_CALL(*sender, media_type())
@@ -753,8 +751,7 @@
 static rtc::scoped_refptr<MockRtpReceiverInternal> CreateMockReceiver(
     rtc::scoped_refptr<MediaStreamTrackInterface> track,
     uint32_t ssrc) {
-  rtc::scoped_refptr<MockRtpReceiverInternal> receiver(
-      new rtc::RefCountedObject<MockRtpReceiverInternal>());
+  auto receiver = rtc::make_ref_counted<MockRtpReceiverInternal>();
   EXPECT_CALL(*receiver, track()).WillRepeatedly(Return(track));
   EXPECT_CALL(*receiver, ssrc()).WillRepeatedly(Return(ssrc));
   EXPECT_CALL(*receiver, media_type())
@@ -808,7 +805,7 @@
   rtc::scoped_refptr<RtpSenderInterface> AddOutgoingAudioTrack(
       FakePeerConnectionForStats* pc,
       StatsCollectorForTest* stats) {
-    audio_track_ = new rtc::RefCountedObject<FakeAudioTrack>(kLocalTrackId);
+    audio_track_ = rtc::make_ref_counted<FakeAudioTrack>(kLocalTrackId);
     if (GetParam()) {
       if (!stream_)
         stream_ = MediaStream::Create("streamid");
@@ -823,7 +820,7 @@
   // Adds a incoming audio track with a given SSRC into the stats.
   void AddIncomingAudioTrack(FakePeerConnectionForStats* pc,
                              StatsCollectorForTest* stats) {
-    audio_track_ = new rtc::RefCountedObject<FakeAudioTrack>(kRemoteTrackId);
+    audio_track_ = rtc::make_ref_counted<FakeAudioTrack>(kRemoteTrackId);
     if (GetParam()) {
       if (stream_ == NULL)
         stream_ = MediaStream::Create("streamid");
@@ -1483,8 +1480,8 @@
 
   // Create a local stream with a local audio track and adds it to the stats.
   stream_ = MediaStream::Create("streamid");
-  rtc::scoped_refptr<FakeAudioTrackWithInitValue> local_track(
-      new rtc::RefCountedObject<FakeAudioTrackWithInitValue>(kLocalTrackId));
+  auto local_track =
+      rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kLocalTrackId);
   stream_->AddTrack(local_track);
   pc->AddSender(CreateMockSender(local_track, kSsrcOfTrack));
   if (GetParam()) {
@@ -1495,8 +1492,8 @@
   // Create a remote stream with a remote audio track and adds it to the stats.
   rtc::scoped_refptr<MediaStream> remote_stream(
       MediaStream::Create("remotestreamid"));
-  rtc::scoped_refptr<FakeAudioTrackWithInitValue> remote_track(
-      new rtc::RefCountedObject<FakeAudioTrackWithInitValue>(kRemoteTrackId));
+  auto remote_track =
+      rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kRemoteTrackId);
   remote_stream->AddTrack(remote_track);
   pc->AddReceiver(CreateMockReceiver(remote_track, kSsrcOfTrack));
   if (GetParam()) {
@@ -1665,8 +1662,7 @@
   // Create a remote stream with a remote audio track and adds it to the stats.
   rtc::scoped_refptr<MediaStream> remote_stream(
       MediaStream::Create("remotestreamid"));
-  rtc::scoped_refptr<FakeAudioTrack> remote_track(
-      new rtc::RefCountedObject<FakeAudioTrack>(kRemoteTrackId));
+  auto remote_track = rtc::make_ref_counted<FakeAudioTrack>(kRemoteTrackId);
   pc->AddReceiver(CreateMockReceiver(remote_track, kSsrcOfTrack));
   remote_stream->AddTrack(remote_track);
   stats->AddStream(remote_stream);
@@ -1755,8 +1751,7 @@
 
   // Create a new audio track and adds it to the stream and stats.
   static const std::string kNewTrackId = "new_track_id";
-  rtc::scoped_refptr<FakeAudioTrack> new_audio_track(
-      new rtc::RefCountedObject<FakeAudioTrack>(kNewTrackId));
+  auto new_audio_track = rtc::make_ref_counted<FakeAudioTrack>(kNewTrackId);
   pc->AddSender(CreateMockSender(new_audio_track, kSsrcOfTrack));
   stream_->AddTrack(new_audio_track);
 
@@ -1785,8 +1780,8 @@
   auto pc = CreatePeerConnection();
   auto stats = CreateStatsCollector(pc);
 
-  rtc::scoped_refptr<FakeAudioTrackWithInitValue> local_track(
-      new rtc::RefCountedObject<FakeAudioTrackWithInitValue>(kLocalTrackId));
+  auto local_track =
+      rtc::make_ref_counted<FakeAudioTrackWithInitValue>(kLocalTrackId);
   pc->AddSender(CreateMockSender(local_track, kFirstSsrc));
   stats->AddLocalAudioTrack(local_track.get(), kFirstSsrc);
   pc->AddSender(CreateMockSender(local_track, kSecondSsrc));
diff --git a/pc/stream_collection.h b/pc/stream_collection.h
index 28cd46f..9bbf957 100644
--- a/pc/stream_collection.h
+++ b/pc/stream_collection.h
@@ -22,16 +22,12 @@
 class StreamCollection : public StreamCollectionInterface {
  public:
   static rtc::scoped_refptr<StreamCollection> Create() {
-    rtc::RefCountedObject<StreamCollection>* implementation =
-        new rtc::RefCountedObject<StreamCollection>();
-    return implementation;
+    return rtc::make_ref_counted<StreamCollection>();
   }
 
   static rtc::scoped_refptr<StreamCollection> Create(
       StreamCollection* streams) {
-    rtc::RefCountedObject<StreamCollection>* implementation =
-        new rtc::RefCountedObject<StreamCollection>(streams);
-    return implementation;
+    return rtc::make_ref_counted<StreamCollection>(streams);
   }
 
   virtual size_t count() { return media_streams_.size(); }
diff --git a/pc/test/fake_audio_capture_module.cc b/pc/test/fake_audio_capture_module.cc
index a395df0..214ed6b 100644
--- a/pc/test/fake_audio_capture_module.cc
+++ b/pc/test/fake_audio_capture_module.cc
@@ -58,8 +58,7 @@
 }
 
 rtc::scoped_refptr<FakeAudioCaptureModule> FakeAudioCaptureModule::Create() {
-  rtc::scoped_refptr<FakeAudioCaptureModule> capture_module(
-      new rtc::RefCountedObject<FakeAudioCaptureModule>());
+  auto capture_module = rtc::make_ref_counted<FakeAudioCaptureModule>();
   if (!capture_module->Initialize()) {
     return nullptr;
   }
diff --git a/pc/test/fake_video_track_source.h b/pc/test/fake_video_track_source.h
index d656231..2042c39 100644
--- a/pc/test/fake_video_track_source.h
+++ b/pc/test/fake_video_track_source.h
@@ -22,7 +22,7 @@
 class FakeVideoTrackSource : public VideoTrackSource {
  public:
   static rtc::scoped_refptr<FakeVideoTrackSource> Create(bool is_screencast) {
-    return new rtc::RefCountedObject<FakeVideoTrackSource>(is_screencast);
+    return rtc::make_ref_counted<FakeVideoTrackSource>(is_screencast);
   }
 
   static rtc::scoped_refptr<FakeVideoTrackSource> Create() {
diff --git a/pc/test/integration_test_helpers.h b/pc/test/integration_test_helpers.h
index 075a907..3fe9daf 100644
--- a/pc/test/integration_test_helpers.h
+++ b/pc/test/integration_test_helpers.h
@@ -451,8 +451,7 @@
   // which can be used to access the gathered stats.
   rtc::scoped_refptr<MockStatsObserver> OldGetStatsForTrack(
       webrtc::MediaStreamTrackInterface* track) {
-    rtc::scoped_refptr<MockStatsObserver> observer(
-        new rtc::RefCountedObject<MockStatsObserver>());
+    auto observer = rtc::make_ref_counted<MockStatsObserver>();
     EXPECT_TRUE(peer_connection_->GetStats(
         observer, nullptr, PeerConnectionInterface::kStatsOutputLevelStandard));
     EXPECT_TRUE_WAIT(observer->called(), kDefaultTimeout);
@@ -467,8 +466,8 @@
   // Synchronously gets stats and returns them. If it times out, fails the test
   // and returns null.
   rtc::scoped_refptr<const webrtc::RTCStatsReport> NewGetStats() {
-    rtc::scoped_refptr<webrtc::MockRTCStatsCollectorCallback> callback(
-        new rtc::RefCountedObject<webrtc::MockRTCStatsCollectorCallback>());
+    auto callback =
+        rtc::make_ref_counted<webrtc::MockRTCStatsCollectorCallback>();
     peer_connection_->GetStats(callback);
     EXPECT_TRUE_WAIT(callback->called(), kDefaultTimeout);
     return callback->report();
@@ -605,8 +604,8 @@
 
   // Returns null on failure.
   std::unique_ptr<SessionDescriptionInterface> CreateOfferAndWait() {
-    rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+    auto observer =
+        rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
     pc()->CreateOffer(observer, offer_answer_options_);
     return WaitForDescriptionFromObserver(observer);
   }
@@ -828,7 +827,7 @@
     config.frame_interval_ms = 100;
 
     video_track_sources_.emplace_back(
-        new rtc::RefCountedObject<webrtc::FakePeriodicVideoTrackSource>(
+        rtc::make_ref_counted<webrtc::FakePeriodicVideoTrackSource>(
             config, false /* remote */));
     rtc::scoped_refptr<webrtc::VideoTrackInterface> track(
         peer_connection_factory_->CreateVideoTrack(
@@ -874,8 +873,8 @@
 
   // Returns null on failure.
   std::unique_ptr<SessionDescriptionInterface> CreateAnswer() {
-    rtc::scoped_refptr<MockCreateSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockCreateSessionDescriptionObserver>());
+    auto observer =
+        rtc::make_ref_counted<MockCreateSessionDescriptionObserver>();
     pc()->CreateAnswer(observer, offer_answer_options_);
     return WaitForDescriptionFromObserver(observer);
   }
@@ -900,8 +899,7 @@
   // don't outrace the description.
   bool SetLocalDescriptionAndSendSdpMessage(
       std::unique_ptr<SessionDescriptionInterface> desc) {
-    rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+    auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
     RTC_LOG(LS_INFO) << debug_name_ << ": SetLocalDescriptionAndSendSdpMessage";
     SdpType type = desc->GetType();
     std::string sdp;
@@ -917,8 +915,7 @@
   }
 
   bool SetRemoteDescription(std::unique_ptr<SessionDescriptionInterface> desc) {
-    rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-        new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+    auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
     RTC_LOG(LS_INFO) << debug_name_ << ": SetRemoteDescription";
     pc()->SetRemoteDescription(observer, desc.release());
     RemoveUnusedVideoRenderers();
@@ -1322,8 +1319,7 @@
       int component,
       IceTransportInit init) {
     RecordIceTransportCreated();
-    return new rtc::RefCountedObject<MockIceTransport>(transport_name,
-                                                       component);
+    return rtc::make_ref_counted<MockIceTransport>(transport_name, component);
   }
   MOCK_METHOD(void, RecordIceTransportCreated, ());
 };
diff --git a/pc/test/mock_peer_connection_observers.h b/pc/test/mock_peer_connection_observers.h
index e2accb5..1d2bde1 100644
--- a/pc/test/mock_peer_connection_observers.h
+++ b/pc/test/mock_peer_connection_observers.h
@@ -286,7 +286,7 @@
     : public webrtc::SetSessionDescriptionObserver {
  public:
   static rtc::scoped_refptr<MockSetSessionDescriptionObserver> Create() {
-    return new rtc::RefCountedObject<MockSetSessionDescriptionObserver>();
+    return rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   }
 
   MockSetSessionDescriptionObserver()
diff --git a/pc/test/peer_connection_test_wrapper.cc b/pc/test/peer_connection_test_wrapper.cc
index c3ffcb0..d88fe0d 100644
--- a/pc/test/peer_connection_test_wrapper.cc
+++ b/pc/test/peer_connection_test_wrapper.cc
@@ -221,8 +221,7 @@
                    << ": SetLocalDescription " << webrtc::SdpTypeToString(type)
                    << " " << sdp;
 
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   peer_connection_->SetLocalDescription(
       observer, webrtc::CreateSessionDescription(type, sdp).release());
 }
@@ -233,8 +232,7 @@
                    << ": SetRemoteDescription " << webrtc::SdpTypeToString(type)
                    << " " << sdp;
 
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto observer = rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   peer_connection_->SetRemoteDescription(
       observer, webrtc::CreateSessionDescription(type, sdp).release());
 }
@@ -331,9 +329,8 @@
     config.frame_interval_ms = 100;
     config.timestamp_offset_ms = rtc::TimeMillis();
 
-    rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source =
-        new rtc::RefCountedObject<webrtc::FakePeriodicVideoTrackSource>(
-            config, /* remote */ false);
+    auto source = rtc::make_ref_counted<webrtc::FakePeriodicVideoTrackSource>(
+        config, /* remote */ false);
 
     std::string videotrack_label = stream_id + kVideoTrackLabelBase;
     rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
diff --git a/pc/test/rtc_stats_obtainer.h b/pc/test/rtc_stats_obtainer.h
index 335b9de..4da23c6 100644
--- a/pc/test/rtc_stats_obtainer.h
+++ b/pc/test/rtc_stats_obtainer.h
@@ -20,8 +20,7 @@
  public:
   static rtc::scoped_refptr<RTCStatsObtainer> Create(
       rtc::scoped_refptr<const RTCStatsReport>* report_ptr = nullptr) {
-    return rtc::scoped_refptr<RTCStatsObtainer>(
-        new rtc::RefCountedObject<RTCStatsObtainer>(report_ptr));
+    return rtc::make_ref_counted<RTCStatsObtainer>(report_ptr);
   }
 
   void OnStatsDelivered(
diff --git a/pc/track_media_info_map_unittest.cc b/pc/track_media_info_map_unittest.cc
index 0cb1e0e..2a4889a 100644
--- a/pc/track_media_info_map_unittest.cc
+++ b/pc/track_media_info_map_unittest.cc
@@ -52,8 +52,7 @@
   } else {
     first_ssrc = 0;
   }
-  rtc::scoped_refptr<MockRtpSenderInternal> sender(
-      new rtc::RefCountedObject<MockRtpSenderInternal>());
+  auto sender = rtc::make_ref_counted<MockRtpSenderInternal>();
   EXPECT_CALL(*sender, track())
       .WillRepeatedly(::testing::Return(std::move(track)));
   EXPECT_CALL(*sender, ssrc()).WillRepeatedly(::testing::Return(first_ssrc));
@@ -69,8 +68,7 @@
     cricket::MediaType media_type,
     std::initializer_list<uint32_t> ssrcs,
     rtc::scoped_refptr<MediaStreamTrackInterface> track) {
-  rtc::scoped_refptr<MockRtpReceiverInternal> receiver(
-      new rtc::RefCountedObject<MockRtpReceiverInternal>());
+  auto receiver = rtc::make_ref_counted<MockRtpReceiverInternal>();
   EXPECT_CALL(*receiver, track())
       .WillRepeatedly(::testing::Return(std::move(track)));
   EXPECT_CALL(*receiver, media_type())
diff --git a/pc/video_rtp_track_source_unittest.cc b/pc/video_rtp_track_source_unittest.cc
index ea1b4ca..5666b77 100644
--- a/pc/video_rtp_track_source_unittest.cc
+++ b/pc/video_rtp_track_source_unittest.cc
@@ -30,9 +30,7 @@
 
 rtc::scoped_refptr<VideoRtpTrackSource> MakeSource(
     VideoRtpTrackSource::Callback* callback) {
-  rtc::scoped_refptr<VideoRtpTrackSource> source(
-      new rtc::RefCountedObject<VideoRtpTrackSource>(callback));
-  return source;
+  return rtc::make_ref_counted<VideoRtpTrackSource>(callback);
 }
 
 TEST(VideoRtpTrackSourceTest, CreatesWithRemoteAtttributeSet) {
diff --git a/pc/video_track.cc b/pc/video_track.cc
index d67d4f6..b4f511b 100644
--- a/pc/video_track.cc
+++ b/pc/video_track.cc
@@ -95,9 +95,7 @@
     const std::string& id,
     VideoTrackSourceInterface* source,
     rtc::Thread* worker_thread) {
-  rtc::RefCountedObject<VideoTrack>* track =
-      new rtc::RefCountedObject<VideoTrack>(id, source, worker_thread);
-  return track;
+  return rtc::make_ref_counted<VideoTrack>(id, source, worker_thread);
 }
 
 }  // namespace webrtc
diff --git a/pc/video_track_unittest.cc b/pc/video_track_unittest.cc
index f86bec8..ab094ec 100644
--- a/pc/video_track_unittest.cc
+++ b/pc/video_track_unittest.cc
@@ -32,7 +32,7 @@
  public:
   VideoTrackTest() : frame_source_(640, 480, rtc::kNumMicrosecsPerSec / 30) {
     static const char kVideoTrackId[] = "track_id";
-    video_track_source_ = new rtc::RefCountedObject<FakeVideoTrackSource>(
+    video_track_source_ = rtc::make_ref_counted<FakeVideoTrackSource>(
         /*is_screencast=*/false);
     video_track_ = VideoTrack::Create(kVideoTrackId, video_track_source_,
                                       rtc::Thread::Current());
diff --git a/pc/webrtc_session_description_factory.cc b/pc/webrtc_session_description_factory.cc
index 348016d..3382634 100644
--- a/pc/webrtc_session_description_factory.cc
+++ b/pc/webrtc_session_description_factory.cc
@@ -174,8 +174,7 @@
     // Generate certificate.
     certificate_request_state_ = CERTIFICATE_WAITING;
 
-    rtc::scoped_refptr<WebRtcCertificateGeneratorCallback> callback(
-        new rtc::RefCountedObject<WebRtcCertificateGeneratorCallback>());
+    auto callback = rtc::make_ref_counted<WebRtcCertificateGeneratorCallback>();
     callback->SignalRequestFailed.connect(
         this, &WebRtcSessionDescriptionFactory::OnCertificateRequestFailed);
     callback->SignalCertificateReady.connect(
diff --git a/rtc_tools/rtc_event_log_visualizer/analyze_audio.cc b/rtc_tools/rtc_event_log_visualizer/analyze_audio.cc
index becc004..51cc3b9 100644
--- a/rtc_tools/rtc_event_log_visualizer/analyze_audio.cc
+++ b/rtc_tools/rtc_event_log_visualizer/analyze_audio.cc
@@ -314,7 +314,7 @@
   std::unique_ptr<test::VoidAudioSink> output(new test::VoidAudioSink());
 
   rtc::scoped_refptr<AudioDecoderFactory> decoder_factory =
-      new rtc::RefCountedObject<ReplacementAudioDecoderFactory>(
+      rtc::make_ref_counted<ReplacementAudioDecoderFactory>(
           replacement_file_name, file_sample_rate_hz);
 
   test::NetEqTest::DecoderMap codecs = {
diff --git a/rtc_tools/rtp_generator/rtp_generator.cc b/rtc_tools/rtp_generator/rtp_generator.cc
index 21826c8..3180897 100644
--- a/rtc_tools/rtp_generator/rtp_generator.cc
+++ b/rtc_tools/rtp_generator/rtp_generator.cc
@@ -188,15 +188,17 @@
         PayloadStringToCodecType(video_config.rtp.payload_name);
     if (video_config.rtp.payload_name == cricket::kVp8CodecName) {
       VideoCodecVP8 settings = VideoEncoder::GetDefaultVp8Settings();
-      encoder_config.encoder_specific_settings = new rtc::RefCountedObject<
-          VideoEncoderConfig::Vp8EncoderSpecificSettings>(settings);
+      encoder_config.encoder_specific_settings =
+          rtc::make_ref_counted<VideoEncoderConfig::Vp8EncoderSpecificSettings>(
+              settings);
     } else if (video_config.rtp.payload_name == cricket::kVp9CodecName) {
       VideoCodecVP9 settings = VideoEncoder::GetDefaultVp9Settings();
-      encoder_config.encoder_specific_settings = new rtc::RefCountedObject<
-          VideoEncoderConfig::Vp9EncoderSpecificSettings>(settings);
+      encoder_config.encoder_specific_settings =
+          rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
+              settings);
     } else if (video_config.rtp.payload_name == cricket::kH264CodecName) {
       VideoCodecH264 settings = VideoEncoder::GetDefaultH264Settings();
-      encoder_config.encoder_specific_settings = new rtc::RefCountedObject<
+      encoder_config.encoder_specific_settings = rtc::make_ref_counted<
           VideoEncoderConfig::H264EncoderSpecificSettings>(settings);
     }
     encoder_config.video_format.name = video_config.rtp.payload_name;
@@ -217,7 +219,7 @@
     }
 
     encoder_config.video_stream_factory =
-        new rtc::RefCountedObject<cricket::EncoderStreamFactory>(
+        rtc::make_ref_counted<cricket::EncoderStreamFactory>(
             video_config.rtp.payload_name, /*max qp*/ 56, /*screencast*/ false,
             /*screenshare enabled*/ false);
 
diff --git a/rtc_tools/video_file_reader.cc b/rtc_tools/video_file_reader.cc
index b01fc0f..bfdcba4 100644
--- a/rtc_tools/video_file_reader.cc
+++ b/rtc_tools/video_file_reader.cc
@@ -224,8 +224,8 @@
   }
   RTC_LOG(LS_INFO) << "Video has " << frame_positions.size() << " frames";
 
-  return new rtc::RefCountedObject<VideoFile>(*width, *height, frame_positions,
-                                              file);
+  return rtc::make_ref_counted<VideoFile>(*width, *height, frame_positions,
+                                          file);
 }
 
 rtc::scoped_refptr<Video> OpenYuvFile(const std::string& file_name,
@@ -266,8 +266,7 @@
   }
   RTC_LOG(LS_INFO) << "Video has " << frame_positions.size() << " frames";
 
-  return new rtc::RefCountedObject<VideoFile>(width, height, frame_positions,
-                                              file);
+  return rtc::make_ref_counted<VideoFile>(width, height, frame_positions, file);
 }
 
 rtc::scoped_refptr<Video> OpenYuvOrY4mFile(const std::string& file_name,
diff --git a/sdk/android/native_api/video/video_source.cc b/sdk/android/native_api/video/video_source.cc
index 56a5672..4f1409e 100644
--- a/sdk/android/native_api/video/video_source.cc
+++ b/sdk/android/native_api/video/video_source.cc
@@ -29,7 +29,7 @@
                            bool is_screencast,
                            bool align_timestamps)
       : android_video_track_source_(
-            new rtc::RefCountedObject<jni::AndroidVideoTrackSource>(
+            rtc::make_ref_counted<jni::AndroidVideoTrackSource>(
                 signaling_thread,
                 env,
                 is_screencast,
@@ -109,7 +109,7 @@
     rtc::Thread* signaling_thread,
     bool is_screencast,
     bool align_timestamps) {
-  return new rtc::RefCountedObject<JavaVideoTrackSourceImpl>(
+  return rtc::make_ref_counted<JavaVideoTrackSourceImpl>(
       jni, signaling_thread, is_screencast, align_timestamps);
 }
 
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 74a0db0..4c9c36b 100644
--- a/sdk/android/src/jni/audio_device/audio_device_module.cc
+++ b/sdk/android/src/jni/audio_device/audio_device_module.cc
@@ -641,7 +641,7 @@
     std::unique_ptr<AudioInput> audio_input,
     std::unique_ptr<AudioOutput> audio_output) {
   RTC_DLOG(INFO) << __FUNCTION__;
-  return new rtc::RefCountedObject<AndroidAudioDeviceModule>(
+  return rtc::make_ref_counted<AndroidAudioDeviceModule>(
       audio_layer, is_stereo_playout_supported, is_stereo_record_supported,
       playout_delay_ms, std::move(audio_input), std::move(audio_output));
 }
diff --git a/sdk/android/src/jni/encoded_image.cc b/sdk/android/src/jni/encoded_image.cc
index 839f6a8..189d7e9 100644
--- a/sdk/android/src/jni/encoded_image.cc
+++ b/sdk/android/src/jni/encoded_image.cc
@@ -90,7 +90,7 @@
   const size_t buffer_size = env->GetDirectBufferCapacity(j_buffer.obj());
 
   EncodedImage frame;
-  frame.SetEncodedData(new rtc::RefCountedObject<JavaEncodedImageBuffer>(
+  frame.SetEncodedData(rtc::make_ref_counted<JavaEncodedImageBuffer>(
       env, j_encoded_image, buffer, buffer_size));
 
   frame._encodedWidth = Java_EncodedImage_getEncodedWidth(env, j_encoded_image);
diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc
index 35f6ad5..93c6eb3 100644
--- a/sdk/android/src/jni/pc/peer_connection.cc
+++ b/sdk/android/src/jni/pc/peer_connection.cc
@@ -551,9 +551,8 @@
     const JavaParamRef<jobject>& j_constraints) {
   std::unique_ptr<MediaConstraints> constraints =
       JavaToNativeMediaConstraints(jni, j_constraints);
-  rtc::scoped_refptr<CreateSdpObserverJni> observer(
-      new rtc::RefCountedObject<CreateSdpObserverJni>(jni, j_observer,
-                                                      std::move(constraints)));
+  auto observer = rtc::make_ref_counted<CreateSdpObserverJni>(
+      jni, j_observer, std::move(constraints));
   PeerConnectionInterface::RTCOfferAnswerOptions options;
   CopyConstraintsIntoOfferAnswerOptions(observer->constraints(), &options);
   ExtractNativePC(jni, j_pc)->CreateOffer(observer, options);
@@ -566,9 +565,8 @@
     const JavaParamRef<jobject>& j_constraints) {
   std::unique_ptr<MediaConstraints> constraints =
       JavaToNativeMediaConstraints(jni, j_constraints);
-  rtc::scoped_refptr<CreateSdpObserverJni> observer(
-      new rtc::RefCountedObject<CreateSdpObserverJni>(jni, j_observer,
-                                                      std::move(constraints)));
+  auto observer = rtc::make_ref_counted<CreateSdpObserverJni>(
+      jni, j_observer, std::move(constraints));
   PeerConnectionInterface::RTCOfferAnswerOptions options;
   CopyConstraintsIntoOfferAnswerOptions(observer->constraints(), &options);
   ExtractNativePC(jni, j_pc)->CreateAnswer(observer, options);
@@ -578,8 +576,8 @@
     JNIEnv* jni,
     const JavaParamRef<jobject>& j_pc,
     const JavaParamRef<jobject>& j_observer) {
-  rtc::scoped_refptr<SetLocalSdpObserverJni> observer(
-      new rtc::RefCountedObject<SetLocalSdpObserverJni>(jni, j_observer));
+  auto observer =
+      rtc::make_ref_counted<SetLocalSdpObserverJni>(jni, j_observer);
   ExtractNativePC(jni, j_pc)->SetLocalDescription(observer);
 }
 
@@ -588,8 +586,8 @@
     const JavaParamRef<jobject>& j_pc,
     const JavaParamRef<jobject>& j_observer,
     const JavaParamRef<jobject>& j_sdp) {
-  rtc::scoped_refptr<SetLocalSdpObserverJni> observer(
-      new rtc::RefCountedObject<SetLocalSdpObserverJni>(jni, j_observer));
+  auto observer =
+      rtc::make_ref_counted<SetLocalSdpObserverJni>(jni, j_observer);
   ExtractNativePC(jni, j_pc)->SetLocalDescription(
       JavaToNativeSessionDescription(jni, j_sdp), observer);
 }
@@ -599,8 +597,8 @@
     const JavaParamRef<jobject>& j_pc,
     const JavaParamRef<jobject>& j_observer,
     const JavaParamRef<jobject>& j_sdp) {
-  rtc::scoped_refptr<SetRemoteSdpObserverJni> observer(
-      new rtc::RefCountedObject<SetRemoteSdpObserverJni>(jni, j_observer));
+  auto observer =
+      rtc::make_ref_counted<SetRemoteSdpObserverJni>(jni, j_observer);
   ExtractNativePC(jni, j_pc)->SetRemoteDescription(
       JavaToNativeSessionDescription(jni, j_sdp), observer);
 }
@@ -799,8 +797,7 @@
     const JavaParamRef<jobject>& j_pc,
     const JavaParamRef<jobject>& j_observer,
     jlong native_track) {
-  rtc::scoped_refptr<StatsObserverJni> observer(
-      new rtc::RefCountedObject<StatsObserverJni>(jni, j_observer));
+  auto observer = rtc::make_ref_counted<StatsObserverJni>(jni, j_observer);
   return ExtractNativePC(jni, j_pc)->GetStats(
       observer, reinterpret_cast<MediaStreamTrackInterface*>(native_track),
       PeerConnectionInterface::kStatsOutputLevelStandard);
@@ -810,9 +807,8 @@
     JNIEnv* jni,
     const JavaParamRef<jobject>& j_pc,
     const JavaParamRef<jobject>& j_callback) {
-  rtc::scoped_refptr<RTCStatsCollectorCallbackWrapper> callback(
-      new rtc::RefCountedObject<RTCStatsCollectorCallbackWrapper>(jni,
-                                                                  j_callback));
+  auto callback =
+      rtc::make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
   ExtractNativePC(jni, j_pc)->GetStats(callback);
 }
 
diff --git a/sdk/android/src/jni/pc/video.cc b/sdk/android/src/jni/pc/video.cc
index 513a005..ee5ecbe 100644
--- a/sdk/android/src/jni/pc/video.cc
+++ b/sdk/android/src/jni/pc/video.cc
@@ -46,9 +46,8 @@
                         rtc::Thread* worker_thread,
                         jboolean is_screencast,
                         jboolean align_timestamps) {
-  rtc::scoped_refptr<AndroidVideoTrackSource> source(
-      new rtc::RefCountedObject<AndroidVideoTrackSource>(
-          signaling_thread, env, is_screencast, align_timestamps));
+  auto source = rtc::make_ref_counted<AndroidVideoTrackSource>(
+      signaling_thread, env, is_screencast, align_timestamps);
   return source.release();
 }
 
diff --git a/sdk/android/src/jni/video_frame.cc b/sdk/android/src/jni/video_frame.cc
index c92561a..dd3562f 100644
--- a/sdk/android/src/jni/video_frame.cc
+++ b/sdk/android/src/jni/video_frame.cc
@@ -77,8 +77,8 @@
     int width,
     int height,
     const JavaRef<jobject>& j_video_frame_buffer) {
-  return new rtc::RefCountedObject<AndroidVideoI420Buffer>(
-      jni, width, height, j_video_frame_buffer);
+  return rtc::make_ref_counted<AndroidVideoI420Buffer>(jni, width, height,
+                                                       j_video_frame_buffer);
 }
 
 AndroidVideoI420Buffer::AndroidVideoI420Buffer(
@@ -123,8 +123,7 @@
 rtc::scoped_refptr<AndroidVideoBuffer> AndroidVideoBuffer::Adopt(
     JNIEnv* jni,
     const JavaRef<jobject>& j_video_frame_buffer) {
-  return new rtc::RefCountedObject<AndroidVideoBuffer>(jni,
-                                                       j_video_frame_buffer);
+  return rtc::make_ref_counted<AndroidVideoBuffer>(jni, j_video_frame_buffer);
 }
 
 rtc::scoped_refptr<AndroidVideoBuffer> AndroidVideoBuffer::Create(
diff --git a/test/encoder_settings.cc b/test/encoder_settings.cc
index 1248d8f..c825188 100644
--- a/test/encoder_settings.cc
+++ b/test/encoder_settings.cc
@@ -120,7 +120,7 @@
   configuration->codec_type = codec_type;
   configuration->number_of_streams = num_streams;
   configuration->video_stream_factory =
-      new rtc::RefCountedObject<DefaultVideoStreamFactory>();
+      rtc::make_ref_counted<DefaultVideoStreamFactory>();
   configuration->max_bitrate_bps = 0;
   configuration->simulcast_layers = std::vector<VideoStream>(num_streams);
   for (size_t i = 0; i < num_streams; ++i) {
diff --git a/test/fake_texture_frame.cc b/test/fake_texture_frame.cc
index 4fa5e9d..3f15518 100644
--- a/test/fake_texture_frame.cc
+++ b/test/fake_texture_frame.cc
@@ -23,7 +23,7 @@
                                          VideoRotation rotation) {
   return VideoFrame::Builder()
       .set_video_frame_buffer(
-          new rtc::RefCountedObject<FakeNativeBuffer>(width, height))
+          rtc::make_ref_counted<FakeNativeBuffer>(width, height))
       .set_timestamp_rtp(timestamp)
       .set_timestamp_ms(render_time_ms)
       .set_rotation(rotation)
diff --git a/test/fuzzers/sdp_integration_fuzzer.cc b/test/fuzzers/sdp_integration_fuzzer.cc
index dba0972..bc181f0 100644
--- a/test/fuzzers/sdp_integration_fuzzer.cc
+++ b/test/fuzzers/sdp_integration_fuzzer.cc
@@ -34,8 +34,8 @@
   // Note - we do not do test.ConnectFakeSignaling(); all signals
   // generated are discarded.
 
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> srd_observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto srd_observer =
+      rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
 
   webrtc::SdpParseError error;
   std::unique_ptr<webrtc::SessionDescriptionInterface> sdp(
@@ -47,8 +47,8 @@
   EXPECT_TRUE_WAIT(srd_observer->called(), 100);
 
   // If set-remote-description was successful, try to answer.
-  rtc::scoped_refptr<MockSetSessionDescriptionObserver> sld_observer(
-      new rtc::RefCountedObject<MockSetSessionDescriptionObserver>());
+  auto sld_observer =
+      rtc::make_ref_counted<MockSetSessionDescriptionObserver>();
   if (srd_observer->result()) {
     test.caller()->pc()->SetLocalDescription(sld_observer.get());
     EXPECT_TRUE_WAIT(sld_observer->called(), 100);
diff --git a/test/mappable_native_buffer.cc b/test/mappable_native_buffer.cc
index cff58ff..bd0b304 100644
--- a/test/mappable_native_buffer.cc
+++ b/test/mappable_native_buffer.cc
@@ -45,14 +45,14 @@
                                      VideoFrameBuffer::Type mappable_type,
                                      int width,
                                      int height) {
-  VideoFrame frame = VideoFrame::Builder()
-                         .set_video_frame_buffer(
-                             new rtc::RefCountedObject<MappableNativeBuffer>(
-                                 mappable_type, width, height))
-                         .set_timestamp_rtp(99)
-                         .set_timestamp_ms(99)
-                         .set_rotation(kVideoRotation_0)
-                         .build();
+  VideoFrame frame =
+      VideoFrame::Builder()
+          .set_video_frame_buffer(rtc::make_ref_counted<MappableNativeBuffer>(
+              mappable_type, width, height))
+          .set_timestamp_rtp(99)
+          .set_timestamp_ms(99)
+          .set_rotation(kVideoRotation_0)
+          .build();
   frame.set_ntp_time_ms(ntp_time_ms);
   return frame;
 }
@@ -77,9 +77,8 @@
                                                  int crop_height,
                                                  int scaled_width,
                                                  int scaled_height) {
-  return rtc::scoped_refptr<VideoFrameBuffer>(
-      new rtc::RefCountedObject<ScaledBuffer>(parent_, scaled_width,
-                                              scaled_height));
+  return rtc::make_ref_counted<ScaledBuffer>(parent_, scaled_width,
+                                             scaled_height);
 }
 
 rtc::scoped_refptr<I420BufferInterface>
@@ -146,8 +145,7 @@
 
 rtc::scoped_refptr<MappableNativeBuffer::ScaledBuffer>
 MappableNativeBuffer::FullSizeBuffer() {
-  return rtc::scoped_refptr<MappableNativeBuffer::ScaledBuffer>(
-      new rtc::RefCountedObject<ScaledBuffer>(this, width_, height_));
+  return rtc::make_ref_counted<ScaledBuffer>(this, width_, height_);
 }
 
 rtc::scoped_refptr<VideoFrameBuffer>
@@ -168,11 +166,10 @@
       break;
     }
     case VideoFrameBuffer::Type::kNV12: {
-      rtc::scoped_refptr<NV12Buffer> nv12_buffer;
-      nv12_buffer = new rtc::RefCountedObject<NV12BufferWithDidConvertToI420>(
-          width, height);
+      auto nv12_buffer =
+          rtc::make_ref_counted<NV12BufferWithDidConvertToI420>(width, height);
       nv12_buffer->InitializeData();
-      mapped_buffer = nv12_buffer;
+      mapped_buffer = std::move(nv12_buffer);
       break;
     }
     default:
diff --git a/test/mock_audio_decoder_factory.h b/test/mock_audio_decoder_factory.h
index cdb03d3..4d3eed2 100644
--- a/test/mock_audio_decoder_factory.h
+++ b/test/mock_audio_decoder_factory.h
@@ -52,7 +52,7 @@
     using ::testing::Return;
 
     rtc::scoped_refptr<webrtc::MockAudioDecoderFactory> factory =
-        new rtc::RefCountedObject<webrtc::MockAudioDecoderFactory>;
+        rtc::make_ref_counted<webrtc::MockAudioDecoderFactory>();
     ON_CALL(*factory.get(), GetSupportedDecoders())
         .WillByDefault(Return(std::vector<webrtc::AudioCodecSpec>()));
     EXPECT_CALL(*factory.get(), GetSupportedDecoders()).Times(AnyNumber());
@@ -73,7 +73,7 @@
     using ::testing::SetArgPointee;
 
     rtc::scoped_refptr<webrtc::MockAudioDecoderFactory> factory =
-        new rtc::RefCountedObject<webrtc::MockAudioDecoderFactory>;
+        rtc::make_ref_counted<webrtc::MockAudioDecoderFactory>();
     ON_CALL(*factory.get(), GetSupportedDecoders())
         .WillByDefault(Return(std::vector<webrtc::AudioCodecSpec>()));
     EXPECT_CALL(*factory.get(), GetSupportedDecoders()).Times(AnyNumber());
diff --git a/test/pc/e2e/media/media_helper.cc b/test/pc/e2e/media/media_helper.cc
index d1c2783..6b1996a 100644
--- a/test/pc/e2e/media/media_helper.cc
+++ b/test/pc/e2e/media/media_helper.cc
@@ -64,7 +64,7 @@
         video_config.content_hint ==
             VideoTrackInterface::ContentHint::kDetailed;
     rtc::scoped_refptr<TestVideoCapturerVideoTrackSource> source =
-        new rtc::RefCountedObject<TestVideoCapturerVideoTrackSource>(
+        rtc::make_ref_counted<TestVideoCapturerVideoTrackSource>(
             std::move(capturer), is_screencast);
     out.push_back(source);
     RTC_LOG(INFO) << "Adding video with video_config.stream_label="
diff --git a/test/pc/e2e/stats_poller.cc b/test/pc/e2e/stats_poller.cc
index e6973e6..5f1424c 100644
--- a/test/pc/e2e/stats_poller.cc
+++ b/test/pc/e2e/stats_poller.cc
@@ -31,7 +31,7 @@
 StatsPoller::StatsPoller(std::vector<StatsObserverInterface*> observers,
                          std::map<std::string, TestPeer*> peers) {
   for (auto& peer : peers) {
-    pollers_.push_back(new rtc::RefCountedObject<InternalStatsObserver>(
+    pollers_.push_back(rtc::make_ref_counted<InternalStatsObserver>(
         peer.first, peer.second, observers));
   }
 }
diff --git a/test/scenario/video_stream.cc b/test/scenario/video_stream.cc
index 5525a9d..709f0b7 100644
--- a/test/scenario/video_stream.cc
+++ b/test/scenario/video_stream.cc
@@ -175,8 +175,8 @@
     vp9.automaticResizeOn = conf.single.automatic_scaling;
     vp9.denoisingOn = conf.single.denoising;
   }
-  return new rtc::RefCountedObject<
-      VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9);
+  return rtc::make_ref_counted<VideoEncoderConfig::Vp9EncoderSpecificSettings>(
+      vp9);
 }
 
 rtc::scoped_refptr<VideoEncoderConfig::EncoderSpecificSettings>
@@ -192,8 +192,8 @@
     vp8_settings.automaticResizeOn = config.encoder.single.automatic_scaling;
     vp8_settings.denoisingOn = config.encoder.single.denoising;
   }
-  return new rtc::RefCountedObject<
-      VideoEncoderConfig::Vp8EncoderSpecificSettings>(vp8_settings);
+  return rtc::make_ref_counted<VideoEncoderConfig::Vp8EncoderSpecificSettings>(
+      vp8_settings);
 }
 
 rtc::scoped_refptr<VideoEncoderConfig::EncoderSpecificSettings>
@@ -205,8 +205,8 @@
   h264_settings.frameDroppingOn = config.encoder.frame_dropping;
   h264_settings.keyFrameInterval =
       config.encoder.key_frame_interval.value_or(0);
-  return new rtc::RefCountedObject<
-      VideoEncoderConfig::H264EncoderSpecificSettings>(h264_settings);
+  return rtc::make_ref_counted<VideoEncoderConfig::H264EncoderSpecificSettings>(
+      h264_settings);
 }
 
 rtc::scoped_refptr<VideoEncoderConfig::EncoderSpecificSettings>
@@ -248,11 +248,11 @@
     bool screenshare = config.encoder.content_type ==
                        VideoStreamConfig::Encoder::ContentType::kScreen;
     encoder_config.video_stream_factory =
-        new rtc::RefCountedObject<cricket::EncoderStreamFactory>(
+        rtc::make_ref_counted<cricket::EncoderStreamFactory>(
             cricket_codec, kDefaultMaxQp, screenshare, screenshare);
   } else {
     encoder_config.video_stream_factory =
-        new rtc::RefCountedObject<DefaultVideoStreamFactory>();
+        rtc::make_ref_counted<DefaultVideoStreamFactory>();
   }
 
   // TODO(srte): Base this on encoder capabilities.