Remove deprecated AudioProcessing::GetStatistics function

Additionally, AudioProcessing::GetStatistics(bool) is made pure
virtual and the default implementation in AudioProcessing is removed.

Deprecation PSA:
https://groups.google.com/forum/#!msg/discuss-webrtc/NgqEPvkNuDE/7HtwnMmADgAJ

Bug: webrtc:9947, webrtc:8572
Change-Id: I123402bf7d6c49f3613154c469b818109d8fad43
Reviewed-on: https://webrtc-review.googlesource.com/c/108783
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25463}
diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h
index e428516..bd4a18e 100644
--- a/modules/audio_processing/include/audio_processing.h
+++ b/modules/audio_processing/include/audio_processing.h
@@ -520,78 +520,12 @@
   // specific member variables are reset.
   virtual void UpdateHistogramsOnCallEnd() = 0;
 
-  // TODO(ivoc): Remove when the calling code no longer uses the old Statistics
-  //             API.
-  struct Statistic {
-    int instant = 0;  // Instantaneous value.
-    int average = 0;  // Long-term average.
-    int maximum = 0;  // Long-term maximum.
-    int minimum = 0;  // Long-term minimum.
-  };
-
-  struct Stat {
-    void Set(const Statistic& other) {
-      Set(other.instant, other.average, other.maximum, other.minimum);
-    }
-    void Set(float instant, float average, float maximum, float minimum) {
-      instant_ = instant;
-      average_ = average;
-      maximum_ = maximum;
-      minimum_ = minimum;
-    }
-    float instant() const { return instant_; }
-    float average() const { return average_; }
-    float maximum() const { return maximum_; }
-    float minimum() const { return minimum_; }
-
-   private:
-    float instant_ = 0.0f;  // Instantaneous value.
-    float average_ = 0.0f;  // Long-term average.
-    float maximum_ = 0.0f;  // Long-term maximum.
-    float minimum_ = 0.0f;  // Long-term minimum.
-  };
-
-  struct RTC_EXPORT AudioProcessingStatistics {
-    AudioProcessingStatistics();
-    AudioProcessingStatistics(const AudioProcessingStatistics& other);
-    ~AudioProcessingStatistics();
-
-    // AEC Statistics.
-    // RERL = ERL + ERLE
-    Stat residual_echo_return_loss;
-    // ERL = 10log_10(P_far / P_echo)
-    Stat echo_return_loss;
-    // ERLE = 10log_10(P_echo / P_out)
-    Stat echo_return_loss_enhancement;
-    // (Pre non-linear processing suppression) A_NLP = 10log_10(P_echo / P_a)
-    Stat a_nlp;
-    // Fraction of time that the AEC linear filter is divergent, in a 1-second
-    // non-overlapped aggregation window.
-    float divergent_filter_fraction = -1.0f;
-
-    // The delay metrics consists of the delay median and standard deviation. It
-    // also consists of the fraction of delay estimates that can make the echo
-    // cancellation perform poorly. The values are aggregated until the first
-    // call to |GetStatistics()| and afterwards aggregated and updated every
-    // second. Note that if there are several clients pulling metrics from
-    // |GetStatistics()| during a session the first call from any of them will
-    // change to one second aggregation window for all.
-    int delay_median = -1;
-    int delay_standard_deviation = -1;
-    float fraction_poor_delays = -1.0f;
-
-    // Residual echo detector likelihood.
-    float residual_echo_likelihood = -1.0f;
-    // Maximum residual echo likelihood from the last time period.
-    float residual_echo_likelihood_recent_max = -1.0f;
-  };
-
-  // TODO(ivoc): Make this pure virtual when all subclasses have been updated.
-  virtual AudioProcessingStatistics GetStatistics() const;
-
-  // This returns the stats as optionals and it will replace the regular
-  // GetStatistics.
-  virtual AudioProcessingStats GetStatistics(bool has_remote_tracks) const;
+  // Get audio processing statistics. The |has_remote_tracks| argument should be
+  // set if there are active remote tracks (this would usually be true during
+  // a call). If there are no remote tracks some of the stats will not be set by
+  // AudioProcessing, because they only make sense if there is at least one
+  // remote track.
+  virtual AudioProcessingStats GetStatistics(bool has_remote_tracks) const = 0;
 
   // These provide access to the component interfaces and should never return
   // NULL. The pointers will be valid for the lifetime of the APM instance.