BUILD.gn (10769B)
1 # Copyright (c) 2014 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 9 import("../webrtc.gni") 10 11 visibility = [ ":*" ] 12 13 rtc_library("common_audio") { 14 visibility += [ "*" ] 15 sources = [ 16 "audio_converter.cc", 17 "audio_converter.h", 18 "audio_util.cc", 19 "channel_buffer.cc", 20 "channel_buffer.h", 21 "include/audio_util.h", 22 "real_fourier.cc", 23 "real_fourier.h", 24 "real_fourier_ooura.cc", 25 "real_fourier_ooura.h", 26 "resampler/include/push_resampler.h", 27 "resampler/include/resampler.h", 28 "resampler/push_resampler.cc", 29 "resampler/push_sinc_resampler.cc", 30 "resampler/push_sinc_resampler.h", 31 "resampler/resampler.cc", 32 "resampler/sinc_resampler.cc", 33 "smoothing_filter.cc", 34 "smoothing_filter.h", 35 "vad/include/vad.h", 36 "vad/vad.cc", 37 "wav_file.cc", 38 "wav_file.h", 39 "wav_header.cc", 40 "wav_header.h", 41 "window_generator.cc", 42 "window_generator.h", 43 ] 44 45 deps = [ 46 ":common_audio_c", 47 ":sinc_resampler", 48 "../api:array_view", 49 "../api/audio:audio_frame_api", 50 "../api/units:timestamp", 51 "../rtc_base:checks", 52 "../rtc_base:cpu_info", 53 "../rtc_base:gtest_prod", 54 "../rtc_base:logging", 55 "../rtc_base:safe_conversions", 56 "../rtc_base:sanitizer", 57 "../rtc_base/memory:aligned_malloc", 58 "../rtc_base/system:arch", 59 "../rtc_base/system:file_wrapper", 60 "third_party/ooura:fft_size_256", 61 "//third_party/abseil-cpp/absl/strings:string_view", 62 ] 63 64 defines = [] 65 66 if (rtc_build_with_neon) { 67 deps += [ ":common_audio_neon" ] 68 } 69 70 if (target_cpu == "x86" || target_cpu == "x64") { 71 deps += [ ":common_audio_sse2" ] 72 deps += [ ":common_audio_avx2" ] 73 } 74 } 75 76 rtc_source_set("mock_common_audio") { 77 visibility += webrtc_default_visibility 78 testonly = true 79 sources = [ 80 "mocks/mock_smoothing_filter.h", 81 "vad/mock/mock_vad.h", 82 ] 83 deps = [ 84 ":common_audio", 85 "../api/units:timestamp", 86 "../test:test_support", 87 ] 88 } 89 90 rtc_source_set("common_audio_c_arm_asm") { 91 sources = [] 92 deps = [] 93 if (target_cpu == "arm") { 94 sources += [ "signal_processing/complex_bit_reverse_arm.S" ] 95 96 if (arm_version >= 7) { 97 sources += [ "signal_processing/filter_ar_fast_q12_armv7.S" ] 98 } else { 99 sources += [ "signal_processing/filter_ar_fast_q12.c" ] 100 } 101 deps += [ "../rtc_base/system:asm_defines" ] 102 } 103 } 104 105 rtc_library("common_audio_c") { 106 visibility += webrtc_default_visibility 107 sources = [ 108 "ring_buffer.c", 109 "ring_buffer.h", 110 "signal_processing/auto_corr_to_refl_coef.c", 111 "signal_processing/auto_correlation.c", 112 "signal_processing/complex_fft_tables.h", 113 "signal_processing/copy_set_operations.c", 114 "signal_processing/cross_correlation.c", 115 "signal_processing/division_operations.c", 116 "signal_processing/downsample_fast.c", 117 "signal_processing/energy.c", 118 "signal_processing/filter_ar.c", 119 "signal_processing/filter_ma_fast_q12.c", 120 "signal_processing/get_hanning_window.c", 121 "signal_processing/get_scaling_square.c", 122 "signal_processing/include/real_fft.h", 123 "signal_processing/include/signal_processing_library.h", 124 "signal_processing/include/spl_inl.h", 125 "signal_processing/include/spl_inl_armv7.h", 126 "signal_processing/levinson_durbin.c", 127 "signal_processing/lpc_to_refl_coef.c", 128 "signal_processing/min_max_operations.c", 129 "signal_processing/randomization_functions.c", 130 "signal_processing/real_fft.c", 131 "signal_processing/refl_coef_to_lpc.c", 132 "signal_processing/resample.c", 133 "signal_processing/resample_48khz.c", 134 "signal_processing/resample_by_2.c", 135 "signal_processing/resample_by_2_internal.c", 136 "signal_processing/resample_by_2_internal.h", 137 "signal_processing/resample_fractional.c", 138 "signal_processing/spl_init.c", 139 "signal_processing/spl_inl.c", 140 "signal_processing/spl_sqrt.c", 141 "signal_processing/splitting_filter.c", 142 "signal_processing/sqrt_of_one_minus_x_squared.c", 143 "signal_processing/vector_operations.c", 144 "signal_processing/vector_scaling_operations.c", 145 "vad/include/webrtc_vad.h", 146 "vad/vad_core.c", 147 "vad/vad_core.h", 148 "vad/vad_filterbank.c", 149 "vad/vad_filterbank.h", 150 "vad/vad_gmm.c", 151 "vad/vad_gmm.h", 152 "vad/vad_sp.c", 153 "vad/vad_sp.h", 154 "vad/webrtc_vad.c", 155 ] 156 157 if (target_cpu == "mipsel") { 158 sources += [ 159 "signal_processing/complex_bit_reverse_mips.c", 160 "signal_processing/complex_fft_mips.c", 161 "signal_processing/cross_correlation_mips.c", 162 "signal_processing/downsample_fast_mips.c", 163 "signal_processing/filter_ar_fast_q12_mips.c", 164 "signal_processing/include/spl_inl_mips.h", 165 "signal_processing/min_max_operations_mips.c", 166 "signal_processing/resample_by_2_mips.c", 167 ] 168 if (mips_dsp_rev > 0) { 169 sources += [ "signal_processing/vector_scaling_operations_mips.c" ] 170 } 171 } else { 172 sources += [ "signal_processing/complex_fft.c" ] 173 } 174 175 if (target_cpu != "arm" && target_cpu != "mipsel") { 176 sources += [ 177 "signal_processing/complex_bit_reverse.c", 178 "signal_processing/filter_ar_fast_q12.c", 179 ] 180 } 181 182 deps = [ 183 ":common_audio_c_arm_asm", 184 ":common_audio_cc", 185 "../rtc_base:checks", 186 "../rtc_base:compile_assert_c", 187 "../rtc_base:sanitizer", 188 "../rtc_base/system:arch", 189 "third_party/ooura:fft_size_256", 190 "third_party/spl_sqrt_floor", 191 ] 192 } 193 194 rtc_library("common_audio_cc") { 195 visibility += webrtc_default_visibility 196 sources = [ 197 "signal_processing/dot_product_with_scale.cc", 198 "signal_processing/dot_product_with_scale.h", 199 ] 200 201 deps = [ "../rtc_base:safe_conversions" ] 202 } 203 204 rtc_source_set("sinc_resampler") { 205 sources = [ "resampler/sinc_resampler.h" ] 206 deps = [ 207 "../rtc_base:cpu_info", 208 "../rtc_base:gtest_prod", 209 "../rtc_base/memory:aligned_malloc", 210 "../rtc_base/system:arch", 211 ] 212 } 213 214 rtc_source_set("fir_filter") { 215 visibility += webrtc_default_visibility 216 sources = [ "fir_filter.h" ] 217 } 218 219 rtc_library("fir_filter_factory") { 220 visibility += webrtc_default_visibility 221 sources = [ 222 "fir_filter_c.cc", 223 "fir_filter_c.h", 224 "fir_filter_factory.cc", 225 "fir_filter_factory.h", 226 ] 227 deps = [ 228 ":fir_filter", 229 "../rtc_base:checks", 230 "../rtc_base:cpu_info", 231 "../rtc_base/system:arch", 232 ] 233 if (target_cpu == "x86" || target_cpu == "x64") { 234 deps += [ ":common_audio_sse2" ] 235 deps += [ ":common_audio_avx2" ] 236 } 237 if (rtc_build_with_neon) { 238 deps += [ ":common_audio_neon" ] 239 } 240 } 241 242 if (target_cpu == "x86" || target_cpu == "x64") { 243 rtc_library("common_audio_sse2") { 244 sources = [ 245 "fir_filter_sse.cc", 246 "fir_filter_sse.h", 247 "resampler/sinc_resampler_sse.cc", 248 ] 249 250 if (is_posix || is_fuchsia) { 251 cflags = [ "-msse2" ] 252 } 253 254 deps = [ 255 ":fir_filter", 256 ":sinc_resampler", 257 "../rtc_base:checks", 258 "../rtc_base/memory:aligned_malloc", 259 ] 260 } 261 262 rtc_library("common_audio_avx2") { 263 sources = [ 264 "fir_filter_avx2.cc", 265 "fir_filter_avx2.h", 266 "resampler/sinc_resampler_avx2.cc", 267 ] 268 269 cflags = [ 270 "-mavx2", 271 "-mfma", 272 ] 273 274 deps = [ 275 ":fir_filter", 276 ":sinc_resampler", 277 "../rtc_base:checks", 278 "../rtc_base/memory:aligned_malloc", 279 ] 280 } 281 } 282 283 if (rtc_build_with_neon) { 284 rtc_library("common_audio_neon") { 285 sources = [ 286 "fir_filter_neon.cc", 287 "fir_filter_neon.h", 288 "resampler/sinc_resampler_neon.cc", 289 ] 290 291 if (target_cpu != "arm64") { 292 # Enable compilation for the NEON instruction set. 293 suppressed_configs += [ "//chromium/build/config/compiler:compiler_arm_fpu" ] 294 cflags = [ "-mfpu=neon" ] 295 } 296 297 deps = [ 298 ":common_audio_neon_c", 299 ":fir_filter", 300 ":sinc_resampler", 301 "../rtc_base:checks", 302 "../rtc_base/memory:aligned_malloc", 303 ] 304 } 305 306 rtc_library("common_audio_neon_c") { 307 visibility += webrtc_default_visibility 308 sources = [ 309 "signal_processing/cross_correlation_neon.c", 310 "signal_processing/downsample_fast_neon.c", 311 "signal_processing/min_max_operations_neon.c", 312 ] 313 314 if (target_cpu != "arm64") { 315 # Enable compilation for the NEON instruction set. 316 suppressed_configs += [ "//chromium/build/config/compiler:compiler_arm_fpu" ] 317 cflags = [ "-mfpu=neon" ] 318 } 319 320 deps = [ 321 ":common_audio_c", 322 "../rtc_base:checks", 323 "../rtc_base/system:arch", 324 ] 325 } 326 } 327 328 if (rtc_include_tests && !build_with_chromium) { 329 rtc_test("common_audio_unittests") { 330 visibility += webrtc_default_visibility 331 testonly = true 332 333 sources = [ 334 "allocation_counter.cc", 335 "allocation_counter.h", 336 "audio_converter_unittest.cc", 337 "audio_util_unittest.cc", 338 "channel_buffer_unittest.cc", 339 "fir_filter_unittest.cc", 340 "real_fourier_unittest.cc", 341 "resampler/push_resampler_unittest.cc", 342 "resampler/push_sinc_resampler_unittest.cc", 343 "resampler/resampler_unittest.cc", 344 "resampler/sinusoidal_linear_chirp_source.cc", 345 "resampler/sinusoidal_linear_chirp_source.h", 346 "ring_buffer_unittest.cc", 347 "signal_processing/real_fft_unittest.cc", 348 "signal_processing/signal_processing_unittest.cc", 349 "smoothing_filter_unittest.cc", 350 "vad/vad_core_unittest.cc", 351 "vad/vad_filterbank_unittest.cc", 352 "vad/vad_gmm_unittest.cc", 353 "vad/vad_sp_unittest.cc", 354 "vad/vad_unittest.cc", 355 "vad/vad_unittest.h", 356 "wav_file_unittest.cc", 357 "wav_header_unittest.cc", 358 "window_generator_unittest.cc", 359 ] 360 361 # Does not compile on iOS for arm: webrtc:5544. 362 if (!is_ios || target_cpu != "arm") { 363 sources += [ "resampler/sinc_resampler_unittest.cc" ] 364 } 365 366 deps = [ 367 ":common_audio", 368 ":common_audio_c", 369 ":common_audio_cc", 370 ":fir_filter", 371 ":fir_filter_factory", 372 ":sinc_resampler", 373 "../api/audio:audio_frame_api", 374 "../api/units:time_delta", 375 "../api/units:timestamp", 376 "../rtc_base:checks", 377 "../rtc_base:cpu_info", 378 "../rtc_base:logging", 379 "../rtc_base:rtc_base_tests_utils", 380 "../rtc_base:stringutils", 381 "../rtc_base:timeutils", 382 "../rtc_base/system:arch", 383 "../test:fileutils", 384 "../test:rtc_expect_death", 385 "../test:test_main", 386 "../test:test_support", 387 "//testing/gtest", 388 "//third_party/abseil-cpp/absl/base:core_headers", 389 ] 390 391 if (is_android) { 392 shard_timeout = 900 393 } 394 } 395 }