Introduce injectable NetEqController interface.

This interface is implemented by the DecisionLogic class, which now contains the DelayManager and DelayPeakDetector.

Bug: webrtc:11005
Change-Id: I4fb69fa359e60831cf153e41f101d5b623749380
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155176
Reviewed-by: Minyue Li <minyue@webrtc.org>
Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org>
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29613}
diff --git a/modules/audio_coding/neteq/delay_manager_unittest.cc b/modules/audio_coding/neteq/delay_manager_unittest.cc
index c691fd5..7abc3fb 100644
--- a/modules/audio_coding/neteq/delay_manager_unittest.cc
+++ b/modules/audio_coding/neteq/delay_manager_unittest.cc
@@ -50,7 +50,7 @@
   virtual void TearDown();
   void RecreateDelayManager();
   void SetPacketAudioLength(int lengt_ms);
-  void InsertNextPacket();
+  absl::optional<int> InsertNextPacket();
   void IncreaseTime(int inc_ms);
 
   std::unique_ptr<DelayManager> dm_;
@@ -84,11 +84,10 @@
     dm_ = std::make_unique<DelayManager>(
         kMaxNumberOfPackets, kMinDelayMs, kDefaultHistogramQuantile,
         histogram_mode_, enable_rtx_handling_, &detector_, &tick_timer_,
-        &stats_, std::move(histogram));
+        std::move(histogram));
   } else {
     dm_ = DelayManager::Create(kMaxNumberOfPackets, kMinDelayMs,
-                               enable_rtx_handling_, &detector_, &tick_timer_,
-                               &stats_);
+                               enable_rtx_handling_, &detector_, &tick_timer_);
   }
 }
 
@@ -97,10 +96,11 @@
   dm_->SetPacketAudioLength(lengt_ms);
 }
 
-void DelayManagerTest::InsertNextPacket() {
-  EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
+absl::optional<int> DelayManagerTest::InsertNextPacket() {
+  auto relative_delay = dm_->Update(seq_no_, ts_, kFs);
   seq_no_ += 1;
   ts_ += kTsIncrement;
+  return relative_delay;
 }
 
 void DelayManagerTest::IncreaseTime(int inc_ms) {
@@ -416,11 +416,11 @@
 
   // Insert reordered packet.
   EXPECT_CALL(*mock_histogram_, Add(2));
-  EXPECT_EQ(0, dm_->Update(seq_no_ - 3, ts_ - 3 * kFrameSizeMs, kFs));
+  dm_->Update(seq_no_ - 3, ts_ - 3 * kFrameSizeMs, kFs);
 
   // Insert another reordered packet.
   EXPECT_CALL(*mock_histogram_, Add(1));
-  EXPECT_EQ(0, dm_->Update(seq_no_ - 2, ts_ - 2 * kFrameSizeMs, kFs));
+  dm_->Update(seq_no_ - 2, ts_ - 2 * kFrameSizeMs, kFs);
 
   // Insert the next packet in order and verify that the inter-arrival time is
   // estimated correctly.
@@ -475,7 +475,7 @@
 
 TEST_F(DelayManagerTest, Failures) {
   // Wrong sample rate.
-  EXPECT_EQ(-1, dm_->Update(0, 0, -1));
+  EXPECT_EQ(absl::nullopt, dm_->Update(0, 0, -1));
   // Wrong packet size.
   EXPECT_EQ(-1, dm_->SetPacketAudioLength(0));
   EXPECT_EQ(-1, dm_->SetPacketAudioLength(-1));
@@ -550,14 +550,14 @@
 
   IncreaseTime(2 * kFrameSizeMs);
   EXPECT_CALL(*mock_histogram_, Add(1));  // 20ms delayed.
-  EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
+  dm_->Update(seq_no_, ts_, kFs);
 
   IncreaseTime(2 * kFrameSizeMs);
   EXPECT_CALL(*mock_histogram_, Add(2));  // 40ms delayed.
-  EXPECT_EQ(0, dm_->Update(seq_no_ + 1, ts_ + kTsIncrement, kFs));
+  dm_->Update(seq_no_ + 1, ts_ + kTsIncrement, kFs);
 
   EXPECT_CALL(*mock_histogram_, Add(1));  // Reordered, 20ms delayed.
-  EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
+  dm_->Update(seq_no_, ts_, kFs);
 }
 
 TEST_F(DelayManagerTest, MaxDelayHistory) {
@@ -579,20 +579,17 @@
   IncreaseTime(kMaxHistoryMs + kFrameSizeMs);
   ts_ += kFs * kMaxHistoryMs / 1000;
   EXPECT_CALL(*mock_histogram_, Add(0));  // Not delayed.
-  EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
+  dm_->Update(seq_no_, ts_, kFs);
 }
 
 TEST_F(DelayManagerTest, RelativeArrivalDelayStatistic) {
   SetPacketAudioLength(kFrameSizeMs);
-  InsertNextPacket();
-
+  EXPECT_EQ(absl::nullopt, InsertNextPacket());
   IncreaseTime(kFrameSizeMs);
-  EXPECT_CALL(stats_, RelativePacketArrivalDelay(0));
-  InsertNextPacket();
-
+  EXPECT_EQ(0, InsertNextPacket());
   IncreaseTime(2 * kFrameSizeMs);
-  EXPECT_CALL(stats_, RelativePacketArrivalDelay(20));
-  InsertNextPacket();
+
+  EXPECT_EQ(20, InsertNextPacket());
 }
 
 TEST_F(DelayManagerTest, DecelerationTargetLevelOffset) {