diff --git a/AUTHORS b/AUTHORS
index 68653f4..1a000c1 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -138,6 +138,7 @@
 Highfive, Inc. <*@highfive.com>
 HyperConnect Inc. <*@hpcnt.com>
 Intel Corporation <*@intel.com>
+LG Electronics, Inc. <*@lge.com>
 Life On Air Inc. <*@lifeonair.com>
 Microsoft Corporation <*@microsoft.com>
 MIPS Technologies <*@mips.com>
diff --git a/modules/audio_processing/aec3/aec_state.cc b/modules/audio_processing/aec3/aec_state.cc
index 11f0a13..92cf3e2 100644
--- a/modules/audio_processing/aec3/aec_state.cc
+++ b/modules/audio_processing/aec3/aec_state.cc
@@ -207,7 +207,7 @@
   }
 
   const Block& aligned_render_block =
-      render_buffer.Block(-delay_state_.MinDirectPathFilterDelay());
+      render_buffer.GetBlock(-delay_state_.MinDirectPathFilterDelay());
 
   // Update render counters.
   bool active_render = false;
diff --git a/modules/audio_processing/aec3/block_processor_unittest.cc b/modules/audio_processing/aec3/block_processor_unittest.cc
index 5357621..aba5c41 100644
--- a/modules/audio_processing/aec3/block_processor_unittest.cc
+++ b/modules/audio_processing/aec3/block_processor_unittest.cc
@@ -321,7 +321,7 @@
              const absl::optional<DelayEstimate>& /*external_delay*/,
              RenderBuffer* render_buffer, Block* /*linear_output*/,
              Block* capture) {
-            const auto& render = render_buffer->Block(0);
+            const auto& render = render_buffer->GetBlock(0);
             const auto render_view = render.View(/*band=*/0, /*channel=*/0);
             const auto capture_view = capture->View(/*band=*/0, /*channel=*/0);
             for (size_t i = 0; i < kBlockSize; ++i) {
diff --git a/modules/audio_processing/aec3/echo_remover.cc b/modules/audio_processing/aec3/echo_remover.cc
index 09b5da3..3bca86c 100644
--- a/modules/audio_processing/aec3/echo_remover.cc
+++ b/modules/audio_processing/aec3/echo_remover.cc
@@ -245,7 +245,7 @@
     Block* linear_output,
     Block* capture) {
   ++block_counter_;
-  const Block& x = render_buffer->Block(0);
+  const Block& x = render_buffer->GetBlock(0);
   Block* y = capture;
   RTC_DCHECK(render_buffer);
   RTC_DCHECK(y);
diff --git a/modules/audio_processing/aec3/filter_analyzer.cc b/modules/audio_processing/aec3/filter_analyzer.cc
index 5587584..c809a34 100644
--- a/modules/audio_processing/aec3/filter_analyzer.cc
+++ b/modules/audio_processing/aec3/filter_analyzer.cc
@@ -131,7 +131,7 @@
 
     st_ch.consistent_estimate = st_ch.consistent_filter_detector.Detect(
         h_highpass_[ch], region_,
-        render_buffer.Block(-filter_delays_blocks_[ch]), st_ch.peak_index,
+        render_buffer.GetBlock(-filter_delays_blocks_[ch]), st_ch.peak_index,
         filter_delays_blocks_[ch]);
   }
 }
diff --git a/modules/audio_processing/aec3/render_buffer.h b/modules/audio_processing/aec3/render_buffer.h
index 410ac32..8adc996 100644
--- a/modules/audio_processing/aec3/render_buffer.h
+++ b/modules/audio_processing/aec3/render_buffer.h
@@ -40,7 +40,7 @@
   ~RenderBuffer();
 
   // Get a block.
-  const Block& Block(int buffer_offset_blocks) const {
+  const Block& GetBlock(int buffer_offset_blocks) const {
     int position =
         block_buffer_->OffsetIndex(block_buffer_->read, buffer_offset_blocks);
     return block_buffer_->buffer[position];
diff --git a/modules/audio_processing/aec3/render_signal_analyzer.cc b/modules/audio_processing/aec3/render_signal_analyzer.cc
index a3f27b7..bfbeb0e 100644
--- a/modules/audio_processing/aec3/render_signal_analyzer.cc
+++ b/modules/audio_processing/aec3/render_signal_analyzer.cc
@@ -66,7 +66,7 @@
     *narrow_peak_band = absl::nullopt;
   }
 
-  const Block& x_latest = render_buffer.Block(0);
+  const Block& x_latest = render_buffer.GetBlock(0);
   float max_peak_level = 0.f;
   for (int channel = 0; channel < x_latest.NumChannels(); ++channel) {
     rtc::ArrayView<const float, kFftLengthBy2Plus1> X2_latest =
