blob: 4bb8c5494bdf83ae78b4b0c049b83cd2eda60245 [file] [log] [blame]
Alex Loikoed8ff642018-07-06 14:54:30 +02001# Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS. All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("../../../webrtc.gni")
10
Sam Zackrisson41478c72019-10-15 10:10:26 +020011rtc_source_set("gain_control_interface") {
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +010012 sources = [ "gain_control.h" ]
Sam Zackrisson41478c72019-10-15 10:10:26 +020013}
14
Mirko Bonadei86d053c2019-10-17 21:32:04 +020015rtc_library("agc") {
Alex Loikoed8ff642018-07-06 14:54:30 +020016 sources = [
17 "agc_manager_direct.cc",
18 "agc_manager_direct.h",
19 ]
20 configs += [ "..:apm_debug_dump" ]
21 deps = [
Hanna Silena0047152021-06-03 03:29:38 +020022 ":clipping_predictor",
Alessio Bazzica42dacda2021-06-17 17:18:46 +020023 ":clipping_predictor_evaluator",
Sam Zackrisson41478c72019-10-15 10:10:26 +020024 ":gain_control_interface",
Alex Loikoed8ff642018-07-06 14:54:30 +020025 ":gain_map",
26 ":level_estimation",
27 "..:apm_logging",
Per Åhgren3daedb62019-11-22 12:11:40 +010028 "..:audio_buffer",
Hanna Silena0047152021-06-03 03:29:38 +020029 "..:audio_frame_view",
Per Åhgren928146f2019-08-20 09:19:21 +020030 "../../../common_audio",
31 "../../../common_audio:common_audio_c",
Alex Loikoed8ff642018-07-06 14:54:30 +020032 "../../../rtc_base:checks",
Alex Loiko9489c3a2018-08-09 15:04:24 +020033 "../../../rtc_base:gtest_prod",
Alex Loikoed8ff642018-07-06 14:54:30 +020034 "../../../rtc_base:logging",
Per Åhgren3daedb62019-11-22 12:11:40 +010035 "../../../rtc_base:rtc_base_approved",
Alex Loikoed8ff642018-07-06 14:54:30 +020036 "../../../rtc_base:safe_minmax",
henrikaebf45522019-11-04 13:59:21 +010037 "../../../system_wrappers:field_trial",
Mirko Bonadei17f48782018-09-28 08:51:10 +020038 "../../../system_wrappers:metrics",
Alex Loikoed8ff642018-07-06 14:54:30 +020039 "../vad",
40 ]
Mirko Bonadei2dcf3482020-06-05 14:30:41 +020041 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
Alex Loikoed8ff642018-07-06 14:54:30 +020042}
43
Hanna Silen4b3a0612021-06-02 23:03:24 +020044rtc_library("clipping_predictor") {
45 sources = [
46 "clipping_predictor.cc",
47 "clipping_predictor.h",
48 ]
49 deps = [
50 ":clipping_predictor_level_buffer",
51 ":gain_map",
52 "..:api",
53 "..:audio_frame_view",
54 "../../../common_audio",
55 "../../../rtc_base:checks",
56 "../../../rtc_base:logging",
57 "../../../rtc_base:safe_minmax",
58 ]
59 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
60}
61
Alessio Bazzica5b9d0c72021-06-16 14:55:40 +020062rtc_library("clipping_predictor_evaluator") {
63 sources = [
64 "clipping_predictor_evaluator.cc",
65 "clipping_predictor_evaluator.h",
66 ]
67 deps = [
68 "../../../rtc_base:checks",
69 "../../../rtc_base:logging",
70 ]
71 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
72}
73
Hanna Silena0047152021-06-03 03:29:38 +020074rtc_library("clipping_predictor_level_buffer") {
75 sources = [
76 "clipping_predictor_level_buffer.cc",
77 "clipping_predictor_level_buffer.h",
78 ]
79 deps = [
80 "../../../rtc_base:checks",
81 "../../../rtc_base:logging",
Alessio Bazzica5b9d0c72021-06-16 14:55:40 +020082 "../../../rtc_base:rtc_base_approved",
Hanna Silena0047152021-06-03 03:29:38 +020083 ]
84 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
85}
86
Mirko Bonadei86d053c2019-10-17 21:32:04 +020087rtc_library("level_estimation") {
Alex Loikoed8ff642018-07-06 14:54:30 +020088 sources = [
89 "agc.cc",
90 "agc.h",
91 "loudness_histogram.cc",
92 "loudness_histogram.h",
93 "utility.cc",
94 "utility.h",
95 ]
96 deps = [
Alex Loikoed8ff642018-07-06 14:54:30 +020097 "../../../rtc_base:checks",
Alex Loikoed8ff642018-07-06 14:54:30 +020098 "../vad",
99 ]
100}
101
Per Åhgren5b139d62020-03-20 15:50:14 +0100102rtc_library("legacy_agc") {
Alex Loikoed8ff642018-07-06 14:54:30 +0200103 visibility = [
104 ":*",
105 "..:*",
106 ] # Only targets in this file and in
107 # audio_processing can depend on
108 # this.
109
110 sources = [
Per Åhgren5b139d62020-03-20 15:50:14 +0100111 "legacy/analog_agc.cc",
Alex Loikoed8ff642018-07-06 14:54:30 +0200112 "legacy/analog_agc.h",
Per Åhgren5b139d62020-03-20 15:50:14 +0100113 "legacy/digital_agc.cc",
Alex Loikoed8ff642018-07-06 14:54:30 +0200114 "legacy/digital_agc.h",
115 "legacy/gain_control.h",
116 ]
117
118 deps = [
Alex Loikoed8ff642018-07-06 14:54:30 +0200119 "../../../common_audio",
120 "../../../common_audio:common_audio_c",
Mirko Bonadei146137a2020-04-21 09:56:16 +0200121 "../../../common_audio/third_party/ooura:fft_size_256",
Alex Loikoed8ff642018-07-06 14:54:30 +0200122 "../../../rtc_base:checks",
123 "../../../rtc_base:rtc_base_approved",
Mirko Bonadei66e73382020-09-05 21:55:35 +0200124 "../../../system_wrappers",
Alex Loikoed8ff642018-07-06 14:54:30 +0200125 ]
126
127 if (rtc_build_with_neon) {
128 if (current_cpu != "arm64") {
Oleh Prypind2f4e8b2018-08-01 12:18:05 +0200129 # Enable compilation for the NEON instruction set.
Alex Loikoed8ff642018-07-06 14:54:30 +0200130 suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
131 cflags = [ "-mfpu=neon" ]
132 }
Alex Loikoed8ff642018-07-06 14:54:30 +0200133 }
134}
135
136rtc_source_set("gain_map") {
Mirko Bonadeiccbe95f2020-01-21 12:10:10 +0100137 sources = [ "gain_map_internal.h" ]
Alex Loikoed8ff642018-07-06 14:54:30 +0200138}
139
140if (rtc_include_tests) {
Mirko Bonadei86d053c2019-10-17 21:32:04 +0200141 rtc_library("agc_unittests") {
Alex Loikoed8ff642018-07-06 14:54:30 +0200142 testonly = true
143 sources = [
144 "agc_manager_direct_unittest.cc",
Alessio Bazzica5b9d0c72021-06-16 14:55:40 +0200145 "clipping_predictor_evaluator_unittest.cc",
Hanna Silenea72ee62021-05-31 14:08:04 +0200146 "clipping_predictor_level_buffer_unittest.cc",
Hanna Silen4b3a0612021-06-02 23:03:24 +0200147 "clipping_predictor_unittest.cc",
Alex Loikoed8ff642018-07-06 14:54:30 +0200148 "loudness_histogram_unittest.cc",
149 "mock_agc.h",
150 ]
151 configs += [ "..:apm_debug_dump" ]
152
Alex Loikoed8ff642018-07-06 14:54:30 +0200153 deps = [
154 ":agc",
Hanna Silen4b3a0612021-06-02 23:03:24 +0200155 ":clipping_predictor",
Alessio Bazzica5b9d0c72021-06-16 14:55:40 +0200156 ":clipping_predictor_evaluator",
Hanna Silenea72ee62021-05-31 14:08:04 +0200157 ":clipping_predictor_level_buffer",
Sam Zackrisson41478c72019-10-15 10:10:26 +0200158 ":gain_control_interface",
Alex Loikoed8ff642018-07-06 14:54:30 +0200159 ":level_estimation",
160 "..:mocks",
Hanna Silen4b3a0612021-06-02 23:03:24 +0200161 "../../../rtc_base:checks",
Alessio Bazzica5b9d0c72021-06-16 14:55:40 +0200162 "../../../rtc_base:rtc_base_approved",
163 "../../../rtc_base:safe_conversions",
henrikaebf45522019-11-04 13:59:21 +0100164 "../../../test:field_trial",
Alex Loikoed8ff642018-07-06 14:54:30 +0200165 "../../../test:fileutils",
166 "../../../test:test_support",
167 "//testing/gtest",
168 ]
Alessio Bazzica5b9d0c72021-06-16 14:55:40 +0200169 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
Alex Loikoed8ff642018-07-06 14:54:30 +0200170 }
171}