diff --git a/modules/audio_processing/aec/aec_core.cc b/modules/audio_processing/aec/aec_core.cc
index f0deddc..1e0f63f 100644
--- a/modules/audio_processing/aec/aec_core.cc
+++ b/modules/audio_processing/aec/aec_core.cc
@@ -18,6 +18,7 @@
 #include <stddef.h>  // size_t
 #include <stdlib.h>
 #include <string.h>
+
 #include <algorithm>
 #include <cmath>
 
diff --git a/modules/audio_processing/aec/aec_core_mips.cc b/modules/audio_processing/aec/aec_core_mips.cc
index bf89cfa..2b388a7 100644
--- a/modules/audio_processing/aec/aec_core_mips.cc
+++ b/modules/audio_processing/aec/aec_core_mips.cc
@@ -12,10 +12,10 @@
  * The core AEC algorithm, which is presented with time-aligned signals.
  */
 
-#include "modules/audio_processing/aec/aec_core.h"
-
 #include <math.h>
 
+#include "modules/audio_processing/aec/aec_core.h"
+
 extern "C" {
 #include "common_audio/signal_processing/include/signal_processing_library.h"
 }
diff --git a/modules/audio_processing/aec/echo_cancellation.h b/modules/audio_processing/aec/echo_cancellation.h
index 2039347..62dc0f0 100644
--- a/modules/audio_processing/aec/echo_cancellation.h
+++ b/modules/audio_processing/aec/echo_cancellation.h
@@ -11,10 +11,10 @@
 #ifndef MODULES_AUDIO_PROCESSING_AEC_ECHO_CANCELLATION_H_
 #define MODULES_AUDIO_PROCESSING_AEC_ECHO_CANCELLATION_H_
 
-#include <memory>
-
 #include <stddef.h>
 
+#include <memory>
+
 extern "C" {
 #include "common_audio/ring_buffer.h"
 }
diff --git a/modules/audio_processing/aec3/adaptive_fir_filter.h b/modules/audio_processing/aec3/adaptive_fir_filter.h
index 5afb80e..a7418b0 100644
--- a/modules/audio_processing/aec3/adaptive_fir_filter.h
+++ b/modules/audio_processing/aec3/adaptive_fir_filter.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_ADAPTIVE_FIR_FILTER_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/adaptive_fir_filter_unittest.cc b/modules/audio_processing/aec3/adaptive_fir_filter_unittest.cc
index 3c4f5a5..4e13bd6 100644
--- a/modules/audio_processing/aec3/adaptive_fir_filter_unittest.cc
+++ b/modules/audio_processing/aec3/adaptive_fir_filter_unittest.cc
@@ -11,12 +11,13 @@
 #include "modules/audio_processing/aec3/adaptive_fir_filter.h"
 
 // Defines WEBRTC_ARCH_X86_FAMILY, used below.
-#include "rtc_base/system/arch.h"
-
 #include <math.h>
+
 #include <algorithm>
 #include <numeric>
 #include <string>
+
+#include "rtc_base/system/arch.h"
 #if defined(WEBRTC_ARCH_X86_FAMILY)
 #include <emmintrin.h>
 #endif
diff --git a/modules/audio_processing/aec3/aec_state.cc b/modules/audio_processing/aec3/aec_state.cc
index 179d98fe..e4ec9f8 100644
--- a/modules/audio_processing/aec3/aec_state.cc
+++ b/modules/audio_processing/aec3/aec_state.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/aec_state.h"
 
 #include <math.h>
+
 #include <algorithm>
 #include <numeric>
 #include <vector>
diff --git a/modules/audio_processing/aec3/aec_state.h b/modules/audio_processing/aec3/aec_state.h
index 51a8ec0..713fa7e 100644
--- a/modules/audio_processing/aec3/aec_state.h
+++ b/modules/audio_processing/aec3/aec_state.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_AEC_STATE_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <memory>
 #include <vector>
diff --git a/modules/audio_processing/aec3/api_call_jitter_metrics_unittest.cc b/modules/audio_processing/aec3/api_call_jitter_metrics_unittest.cc
index 86608aa..b902487 100644
--- a/modules/audio_processing/aec3/api_call_jitter_metrics_unittest.cc
+++ b/modules/audio_processing/aec3/api_call_jitter_metrics_unittest.cc
@@ -9,8 +9,8 @@
  */
 
 #include "modules/audio_processing/aec3/api_call_jitter_metrics.h"
-#include "modules/audio_processing/aec3/aec3_common.h"
 
+#include "modules/audio_processing/aec3/aec3_common.h"
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/aec3/block_delay_buffer.h b/modules/audio_processing/aec3/block_delay_buffer.h
index 624e913..dd57759 100644
--- a/modules/audio_processing/aec3/block_delay_buffer.h
+++ b/modules/audio_processing/aec3/block_delay_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_BLOCK_DELAY_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "modules/audio_processing/audio_buffer.h"
diff --git a/modules/audio_processing/aec3/block_processor.cc b/modules/audio_processing/aec3/block_processor.cc
index 0997b1a..0c31a2e 100644
--- a/modules/audio_processing/aec3/block_processor.cc
+++ b/modules/audio_processing/aec3/block_processor.cc
@@ -7,7 +7,10 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
+#include "modules/audio_processing/aec3/block_processor.h"
+
 #include <stddef.h>
+
 #include <memory>
 #include <utility>
 #include <vector>
@@ -16,7 +19,6 @@
 #include "api/audio/echo_canceller3_config.h"
 #include "api/audio/echo_control.h"
 #include "modules/audio_processing/aec3/aec3_common.h"
-#include "modules/audio_processing/aec3/block_processor.h"
 #include "modules/audio_processing/aec3/block_processor_metrics.h"
 #include "modules/audio_processing/aec3/delay_estimate.h"
 #include "modules/audio_processing/aec3/echo_path_variability.h"
diff --git a/modules/audio_processing/aec3/block_processor.h b/modules/audio_processing/aec3/block_processor.h
index bcee3b7..8b1bb90 100644
--- a/modules/audio_processing/aec3/block_processor.h
+++ b/modules/audio_processing/aec3/block_processor.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_BLOCK_PROCESSOR_H_
 
 #include <stddef.h>
+
 #include <memory>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/block_processor_metrics_unittest.cc b/modules/audio_processing/aec3/block_processor_metrics_unittest.cc
index 73f7689..3e23c24 100644
--- a/modules/audio_processing/aec3/block_processor_metrics_unittest.cc
+++ b/modules/audio_processing/aec3/block_processor_metrics_unittest.cc
@@ -9,8 +9,8 @@
  */
 
 #include "modules/audio_processing/aec3/block_processor_metrics.h"
-#include "modules/audio_processing/aec3/aec3_common.h"
 
+#include "modules/audio_processing/aec3/aec3_common.h"
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/aec3/cascaded_biquad_filter.h b/modules/audio_processing/aec3/cascaded_biquad_filter.h
index 3d9b14b..34085f1 100644
--- a/modules/audio_processing/aec3/cascaded_biquad_filter.h
+++ b/modules/audio_processing/aec3/cascaded_biquad_filter.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_CASCADED_BIQUAD_FILTER_H_
 
 #include <stddef.h>
+
 #include <complex>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/comfort_noise_generator.h b/modules/audio_processing/aec3/comfort_noise_generator.h
index f78fda2..79bf623 100644
--- a/modules/audio_processing/aec3/comfort_noise_generator.h
+++ b/modules/audio_processing/aec3/comfort_noise_generator.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_COMFORT_NOISE_GENERATOR_H_
 
 #include <stdint.h>
+
 #include <array>
 #include <memory>
 
diff --git a/modules/audio_processing/aec3/decimator_unittest.cc b/modules/audio_processing/aec3/decimator_unittest.cc
index 79e7440..cf8de84 100644
--- a/modules/audio_processing/aec3/decimator_unittest.cc
+++ b/modules/audio_processing/aec3/decimator_unittest.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/decimator.h"
 
 #include <math.h>
+
 #include <algorithm>
 #include <array>
 #include <cmath>
diff --git a/modules/audio_processing/aec3/downsampled_render_buffer.h b/modules/audio_processing/aec3/downsampled_render_buffer.h
index c91ea3b..fbdc9b4 100644
--- a/modules/audio_processing/aec3/downsampled_render_buffer.h
+++ b/modules/audio_processing/aec3/downsampled_render_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_DOWNSAMPLED_RENDER_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/aec3/echo_canceller3.h b/modules/audio_processing/aec3/echo_canceller3.h
index c1298d2..2782687 100644
--- a/modules/audio_processing/aec3/echo_canceller3.h
+++ b/modules/audio_processing/aec3/echo_canceller3.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_ECHO_CANCELLER3_H_
 
 #include <stddef.h>
+
 #include <memory>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/echo_path_variability_unittest.cc b/modules/audio_processing/aec3/echo_path_variability_unittest.cc
index b1795ed..0f10f95 100644
--- a/modules/audio_processing/aec3/echo_path_variability_unittest.cc
+++ b/modules/audio_processing/aec3/echo_path_variability_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/aec3/echo_path_variability.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/aec3/echo_remover.cc b/modules/audio_processing/aec3/echo_remover.cc
index 493916c..f93288c 100644
--- a/modules/audio_processing/aec3/echo_remover.cc
+++ b/modules/audio_processing/aec3/echo_remover.cc
@@ -11,6 +11,7 @@
 
 #include <math.h>
 #include <stddef.h>
+
 #include <algorithm>
 #include <array>
 #include <cmath>
diff --git a/modules/audio_processing/aec3/echo_remover_metrics.cc b/modules/audio_processing/aec3/echo_remover_metrics.cc
index 71d149e..4590f85 100644
--- a/modules/audio_processing/aec3/echo_remover_metrics.cc
+++ b/modules/audio_processing/aec3/echo_remover_metrics.cc
@@ -12,6 +12,7 @@
 
 #include <math.h>
 #include <stddef.h>
+
 #include <algorithm>
 #include <cmath>
 #include <numeric>
diff --git a/modules/audio_processing/aec3/echo_remover_metrics_unittest.cc b/modules/audio_processing/aec3/echo_remover_metrics_unittest.cc
index 00ce1ea..c16c7ea 100644
--- a/modules/audio_processing/aec3/echo_remover_metrics_unittest.cc
+++ b/modules/audio_processing/aec3/echo_remover_metrics_unittest.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/echo_remover_metrics.h"
 
 #include <math.h>
+
 #include <cmath>
 
 #include "modules/audio_processing/aec3/aec3_fft.h"
diff --git a/modules/audio_processing/aec3/erl_estimator.h b/modules/audio_processing/aec3/erl_estimator.h
index 060fb91..2ca21df 100644
--- a/modules/audio_processing/aec3/erl_estimator.h
+++ b/modules/audio_processing/aec3/erl_estimator.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_ERL_ESTIMATOR_H_
 
 #include <stddef.h>
+
 #include <array>
 
 #include "api/array_view.h"
diff --git a/modules/audio_processing/aec3/erle_estimator.h b/modules/audio_processing/aec3/erle_estimator.h
index 8036c21..126774d 100644
--- a/modules/audio_processing/aec3/erle_estimator.h
+++ b/modules/audio_processing/aec3/erle_estimator.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_ERLE_ESTIMATOR_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <memory>
 
diff --git a/modules/audio_processing/aec3/erle_estimator_unittest.cc b/modules/audio_processing/aec3/erle_estimator_unittest.cc
index 5ef4f24..ac681b3 100644
--- a/modules/audio_processing/aec3/erle_estimator_unittest.cc
+++ b/modules/audio_processing/aec3/erle_estimator_unittest.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/aec3/erle_estimator.h"
+
 #include <cmath>
 
 #include "api/array_view.h"
-#include "modules/audio_processing/aec3/erle_estimator.h"
 #include "modules/audio_processing/aec3/render_delay_buffer.h"
 #include "modules/audio_processing/aec3/vector_buffer.h"
 #include "rtc_base/random.h"
diff --git a/modules/audio_processing/aec3/fft_buffer.h b/modules/audio_processing/aec3/fft_buffer.h
index 9f81a91..a367f9e 100644
--- a/modules/audio_processing/aec3/fft_buffer.h
+++ b/modules/audio_processing/aec3/fft_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_FFT_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "modules/audio_processing/aec3/fft_data.h"
diff --git a/modules/audio_processing/aec3/filter_analyzer.cc b/modules/audio_processing/aec3/filter_analyzer.cc
index 6bbeb6e..06bd4b7 100644
--- a/modules/audio_processing/aec3/filter_analyzer.cc
+++ b/modules/audio_processing/aec3/filter_analyzer.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/aec3/filter_analyzer.h"
+
 #include <math.h>
 
 #include <algorithm>
diff --git a/modules/audio_processing/aec3/filter_analyzer.h b/modules/audio_processing/aec3/filter_analyzer.h
index 0e1798c..bcce528 100644
--- a/modules/audio_processing/aec3/filter_analyzer.h
+++ b/modules/audio_processing/aec3/filter_analyzer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_FILTER_ANALYZER_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <memory>
 #include <vector>
diff --git a/modules/audio_processing/aec3/frame_blocker.h b/modules/audio_processing/aec3/frame_blocker.h
index 68cee97..759f431 100644
--- a/modules/audio_processing/aec3/frame_blocker.h
+++ b/modules/audio_processing/aec3/frame_blocker.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_FRAME_BLOCKER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "api/array_view.h"
diff --git a/modules/audio_processing/aec3/main_filter_update_gain.h b/modules/audio_processing/aec3/main_filter_update_gain.h
index 5c817cd..dca0ff87 100644
--- a/modules/audio_processing/aec3/main_filter_update_gain.h
+++ b/modules/audio_processing/aec3/main_filter_update_gain.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_MAIN_FILTER_UPDATE_GAIN_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <memory>
 
diff --git a/modules/audio_processing/aec3/matched_filter.h b/modules/audio_processing/aec3/matched_filter.h
index 084267f..df92453 100644
--- a/modules/audio_processing/aec3/matched_filter.h
+++ b/modules/audio_processing/aec3/matched_filter.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_MATCHED_FILTER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "api/array_view.h"
@@ -66,7 +67,6 @@
 
 }  // namespace aec3
 
-
 // Produces recursively updated cross-correlation estimates for several signal
 // shifts where the intra-shift spacing is uniform.
 class MatchedFilter {
diff --git a/modules/audio_processing/aec3/matrix_buffer.h b/modules/audio_processing/aec3/matrix_buffer.h
index cae3759..8fb96d21 100644
--- a/modules/audio_processing/aec3/matrix_buffer.h
+++ b/modules/audio_processing/aec3/matrix_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_MATRIX_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/aec3/moving_average.h b/modules/audio_processing/aec3/moving_average.h
index 0f855be..913d785 100644
--- a/modules/audio_processing/aec3/moving_average.h
+++ b/modules/audio_processing/aec3/moving_average.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_MOVING_AVERAGE_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "api/array_view.h"
diff --git a/modules/audio_processing/aec3/moving_average_unittest.cc b/modules/audio_processing/aec3/moving_average_unittest.cc
index 05542d1..84ba9cb 100644
--- a/modules/audio_processing/aec3/moving_average_unittest.cc
+++ b/modules/audio_processing/aec3/moving_average_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/aec3/moving_average.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/aec3/render_buffer.h b/modules/audio_processing/aec3/render_buffer.h
index cc6cd1c..762eab8 100644
--- a/modules/audio_processing/aec3/render_buffer.h
+++ b/modules/audio_processing/aec3/render_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_RENDER_BUFFER_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/render_delay_buffer.cc b/modules/audio_processing/aec3/render_delay_buffer.cc
index 0b2e979..1a48f15 100644
--- a/modules/audio_processing/aec3/render_delay_buffer.cc
+++ b/modules/audio_processing/aec3/render_delay_buffer.cc
@@ -8,7 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/aec3/render_delay_buffer.h"
+
 #include <string.h>
+
 #include <algorithm>
 #include <memory>
 #include <numeric>
@@ -25,7 +28,6 @@
 #include "modules/audio_processing/aec3/fft_data.h"
 #include "modules/audio_processing/aec3/matrix_buffer.h"
 #include "modules/audio_processing/aec3/render_buffer.h"
-#include "modules/audio_processing/aec3/render_delay_buffer.h"
 #include "modules/audio_processing/aec3/vector_buffer.h"
 #include "modules/audio_processing/logging/apm_data_dumper.h"
 #include "rtc_base/atomic_ops.h"
diff --git a/modules/audio_processing/aec3/render_delay_buffer.h b/modules/audio_processing/aec3/render_delay_buffer.h
index 89b3a2a..970cf91 100644
--- a/modules/audio_processing/aec3/render_delay_buffer.h
+++ b/modules/audio_processing/aec3/render_delay_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_RENDER_DELAY_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "api/audio/echo_canceller3_config.h"
diff --git a/modules/audio_processing/aec3/render_delay_controller.cc b/modules/audio_processing/aec3/render_delay_controller.cc
index e8423cb..ceafa21 100644
--- a/modules/audio_processing/aec3/render_delay_controller.cc
+++ b/modules/audio_processing/aec3/render_delay_controller.cc
@@ -7,7 +7,10 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
+#include "modules/audio_processing/aec3/render_delay_controller.h"
+
 #include <stddef.h>
+
 #include <algorithm>
 #include <memory>
 
@@ -18,7 +21,6 @@
 #include "modules/audio_processing/aec3/delay_estimate.h"
 #include "modules/audio_processing/aec3/downsampled_render_buffer.h"
 #include "modules/audio_processing/aec3/echo_path_delay_estimator.h"
-#include "modules/audio_processing/aec3/render_delay_controller.h"
 #include "modules/audio_processing/aec3/render_delay_controller_metrics.h"
 #include "modules/audio_processing/logging/apm_data_dumper.h"
 #include "rtc_base/atomic_ops.h"
diff --git a/modules/audio_processing/aec3/render_delay_controller_metrics_unittest.cc b/modules/audio_processing/aec3/render_delay_controller_metrics_unittest.cc
index 216b0e2..e7d7703 100644
--- a/modules/audio_processing/aec3/render_delay_controller_metrics_unittest.cc
+++ b/modules/audio_processing/aec3/render_delay_controller_metrics_unittest.cc
@@ -9,9 +9,9 @@
  */
 
 #include "modules/audio_processing/aec3/render_delay_controller_metrics.h"
+
 #include "absl/types/optional.h"
 #include "modules/audio_processing/aec3/aec3_common.h"
-
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/aec3/render_signal_analyzer.cc b/modules/audio_processing/aec3/render_signal_analyzer.cc
index 33b04bf..e3e41a7 100644
--- a/modules/audio_processing/aec3/render_signal_analyzer.cc
+++ b/modules/audio_processing/aec3/render_signal_analyzer.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/render_signal_analyzer.h"
 
 #include <math.h>
+
 #include <algorithm>
 #include <utility>
 #include <vector>
diff --git a/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc b/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
index ffd7fe2..1adfbfb 100644
--- a/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
+++ b/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/render_signal_analyzer.h"
 
 #include <math.h>
+
 #include <array>
 #include <cmath>
 #include <vector>
diff --git a/modules/audio_processing/aec3/residual_echo_estimator.cc b/modules/audio_processing/aec3/residual_echo_estimator.cc
index eaeaf49..a6fd2ff 100644
--- a/modules/audio_processing/aec3/residual_echo_estimator.cc
+++ b/modules/audio_processing/aec3/residual_echo_estimator.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/residual_echo_estimator.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/reverb_decay_estimator.cc b/modules/audio_processing/aec3/reverb_decay_estimator.cc
index cdcbee5..2415931 100644
--- a/modules/audio_processing/aec3/reverb_decay_estimator.cc
+++ b/modules/audio_processing/aec3/reverb_decay_estimator.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/reverb_decay_estimator.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <cmath>
 #include <numeric>
diff --git a/modules/audio_processing/aec3/reverb_frequency_response.cc b/modules/audio_processing/aec3/reverb_frequency_response.cc
index 98eeca6..f4bd91f 100644
--- a/modules/audio_processing/aec3/reverb_frequency_response.cc
+++ b/modules/audio_processing/aec3/reverb_frequency_response.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/reverb_frequency_response.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <array>
 #include <numeric>
@@ -59,7 +60,6 @@
     int filter_delay_blocks,
     const absl::optional<float>& linear_filter_quality,
     bool stationary_block) {
-
   if (stationary_block || !linear_filter_quality) {
     return;
   }
diff --git a/modules/audio_processing/aec3/reverb_model.cc b/modules/audio_processing/aec3/reverb_model.cc
index f0a24c0..ca65960 100644
--- a/modules/audio_processing/aec3/reverb_model.cc
+++ b/modules/audio_processing/aec3/reverb_model.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/reverb_model.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <functional>
 
diff --git a/modules/audio_processing/aec3/reverb_model_estimator_unittest.cc b/modules/audio_processing/aec3/reverb_model_estimator_unittest.cc
index 9947ed7..8fce9d2 100644
--- a/modules/audio_processing/aec3/reverb_model_estimator_unittest.cc
+++ b/modules/audio_processing/aec3/reverb_model_estimator_unittest.cc
@@ -21,7 +21,6 @@
 #include "modules/audio_processing/aec3/aec3_fft.h"
 #include "modules/audio_processing/aec3/fft_data.h"
 #include "rtc_base/checks.h"
-
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/aec3/reverb_model_fallback.h b/modules/audio_processing/aec3/reverb_model_fallback.h
index 1bd2b59..83ad233 100644
--- a/modules/audio_processing/aec3/reverb_model_fallback.h
+++ b/modules/audio_processing/aec3/reverb_model_fallback.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_REVERB_MODEL_FALLBACK_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/shadow_filter_update_gain.h b/modules/audio_processing/aec3/shadow_filter_update_gain.h
index 05e632f..9d14807 100644
--- a/modules/audio_processing/aec3/shadow_filter_update_gain.h
+++ b/modules/audio_processing/aec3/shadow_filter_update_gain.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_SHADOW_FILTER_UPDATE_GAIN_H_
 
 #include <stddef.h>
+
 #include <array>
 
 #include "api/audio/echo_canceller3_config.h"
diff --git a/modules/audio_processing/aec3/stationarity_estimator.h b/modules/audio_processing/aec3/stationarity_estimator.h
index 704859a..023043b 100644
--- a/modules/audio_processing/aec3/stationarity_estimator.h
+++ b/modules/audio_processing/aec3/stationarity_estimator.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_STATIONARITY_ESTIMATOR_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <memory>
 
diff --git a/modules/audio_processing/aec3/subband_erle_estimator.h b/modules/audio_processing/aec3/subband_erle_estimator.h
index 903c629..0a22d61 100644
--- a/modules/audio_processing/aec3/subband_erle_estimator.h
+++ b/modules/audio_processing/aec3/subband_erle_estimator.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_SUBBAND_ERLE_ESTIMATOR_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <memory>
 #include <vector>
diff --git a/modules/audio_processing/aec3/subtractor.h b/modules/audio_processing/aec3/subtractor.h
index 910be18..ccff7c1 100644
--- a/modules/audio_processing/aec3/subtractor.h
+++ b/modules/audio_processing/aec3/subtractor.h
@@ -13,6 +13,7 @@
 
 #include <math.h>
 #include <stddef.h>
+
 #include <array>
 #include <vector>
 
diff --git a/modules/audio_processing/aec3/suppression_filter_unittest.cc b/modules/audio_processing/aec3/suppression_filter_unittest.cc
index 2c745ad..80d96ec 100644
--- a/modules/audio_processing/aec3/suppression_filter_unittest.cc
+++ b/modules/audio_processing/aec3/suppression_filter_unittest.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/aec3/suppression_filter.h"
 
 #include <math.h>
+
 #include <algorithm>
 #include <cmath>
 #include <numeric>
diff --git a/modules/audio_processing/aec3/suppression_gain.cc b/modules/audio_processing/aec3/suppression_gain.cc
index b741a71..4831b71 100644
--- a/modules/audio_processing/aec3/suppression_gain.cc
+++ b/modules/audio_processing/aec3/suppression_gain.cc
@@ -12,6 +12,7 @@
 
 #include <math.h>
 #include <stddef.h>
+
 #include <algorithm>
 #include <numeric>
 
@@ -264,9 +265,9 @@
   std::array<float, kFftLengthBy2Plus1> max_gain;
   GetMaxGain(max_gain);
 
-    GainToNoAudibleEcho(nearend, weighted_residual_echo, comfort_noise,
-                        min_gain, max_gain, gain);
-    AdjustForExternalFilters(gain);
+  GainToNoAudibleEcho(nearend, weighted_residual_echo, comfort_noise, min_gain,
+                      max_gain, gain);
+  AdjustForExternalFilters(gain);
 
   // Adjust the gain for frequencies which have not yet converged.
   AdjustNonConvergedFrequencies(gain);
diff --git a/modules/audio_processing/aec3/vector_buffer.h b/modules/audio_processing/aec3/vector_buffer.h
index 4c0257c..9d1539f 100644
--- a/modules/audio_processing/aec3/vector_buffer.h
+++ b/modules/audio_processing/aec3/vector_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AEC3_VECTOR_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/aec3/vector_math.h b/modules/audio_processing/aec3/vector_math.h
index 255331b..883cd95 100644
--- a/modules/audio_processing/aec3/vector_math.h
+++ b/modules/audio_processing/aec3/vector_math.h
@@ -21,6 +21,7 @@
 #include <emmintrin.h>
 #endif
 #include <math.h>
+
 #include <algorithm>
 #include <array>
 #include <functional>
diff --git a/modules/audio_processing/aec_dump/aec_dump_impl.cc b/modules/audio_processing/aec_dump/aec_dump_impl.cc
index ba15336..904033a 100644
--- a/modules/audio_processing/aec_dump/aec_dump_impl.cc
+++ b/modules/audio_processing/aec_dump/aec_dump_impl.cc
@@ -8,10 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include <utility>
-
 #include "modules/audio_processing/aec_dump/aec_dump_impl.h"
 
+#include <utility>
+
 #include "absl/memory/memory.h"
 #include "modules/audio_processing/aec_dump/aec_dump_factory.h"
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/aec_dump/aec_dump_unittest.cc b/modules/audio_processing/aec_dump/aec_dump_unittest.cc
index 561fa62..3624bfc 100644
--- a/modules/audio_processing/aec_dump/aec_dump_unittest.cc
+++ b/modules/audio_processing/aec_dump/aec_dump_unittest.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "modules/audio_processing/aec_dump/aec_dump_factory.h"
-
 #include "rtc_base/task_queue_for_test.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
diff --git a/modules/audio_processing/aecm/aecm_core.cc b/modules/audio_processing/aecm/aecm_core.cc
index 67b70bf..78d8dfd 100644
--- a/modules/audio_processing/aecm/aecm_core.cc
+++ b/modules/audio_processing/aecm/aecm_core.cc
@@ -21,7 +21,6 @@
 #include "common_audio/signal_processing/include/signal_processing_library.h"
 #include "modules/audio_processing/aecm/echo_control_mobile.h"
 #include "modules/audio_processing/utility/delay_estimator_wrapper.h"
-
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
 
@@ -440,9 +439,8 @@
   aecm->farEnergyMin = WEBRTC_SPL_WORD16_MAX;
   aecm->farEnergyMax = WEBRTC_SPL_WORD16_MIN;
   aecm->farEnergyMaxMin = 0;
-  aecm->farEnergyVAD =
-      FAR_ENERGY_MIN;  // This prevents false speech detection at the
-                       // beginning.
+  aecm->farEnergyVAD = FAR_ENERGY_MIN;  // This prevents false speech detection
+                                        // at the beginning.
   aecm->farEnergyMSE = 0;
   aecm->currentVADValue = 0;
   aecm->vadUpdateCount = 0;
diff --git a/modules/audio_processing/aecm/aecm_core_c.cc b/modules/audio_processing/aecm/aecm_core_c.cc
index 905274f..2727182 100644
--- a/modules/audio_processing/aecm/aecm_core_c.cc
+++ b/modules/audio_processing/aecm/aecm_core_c.cc
@@ -8,11 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "modules/audio_processing/aecm/aecm_core.h"
-
 #include <stddef.h>
 #include <stdlib.h>
 
+#include "modules/audio_processing/aecm/aecm_core.h"
+
 extern "C" {
 #include "common_audio/ring_buffer.h"
 #include "common_audio/signal_processing/include/real_fft.h"
@@ -198,11 +198,11 @@
     } else if (freq_signal[i].imag == 0) {
       freq_signal_abs[i] = (uint16_t)WEBRTC_SPL_ABS_W16(freq_signal[i].real);
     } else {
-// Approximation for magnitude of complex fft output
-// magn = sqrt(real^2 + imag^2)
-// magn ~= alpha * max(|imag|,|real|) + beta * min(|imag|,|real|)
-//
-// The parameters alpha and beta are stored in Q15
+      // Approximation for magnitude of complex fft output
+      // magn = sqrt(real^2 + imag^2)
+      // magn ~= alpha * max(|imag|,|real|) + beta * min(|imag|,|real|)
+      //
+      // The parameters alpha and beta are stored in Q15
 
 #ifdef AECM_WITH_ABS_APPROX
       tmp16no1 = WEBRTC_SPL_ABS_W16(freq_signal[i].real);
diff --git a/modules/audio_processing/aecm/aecm_core_mips.cc b/modules/audio_processing/aecm/aecm_core_mips.cc
index 11e4095..75aee91 100644
--- a/modules/audio_processing/aecm/aecm_core_mips.cc
+++ b/modules/audio_processing/aecm/aecm_core_mips.cc
@@ -9,7 +9,6 @@
  */
 
 #include "modules/audio_processing/aecm/aecm_core.h"
-
 #include "modules/audio_processing/aecm/echo_control_mobile.h"
 #include "modules/audio_processing/utility/delay_estimator_wrapper.h"
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/aecm/aecm_core_neon.cc b/modules/audio_processing/aecm/aecm_core_neon.cc
index a2153a2..94a318b 100644
--- a/modules/audio_processing/aecm/aecm_core_neon.cc
+++ b/modules/audio_processing/aecm/aecm_core_neon.cc
@@ -8,11 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "modules/audio_processing/aecm/aecm_core.h"
-
 #include <arm_neon.h>
 
 #include "common_audio/signal_processing/include/real_fft.h"
+#include "modules/audio_processing/aecm/aecm_core.h"
 #include "rtc_base/checks.h"
 
 // TODO(kma): Re-write the corresponding assembly file, the offset
diff --git a/modules/audio_processing/agc/loudness_histogram.cc b/modules/audio_processing/agc/loudness_histogram.cc
index cd57b82..4775ff7 100644
--- a/modules/audio_processing/agc/loudness_histogram.cc
+++ b/modules/audio_processing/agc/loudness_histogram.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/agc/loudness_histogram.h"
 
 #include <string.h>
+
 #include <cmath>
 
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/agc/loudness_histogram.h b/modules/audio_processing/agc/loudness_histogram.h
index b210be9..badd443 100644
--- a/modules/audio_processing/agc/loudness_histogram.h
+++ b/modules/audio_processing/agc/loudness_histogram.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AGC_LOUDNESS_HISTOGRAM_H_
 
 #include <stdint.h>
+
 #include <memory>
 
 namespace webrtc {
diff --git a/modules/audio_processing/agc/loudness_histogram_unittest.cc b/modules/audio_processing/agc/loudness_histogram_unittest.cc
index 0c291d8..30ea5d3 100644
--- a/modules/audio_processing/agc/loudness_histogram_unittest.cc
+++ b/modules/audio_processing/agc/loudness_histogram_unittest.cc
@@ -13,6 +13,7 @@
 #include "modules/audio_processing/agc/loudness_histogram.h"
 
 #include <stdio.h>
+
 #include <algorithm>
 #include <cmath>
 #include <memory>
diff --git a/modules/audio_processing/agc/mock_agc.h b/modules/audio_processing/agc/mock_agc.h
index 4297e2a..d31c265 100644
--- a/modules/audio_processing/agc/mock_agc.h
+++ b/modules/audio_processing/agc/mock_agc.h
@@ -12,7 +12,6 @@
 #define MODULES_AUDIO_PROCESSING_AGC_MOCK_AGC_H_
 
 #include "modules/audio_processing/agc/agc.h"
-
 #include "test/gmock.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/agc2/agc2_common.cc b/modules/audio_processing/agc2/agc2_common.cc
index 1107885..3f697d1 100644
--- a/modules/audio_processing/agc2/agc2_common.cc
+++ b/modules/audio_processing/agc2/agc2_common.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/agc2/agc2_common.h"
 
 #include <stdio.h>
+
 #include <string>
 
 #include "system_wrappers/include/field_trial.h"
diff --git a/modules/audio_processing/agc2/agc2_testing_common_unittest.cc b/modules/audio_processing/agc2/agc2_testing_common_unittest.cc
index b9f7126..f52ea3c 100644
--- a/modules/audio_processing/agc2/agc2_testing_common_unittest.cc
+++ b/modules/audio_processing/agc2/agc2_testing_common_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/agc2/agc2_testing_common.h"
+
 #include "rtc_base/gunit.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/agc2/down_sampler.cc b/modules/audio_processing/agc2/down_sampler.cc
index 50486e0..654ed4b 100644
--- a/modules/audio_processing/agc2/down_sampler.cc
+++ b/modules/audio_processing/agc2/down_sampler.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/agc2/down_sampler.h"
 
 #include <string.h>
+
 #include <algorithm>
 
 #include "modules/audio_processing/agc2/biquad_filter.h"
diff --git a/modules/audio_processing/agc2/interpolated_gain_curve.cc b/modules/audio_processing/agc2/interpolated_gain_curve.cc
index f5d6b47..502e702 100644
--- a/modules/audio_processing/agc2/interpolated_gain_curve.cc
+++ b/modules/audio_processing/agc2/interpolated_gain_curve.cc
@@ -113,7 +113,9 @@
       }
       break;
     }
-    default: { RTC_NOTREACHED(); }
+    default: {
+      RTC_NOTREACHED();
+    }
   }
 }
 
diff --git a/modules/audio_processing/agc2/interpolated_gain_curve.h b/modules/audio_processing/agc2/interpolated_gain_curve.h
index 1ecb94e..ef1c027 100644
--- a/modules/audio_processing/agc2/interpolated_gain_curve.h
+++ b/modules/audio_processing/agc2/interpolated_gain_curve.h
@@ -15,7 +15,6 @@
 #include <string>
 
 #include "modules/audio_processing/agc2/agc2_common.h"
-
 #include "rtc_base/constructor_magic.h"
 #include "rtc_base/gtest_prod_util.h"
 #include "system_wrappers/include/metrics.h"
diff --git a/modules/audio_processing/agc2/interpolated_gain_curve_unittest.cc b/modules/audio_processing/agc2/interpolated_gain_curve_unittest.cc
index a8e0f23..67d34e5 100644
--- a/modules/audio_processing/agc2/interpolated_gain_curve_unittest.cc
+++ b/modules/audio_processing/agc2/interpolated_gain_curve_unittest.cc
@@ -8,6 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/agc2/interpolated_gain_curve.h"
+
 #include <array>
 #include <type_traits>
 #include <vector>
@@ -16,7 +18,6 @@
 #include "common_audio/include/audio_util.h"
 #include "modules/audio_processing/agc2/agc2_common.h"
 #include "modules/audio_processing/agc2/compute_interpolated_gain_curve.h"
-#include "modules/audio_processing/agc2/interpolated_gain_curve.h"
 #include "modules/audio_processing/agc2/limiter_db_gain_curve.h"
 #include "modules/audio_processing/logging/apm_data_dumper.h"
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/agc2/noise_level_estimator.cc b/modules/audio_processing/agc2/noise_level_estimator.cc
index 6e43672..2ca5034 100644
--- a/modules/audio_processing/agc2/noise_level_estimator.cc
+++ b/modules/audio_processing/agc2/noise_level_estimator.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/agc2/noise_level_estimator.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <cmath>
 #include <numeric>
diff --git a/modules/audio_processing/agc2/noise_spectrum_estimator.cc b/modules/audio_processing/agc2/noise_spectrum_estimator.cc
index 5735faf..31438b1 100644
--- a/modules/audio_processing/agc2/noise_spectrum_estimator.cc
+++ b/modules/audio_processing/agc2/noise_spectrum_estimator.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/agc2/noise_spectrum_estimator.h"
 
 #include <string.h>
+
 #include <algorithm>
 
 #include "api/array_view.h"
diff --git a/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc b/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc
index 0561c37..af3619b 100644
--- a/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc
+++ b/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h"
 
 #include <stdlib.h>
+
 #include <algorithm>
 #include <cmath>
 #include <cstddef>
diff --git a/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h b/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h
index 6ccd165..2cc5ce6 100644
--- a/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h
+++ b/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AGC2_RNN_VAD_PITCH_SEARCH_INTERNAL_H_
 
 #include <stddef.h>
+
 #include <array>
 
 #include "api/array_view.h"
diff --git a/modules/audio_processing/agc2/rnn_vad/pitch_search_unittest.cc b/modules/audio_processing/agc2/rnn_vad/pitch_search_unittest.cc
index 494dfe7..99c9dfa 100644
--- a/modules/audio_processing/agc2/rnn_vad/pitch_search_unittest.cc
+++ b/modules/audio_processing/agc2/rnn_vad/pitch_search_unittest.cc
@@ -9,12 +9,12 @@
  */
 
 #include "modules/audio_processing/agc2/rnn_vad/pitch_search.h"
-#include "modules/audio_processing/agc2/rnn_vad/pitch_info.h"
-#include "modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h"
 
 #include <algorithm>
 #include <vector>
 
+#include "modules/audio_processing/agc2/rnn_vad/pitch_info.h"
+#include "modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h"
 #include "modules/audio_processing/agc2/rnn_vad/test_utils.h"
 // TODO(bugs.webrtc.org/8948): Add when the issue is fixed.
 // #include "test/fpe_observer.h"
diff --git a/modules/audio_processing/agc2/rnn_vad/rnn.cc b/modules/audio_processing/agc2/rnn_vad/rnn.cc
index 2b36034..a5b34c4 100644
--- a/modules/audio_processing/agc2/rnn_vad/rnn.cc
+++ b/modules/audio_processing/agc2/rnn_vad/rnn.cc
@@ -25,21 +25,21 @@
 
 using rnnoise::kInputLayerInputSize;
 static_assert(kFeatureVectorSize == kInputLayerInputSize, "");
-using rnnoise::kInputDenseWeights;
 using rnnoise::kInputDenseBias;
+using rnnoise::kInputDenseWeights;
 using rnnoise::kInputLayerOutputSize;
 static_assert(kInputLayerOutputSize <= kFullyConnectedLayersMaxUnits,
               "Increase kFullyConnectedLayersMaxUnits.");
 
+using rnnoise::kHiddenGruBias;
 using rnnoise::kHiddenGruRecurrentWeights;
 using rnnoise::kHiddenGruWeights;
-using rnnoise::kHiddenGruBias;
 using rnnoise::kHiddenLayerOutputSize;
 static_assert(kHiddenLayerOutputSize <= kRecurrentLayersMaxUnits,
               "Increase kRecurrentLayersMaxUnits.");
 
-using rnnoise::kOutputDenseWeights;
 using rnnoise::kOutputDenseBias;
+using rnnoise::kOutputDenseWeights;
 using rnnoise::kOutputLayerOutputSize;
 static_assert(kOutputLayerOutputSize <= kFullyConnectedLayersMaxUnits,
               "Increase kFullyConnectedLayersMaxUnits.");
diff --git a/modules/audio_processing/agc2/rnn_vad/rnn.h b/modules/audio_processing/agc2/rnn_vad/rnn.h
index a7d057d..1129464 100644
--- a/modules/audio_processing/agc2/rnn_vad/rnn.h
+++ b/modules/audio_processing/agc2/rnn_vad/rnn.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <sys/types.h>
+
 #include <array>
 
 #include "api/array_view.h"
diff --git a/modules/audio_processing/agc2/rnn_vad/rnn_unittest.cc b/modules/audio_processing/agc2/rnn_vad/rnn_unittest.cc
index 933b555..40ac70b 100644
--- a/modules/audio_processing/agc2/rnn_vad/rnn_unittest.cc
+++ b/modules/audio_processing/agc2/rnn_vad/rnn_unittest.cc
@@ -8,9 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/agc2/rnn_vad/rnn.h"
+
 #include <array>
 
-#include "modules/audio_processing/agc2/rnn_vad/rnn.h"
 #include "modules/audio_processing/agc2/rnn_vad/test_utils.h"
 #include "rtc_base/checks.h"
 #include "test/gtest.h"
diff --git a/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h b/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h
index 24b0219..ed4caad 100644
--- a/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h
+++ b/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_AGC2_RNN_VAD_SPECTRAL_FEATURES_INTERNAL_H_
 
 #include <stddef.h>
+
 #include <array>
 #include <vector>
 
diff --git a/modules/audio_processing/audio_buffer.cc b/modules/audio_processing/audio_buffer.cc
index 0c38a4f..1a99463 100644
--- a/modules/audio_processing/audio_buffer.cc
+++ b/modules/audio_processing/audio_buffer.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/audio_buffer.h"
 
 #include <string.h>
+
 #include <cstdint>
 
 #include "common_audio/channel_buffer.h"
diff --git a/modules/audio_processing/audio_buffer.h b/modules/audio_processing/audio_buffer.h
index a85144b..8fba9f9 100644
--- a/modules/audio_processing/audio_buffer.h
+++ b/modules/audio_processing/audio_buffer.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 #include <vector>
 
diff --git a/modules/audio_processing/audio_buffer_unittest.cc b/modules/audio_processing/audio_buffer_unittest.cc
index 4cbb98e..5c23159 100644
--- a/modules/audio_processing/audio_buffer_unittest.cc
+++ b/modules/audio_processing/audio_buffer_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/audio_buffer.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc
index a700038..9b4ae81 100644
--- a/modules/audio_processing/audio_processing_impl.cc
+++ b/modules/audio_processing/audio_processing_impl.cc
@@ -1492,7 +1492,9 @@
   TRACE_EVENT0("webrtc", "AudioProcessing::AnalyzeReverseStream_ChannelLayout");
   rtc::CritScope cs(&crit_render_);
   const StreamConfig reverse_config = {
-      sample_rate_hz, ChannelsFromLayout(layout), LayoutHasKeyboard(layout),
+      sample_rate_hz,
+      ChannelsFromLayout(layout),
+      LayoutHasKeyboard(layout),
   };
   if (samples_per_channel != reverse_config.num_frames()) {
     return kBadDataLengthError;
diff --git a/modules/audio_processing/audio_processing_impl_locking_unittest.cc b/modules/audio_processing/audio_processing_impl_locking_unittest.cc
index 9063980..9182d2c 100644
--- a/modules/audio_processing/audio_processing_impl_locking_unittest.cc
+++ b/modules/audio_processing/audio_processing_impl_locking_unittest.cc
@@ -8,13 +8,12 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "modules/audio_processing/audio_processing_impl.h"
-
 #include <algorithm>
 #include <memory>
 #include <vector>
 
 #include "api/array_view.h"
+#include "modules/audio_processing/audio_processing_impl.h"
 #include "modules/audio_processing/test/test_utils.h"
 #include "rtc_base/critical_section.h"
 #include "rtc_base/event.h"
diff --git a/modules/audio_processing/audio_processing_performance_unittest.cc b/modules/audio_processing/audio_processing_performance_unittest.cc
index 993b8b6..4e297a5 100644
--- a/modules/audio_processing/audio_processing_performance_unittest.cc
+++ b/modules/audio_processing/audio_processing_performance_unittest.cc
@@ -7,8 +7,6 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
-#include "modules/audio_processing/audio_processing_impl.h"
-
 #include <math.h>
 
 #include <algorithm>
@@ -16,6 +14,7 @@
 #include <vector>
 
 #include "api/array_view.h"
+#include "modules/audio_processing/audio_processing_impl.h"
 #include "modules/audio_processing/test/test_utils.h"
 #include "rtc_base/atomic_ops.h"
 #include "rtc_base/event.h"
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index 2c23cb3..831799f 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -7,6 +7,8 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
+#include "modules/audio_processing/include/audio_processing.h"
+
 #include <math.h>
 #include <stdio.h>
 
@@ -23,7 +25,6 @@
 #include "modules/audio_processing/aec_dump/aec_dump_factory.h"
 #include "modules/audio_processing/audio_processing_impl.h"
 #include "modules/audio_processing/common.h"
-#include "modules/audio_processing/include/audio_processing.h"
 #include "modules/audio_processing/include/mock_audio_processing.h"
 #include "modules/audio_processing/test/protobuf_utils.h"
 #include "modules/audio_processing/test/test_utils.h"
@@ -78,16 +79,11 @@
 enum StreamDirection { kForward = 0, kReverse };
 
 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) {
-  ChannelBuffer<int16_t> cb_int(cb->num_frames(),
-                                cb->num_channels());
-  Deinterleave(int_data,
-               cb->num_frames(),
-               cb->num_channels(),
+  ChannelBuffer<int16_t> cb_int(cb->num_frames(), cb->num_channels());
+  Deinterleave(int_data, cb->num_frames(), cb->num_channels(),
                cb_int.channels());
   for (size_t i = 0; i < cb->num_channels(); ++i) {
-    S16ToFloat(cb_int.channels()[i],
-               cb->num_frames(),
-               cb->channels()[i]);
+    S16ToFloat(cb_int.channels()[i], cb->num_frames(), cb->channels()[i]);
   }
 }
 
@@ -110,13 +106,15 @@
   return 0;
 }
 
-void MixStereoToMono(const float* stereo, float* mono,
+void MixStereoToMono(const float* stereo,
+                     float* mono,
                      size_t samples_per_channel) {
   for (size_t i = 0; i < samples_per_channel; ++i)
     mono[i] = (stereo[i * 2] + stereo[i * 2 + 1]) / 2;
 }
 
-void MixStereoToMono(const int16_t* stereo, int16_t* mono,
+void MixStereoToMono(const int16_t* stereo,
+                     int16_t* mono,
                      size_t samples_per_channel) {
   for (size_t i = 0; i < samples_per_channel; ++i)
     mono[i] = (stereo[i * 2] + stereo[i * 2 + 1]) >> 1;
@@ -206,7 +204,7 @@
 // These functions are only used by ApmTest.Process.
 template <class T>
 T AbsValue(T a) {
-  return a > 0 ? a: -a;
+  return a > 0 ? a : -a;
 }
 
 int16_t MaxAudioFrame(const AudioFrame& frame) {
@@ -232,7 +230,7 @@
 
   ASSERT_EQ(1u, fwrite(&size, sizeof(size), 1, file));
   ASSERT_EQ(static_cast<size_t>(size),
-      fwrite(array.get(), sizeof(array[0]), size, file));
+            fwrite(array.get(), sizeof(array[0]), size, file));
   fclose(file);
 }
 
@@ -317,7 +315,9 @@
 //
 // |int_data| and |float_data| are just temporary space that must be
 // sufficiently large to hold the 10 ms chunk.
-bool ReadChunk(FILE* file, int16_t* int_data, float* float_data,
+bool ReadChunk(FILE* file,
+               int16_t* int_data,
+               float* float_data,
                ChannelBuffer<float>* cb) {
   // The files always contain stereo audio.
   size_t frame_size = cb->num_frames() * 2;
@@ -332,8 +332,7 @@
   if (cb->num_channels() == 1) {
     MixStereoToMono(float_data, cb->channels()[0], cb->num_frames());
   } else {
-    Deinterleave(float_data, cb->num_frames(), 2,
-                 cb->channels());
+    Deinterleave(float_data, cb->num_frames(), 2, cb->channels());
   }
 
   return true;
@@ -350,10 +349,7 @@
   static void TearDownTestSuite() { ClearTempFiles(); }
 
   // Used to select between int and float interface tests.
-  enum Format {
-    kIntFormat,
-    kFloatFormat
-  };
+  enum Format { kIntFormat, kFloatFormat };
 
   void Init(int sample_rate_hz,
             int output_sample_rate_hz,
@@ -367,11 +363,14 @@
   bool ReadFrame(FILE* file, AudioFrame* frame);
   bool ReadFrame(FILE* file, AudioFrame* frame, ChannelBuffer<float>* cb);
   void ReadFrameWithRewind(FILE* file, AudioFrame* frame);
-  void ReadFrameWithRewind(FILE* file, AudioFrame* frame,
+  void ReadFrameWithRewind(FILE* file,
+                           AudioFrame* frame,
                            ChannelBuffer<float>* cb);
   void ProcessWithDefaultStreamParameters(AudioFrame* frame);
-  void ProcessDelayVerificationTest(int delay_ms, int system_delay_ms,
-                                    int delay_min, int delay_max);
+  void ProcessDelayVerificationTest(int delay_ms,
+                                    int system_delay_ms,
+                                    int delay_min,
+                                    int delay_max);
   void TestChangingChannelsInt16Interface(
       size_t num_channels,
       AudioProcessing::Error expected_return);
@@ -408,11 +407,11 @@
 ApmTest::ApmTest()
     : output_path_(test::OutputPath()),
 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
-      ref_filename_(test::ResourcePath("audio_processing/output_data_fixed",
-                                       "pb")),
+      ref_filename_(
+          test::ResourcePath("audio_processing/output_data_fixed", "pb")),
 #elif defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
-      ref_filename_(test::ResourcePath("audio_processing/output_data_float",
-                                       "pb")),
+      ref_filename_(
+          test::ResourcePath("audio_processing/output_data_float", "pb")),
 #endif
       frame_(NULL),
       revframe_(NULL),
@@ -491,16 +490,14 @@
   }
   std::string filename = ResourceFilePath("far", sample_rate_hz);
   far_file_ = fopen(filename.c_str(), "rb");
-  ASSERT_TRUE(far_file_ != NULL) << "Could not open file " <<
-      filename << "\n";
+  ASSERT_TRUE(far_file_ != NULL) << "Could not open file " << filename << "\n";
 
   if (near_file_) {
     ASSERT_EQ(0, fclose(near_file_));
   }
   filename = ResourceFilePath("near", sample_rate_hz);
   near_file_ = fopen(filename.c_str(), "rb");
-  ASSERT_TRUE(near_file_ != NULL) << "Could not open file " <<
-        filename << "\n";
+  ASSERT_TRUE(near_file_ != NULL) << "Could not open file " << filename << "\n";
 
   if (open_output_file) {
     if (out_file_) {
@@ -511,8 +508,8 @@
         reverse_sample_rate_hz, num_input_channels, num_output_channels,
         num_reverse_channels, num_reverse_channels, kForward);
     out_file_ = fopen(filename.c_str(), "wb");
-    ASSERT_TRUE(out_file_ != NULL) << "Could not open file " <<
-          filename << "\n";
+    ASSERT_TRUE(out_file_ != NULL)
+        << "Could not open file " << filename << "\n";
   }
 }
 
@@ -520,14 +517,13 @@
   EnableAllAPComponents(apm_.get());
 }
 
-bool ApmTest::ReadFrame(FILE* file, AudioFrame* frame,
+bool ApmTest::ReadFrame(FILE* file,
+                        AudioFrame* frame,
                         ChannelBuffer<float>* cb) {
   // The files always contain stereo audio.
   size_t frame_size = frame->samples_per_channel_ * 2;
-  size_t read_count = fread(frame->mutable_data(),
-                            sizeof(int16_t),
-                            frame_size,
-                            file);
+  size_t read_count =
+      fread(frame->mutable_data(), sizeof(int16_t), frame_size, file);
   if (read_count != frame_size) {
     // Check that the file really ended.
     EXPECT_NE(0, feof(file));
@@ -551,7 +547,8 @@
 
 // If the end of the file has been reached, rewind it and attempt to read the
 // frame again.
-void ApmTest::ReadFrameWithRewind(FILE* file, AudioFrame* frame,
+void ApmTest::ReadFrameWithRewind(FILE* file,
+                                  AudioFrame* frame,
                                   ChannelBuffer<float>* cb) {
   if (!ReadFrame(near_file_, frame_, cb)) {
     rewind(near_file_);
@@ -565,8 +562,7 @@
 
 void ApmTest::ProcessWithDefaultStreamParameters(AudioFrame* frame) {
   EXPECT_EQ(apm_->kNoError, apm_->set_stream_delay_ms(0));
-  EXPECT_EQ(apm_->kNoError,
-      apm_->gain_control()->set_stream_analog_level(127));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_stream_analog_level(127));
   EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame));
 }
 
@@ -574,13 +570,11 @@
   if (format == kIntFormat) {
     return apm_->ProcessStream(frame_);
   }
-  return apm_->ProcessStream(float_cb_->channels(),
-                             frame_->samples_per_channel_,
-                             frame_->sample_rate_hz_,
-                             LayoutFromChannels(frame_->num_channels_),
-                             output_sample_rate_hz_,
-                             LayoutFromChannels(num_output_channels_),
-                             float_cb_->channels());
+  return apm_->ProcessStream(
+      float_cb_->channels(), frame_->samples_per_channel_,
+      frame_->sample_rate_hz_, LayoutFromChannels(frame_->num_channels_),
+      output_sample_rate_hz_, LayoutFromChannels(num_output_channels_),
+      float_cb_->channels());
 }
 
 int ApmTest::AnalyzeReverseStreamChooser(Format format) {
@@ -588,14 +582,14 @@
     return apm_->ProcessReverseStream(revframe_);
   }
   return apm_->AnalyzeReverseStream(
-      revfloat_cb_->channels(),
-      revframe_->samples_per_channel_,
-      revframe_->sample_rate_hz_,
-      LayoutFromChannels(revframe_->num_channels_));
+      revfloat_cb_->channels(), revframe_->samples_per_channel_,
+      revframe_->sample_rate_hz_, LayoutFromChannels(revframe_->num_channels_));
 }
 
-void ApmTest::ProcessDelayVerificationTest(int delay_ms, int system_delay_ms,
-                                           int delay_min, int delay_max) {
+void ApmTest::ProcessDelayVerificationTest(int delay_ms,
+                                           int system_delay_ms,
+                                           int delay_min,
+                                           int delay_max) {
   // The |revframe_| and |frame_| should include the proper frame information,
   // hence can be used for extracting information.
   AudioFrame tmp_frame;
@@ -687,15 +681,12 @@
 
   // -- Missing AGC level --
   EXPECT_EQ(apm_->kNoError, apm_->gain_control()->Enable(true));
-  EXPECT_EQ(apm_->kStreamParameterNotSetError,
-            ProcessStreamChooser(format));
+  EXPECT_EQ(apm_->kStreamParameterNotSetError, ProcessStreamChooser(format));
 
   // Resets after successful ProcessStream().
-  EXPECT_EQ(apm_->kNoError,
-            apm_->gain_control()->set_stream_analog_level(127));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_stream_analog_level(127));
   EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(format));
-  EXPECT_EQ(apm_->kStreamParameterNotSetError,
-            ProcessStreamChooser(format));
+  EXPECT_EQ(apm_->kStreamParameterNotSetError, ProcessStreamChooser(format));
 
   // Other stream parameters set correctly.
   AudioProcessing::Config apm_config = apm_->GetConfig();
@@ -703,8 +694,7 @@
   apm_config.echo_canceller.mobile_mode = false;
   apm_->ApplyConfig(apm_config);
   EXPECT_EQ(apm_->kNoError, apm_->set_stream_delay_ms(100));
-  EXPECT_EQ(apm_->kStreamParameterNotSetError,
-            ProcessStreamChooser(format));
+  EXPECT_EQ(apm_->kStreamParameterNotSetError, ProcessStreamChooser(format));
   EXPECT_EQ(apm_->kNoError, apm_->gain_control()->Enable(false));
 
   // -- Missing delay --
@@ -718,20 +708,17 @@
 
   // Other stream parameters set correctly.
   EXPECT_EQ(apm_->kNoError, apm_->gain_control()->Enable(true));
-  EXPECT_EQ(apm_->kNoError,
-            apm_->gain_control()->set_stream_analog_level(127));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_stream_analog_level(127));
   EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(format));
   EXPECT_EQ(apm_->kNoError, apm_->gain_control()->Enable(false));
 
   // -- No stream parameters --
-  EXPECT_EQ(apm_->kNoError,
-            AnalyzeReverseStreamChooser(format));
+  EXPECT_EQ(apm_->kNoError, AnalyzeReverseStreamChooser(format));
   EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(format));
 
   // -- All there --
   EXPECT_EQ(apm_->kNoError, apm_->set_stream_delay_ms(100));
-  EXPECT_EQ(apm_->kNoError,
-            apm_->gain_control()->set_stream_analog_level(127));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_stream_analog_level(127));
   EXPECT_EQ(apm_->kNoError, ProcessStreamChooser(format));
 }
 
@@ -856,40 +843,34 @@
 TEST_F(ApmTest, GainControl) {
   // Testing gain modes
   EXPECT_EQ(apm_->kNoError,
-      apm_->gain_control()->set_mode(
-      apm_->gain_control()->mode()));
+            apm_->gain_control()->set_mode(apm_->gain_control()->mode()));
 
-  GainControl::Mode mode[] = {
-    GainControl::kAdaptiveAnalog,
-    GainControl::kAdaptiveDigital,
-    GainControl::kFixedDigital
-  };
+  GainControl::Mode mode[] = {GainControl::kAdaptiveAnalog,
+                              GainControl::kAdaptiveDigital,
+                              GainControl::kFixedDigital};
   for (size_t i = 0; i < arraysize(mode); i++) {
-    EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_mode(mode[i]));
+    EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_mode(mode[i]));
     EXPECT_EQ(mode[i], apm_->gain_control()->mode());
   }
   // Testing target levels
-  EXPECT_EQ(apm_->kNoError,
-      apm_->gain_control()->set_target_level_dbfs(
-      apm_->gain_control()->target_level_dbfs()));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_target_level_dbfs(
+                                apm_->gain_control()->target_level_dbfs()));
 
   int level_dbfs[] = {0, 6, 31};
   for (size_t i = 0; i < arraysize(level_dbfs); i++) {
     EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_target_level_dbfs(level_dbfs[i]));
+              apm_->gain_control()->set_target_level_dbfs(level_dbfs[i]));
     EXPECT_EQ(level_dbfs[i], apm_->gain_control()->target_level_dbfs());
   }
 
   // Testing compression gains
-  EXPECT_EQ(apm_->kNoError,
-      apm_->gain_control()->set_compression_gain_db(
-      apm_->gain_control()->compression_gain_db()));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_compression_gain_db(
+                                apm_->gain_control()->compression_gain_db()));
 
   int gain_db[] = {0, 10, 90};
   for (size_t i = 0; i < arraysize(gain_db); i++) {
     EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_compression_gain_db(gain_db[i]));
+              apm_->gain_control()->set_compression_gain_db(gain_db[i]));
     ProcessStreamChooser(kFloatFormat);
     EXPECT_EQ(gain_db[i], apm_->gain_control()->compression_gain_db());
   }
@@ -901,22 +882,21 @@
   EXPECT_TRUE(apm_->gain_control()->is_limiter_enabled());
 
   // Testing level limits
-  EXPECT_EQ(apm_->kNoError,
-      apm_->gain_control()->set_analog_level_limits(
-      apm_->gain_control()->analog_level_minimum(),
-      apm_->gain_control()->analog_level_maximum()));
+  EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_analog_level_limits(
+                                apm_->gain_control()->analog_level_minimum(),
+                                apm_->gain_control()->analog_level_maximum()));
 
   int min_level[] = {0, 255, 1024};
   for (size_t i = 0; i < arraysize(min_level); i++) {
-    EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_analog_level_limits(min_level[i], 1024));
+    EXPECT_EQ(apm_->kNoError, apm_->gain_control()->set_analog_level_limits(
+                                  min_level[i], 1024));
     EXPECT_EQ(min_level[i], apm_->gain_control()->analog_level_minimum());
   }
 
   int max_level[] = {0, 1024, 65535};
   for (size_t i = 0; i < arraysize(min_level); i++) {
     EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_analog_level_limits(0, max_level[i]));
+              apm_->gain_control()->set_analog_level_limits(0, max_level[i]));
     EXPECT_EQ(max_level[i], apm_->gain_control()->analog_level_maximum());
   }
 
@@ -981,7 +961,7 @@
 
     // Always pass in the same volume.
     EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_stream_analog_level(100));
+              apm_->gain_control()->set_stream_analog_level(100));
     EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_));
     out_analog_level = apm_->gain_control()->stream_analog_level();
   }
@@ -1011,7 +991,7 @@
     ScaleFrame(frame_, 0.25);
 
     EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_stream_analog_level(out_analog_level));
+              apm_->gain_control()->set_stream_analog_level(out_analog_level));
     EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_));
     out_analog_level = apm_->gain_control()->stream_analog_level();
   }
@@ -1027,7 +1007,7 @@
     ScaleFrame(frame_, 0.25);
 
     EXPECT_EQ(apm_->kNoError,
-        apm_->gain_control()->set_stream_analog_level(out_analog_level));
+              apm_->gain_control()->set_stream_analog_level(out_analog_level));
     EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_));
     out_analog_level = apm_->gain_control()->stream_analog_level();
     // Check that AGC respected the manually adjusted volume.
@@ -1046,14 +1026,10 @@
 TEST_F(ApmTest, NoiseSuppression) {
   // Test valid suppression levels.
   NoiseSuppression::Level level[] = {
-    NoiseSuppression::kLow,
-    NoiseSuppression::kModerate,
-    NoiseSuppression::kHigh,
-    NoiseSuppression::kVeryHigh
-  };
+      NoiseSuppression::kLow, NoiseSuppression::kModerate,
+      NoiseSuppression::kHigh, NoiseSuppression::kVeryHigh};
   for (size_t i = 0; i < arraysize(level); i++) {
-    EXPECT_EQ(apm_->kNoError,
-        apm_->noise_suppression()->set_level(level[i]));
+    EXPECT_EQ(apm_->kNoError, apm_->noise_suppression()->set_level(level[i]));
     EXPECT_EQ(level[i], apm_->noise_suppression()->level());
   }
 
@@ -1149,11 +1125,8 @@
 
   // Test valid likelihoods
   VoiceDetection::Likelihood likelihood[] = {
-      VoiceDetection::kVeryLowLikelihood,
-      VoiceDetection::kLowLikelihood,
-      VoiceDetection::kModerateLikelihood,
-      VoiceDetection::kHighLikelihood
-  };
+      VoiceDetection::kVeryLowLikelihood, VoiceDetection::kLowLikelihood,
+      VoiceDetection::kModerateLikelihood, VoiceDetection::kHighLikelihood};
   for (size_t i = 0; i < arraysize(likelihood); i++) {
     EXPECT_EQ(apm_->kNoError,
               apm_->voice_detection()->set_likelihood(likelihood[i]));
@@ -1182,10 +1155,7 @@
   // Test that AudioFrame activity is maintained when VAD is disabled.
   EXPECT_EQ(apm_->kNoError, apm_->voice_detection()->Enable(false));
   AudioFrame::VADActivity activity[] = {
-      AudioFrame::kVadActive,
-      AudioFrame::kVadPassive,
-      AudioFrame::kVadUnknown
-  };
+      AudioFrame::kVadActive, AudioFrame::kVadPassive, AudioFrame::kVadUnknown};
   for (size_t i = 0; i < arraysize(activity); i++) {
     frame_->vad_activity_ = activity[i];
     EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_));
@@ -1232,18 +1202,16 @@
   // Test that ProcessStream copies input to output even with no processing.
   const size_t kSamples = 80;
   const int sample_rate = 8000;
-  const float src[kSamples] = {
-    -1.0f, 0.0f, 1.0f
-  };
+  const float src[kSamples] = {-1.0f, 0.0f, 1.0f};
   float dest[kSamples] = {};
 
   auto src_channels = &src[0];
   auto dest_channels = &dest[0];
 
   apm_.reset(AudioProcessingBuilder().Create());
-  EXPECT_NOERR(apm_->ProcessStream(
-      &src_channels, kSamples, sample_rate, LayoutFromChannels(1),
-      sample_rate, LayoutFromChannels(1), &dest_channels));
+  EXPECT_NOERR(apm_->ProcessStream(&src_channels, kSamples, sample_rate,
+                                   LayoutFromChannels(1), sample_rate,
+                                   LayoutFromChannels(1), &dest_channels));
 
   for (size_t i = 0; i < kSamples; ++i) {
     EXPECT_EQ(src[i], dest[i]);
@@ -1267,13 +1235,8 @@
   EnableAllComponents();
 
   for (size_t i = 0; i < arraysize(kProcessSampleRates); i++) {
-    Init(kProcessSampleRates[i],
-         kProcessSampleRates[i],
-         kProcessSampleRates[i],
-         2,
-         2,
-         2,
-         false);
+    Init(kProcessSampleRates[i], kProcessSampleRates[i], kProcessSampleRates[i],
+         2, 2, 2, false);
     int analog_level = 127;
     ASSERT_EQ(0, feof(far_file_));
     ASSERT_EQ(0, feof(near_file_));
@@ -1289,7 +1252,7 @@
 
       ASSERT_EQ(kNoErr, apm_->set_stream_delay_ms(0));
       ASSERT_EQ(kNoErr,
-          apm_->gain_control()->set_stream_analog_level(analog_level));
+                apm_->gain_control()->set_stream_analog_level(analog_level));
       ASSERT_EQ(kNoErr, apm_->ProcessStream(frame_));
       analog_level = apm_->gain_control()->stream_analog_level();
 
@@ -1393,13 +1356,9 @@
         output_sample_rate = msg.output_sample_rate();
       }
 
-      Init(msg.sample_rate(),
-           output_sample_rate,
-           reverse_sample_rate,
-           msg.num_input_channels(),
-           msg.num_output_channels(),
-           msg.num_reverse_channels(),
-           false);
+      Init(msg.sample_rate(), output_sample_rate, reverse_sample_rate,
+           msg.num_input_channels(), msg.num_output_channels(),
+           msg.num_reverse_channels(), false);
       if (first_init) {
         // AttachAecDump() writes an additional init message. Don't start
         // recording until after the first init to avoid the extra message.
@@ -1417,9 +1376,8 @@
         ASSERT_EQ(revframe_->num_channels_,
                   static_cast<size_t>(msg.channel_size()));
         for (int i = 0; i < msg.channel_size(); ++i) {
-           memcpy(revfloat_cb_->channels()[i],
-                  msg.channel(i).data(),
-                  msg.channel(i).size());
+          memcpy(revfloat_cb_->channels()[i], msg.channel(i).data(),
+                 msg.channel(i).size());
         }
       } else {
         memcpy(revframe_->mutable_data(), msg.data().data(), msg.data().size());
@@ -1447,9 +1405,8 @@
         ASSERT_EQ(frame_->num_channels_,
                   static_cast<size_t>(msg.input_channel_size()));
         for (int i = 0; i < msg.input_channel_size(); ++i) {
-           memcpy(float_cb_->channels()[i],
-                  msg.input_channel(i).data(),
-                  msg.input_channel(i).size());
+          memcpy(float_cb_->channels()[i], msg.input_channel(i).data(),
+                 msg.input_channel(i).size());
         }
       } else {
         memcpy(frame_->mutable_data(), msg.input_data().data(),
@@ -1656,13 +1613,10 @@
 
     EnableAllComponents();
 
-    Init(test->sample_rate(),
-         test->sample_rate(),
-         test->sample_rate(),
+    Init(test->sample_rate(), test->sample_rate(), test->sample_rate(),
          static_cast<size_t>(test->num_input_channels()),
          static_cast<size_t>(test->num_output_channels()),
-         static_cast<size_t>(test->num_reverse_channels()),
-         true);
+         static_cast<size_t>(test->num_reverse_channels()), true);
 
     int frame_count = 0;
     int has_voice_count = 0;
@@ -1673,7 +1627,7 @@
     float ns_speech_prob_average = 0.0f;
     float rms_dbfs_average = 0.0f;
 #if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
-  int stats_index = 0;
+    int stats_index = 0;
 #endif
 
     while (ReadFrame(far_file_, revframe_) && ReadFrame(near_file_, frame_)) {
@@ -1683,7 +1637,7 @@
 
       EXPECT_EQ(apm_->kNoError, apm_->set_stream_delay_ms(0));
       EXPECT_EQ(apm_->kNoError,
-          apm_->gain_control()->set_stream_analog_level(analog_level));
+                apm_->gain_control()->set_stream_analog_level(analog_level));
 
       EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_));
 
@@ -1711,10 +1665,8 @@
       rms_dbfs_average += *stats.output_rms_dbfs;
 
       size_t frame_size = frame_->samples_per_channel_ * frame_->num_channels_;
-      size_t write_count = fwrite(frame_->data(),
-                                  sizeof(int16_t),
-                                  frame_size,
-                                  out_file_);
+      size_t write_count =
+          fwrite(frame_->data(), sizeof(int16_t), frame_size, out_file_);
       ASSERT_EQ(frame_size, write_count);
 
       // Reset in case of downmixing.
@@ -1787,8 +1739,7 @@
       const int kMaxOutputAverageNear = kIntNear;
 #endif
       EXPECT_NEAR(test->has_voice_count(),
-                  has_voice_count - kHasVoiceCountOffset,
-                  kHasVoiceCountNear);
+                  has_voice_count - kHasVoiceCountOffset, kHasVoiceCountNear);
       EXPECT_NEAR(test->is_saturated_count(), is_saturated_count, kIntNear);
 
       EXPECT_NEAR(test->analog_level_average(), analog_level_average, kIntNear);
@@ -1797,8 +1748,7 @@
                   kMaxOutputAverageNear);
 #if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
       const double kFloatNear = 0.0005;
-      EXPECT_NEAR(test->ns_speech_probability_average(),
-                  ns_speech_prob_average,
+      EXPECT_NEAR(test->ns_speech_probability_average(), ns_speech_prob_average,
                   kFloatNear);
       EXPECT_NEAR(test->rms_dbfs_average(), rms_dbfs_average, kFloatNear);
 #endif
@@ -1832,9 +1782,9 @@
     AudioProcessing::ChannelLayout out_layout;
   };
   ChannelFormat cf[] = {
-    {AudioProcessing::kMonoAndKeyboard, AudioProcessing::kMono},
-    {AudioProcessing::kStereoAndKeyboard, AudioProcessing::kMono},
-    {AudioProcessing::kStereoAndKeyboard, AudioProcessing::kStereo},
+      {AudioProcessing::kMonoAndKeyboard, AudioProcessing::kMono},
+      {AudioProcessing::kStereoAndKeyboard, AudioProcessing::kMono},
+      {AudioProcessing::kStereoAndKeyboard, AudioProcessing::kStereo},
   };
 
   std::unique_ptr<AudioProcessing> ap(AudioProcessingBuilder().Create());
@@ -1850,14 +1800,9 @@
 
     // Run over a few chunks.
     for (int j = 0; j < 10; ++j) {
-      EXPECT_NOERR(ap->ProcessStream(
-          in_cb.channels(),
-          in_cb.num_frames(),
-          in_rate,
-          cf[i].in_layout,
-          out_rate,
-          cf[i].out_layout,
-          out_cb.channels()));
+      EXPECT_NOERR(ap->ProcessStream(in_cb.channels(), in_cb.num_frames(),
+                                     in_rate, cf[i].in_layout, out_rate,
+                                     cf[i].out_layout, out_cb.channels()));
     }
   }
 }
@@ -1978,20 +1923,20 @@
     FILE* far_file =
         fopen(ResourceFilePath("far", reverse_input_rate).c_str(), "rb");
     FILE* near_file = fopen(ResourceFilePath("near", input_rate).c_str(), "rb");
-    FILE* out_file =
-        fopen(OutputFilePath(output_file_prefix, input_rate, output_rate,
-                             reverse_input_rate, reverse_output_rate,
-                             num_input_channels, num_output_channels,
-                             num_reverse_input_channels,
-                             num_reverse_output_channels, kForward).c_str(),
-              "wb");
-    FILE* rev_out_file =
-        fopen(OutputFilePath(output_file_prefix, input_rate, output_rate,
-                             reverse_input_rate, reverse_output_rate,
-                             num_input_channels, num_output_channels,
-                             num_reverse_input_channels,
-                             num_reverse_output_channels, kReverse).c_str(),
-              "wb");
+    FILE* out_file = fopen(
+        OutputFilePath(
+            output_file_prefix, input_rate, output_rate, reverse_input_rate,
+            reverse_output_rate, num_input_channels, num_output_channels,
+            num_reverse_input_channels, num_reverse_output_channels, kForward)
+            .c_str(),
+        "wb");
+    FILE* rev_out_file = fopen(
+        OutputFilePath(
+            output_file_prefix, input_rate, output_rate, reverse_input_rate,
+            reverse_output_rate, num_input_channels, num_output_channels,
+            num_reverse_input_channels, num_reverse_output_channels, kReverse)
+            .c_str(),
+        "wb");
     ASSERT_TRUE(far_file != NULL);
     ASSERT_TRUE(near_file != NULL);
     ASSERT_TRUE(out_file != NULL);
@@ -2024,22 +1969,17 @@
       EXPECT_NOERR(ap->gain_control()->set_stream_analog_level(analog_level));
 
       EXPECT_NOERR(ap->ProcessStream(
-          fwd_cb.channels(),
-          fwd_cb.num_frames(),
-          input_rate,
-          LayoutFromChannels(num_input_channels),
-          output_rate,
-          LayoutFromChannels(num_output_channels),
-          out_cb.channels()));
+          fwd_cb.channels(), fwd_cb.num_frames(), input_rate,
+          LayoutFromChannels(num_input_channels), output_rate,
+          LayoutFromChannels(num_output_channels), out_cb.channels()));
 
       // Dump forward output to file.
       Interleave(out_cb.channels(), out_cb.num_frames(), out_cb.num_channels(),
                  float_data.get());
       size_t out_length = out_cb.num_channels() * out_cb.num_frames();
 
-      ASSERT_EQ(out_length,
-                fwrite(float_data.get(), sizeof(float_data[0]),
-                       out_length, out_file));
+      ASSERT_EQ(out_length, fwrite(float_data.get(), sizeof(float_data[0]),
+                                   out_length, out_file));
 
       // Dump reverse output to file.
       Interleave(rev_out_cb.channels(), rev_out_cb.num_frames(),
@@ -2047,9 +1987,8 @@
       size_t rev_out_length =
           rev_out_cb.num_channels() * rev_out_cb.num_frames();
 
-      ASSERT_EQ(rev_out_length,
-                fwrite(float_data.get(), sizeof(float_data[0]), rev_out_length,
-                       rev_out_file));
+      ASSERT_EQ(rev_out_length, fwrite(float_data.get(), sizeof(float_data[0]),
+                                       rev_out_length, rev_out_file));
 
       analog_level = ap->gain_control()->stream_analog_level();
     }
@@ -2076,12 +2015,8 @@
     int num_reverse_output;
   };
   ChannelFormat cf[] = {
-      {1, 1, 1, 1},
-      {1, 1, 2, 1},
-      {2, 1, 1, 1},
-      {2, 1, 2, 1},
-      {2, 2, 1, 1},
-      {2, 2, 2, 2},
+      {1, 1, 1, 1}, {1, 1, 2, 1}, {2, 1, 1, 1},
+      {2, 1, 2, 1}, {2, 2, 1, 1}, {2, 2, 2, 2},
   };
 
   for (size_t i = 0; i < arraysize(cf); ++i) {
@@ -2122,15 +2057,17 @@
           OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_,
                          reverse_output_rate_, cf[i].num_input,
                          cf[i].num_output, cf[i].num_reverse_input,
-                         cf[i].num_reverse_output, file_direction).c_str(),
+                         cf[i].num_reverse_output, file_direction)
+              .c_str(),
           "rb");
       // The reference files always have matching input and output channels.
-      FILE* ref_file = fopen(
-          OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate,
-                         cf[i].num_output, cf[i].num_output,
-                         cf[i].num_reverse_output, cf[i].num_reverse_output,
-                         file_direction).c_str(),
-          "rb");
+      FILE* ref_file =
+          fopen(OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate,
+                               cf[i].num_output, cf[i].num_output,
+                               cf[i].num_reverse_output,
+                               cf[i].num_reverse_output, file_direction)
+                    .c_str(),
+                "rb");
       ASSERT_TRUE(out_file != NULL);
       ASSERT_TRUE(ref_file != NULL);
 
diff --git a/modules/audio_processing/echo_cancellation_impl.h b/modules/audio_processing/echo_cancellation_impl.h
index a80d139..1df41a7 100644
--- a/modules/audio_processing/echo_cancellation_impl.h
+++ b/modules/audio_processing/echo_cancellation_impl.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_ECHO_CANCELLATION_IMPL_H_
 
 #include <stddef.h>
+
 #include <memory>
 #include <string>
 #include <vector>
@@ -35,7 +36,6 @@
   void ProcessRenderAudio(rtc::ArrayView<const float> packed_render_audio);
   int ProcessCaptureAudio(AudioBuffer* audio, int stream_delay_ms);
 
-
   // Differences in clock speed on the primary and reverse streams can impact
   // the AEC performance. On the client-side, this could be seen when different
   // render and capture devices are used, particularly with webcams.
diff --git a/modules/audio_processing/echo_cancellation_impl_unittest.cc b/modules/audio_processing/echo_cancellation_impl_unittest.cc
index 1107564..a970a4e 100644
--- a/modules/audio_processing/echo_cancellation_impl_unittest.cc
+++ b/modules/audio_processing/echo_cancellation_impl_unittest.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/echo_cancellation_impl.h"
+
 #include <memory>
 
 #include "modules/audio_processing/aec/aec_core.h"
-#include "modules/audio_processing/echo_cancellation_impl.h"
 #include "modules/audio_processing/include/audio_processing.h"
 #include "rtc_base/critical_section.h"
 #include "test/gtest.h"
diff --git a/modules/audio_processing/echo_control_mobile_impl.cc b/modules/audio_processing/echo_control_mobile_impl.cc
index 0495b39..69dfafe 100644
--- a/modules/audio_processing/echo_control_mobile_impl.cc
+++ b/modules/audio_processing/echo_control_mobile_impl.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/echo_control_mobile_impl.h"
 
 #include <string.h>
+
 #include <cstdint>
 
 #include "modules/audio_processing/aecm/echo_control_mobile.h"
@@ -198,7 +199,7 @@
   if (MapSetting(mode) == -1) {
     return AudioProcessing::kBadParameterError;
   }
-    routing_mode_ = mode;
+  routing_mode_ = mode;
   return Configure();
 }
 
@@ -207,7 +208,7 @@
 }
 
 int EchoControlMobileImpl::enable_comfort_noise(bool enable) {
-    comfort_noise_enabled_ = enable;
+  comfort_noise_enabled_ = enable;
   return Configure();
 }
 
diff --git a/modules/audio_processing/echo_control_mobile_impl.h b/modules/audio_processing/echo_control_mobile_impl.h
index e443797..d84a15e 100644
--- a/modules/audio_processing/echo_control_mobile_impl.h
+++ b/modules/audio_processing/echo_control_mobile_impl.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 #include <vector>
 
diff --git a/modules/audio_processing/echo_detector/circular_buffer.h b/modules/audio_processing/echo_detector/circular_buffer.h
index c52311f..db1aeae 100644
--- a/modules/audio_processing/echo_detector/circular_buffer.h
+++ b/modules/audio_processing/echo_detector/circular_buffer.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_ECHO_DETECTOR_CIRCULAR_BUFFER_H_
 
 #include <stddef.h>
+
 #include <vector>
 
 #include "absl/types/optional.h"
diff --git a/modules/audio_processing/echo_detector/circular_buffer_unittest.cc b/modules/audio_processing/echo_detector/circular_buffer_unittest.cc
index 0fa2a2b..7a234d4 100644
--- a/modules/audio_processing/echo_detector/circular_buffer_unittest.cc
+++ b/modules/audio_processing/echo_detector/circular_buffer_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/echo_detector/circular_buffer.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/echo_detector/mean_variance_estimator_unittest.cc b/modules/audio_processing/echo_detector/mean_variance_estimator_unittest.cc
index f8efc3a..8327d23 100644
--- a/modules/audio_processing/echo_detector/mean_variance_estimator_unittest.cc
+++ b/modules/audio_processing/echo_detector/mean_variance_estimator_unittest.cc
@@ -10,6 +10,7 @@
  */
 
 #include "modules/audio_processing/echo_detector/mean_variance_estimator.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/echo_detector/moving_max_unittest.cc b/modules/audio_processing/echo_detector/moving_max_unittest.cc
index b67b86f..9429127 100644
--- a/modules/audio_processing/echo_detector/moving_max_unittest.cc
+++ b/modules/audio_processing/echo_detector/moving_max_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/echo_detector/moving_max.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/echo_detector/normalized_covariance_estimator_unittest.cc b/modules/audio_processing/echo_detector/normalized_covariance_estimator_unittest.cc
index 7e0512e..89fb938 100644
--- a/modules/audio_processing/echo_detector/normalized_covariance_estimator_unittest.cc
+++ b/modules/audio_processing/echo_detector/normalized_covariance_estimator_unittest.cc
@@ -10,6 +10,7 @@
  */
 
 #include "modules/audio_processing/echo_detector/normalized_covariance_estimator.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/gain_control_config_proxy_unittest.cc b/modules/audio_processing/gain_control_config_proxy_unittest.cc
index 931c99f..5bd341f 100644
--- a/modules/audio_processing/gain_control_config_proxy_unittest.cc
+++ b/modules/audio_processing/gain_control_config_proxy_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/gain_control_config_proxy.h"
+
 #include "modules/audio_processing/include/audio_processing.h"
 #include "modules/audio_processing/include/mock_audio_processing.h"
 #include "rtc_base/critical_section.h"
diff --git a/modules/audio_processing/gain_control_impl.cc b/modules/audio_processing/gain_control_impl.cc
index 47cbe52..2ca522c 100644
--- a/modules/audio_processing/gain_control_impl.cc
+++ b/modules/audio_processing/gain_control_impl.cc
@@ -301,7 +301,6 @@
   size_t num_proc_channels_local = 0u;
   int sample_rate_hz_local = 0;
   {
-
     minimum_capture_level_ = minimum;
     maximum_capture_level_ = maximum;
 
diff --git a/modules/audio_processing/gain_control_impl.h b/modules/audio_processing/gain_control_impl.h
index 36b84ee..99b43b5 100644
--- a/modules/audio_processing/gain_control_impl.h
+++ b/modules/audio_processing/gain_control_impl.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 #include <vector>
 
diff --git a/modules/audio_processing/gain_controller2_unittest.cc b/modules/audio_processing/gain_controller2_unittest.cc
index 46256d8..99749cc 100644
--- a/modules/audio_processing/gain_controller2_unittest.cc
+++ b/modules/audio_processing/gain_controller2_unittest.cc
@@ -8,13 +8,14 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/gain_controller2.h"
+
 #include <algorithm>
 
 #include "absl/memory/memory.h"
 #include "api/array_view.h"
 #include "modules/audio_processing/agc2/agc2_testing_common.h"
 #include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/gain_controller2.h"
 #include "modules/audio_processing/test/audio_buffer_tools.h"
 #include "modules/audio_processing/test/bitexactness_tools.h"
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/include/aec_dump.h b/modules/audio_processing/include/aec_dump.h
index b734adf..b64bf0b 100644
--- a/modules/audio_processing/include/aec_dump.h
+++ b/modules/audio_processing/include/aec_dump.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_INCLUDE_AEC_DUMP_H_
 
 #include <stdint.h>
+
 #include <string>
 
 #include "api/audio/audio_frame.h"
diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h
index a652dc9..4bcace2 100644
--- a/modules/audio_processing/include/audio_processing.h
+++ b/modules/audio_processing/include/audio_processing.h
@@ -20,6 +20,7 @@
 #include <stddef.h>  // size_t
 #include <stdio.h>   // FILE
 #include <string.h>
+
 #include <vector>
 
 #include "absl/types/optional.h"
diff --git a/modules/audio_processing/low_cut_filter.cc b/modules/audio_processing/low_cut_filter.cc
index 12a6e73..1ee955d 100644
--- a/modules/audio_processing/low_cut_filter.cc
+++ b/modules/audio_processing/low_cut_filter.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/low_cut_filter.h"
 
 #include <stdint.h>
+
 #include <cstring>
 
 #include "common_audio/signal_processing/include/signal_processing_library.h"
diff --git a/modules/audio_processing/low_cut_filter_unittest.cc b/modules/audio_processing/low_cut_filter_unittest.cc
index d7b3cb9..ea4fb67 100644
--- a/modules/audio_processing/low_cut_filter_unittest.cc
+++ b/modules/audio_processing/low_cut_filter_unittest.cc
@@ -7,11 +7,12 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
+#include "modules/audio_processing/low_cut_filter.h"
+
 #include <vector>
 
 #include "api/array_view.h"
 #include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/low_cut_filter.h"
 #include "modules/audio_processing/test/audio_buffer_tools.h"
 #include "modules/audio_processing/test/bitexactness_tools.h"
 #include "test/gtest.h"
diff --git a/modules/audio_processing/ns/defines.h b/modules/audio_processing/ns/defines.h
index d6abfea..2935f25 100644
--- a/modules/audio_processing/ns/defines.h
+++ b/modules/audio_processing/ns/defines.h
@@ -46,7 +46,8 @@
   (float)0.5  // default threshold for Spectral Flatness feature
 #define SD_FEATURE_THR \
   (float)0.5  // default threshold for Spectral Difference feature
-#define PROB_RANGE (float)0.20   // probability threshold for noise state in
+#define PROB_RANGE \
+  (float)0.20                    // probability threshold for noise state in
                                  // speech/noise likelihood
 #define HIST_PAR_EST 1000        // histogram size for estimation of parameters
 #define GAMMA_PAUSE (float)0.05  // update for conservative noise estimate
diff --git a/modules/audio_processing/residual_echo_detector_unittest.cc b/modules/audio_processing/residual_echo_detector_unittest.cc
index 6658999..84065cd 100644
--- a/modules/audio_processing/residual_echo_detector_unittest.cc
+++ b/modules/audio_processing/residual_echo_detector_unittest.cc
@@ -8,9 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/residual_echo_detector.h"
+
 #include <vector>
 
-#include "modules/audio_processing/residual_echo_detector.h"
 #include "rtc_base/ref_counted_object.h"
 #include "test/gtest.h"
 
diff --git a/modules/audio_processing/rms_level_unittest.cc b/modules/audio_processing/rms_level_unittest.cc
index 67489de..a1ceaad 100644
--- a/modules/audio_processing/rms_level_unittest.cc
+++ b/modules/audio_processing/rms_level_unittest.cc
@@ -9,12 +9,13 @@
  */
 // MSVC++ requires this to be set before any other includes to get M_PI.
 #define _USE_MATH_DEFINES
+#include "modules/audio_processing/rms_level.h"
+
 #include <cmath>
 #include <memory>
 #include <vector>
 
 #include "api/array_view.h"
-#include "modules/audio_processing/rms_level.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
 #include "test/gtest.h"
diff --git a/modules/audio_processing/splitting_filter_unittest.cc b/modules/audio_processing/splitting_filter_unittest.cc
index 1caee64..40f0c82 100644
--- a/modules/audio_processing/splitting_filter_unittest.cc
+++ b/modules/audio_processing/splitting_filter_unittest.cc
@@ -11,10 +11,11 @@
 // MSVC++ requires this to be set before any other includes to get M_PI.
 #define _USE_MATH_DEFINES
 
+#include "modules/audio_processing/splitting_filter.h"
+
 #include <cmath>
 
 #include "common_audio/channel_buffer.h"
-#include "modules/audio_processing/splitting_filter.h"
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/test/aec_dump_based_simulator.h b/modules/audio_processing/test/aec_dump_based_simulator.h
index f15aa27..1181979 100644
--- a/modules/audio_processing/test/aec_dump_based_simulator.h
+++ b/modules/audio_processing/test/aec_dump_based_simulator.h
@@ -15,7 +15,6 @@
 #include <string>
 
 #include "modules/audio_processing/test/audio_processing_simulator.h"
-
 #include "rtc_base/constructor_magic.h"
 #include "rtc_base/ignore_wundef.h"
 
diff --git a/modules/audio_processing/test/audio_buffer_tools.h b/modules/audio_processing/test/audio_buffer_tools.h
index dc53e4f..9ee34e7 100644
--- a/modules/audio_processing/test/audio_buffer_tools.h
+++ b/modules/audio_processing/test/audio_buffer_tools.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_TEST_AUDIO_BUFFER_TOOLS_H_
 
 #include <vector>
+
 #include "api/array_view.h"
 #include "modules/audio_processing/audio_buffer.h"
 #include "modules/audio_processing/include/audio_processing.h"
diff --git a/modules/audio_processing/test/bitexactness_tools.cc b/modules/audio_processing/test/bitexactness_tools.cc
index 7bf2b01..f245c2c 100644
--- a/modules/audio_processing/test/bitexactness_tools.cc
+++ b/modules/audio_processing/test/bitexactness_tools.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/test/bitexactness_tools.h"
 
 #include <math.h>
+
 #include <algorithm>
 #include <string>
 #include <vector>
diff --git a/modules/audio_processing/test/conversational_speech/generator_unittest.cc b/modules/audio_processing/test/conversational_speech/generator_unittest.cc
index cad2656..c7a459c 100644
--- a/modules/audio_processing/test/conversational_speech/generator_unittest.cc
+++ b/modules/audio_processing/test/conversational_speech/generator_unittest.cc
@@ -37,6 +37,7 @@
 #define _USE_MATH_DEFINES
 
 #include <stdio.h>
+
 #include <cmath>
 #include <map>
 #include <memory>
@@ -60,9 +61,9 @@
 namespace {
 
 using conversational_speech::LoadTiming;
-using conversational_speech::SaveTiming;
 using conversational_speech::MockWavReaderFactory;
 using conversational_speech::MultiEndCall;
+using conversational_speech::SaveTiming;
 using conversational_speech::Turn;
 using conversational_speech::WavReaderFactory;
 
@@ -81,12 +82,12 @@
 constexpr int kDefaultSampleRate = 48000;
 const std::map<std::string, const MockWavReaderFactory::Params>
     kDefaultMockWavReaderFactoryParamsMap = {
-  {"t300", {kDefaultSampleRate, 1u, 14400u}},  // Mono, 0.3 seconds.
-  {"t500", {kDefaultSampleRate, 1u, 24000u}},  // Mono, 0.5 seconds.
-  {"t1000", {kDefaultSampleRate, 1u, 48000u}},  // Mono, 1.0 seconds.
-  {"sr8000", {8000, 1u, 8000u}},  // 8kHz sample rate, mono, 1 second.
-  {"sr16000", {16000, 1u, 16000u}},  // 16kHz sample rate, mono, 1 second.
-  {"sr16000_stereo", {16000, 2u, 16000u}},  // Like sr16000, but stereo.
+        {"t300", {kDefaultSampleRate, 1u, 14400u}},   // Mono, 0.3 seconds.
+        {"t500", {kDefaultSampleRate, 1u, 24000u}},   // Mono, 0.5 seconds.
+        {"t1000", {kDefaultSampleRate, 1u, 48000u}},  // Mono, 1.0 seconds.
+        {"sr8000", {8000, 1u, 8000u}},     // 8kHz sample rate, mono, 1 second.
+        {"sr16000", {16000, 1u, 16000u}},  // 16kHz sample rate, mono, 1 second.
+        {"sr16000_stereo", {16000, 2u, 16000u}},  // Like sr16000, but stereo.
 };
 const MockWavReaderFactory::Params& kDefaultMockWavReaderFactoryParams =
     kDefaultMockWavReaderFactoryParamsMap.at("t500");
@@ -105,8 +106,8 @@
   std::vector<int16_t> samples(params.num_samples);
   for (std::size_t i = 0; i < params.num_samples; ++i) {
     // TODO(alessiob): the produced tone is not pure, improve.
-    samples[i] = std::lround(32767.0f * std::sin(
-        two_pi * i * frequency / params.sample_rate));
+    samples[i] = std::lround(
+        32767.0f * std::sin(two_pi * i * frequency / params.sample_rate));
   }
 
   // Write samples.
@@ -131,8 +132,7 @@
   // Create sine tracks.
   for (const auto& it : sine_tracks_params) {
     const std::string temp_filepath = JoinFilename(temp_directory, it.first);
-    CreateSineWavFile(
-        temp_filepath, it.second.params, it.second.frequency);
+    CreateSineWavFile(temp_filepath, it.second.params, it.second.frequency);
   }
 
   return temp_directory;
@@ -148,7 +148,9 @@
 }
 
 void DeleteFolderAndContents(const std::string& dir) {
-  if (!DirExists(dir)) { return; }
+  if (!DirExists(dir)) {
+    return;
+  }
   absl::optional<std::vector<std::string>> dir_content = ReadDirectory(dir);
   EXPECT_TRUE(dir_content);
   for (const auto& path : *dir_content) {
@@ -170,8 +172,8 @@
 using ::testing::_;
 
 TEST(ConversationalSpeechTest, Settings) {
-  const conversational_speech::Config config(
-      audiotracks_path, timing_filepath, output_path);
+  const conversational_speech::Config config(audiotracks_path, timing_filepath,
+                                             output_path);
 
   // Test getters.
   EXPECT_EQ(audiotracks_path, config.audiotracks_path());
@@ -181,8 +183,8 @@
 
 TEST(ConversationalSpeechTest, TimingSaveLoad) {
   // Save test timing.
-  const std::string temporary_filepath = TempFilename(
-      OutputPath(), "TempTimingTestFile");
+  const std::string temporary_filepath =
+      TempFilename(OutputPath(), "TempTimingTestFile");
   SaveTiming(temporary_filepath, expected_timing);
 
   // Create a std::vector<Turn> instance by loading from file.
@@ -218,50 +220,54 @@
 
 TEST(ConversationalSpeechTest, MultiEndCallSetupDifferentSampleRates) {
   const std::vector<Turn> timing = {
-      {"A", "sr8000", 0, 0}, {"B", "sr16000", 0, 0},
+      {"A", "sr8000", 0, 0},
+      {"B", "sr16000", 0, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
   // There are two unique audio tracks to read.
   EXPECT_CALL(*mock_wavreader_factory, Create(::testing::_)).Times(2);
 
-  MultiEndCall multiend_call(
-      timing, audiotracks_path, std::move(mock_wavreader_factory));
+  MultiEndCall multiend_call(timing, audiotracks_path,
+                             std::move(mock_wavreader_factory));
   EXPECT_FALSE(multiend_call.valid());
 }
 
 TEST(ConversationalSpeechTest, MultiEndCallSetupMultipleChannels) {
   const std::vector<Turn> timing = {
-      {"A", "sr16000_stereo", 0, 0}, {"B", "sr16000_stereo", 0, 0},
+      {"A", "sr16000_stereo", 0, 0},
+      {"B", "sr16000_stereo", 0, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
   // There is one unique audio track to read.
   EXPECT_CALL(*mock_wavreader_factory, Create(::testing::_)).Times(1);
 
-  MultiEndCall multiend_call(
-      timing, audiotracks_path, std::move(mock_wavreader_factory));
+  MultiEndCall multiend_call(timing, audiotracks_path,
+                             std::move(mock_wavreader_factory));
   EXPECT_FALSE(multiend_call.valid());
 }
 
 TEST(ConversationalSpeechTest,
-       MultiEndCallSetupDifferentSampleRatesAndMultipleNumChannels) {
+     MultiEndCallSetupDifferentSampleRatesAndMultipleNumChannels) {
   const std::vector<Turn> timing = {
-      {"A", "sr8000", 0, 0}, {"B", "sr16000_stereo", 0, 0},
+      {"A", "sr8000", 0, 0},
+      {"B", "sr16000_stereo", 0, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
   // There are two unique audio tracks to read.
   EXPECT_CALL(*mock_wavreader_factory, Create(::testing::_)).Times(2);
 
-  MultiEndCall multiend_call(
-      timing, audiotracks_path, std::move(mock_wavreader_factory));
+  MultiEndCall multiend_call(timing, audiotracks_path,
+                             std::move(mock_wavreader_factory));
   EXPECT_FALSE(multiend_call.valid());
 }
 
 TEST(ConversationalSpeechTest, MultiEndCallSetupFirstOffsetNegative) {
   const std::vector<Turn> timing = {
-      {"A", "t500", -100, 0}, {"B", "t500", 0, 0},
+      {"A", "t500", -100, 0},
+      {"B", "t500", 0, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -279,7 +285,8 @@
   // B .....1****
   constexpr std::size_t expected_duration = kDefaultSampleRate;
   const std::vector<Turn> timing = {
-      {"A", "t500", 0, 0}, {"B", "t500", 0, 0},
+      {"A", "t500", 0, 0},
+      {"B", "t500", 0, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -303,7 +310,8 @@
   // B .......1****
   constexpr std::size_t expected_duration = kDefaultSampleRate * 1.2;
   const std::vector<Turn> timing = {
-      {"A", "t500", 0, 0}, {"B", "t500", 200, 0},
+      {"A", "t500", 0, 0},
+      {"B", "t500", 200, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -327,7 +335,8 @@
   // B ....1****
   constexpr std::size_t expected_duration = kDefaultSampleRate * 0.9;
   const std::vector<Turn> timing = {
-      {"A", "t500", 0, 0}, {"B", "t500", -100, 0},
+      {"A", "t500", 0, 0},
+      {"B", "t500", -100, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -350,7 +359,8 @@
   // A ..0****
   // B .1****.  The n-th turn cannot start before the (n-1)-th one.
   const std::vector<Turn> timing = {
-      {"A", "t500", 200, 0}, {"B", "t500", -600, 0},
+      {"A", "t500", 200, 0},
+      {"B", "t500", -600, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -368,7 +378,9 @@
   // B ...1*********
   constexpr std::size_t expected_duration = kDefaultSampleRate * 1.3;
   const std::vector<Turn> timing = {
-      {"A", "t500", 0, 0}, {"B", "t1000", -200, 0}, {"A", "t500", -800, 0},
+      {"A", "t500", 0, 0},
+      {"B", "t1000", -200, 0},
+      {"A", "t500", -800, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -393,7 +405,9 @@
   // B ......2****
   //      ^  Turn #1 overlaps with #0 which is from the same speaker.
   const std::vector<Turn> timing = {
-      {"A", "t500", 0, 0}, {"A", "t500", -200, 0}, {"B", "t500", -200, 0},
+      {"A", "t500", 0, 0},
+      {"A", "t500", -200, 0},
+      {"B", "t500", -200, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -435,7 +449,9 @@
   // C .......2****
   constexpr std::size_t expected_duration = kDefaultSampleRate * 1.2;
   const std::vector<Turn> timing = {
-      {"A", "t1000", 0, 0}, {"B", "t500", -800, 0}, {"C", "t500", 0, 0},
+      {"A", "t1000", 0, 0},
+      {"B", "t500", -800, 0},
+      {"C", "t500", 0, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -461,7 +477,9 @@
   //       ^  Turn #2 overlaps both with #0 and #1 (cross-talk with 3+ speakers
   //          not permitted).
   const std::vector<Turn> timing = {
-      {"A", "t1000", 0, 0}, {"B", "t500", -800, 0}, {"C", "t500", -300, 0},
+      {"A", "t1000", 0, 0},
+      {"B", "t500", -800, 0},
+      {"C", "t500", -300, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -480,7 +498,9 @@
   // C .......3****
   constexpr std::size_t expected_duration = kDefaultSampleRate * 1.2;
   const std::vector<Turn> timing = {
-      {"A", "t1000", 0, 0}, {"B", "t500", -900, 0}, {"C", "t500", 100, 0},
+      {"A", "t1000", 0, 0},
+      {"B", "t500", -900, 0},
+      {"C", "t500", 100, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -503,7 +523,8 @@
   // A 0****
   // B 1****
   const std::vector<Turn> timing = {
-      {"A", "t500", 0, 0}, {"B", "t500", -500, 0},
+      {"A", "t500", 0, 0},
+      {"B", "t500", -500, 0},
   };
   auto mock_wavreader_factory = CreateMockWavReaderFactory();
 
@@ -579,9 +600,8 @@
   const int sample_rates[] = {8000, 11025, 16000, 22050, 32000, 44100, 48000};
 
   for (int sample_rate : sample_rates) {
-    const std::string temp_filename =
-        OutputPath() + "TempSineWavFile_" +
-        std::to_string(sample_rate) + ".wav";
+    const std::string temp_filename = OutputPath() + "TempSineWavFile_" +
+                                      std::to_string(sample_rate) + ".wav";
 
     // Write wav file.
     const std::size_t num_samples = duration_seconds * sample_rate;
@@ -590,10 +610,9 @@
 
     // Load wav file and check if params match.
     WavReaderFactory wav_reader_factory;
-    MockWavReaderFactory::Params expeted_params = {
-        sample_rate, 1u, num_samples};
-    CheckAudioTrackParams(
-        wav_reader_factory, temp_filename, expeted_params);
+    MockWavReaderFactory::Params expeted_params = {sample_rate, 1u,
+                                                   num_samples};
+    CheckAudioTrackParams(wav_reader_factory, temp_filename, expeted_params);
 
     // Clean up.
     RemoveFile(temp_filename);
@@ -618,21 +637,21 @@
       {"t5000_440.wav", {{sample_rate, 1u, sample_rate * 5}, 440.0}},
       {"t5000_880.wav", {{sample_rate, 1u, sample_rate * 5}, 880.0}},
   };
-  const std::string audiotracks_path = CreateTemporarySineAudioTracks(
-      sine_tracks_params);
+  const std::string audiotracks_path =
+      CreateTemporarySineAudioTracks(sine_tracks_params);
 
   // Set up the multi-end call.
-  auto wavreader_factory = std::unique_ptr<WavReaderFactory>(
-      new WavReaderFactory());
-  MultiEndCall multiend_call(
-      expected_timing, audiotracks_path, std::move(wavreader_factory));
+  auto wavreader_factory =
+      std::unique_ptr<WavReaderFactory>(new WavReaderFactory());
+  MultiEndCall multiend_call(expected_timing, audiotracks_path,
+                             std::move(wavreader_factory));
 
   // Simulate the call.
   std::string output_path = JoinFilename(audiotracks_path, "output");
   CreateDir(output_path);
   RTC_LOG(LS_VERBOSE) << "simulator output path: " << output_path;
-  auto generated_audiotrak_pairs = conversational_speech::Simulate(
-      multiend_call, output_path);
+  auto generated_audiotrak_pairs =
+      conversational_speech::Simulate(multiend_call, output_path);
   EXPECT_EQ(2u, generated_audiotrak_pairs->size());
 
   // Check the output.
@@ -641,10 +660,10 @@
       sample_rate, 1u, sample_rate * expected_duration_seconds};
   for (const auto& it : *generated_audiotrak_pairs) {
     RTC_LOG(LS_VERBOSE) << "checking far/near-end for <" << it.first << ">";
-    CheckAudioTrackParams(
-        wav_reader_factory, it.second.near_end, expeted_params);
-    CheckAudioTrackParams(
-        wav_reader_factory, it.second.far_end, expeted_params);
+    CheckAudioTrackParams(wav_reader_factory, it.second.near_end,
+                          expeted_params);
+    CheckAudioTrackParams(wav_reader_factory, it.second.far_end,
+                          expeted_params);
   }
 
   // Clean.
diff --git a/modules/audio_processing/test/conversational_speech/multiend_call.h b/modules/audio_processing/test/conversational_speech/multiend_call.h
index 09cb00c..5b6300f 100644
--- a/modules/audio_processing/test/conversational_speech/multiend_call.h
+++ b/modules/audio_processing/test/conversational_speech/multiend_call.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_TEST_CONVERSATIONAL_SPEECH_MULTIEND_CALL_H_
 
 #include <stddef.h>
+
 #include <map>
 #include <memory>
 #include <set>
diff --git a/modules/audio_processing/test/fake_recording_device_unittest.cc b/modules/audio_processing/test/fake_recording_device_unittest.cc
index a14da82..da62beb 100644
--- a/modules/audio_processing/test/fake_recording_device_unittest.cc
+++ b/modules/audio_processing/test/fake_recording_device_unittest.cc
@@ -8,6 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/test/fake_recording_device.h"
+
 #include <cmath>
 #include <memory>
 #include <string>
@@ -15,7 +17,6 @@
 
 #include "absl/memory/memory.h"
 #include "api/array_view.h"
-#include "modules/audio_processing/test/fake_recording_device.h"
 #include "rtc_base/strings/string_builder.h"
 #include "test/gtest.h"
 
diff --git a/modules/audio_processing/test/protobuf_utils.cc b/modules/audio_processing/test/protobuf_utils.cc
index c47f8ea..f3c97ee 100644
--- a/modules/audio_processing/test/protobuf_utils.cc
+++ b/modules/audio_processing/test/protobuf_utils.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/test/protobuf_utils.h"
+
 #include "rtc_base/system/arch.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/test/py_quality_assessment/quality_assessment/vad.cc b/modules/audio_processing/test/py_quality_assessment/quality_assessment/vad.cc
index a553785..9906eca 100644
--- a/modules/audio_processing/test/py_quality_assessment/quality_assessment/vad.cc
+++ b/modules/audio_processing/test/py_quality_assessment/quality_assessment/vad.cc
@@ -6,13 +6,14 @@
 // in the file PATENTS.  All contributing project authors may
 // be found in the AUTHORS file in the root of the source tree.
 
+#include "common_audio/vad/include/vad.h"
+
 #include <array>
 #include <fstream>
 #include <memory>
 
 #include "absl/flags/flag.h"
 #include "absl/flags/parse.h"
-#include "common_audio/vad/include/vad.h"
 #include "common_audio/wav_file.h"
 #include "rtc_base/logging.h"
 
diff --git a/modules/audio_processing/test/test_utils.cc b/modules/audio_processing/test/test_utils.cc
index 9f1a469..c02bc76 100644
--- a/modules/audio_processing/test/test_utils.cc
+++ b/modules/audio_processing/test/test_utils.cc
@@ -8,9 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "modules/audio_processing/test/test_utils.h"
+
 #include <utility>
 
-#include "modules/audio_processing/test/test_utils.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/system/arch.h"
 
diff --git a/modules/audio_processing/test/test_utils.h b/modules/audio_processing/test/test_utils.h
index 3637431..0dd4a40 100644
--- a/modules/audio_processing/test/test_utils.h
+++ b/modules/audio_processing/test/test_utils.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_TEST_TEST_UTILS_H_
 
 #include <math.h>
+
 #include <iterator>
 #include <limits>
 #include <memory>
diff --git a/modules/audio_processing/test/wav_based_simulator.cc b/modules/audio_processing/test/wav_based_simulator.cc
index 1160ba8..4b46590 100644
--- a/modules/audio_processing/test/wav_based_simulator.cc
+++ b/modules/audio_processing/test/wav_based_simulator.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/test/wav_based_simulator.h"
 
 #include <stdio.h>
+
 #include <iostream>
 
 #include "modules/audio_processing/test/test_utils.h"
diff --git a/modules/audio_processing/test/wav_based_simulator.h b/modules/audio_processing/test/wav_based_simulator.h
index 3dfd256..991f1db 100644
--- a/modules/audio_processing/test/wav_based_simulator.h
+++ b/modules/audio_processing/test/wav_based_simulator.h
@@ -14,7 +14,6 @@
 #include <vector>
 
 #include "modules/audio_processing/test/audio_processing_simulator.h"
-
 #include "rtc_base/constructor_magic.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/transient/file_utils_unittest.cc b/modules/audio_processing/transient/file_utils_unittest.cc
index 0bded02..1bcf6f9 100644
--- a/modules/audio_processing/transient/file_utils_unittest.cc
+++ b/modules/audio_processing/transient/file_utils_unittest.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/transient/file_utils.h"
 
 #include <string.h>
+
 #include <memory>
 #include <string>
 #include <vector>
diff --git a/modules/audio_processing/transient/transient_detector.cc b/modules/audio_processing/transient/transient_detector.cc
index b328a0e..f03a2ea 100644
--- a/modules/audio_processing/transient/transient_detector.cc
+++ b/modules/audio_processing/transient/transient_detector.cc
@@ -12,6 +12,7 @@
 
 #include <float.h>
 #include <string.h>
+
 #include <algorithm>
 #include <cmath>
 
@@ -161,10 +162,9 @@
     return 1.f;
   }
   RTC_DCHECK_NE(0, reference_energy_);
-  float result =
-      1.f / (1.f + std::exp(kReferenceNonLinearity *
-                            (kEnergyRatioThreshold -
-                             reference_energy / reference_energy_)));
+  float result = 1.f / (1.f + std::exp(kReferenceNonLinearity *
+                                       (kEnergyRatioThreshold -
+                                        reference_energy / reference_energy_)));
   reference_energy_ =
       kMemory * reference_energy_ + (1.f - kMemory) * reference_energy;
 
diff --git a/modules/audio_processing/transient/transient_detector.h b/modules/audio_processing/transient/transient_detector.h
index 23b88f8..5ede2e8 100644
--- a/modules/audio_processing/transient/transient_detector.h
+++ b/modules/audio_processing/transient/transient_detector.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_TRANSIENT_TRANSIENT_DETECTOR_H_
 
 #include <stddef.h>
+
 #include <deque>
 #include <memory>
 
diff --git a/modules/audio_processing/transient/transient_suppression_test.cc b/modules/audio_processing/transient/transient_suppression_test.cc
index 57bddb6..85db391 100644
--- a/modules/audio_processing/transient/transient_suppression_test.cc
+++ b/modules/audio_processing/transient/transient_suppression_test.cc
@@ -8,8 +8,6 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "modules/audio_processing/transient/transient_suppressor.h"
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -19,6 +17,7 @@
 
 #include "common_audio/include/audio_util.h"
 #include "modules/audio_processing/agc/agc.h"
+#include "modules/audio_processing/transient/transient_suppressor.h"
 #include "rtc_base/flags.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
diff --git a/modules/audio_processing/transient/transient_suppressor.cc b/modules/audio_processing/transient/transient_suppressor.cc
index 58d0df0..2463efa 100644
--- a/modules/audio_processing/transient/transient_suppressor.cc
+++ b/modules/audio_processing/transient/transient_suppressor.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/transient/transient_suppressor.h"
 
 #include <string.h>
+
 #include <cmath>
 #include <complex>
 #include <deque>
@@ -351,8 +352,7 @@
 // If a restoration takes place, the |magnitudes_| are updated to the new value.
 void TransientSuppressor::HardRestoration(float* spectral_mean) {
   const float detector_result =
-      1.f -
-      std::pow(1.f - detector_smoothed_, using_reference_ ? 200.f : 50.f);
+      1.f - std::pow(1.f - detector_smoothed_, using_reference_ ? 200.f : 50.f);
   // To restore, we get the peaks in the spectrum. If higher than the previous
   // spectral mean we adjust them.
   for (size_t i = 0; i < complex_analysis_length_; ++i) {
diff --git a/modules/audio_processing/transient/transient_suppressor.h b/modules/audio_processing/transient/transient_suppressor.h
index ae51966..2322b8f 100644
--- a/modules/audio_processing/transient/transient_suppressor.h
+++ b/modules/audio_processing/transient/transient_suppressor.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 
 #include "rtc_base/gtest_prod_util.h"
diff --git a/modules/audio_processing/transient/wpd_tree.h b/modules/audio_processing/transient/wpd_tree.h
index b62135d..c54220f7 100644
--- a/modules/audio_processing/transient/wpd_tree.h
+++ b/modules/audio_processing/transient/wpd_tree.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_TRANSIENT_WPD_TREE_H_
 
 #include <stddef.h>
+
 #include <memory>
 
 #include "modules/audio_processing/transient/wpd_node.h"
diff --git a/modules/audio_processing/utility/block_mean_calculator_unittest.cc b/modules/audio_processing/utility/block_mean_calculator_unittest.cc
index 1f4ebf1..e829f69 100644
--- a/modules/audio_processing/utility/block_mean_calculator_unittest.cc
+++ b/modules/audio_processing/utility/block_mean_calculator_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/utility/block_mean_calculator.h"
+
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/utility/delay_estimator.cc b/modules/audio_processing/utility/delay_estimator.cc
index a15b914..fe750f5 100644
--- a/modules/audio_processing/utility/delay_estimator.cc
+++ b/modules/audio_processing/utility/delay_estimator.cc
@@ -12,6 +12,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+
 #include <algorithm>
 
 #include "rtc_base/checks.h"
diff --git a/modules/audio_processing/utility/delay_estimator_unittest.cc b/modules/audio_processing/utility/delay_estimator_unittest.cc
index 324bc37..d3463aa 100644
--- a/modules/audio_processing/utility/delay_estimator_unittest.cc
+++ b/modules/audio_processing/utility/delay_estimator_unittest.cc
@@ -9,6 +9,7 @@
  */
 
 #include "modules/audio_processing/utility/delay_estimator.h"
+
 #include "modules/audio_processing/utility/delay_estimator_internal.h"
 #include "modules/audio_processing/utility/delay_estimator_wrapper.h"
 #include "test/gtest.h"
diff --git a/modules/audio_processing/utility/ooura_fft_mips.cc b/modules/audio_processing/utility/ooura_fft_mips.cc
index 9fe577d..42b9d3a 100644
--- a/modules/audio_processing/utility/ooura_fft_mips.cc
+++ b/modules/audio_processing/utility/ooura_fft_mips.cc
@@ -9,7 +9,6 @@
  */
 
 #include "modules/audio_processing/utility/ooura_fft.h"
-
 #include "modules/audio_processing/utility/ooura_fft_tables_common.h"
 
 namespace webrtc {
diff --git a/modules/audio_processing/utility/ooura_fft_neon.cc b/modules/audio_processing/utility/ooura_fft_neon.cc
index 401387a..95b5f09 100644
--- a/modules/audio_processing/utility/ooura_fft_neon.cc
+++ b/modules/audio_processing/utility/ooura_fft_neon.cc
@@ -14,10 +14,9 @@
  * Based on the sse2 version.
  */
 
-#include "modules/audio_processing/utility/ooura_fft.h"
-
 #include <arm_neon.h>
 
+#include "modules/audio_processing/utility/ooura_fft.h"
 #include "modules/audio_processing/utility/ooura_fft_tables_common.h"
 #include "modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h"
 
diff --git a/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h b/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h
index b6e4a07..10aebac 100644
--- a/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h
+++ b/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h
@@ -86,7 +86,10 @@
     0.956940353f,  -0.956940353f,
 };
 ALIGN16_BEG const float ALIGN16_END cftmdl_wk1r[4] = {
-    0.707106769f, 0.707106769f, 0.707106769f, -0.707106769f,
+    0.707106769f,
+    0.707106769f,
+    0.707106769f,
+    -0.707106769f,
 };
 #endif
 
diff --git a/modules/audio_processing/vad/pole_zero_filter.cc b/modules/audio_processing/vad/pole_zero_filter.cc
index 4156d7e..e7a6113 100644
--- a/modules/audio_processing/vad/pole_zero_filter.cc
+++ b/modules/audio_processing/vad/pole_zero_filter.cc
@@ -11,6 +11,7 @@
 #include "modules/audio_processing/vad/pole_zero_filter.h"
 
 #include <string.h>
+
 #include <algorithm>
 
 namespace webrtc {
diff --git a/modules/audio_processing/vad/vad_audio_proc.h b/modules/audio_processing/vad/vad_audio_proc.h
index 9be3467..4a71ce3 100644
--- a/modules/audio_processing/vad/vad_audio_proc.h
+++ b/modules/audio_processing/vad/vad_audio_proc.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 
 #include "modules/audio_processing/vad/common.h"  // AudioFeatures, kSampleR...
diff --git a/modules/audio_processing/vad/voice_activity_detector.h b/modules/audio_processing/vad/voice_activity_detector.h
index d140fe2..a19883d 100644
--- a/modules/audio_processing/vad/voice_activity_detector.h
+++ b/modules/audio_processing/vad/voice_activity_detector.h
@@ -13,6 +13,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 #include <vector>
 
diff --git a/modules/audio_processing/voice_detection_impl.h b/modules/audio_processing/voice_detection_impl.h
index 6800566..4007f67 100644
--- a/modules/audio_processing/voice_detection_impl.h
+++ b/modules/audio_processing/voice_detection_impl.h
@@ -12,6 +12,7 @@
 #define MODULES_AUDIO_PROCESSING_VOICE_DETECTION_IMPL_H_
 
 #include <stddef.h>
+
 #include <memory>
 
 #include "modules/audio_processing/include/audio_processing.h"
