Change echo detector to scoped_refptr

The echo detector is currently stored as a unique_ptr, but when injecting an echo detector, a scoped_refptr makes more sense since the ownership will be shared.

Bug: webrtc:8732
Change-Id: I2180014acb84f1cd5c361864a444b7b6574520f5
Reviewed-on: https://webrtc-review.googlesource.com/83325
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23610}
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index 6d46490..0443c11 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -285,7 +285,7 @@
   ApmPrivateSubmodules(NonlinearBeamformer* beamformer,
                        std::unique_ptr<CustomProcessing> capture_post_processor,
                        std::unique_ptr<CustomProcessing> render_pre_processor,
-                       std::unique_ptr<EchoDetector> echo_detector)
+                       rtc::scoped_refptr<EchoDetector> echo_detector)
       : beamformer(beamformer),
         echo_detector(std::move(echo_detector)),
         capture_post_processor(std::move(capture_post_processor)),
@@ -295,7 +295,7 @@
   std::unique_ptr<AgcManagerDirect> agc_manager;
   std::unique_ptr<GainController2> gain_controller2;
   std::unique_ptr<LowCutFilter> low_cut_filter;
-  std::unique_ptr<EchoDetector> echo_detector;
+  rtc::scoped_refptr<EchoDetector> echo_detector;
   std::unique_ptr<EchoControl> echo_controller;
   std::unique_ptr<CustomProcessing> capture_post_processor;
   std::unique_ptr<CustomProcessing> render_pre_processor;
@@ -330,7 +330,7 @@
 }
 
 AudioProcessingBuilder& AudioProcessingBuilder::SetEchoDetector(
-    std::unique_ptr<EchoDetector> echo_detector) {
+    rtc::scoped_refptr<EchoDetector> echo_detector) {
   echo_detector_ = std::move(echo_detector);
   return *this;
 }
@@ -363,7 +363,7 @@
     std::unique_ptr<CustomProcessing> capture_post_processor,
     std::unique_ptr<CustomProcessing> render_pre_processor,
     std::unique_ptr<EchoControlFactory> echo_control_factory,
-    std::unique_ptr<EchoDetector> echo_detector,
+    rtc::scoped_refptr<EchoDetector> echo_detector,
     NonlinearBeamformer* beamformer)
     : data_dumper_(
           new ApmDataDumper(rtc::AtomicOps::Increment(&instance_count_))),
@@ -422,7 +422,8 @@
 
     // If no echo detector is injected, use the ResidualEchoDetector.
     if (!private_submodules_->echo_detector) {
-      private_submodules_->echo_detector.reset(new ResidualEchoDetector());
+      private_submodules_->echo_detector =
+          new rtc::RefCountedObject<ResidualEchoDetector>();
     }
 
     // TODO(alessiob): Move the injected gain controller once injection is