Simplified the usage of the render buffer in AEC3

Bug: webrtc:8671
Change-Id: I4af397e9f208685e4ffec2a5f92501e0d2605c42
Reviewed-on: https://webrtc-review.googlesource.com/35060
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21386}
diff --git a/modules/audio_processing/aec3/render_buffer.h b/modules/audio_processing/aec3/render_buffer.h
index 507c082..db94e74 100644
--- a/modules/audio_processing/aec3/render_buffer.h
+++ b/modules/audio_processing/aec3/render_buffer.h
@@ -26,48 +26,45 @@
 // Provides a buffer of the render data for the echo remover.
 class RenderBuffer {
  public:
-  RenderBuffer(size_t num_ffts_for_spectral_sums,
-               MatrixBuffer* block_buffer,
+  RenderBuffer(MatrixBuffer* block_buffer,
                VectorBuffer* spectrum_buffer,
                FftBuffer* fft_buffer);
   ~RenderBuffer();
 
-  // Clears the buffer.
-  void Clear();
-
-  // Insert a block into the buffer.
-  void UpdateSpectralSum();
-
-  // Gets the last inserted block.
-  const std::vector<std::vector<float>>& MostRecentBlock() const {
-    return block_buffer_->buffer[block_buffer_->read];
+  // Get a block.
+  const std::vector<std::vector<float>>& Block(int buffer_offset_blocks) const {
+    int position =
+        block_buffer_->OffsetIndex(block_buffer_->read, buffer_offset_blocks);
+    return block_buffer_->buffer[position];
   }
 
   // Get the spectrum from one of the FFTs in the buffer.
-  rtc::ArrayView<const float> Spectrum(size_t buffer_offset_ffts) const {
-    size_t position = spectrum_buffer_->OffsetIndex(spectrum_buffer_->read,
-                                                    buffer_offset_ffts);
+  rtc::ArrayView<const float> Spectrum(int buffer_offset_ffts) const {
+    int position = spectrum_buffer_->OffsetIndex(spectrum_buffer_->read,
+                                                 buffer_offset_ffts);
     return spectrum_buffer_->buffer[position];
   }
 
-  // Returns the sum of the spectrums for a certain number of FFTs.
-  rtc::ArrayView<const float> SpectralSum(size_t num_ffts) const {
-    RTC_DCHECK_EQ(spectral_sums_length_, num_ffts);
-    return spectral_sums_;
+  // Returns the circular fft buffer.
+  rtc::ArrayView<const FftData> GetFftBuffer() const {
+    return fft_buffer_->buffer;
   }
 
-  // Returns the circular buffer.
-  rtc::ArrayView<const FftData> Buffer() const { return fft_buffer_->buffer; }
-
   // Returns the current position in the circular buffer.
-  size_t Position() const { return fft_buffer_->read; }
+  size_t Position() const {
+    RTC_DCHECK_EQ(spectrum_buffer_->read, fft_buffer_->read);
+    RTC_DCHECK_EQ(spectrum_buffer_->write, fft_buffer_->write);
+    return fft_buffer_->read;
+  }
+
+  // Returns the sum of the spectrums for a certain number of FFTs.
+  void SpectralSum(size_t num_spectra,
+                   std::array<float, kFftLengthBy2Plus1>* X2) const;
 
  private:
   const MatrixBuffer* const block_buffer_;
   const VectorBuffer* const spectrum_buffer_;
   const FftBuffer* const fft_buffer_;
-  const size_t spectral_sums_length_;
-  std::array<float, kFftLengthBy2Plus1> spectral_sums_;
   RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RenderBuffer);
 };