blob: f0d56691c04a53389c493a7c82c5d62424b89f30 [file] [log] [blame]
andrew@webrtc.orgb9d7d932012-01-25 19:21:13 +00001# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
niklase@google.com470e71d2011-07-07 08:21:25 +00002#
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
9{
andrew@webrtc.orgb0730102013-11-11 17:20:27 +000010 'variables': {
michaelbai@google.com82ebb462014-02-11 04:48:27 +000011 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/audio_processing/asm_offsets',
andrew@webrtc.orgb0730102013-11-11 17:20:27 +000012 },
niklase@google.com470e71d2011-07-07 08:21:25 +000013 'targets': [
14 {
15 'target_name': 'audio_processing',
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +000016 'type': 'static_library',
17 'variables': {
18 # Outputs some low-level debug files.
19 'aec_debug_dump%': 0,
bjornv@webrtc.orgea297872014-09-23 11:21:39 +000020 'agc_debug_dump%': 0,
andrew@webrtc.org1760a172013-09-25 23:17:38 +000021
22 # Disables the usual mode where we trust the reported system delay
23 # values the AEC receives. The corresponding define is set appropriately
24 # in the code, but it can be force-enabled here for testing.
25 'aec_untrusted_delay_for_testing%': 0,
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +000026 },
niklase@google.com470e71d2011-07-07 08:21:25 +000027 'dependencies': [
aluebs@webrtc.org0c39e912014-12-18 22:22:04 +000028 '<(webrtc_root)/base/base.gyp:rtc_base_approved',
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +000029 '<(webrtc_root)/common.gyp:webrtc_common',
aluebs@webrtc.org0c39e912014-12-18 22:22:04 +000030 '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
Zeke Chin786dbdc2015-06-10 13:45:08 -070031 '<(webrtc_root)/modules/modules.gyp:isac',
andresp@webrtc.org86e1e482015-01-14 09:30:52 +000032 '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
niklase@google.com470e71d2011-07-07 08:21:25 +000033 ],
niklase@google.com470e71d2011-07-07 08:21:25 +000034 'sources': [
pbos@webrtc.org788acd12014-12-15 09:41:24 +000035 'aec/aec_core.c',
36 'aec/aec_core.h',
37 'aec/aec_core_internal.h',
38 'aec/aec_rdft.c',
39 'aec/aec_rdft.h',
40 'aec/aec_resampler.c',
41 'aec/aec_resampler.h',
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +000042 'aec/echo_cancellation.c',
43 'aec/echo_cancellation_internal.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +000044 'aec/include/echo_cancellation.h',
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +000045 'aecm/aecm_core.c',
46 'aecm/aecm_core.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +000047 'aecm/echo_control_mobile.c',
48 'aecm/include/echo_control_mobile.h',
49 'agc/agc.cc',
50 'agc/agc.h',
Bjorn Volcker51c7cbb2015-06-25 08:46:02 +020051 'agc/agc_audio_proc.cc',
52 'agc/agc_audio_proc.h',
53 'agc/agc_audio_proc_internal.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +000054 'agc/agc_manager_direct.cc',
55 'agc/agc_manager_direct.h',
Bjorn Volcker51c7cbb2015-06-25 08:46:02 +020056 'agc/circular_buffer.cc',
57 'agc/circular_buffer.h',
58 'agc/common.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +000059 'agc/gain_map_internal.h',
Bjorn Volcker51c7cbb2015-06-25 08:46:02 +020060 'agc/gmm.cc',
61 'agc/gmm.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +000062 'agc/histogram.cc',
63 'agc/histogram.h',
bjornv@webrtc.orgb395a5e2014-12-16 10:38:10 +000064 'agc/legacy/analog_agc.c',
65 'agc/legacy/analog_agc.h',
66 'agc/legacy/digital_agc.c',
67 'agc/legacy/digital_agc.h',
68 'agc/legacy/gain_control.h',
Bjorn Volcker51c7cbb2015-06-25 08:46:02 +020069 'agc/noise_gmm_tables.h',
70 'agc/pitch_based_vad.cc',
71 'agc/pitch_based_vad.h',
72 'agc/pitch_internal.cc',
73 'agc/pitch_internal.h',
74 'agc/pole_zero_filter.cc',
75 'agc/pole_zero_filter.h',
76 'agc/standalone_vad.cc',
77 'agc/standalone_vad.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +000078 'agc/utility.cc',
79 'agc/utility.h',
Bjorn Volcker51c7cbb2015-06-25 08:46:02 +020080 'agc/voice_gmm_tables.h',
niklase@google.com470e71d2011-07-07 08:21:25 +000081 'audio_buffer.cc',
82 'audio_buffer.h',
83 'audio_processing_impl.cc',
84 'audio_processing_impl.h',
Michael Graczykdfa36052015-03-25 16:37:27 -070085 'beamformer/beamformer.h',
aluebs@webrtc.org0c39e912014-12-18 22:22:04 +000086 'beamformer/complex_matrix.h',
87 'beamformer/covariance_matrix_generator.cc',
88 'beamformer/covariance_matrix_generator.h',
89 'beamformer/matrix.h',
andrew@webrtc.orgbd8c8652015-03-20 00:28:22 +000090 'beamformer/nonlinear_beamformer.cc',
91 'beamformer/nonlinear_beamformer.h',
andrew@webrtc.orgddbb8a22014-04-22 21:00:04 +000092 'common.h',
niklase@google.com470e71d2011-07-07 08:21:25 +000093 'echo_cancellation_impl.cc',
94 'echo_cancellation_impl.h',
95 'echo_control_mobile_impl.cc',
96 'echo_control_mobile_impl.h',
97 'gain_control_impl.cc',
98 'gain_control_impl.h',
99 'high_pass_filter_impl.cc',
100 'high_pass_filter_impl.h',
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000101 'include/audio_processing.h',
ekmdb4fecf2015-06-22 17:49:08 -0700102 'intelligibility/intelligibility_enhancer.cc',
103 'intelligibility/intelligibility_enhancer.h',
104 'intelligibility/intelligibility_utils.cc',
105 'intelligibility/intelligibility_utils.h',
niklase@google.com470e71d2011-07-07 08:21:25 +0000106 'level_estimator_impl.cc',
107 'level_estimator_impl.h',
108 'noise_suppression_impl.cc',
109 'noise_suppression_impl.h',
niklase@google.com470e71d2011-07-07 08:21:25 +0000110 'processing_component.cc',
111 'processing_component.h',
andrew@webrtc.org382c0c22014-05-05 18:22:21 +0000112 'rms_level.cc',
113 'rms_level.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +0000114 'splitting_filter.cc',
115 'splitting_filter.h',
Alejandro Luebs5a92aa82015-04-27 11:34:45 -0700116 'three_band_filter_bank.cc',
117 'three_band_filter_bank.h',
pbos@webrtc.org788acd12014-12-15 09:41:24 +0000118 'transient/common.h',
119 'transient/daubechies_8_wavelet_coeffs.h',
120 'transient/dyadic_decimator.h',
121 'transient/moving_moments.cc',
122 'transient/moving_moments.h',
123 'transient/transient_detector.cc',
124 'transient/transient_detector.h',
125 'transient/transient_suppressor.cc',
126 'transient/transient_suppressor.h',
127 'transient/wpd_node.cc',
128 'transient/wpd_node.h',
129 'transient/wpd_tree.cc',
130 'transient/wpd_tree.h',
henrikg@webrtc.orgc6937042014-01-30 09:50:46 +0000131 'typing_detection.cc',
132 'typing_detection.h',
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000133 'utility/delay_estimator.c',
134 'utility/delay_estimator.h',
135 'utility/delay_estimator_internal.h',
136 'utility/delay_estimator_wrapper.c',
137 'utility/delay_estimator_wrapper.h',
niklase@google.com470e71d2011-07-07 08:21:25 +0000138 'voice_detection_impl.cc',
139 'voice_detection_impl.h',
140 ],
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000141 'conditions': [
142 ['aec_debug_dump==1', {
143 'defines': ['WEBRTC_AEC_DEBUG_DUMP',],
144 }],
andrew@webrtc.org1760a172013-09-25 23:17:38 +0000145 ['aec_untrusted_delay_for_testing==1', {
146 'defines': ['WEBRTC_UNTRUSTED_DELAY',],
147 }],
bjornv@webrtc.orgea297872014-09-23 11:21:39 +0000148 ['agc_debug_dump==1', {
149 'defines': ['WEBRTC_AGC_DEBUG_DUMP',],
150 }],
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000151 ['enable_protobuf==1', {
152 'dependencies': ['audioproc_debug_proto'],
153 'defines': ['WEBRTC_AUDIOPROC_DEBUG_DUMP'],
154 }],
155 ['prefer_fixed_point==1', {
156 'defines': ['WEBRTC_NS_FIXED'],
157 'sources': [
158 'ns/include/noise_suppression_x.h',
159 'ns/noise_suppression_x.c',
160 'ns/nsx_core.c',
161 'ns/nsx_core.h',
162 'ns/nsx_defines.h',
163 ],
andrew@webrtc.orgea9392d2014-01-16 07:22:01 +0000164 'conditions': [
Richard Colesd417c932015-04-09 17:36:12 +0200165 ['target_arch=="mipsel" and mips_arch_variant!="r6"', {
andrew@webrtc.orgea9392d2014-01-16 07:22:01 +0000166 'sources': [
167 'ns/nsx_core_mips.c',
168 ],
169 }, {
170 'sources': [
171 'ns/nsx_core_c.c',
172 ],
173 }],
174 ],
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000175 }, {
176 'defines': ['WEBRTC_NS_FLOAT'],
177 'sources': [
178 'ns/defines.h',
179 'ns/include/noise_suppression.h',
180 'ns/noise_suppression.c',
181 'ns/ns_core.c',
182 'ns/ns_core.h',
183 'ns/windows_private.h',
184 ],
185 }],
186 ['target_arch=="ia32" or target_arch=="x64"', {
187 'dependencies': ['audio_processing_sse2',],
188 }],
Andrew MacDonaldac4234c2015-06-24 18:25:54 -0700189 ['build_with_neon==1', {
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000190 'dependencies': ['audio_processing_neon',],
191 }],
Richard Colesd417c932015-04-09 17:36:12 +0200192 ['target_arch=="mipsel" and mips_arch_variant!="r6"', {
andrew@webrtc.orge03cafa2013-11-11 20:10:01 +0000193 'sources': [
194 'aecm/aecm_core_mips.c',
195 ],
andrew@webrtc.orgc0907ef2014-02-21 00:13:31 +0000196 'conditions': [
kjellander@webrtc.org6dab6d72015-03-04 09:50:31 +0000197 ['mips_float_abi=="hard"', {
andrew@webrtc.orgc0907ef2014-02-21 00:13:31 +0000198 'sources': [
199 'aec/aec_core_mips.c',
200 'aec/aec_rdft_mips.c',
201 ],
202 }],
203 ],
andrew@webrtc.orge03cafa2013-11-11 20:10:01 +0000204 }, {
205 'sources': [
206 'aecm/aecm_core_c.c',
207 ],
208 }],
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000209 ],
andrew@webrtc.org63e09642013-01-29 06:45:22 +0000210 # TODO(jschuh): Bug 1348: fix size_t to int truncations.
211 'msvs_disabled_warnings': [ 4267, ],
niklase@google.com470e71d2011-07-07 08:21:25 +0000212 },
andrew@webrtc.org7bf26462011-12-03 00:03:31 +0000213 ],
214 'conditions': [
215 ['enable_protobuf==1', {
216 'targets': [
217 {
218 'target_name': 'audioproc_debug_proto',
219 'type': 'static_library',
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000220 'sources': ['debug.proto',],
andrew@webrtc.org7bf26462011-12-03 00:03:31 +0000221 'variables': {
222 'proto_in_dir': '.',
223 # Workaround to protect against gyp's pathname relativization when
224 # this file is included by modules.gyp.
225 'proto_out_protected': 'webrtc/audio_processing',
226 'proto_out_dir': '<(proto_out_protected)',
227 },
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000228 'includes': ['../../build/protoc.gypi',],
229 },
230 ],
231 }],
232 ['target_arch=="ia32" or target_arch=="x64"', {
233 'targets': [
234 {
235 'target_name': 'audio_processing_sse2',
236 'type': 'static_library',
237 'sources': [
238 'aec/aec_core_sse2.c',
239 'aec/aec_rdft_sse2.c',
240 ],
Henrik Kjellanderf2497cf2015-04-16 08:57:16 +0200241 'conditions': [
242 ['os_posix==1', {
243 'cflags': [ '-msse2', ],
244 'xcode_settings': {
245 'OTHER_CFLAGS': [ '-msse2', ],
246 },
247 }],
248 ],
andrew@webrtc.org8c4696c2012-09-08 19:27:24 +0000249 },
250 ],
251 }],
Andrew MacDonaldac4234c2015-06-24 18:25:54 -0700252 ['build_with_neon==1', {
kma@webrtc.org12454022012-11-07 22:34:31 +0000253 'targets': [{
254 'target_name': 'audio_processing_neon',
255 'type': 'static_library',
256 'includes': ['../../build/arm_neon.gypi',],
257 'dependencies': [
andrew@webrtc.org34235372013-04-30 23:43:26 +0000258 '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
kma@webrtc.org12454022012-11-07 22:34:31 +0000259 ],
260 'sources': [
bjornv@webrtc.orgaf6f02f2014-06-13 14:50:23 +0000261 'aec/aec_core_neon.c',
bjornv@webrtc.orgcd9b90a2014-06-30 12:05:18 +0000262 'aec/aec_rdft_neon.c',
kma@webrtc.org12454022012-11-07 22:34:31 +0000263 'aecm/aecm_core_neon.c',
264 'ns/nsx_core_neon.c',
265 ],
kma@webrtc.org12454022012-11-07 22:34:31 +0000266 }],
andrew@webrtc.org7bf26462011-12-03 00:03:31 +0000267 }],
niklase@google.com470e71d2011-07-07 08:21:25 +0000268 ],
269}