common_audio/fft4g.c is third party codem that have to be moved into third_party folder, so to be able to do it at first we have to extract it into separate target. It is extracted with corresponding header file and will be moved in futher CL. Bug: webrtc:8366 Change-Id: I586ca94d4e9242c23163b987fa334dfa705020ed Reviewed-on: https://webrtc-review.googlesource.com/85372 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23742}
468 lines
13 KiB
Plaintext
468 lines
13 KiB
Plaintext
# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
import("//build/config/arm.gni")
|
|
import("../webrtc.gni")
|
|
|
|
visibility = [ ":*" ]
|
|
|
|
config("common_audio_config") {
|
|
include_dirs = [
|
|
"resampler/include",
|
|
"signal_processing/include",
|
|
"vad/include",
|
|
]
|
|
}
|
|
|
|
rtc_static_library("common_audio") {
|
|
visibility += [ "*" ]
|
|
sources = [
|
|
"audio_converter.cc",
|
|
"audio_converter.h",
|
|
"audio_ring_buffer.cc",
|
|
"audio_ring_buffer.h",
|
|
"audio_util.cc",
|
|
"blocker.cc",
|
|
"blocker.h",
|
|
"channel_buffer.cc",
|
|
"channel_buffer.h",
|
|
"include/audio_util.h",
|
|
"lapped_transform.cc",
|
|
"lapped_transform.h",
|
|
"real_fourier.cc",
|
|
"real_fourier.h",
|
|
"real_fourier_ooura.cc",
|
|
"real_fourier_ooura.h",
|
|
"resampler/include/push_resampler.h",
|
|
"resampler/include/resampler.h",
|
|
"resampler/push_resampler.cc",
|
|
"resampler/push_sinc_resampler.cc",
|
|
"resampler/push_sinc_resampler.h",
|
|
"resampler/resampler.cc",
|
|
"resampler/sinc_resampler.cc",
|
|
"smoothing_filter.cc",
|
|
"smoothing_filter.h",
|
|
"sparse_fir_filter.cc",
|
|
"sparse_fir_filter.h",
|
|
"vad/include/vad.h",
|
|
"vad/vad.cc",
|
|
"wav_file.cc",
|
|
"wav_file.h",
|
|
"wav_header.cc",
|
|
"wav_header.h",
|
|
"window_generator.cc",
|
|
"window_generator.h",
|
|
]
|
|
|
|
deps = [
|
|
":common_audio_c",
|
|
":fft4g",
|
|
":sinc_resampler",
|
|
"..:webrtc_common",
|
|
"../:typedefs",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:gtest_prod",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../rtc_base/memory:aligned_array",
|
|
"../rtc_base/memory:aligned_malloc",
|
|
"../system_wrappers",
|
|
"../system_wrappers:cpu_features_api",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
|
|
defines = []
|
|
|
|
if (rtc_build_with_neon) {
|
|
deps += [ ":common_audio_neon" ]
|
|
}
|
|
|
|
if (is_win) {
|
|
cflags = [ "/wd4334" ] # Ignore warning on shift operator promotion.
|
|
}
|
|
|
|
public_configs = [ ":common_audio_config" ]
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
|
|
if (current_cpu == "x86" || current_cpu == "x64") {
|
|
deps += [ ":common_audio_sse2" ]
|
|
}
|
|
}
|
|
|
|
rtc_source_set("mock_common_audio") {
|
|
visibility += webrtc_default_visibility
|
|
testonly = true
|
|
sources = [
|
|
"mocks/mock_smoothing_filter.h",
|
|
"vad/mock/mock_vad.h",
|
|
]
|
|
deps = [
|
|
":common_audio",
|
|
"../test:test_support",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("common_audio_c_arm_asm") {
|
|
sources = []
|
|
deps = []
|
|
if (current_cpu == "arm") {
|
|
sources += [
|
|
"signal_processing/complex_bit_reverse_arm.S",
|
|
"signal_processing/spl_sqrt_floor_arm.S",
|
|
]
|
|
|
|
if (arm_version >= 7) {
|
|
sources += [ "signal_processing/filter_ar_fast_q12_armv7.S" ]
|
|
} else {
|
|
sources += [ "signal_processing/filter_ar_fast_q12.c" ]
|
|
}
|
|
deps += [ "../rtc_base/system:asm_defines" ]
|
|
}
|
|
}
|
|
|
|
rtc_source_set("common_audio_c") {
|
|
visibility += webrtc_default_visibility
|
|
sources = [
|
|
"ring_buffer.c",
|
|
"ring_buffer.h",
|
|
"signal_processing/auto_corr_to_refl_coef.c",
|
|
"signal_processing/auto_correlation.c",
|
|
"signal_processing/complex_fft_tables.h",
|
|
"signal_processing/copy_set_operations.c",
|
|
"signal_processing/cross_correlation.c",
|
|
"signal_processing/division_operations.c",
|
|
"signal_processing/downsample_fast.c",
|
|
"signal_processing/energy.c",
|
|
"signal_processing/filter_ar.c",
|
|
"signal_processing/filter_ma_fast_q12.c",
|
|
"signal_processing/get_hanning_window.c",
|
|
"signal_processing/get_scaling_square.c",
|
|
"signal_processing/ilbc_specific_functions.c",
|
|
"signal_processing/include/real_fft.h",
|
|
"signal_processing/include/signal_processing_library.h",
|
|
"signal_processing/include/spl_inl.h",
|
|
"signal_processing/include/spl_inl_armv7.h",
|
|
"signal_processing/levinson_durbin.c",
|
|
"signal_processing/lpc_to_refl_coef.c",
|
|
"signal_processing/min_max_operations.c",
|
|
"signal_processing/randomization_functions.c",
|
|
"signal_processing/real_fft.c",
|
|
"signal_processing/refl_coef_to_lpc.c",
|
|
"signal_processing/resample.c",
|
|
"signal_processing/resample_48khz.c",
|
|
"signal_processing/resample_by_2.c",
|
|
"signal_processing/resample_by_2_internal.c",
|
|
"signal_processing/resample_by_2_internal.h",
|
|
"signal_processing/resample_fractional.c",
|
|
"signal_processing/spl_init.c",
|
|
"signal_processing/spl_inl.c",
|
|
"signal_processing/spl_sqrt.c",
|
|
"signal_processing/splitting_filter.c",
|
|
"signal_processing/sqrt_of_one_minus_x_squared.c",
|
|
"signal_processing/vector_scaling_operations.c",
|
|
"vad/include/webrtc_vad.h",
|
|
"vad/vad_core.c",
|
|
"vad/vad_core.h",
|
|
"vad/vad_filterbank.c",
|
|
"vad/vad_filterbank.h",
|
|
"vad/vad_gmm.c",
|
|
"vad/vad_gmm.h",
|
|
"vad/vad_sp.c",
|
|
"vad/vad_sp.h",
|
|
"vad/webrtc_vad.c",
|
|
]
|
|
|
|
if (current_cpu == "mipsel") {
|
|
sources += [
|
|
"signal_processing/complex_bit_reverse_mips.c",
|
|
"signal_processing/complex_fft_mips.c",
|
|
"signal_processing/cross_correlation_mips.c",
|
|
"signal_processing/downsample_fast_mips.c",
|
|
"signal_processing/filter_ar_fast_q12_mips.c",
|
|
"signal_processing/include/spl_inl_mips.h",
|
|
"signal_processing/min_max_operations_mips.c",
|
|
"signal_processing/resample_by_2_mips.c",
|
|
"signal_processing/spl_sqrt_floor_mips.c",
|
|
]
|
|
if (mips_dsp_rev > 0) {
|
|
sources += [ "signal_processing/vector_scaling_operations_mips.c" ]
|
|
}
|
|
} else {
|
|
sources += [ "signal_processing/complex_fft.c" ]
|
|
}
|
|
|
|
if (current_cpu != "arm" && current_cpu != "mipsel") {
|
|
sources += [
|
|
"signal_processing/complex_bit_reverse.c",
|
|
"signal_processing/filter_ar_fast_q12.c",
|
|
"signal_processing/spl_sqrt_floor.c",
|
|
]
|
|
}
|
|
|
|
if (is_win) {
|
|
cflags = [ "/wd4334" ] # Ignore warning on shift operator promotion.
|
|
}
|
|
|
|
public_configs = [ ":common_audio_config" ]
|
|
deps = [
|
|
":common_audio_c_arm_asm",
|
|
":common_audio_cc",
|
|
":fft4g",
|
|
"..:webrtc_common",
|
|
"../:typedefs",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:compile_assert_c",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../rtc_base:sanitizer",
|
|
"../system_wrappers",
|
|
"../system_wrappers:cpu_features_api",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("fft4g") {
|
|
visibility += webrtc_default_visibility
|
|
sources = [
|
|
"fft4g.c",
|
|
"fft4g.h",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("common_audio_cc") {
|
|
sources = [
|
|
"signal_processing/dot_product_with_scale.cc",
|
|
"signal_processing/dot_product_with_scale.h",
|
|
]
|
|
|
|
public_configs = [ ":common_audio_config" ]
|
|
deps = [
|
|
"..:webrtc_common",
|
|
"../:typedefs",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../system_wrappers",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("sinc_resampler") {
|
|
sources = [
|
|
"resampler/sinc_resampler.h",
|
|
]
|
|
deps = [
|
|
"..:webrtc_common",
|
|
"../:typedefs",
|
|
"../rtc_base:gtest_prod",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../rtc_base/memory:aligned_malloc",
|
|
"../system_wrappers",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("fir_filter") {
|
|
visibility += webrtc_default_visibility
|
|
sources = [
|
|
"fir_filter.h",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("fir_filter_factory") {
|
|
visibility += webrtc_default_visibility
|
|
sources = [
|
|
"fir_filter_c.cc",
|
|
"fir_filter_c.h",
|
|
"fir_filter_factory.cc",
|
|
"fir_filter_factory.h",
|
|
]
|
|
deps = [
|
|
":fir_filter",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../system_wrappers:cpu_features_api",
|
|
]
|
|
if (current_cpu == "x86" || current_cpu == "x64") {
|
|
deps += [ ":common_audio_sse2" ]
|
|
}
|
|
if (rtc_build_with_neon) {
|
|
deps += [ ":common_audio_neon" ]
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "x86" || current_cpu == "x64") {
|
|
rtc_static_library("common_audio_sse2") {
|
|
sources = [
|
|
"fir_filter_sse.cc",
|
|
"fir_filter_sse.h",
|
|
"resampler/sinc_resampler_sse.cc",
|
|
]
|
|
|
|
if (is_posix || is_fuchsia) {
|
|
cflags = [ "-msse2" ]
|
|
}
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
deps = [
|
|
":fir_filter",
|
|
":sinc_resampler",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../rtc_base/memory:aligned_malloc",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (rtc_build_with_neon) {
|
|
rtc_static_library("common_audio_neon") {
|
|
sources = [
|
|
"fir_filter_neon.cc",
|
|
"fir_filter_neon.h",
|
|
"resampler/sinc_resampler_neon.cc",
|
|
]
|
|
|
|
if (current_cpu != "arm64") {
|
|
# Enable compilation for the NEON instruction set. This is needed
|
|
# since //build/config/arm.gni only enables NEON for iOS, not Android.
|
|
# This provides the same functionality as webrtc/build/arm_neon.gypi.
|
|
suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
|
|
cflags = [ "-mfpu=neon" ]
|
|
}
|
|
|
|
# Disable LTO on NEON targets due to compiler bug.
|
|
# TODO(fdegans): Enable this. See crbug.com/408997.
|
|
if (rtc_use_lto) {
|
|
cflags -= [
|
|
"-flto",
|
|
"-ffat-lto-objects",
|
|
]
|
|
}
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
|
|
deps = [
|
|
":common_audio_neon_c",
|
|
":fir_filter",
|
|
":sinc_resampler",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../rtc_base/memory:aligned_malloc",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("common_audio_neon_c") {
|
|
visibility += webrtc_default_visibility
|
|
sources = [
|
|
"signal_processing/cross_correlation_neon.c",
|
|
"signal_processing/downsample_fast_neon.c",
|
|
"signal_processing/min_max_operations_neon.c",
|
|
]
|
|
|
|
if (current_cpu != "arm64") {
|
|
# Enable compilation for the NEON instruction set. This is needed
|
|
# since //build/config/arm.gni only enables NEON for iOS, not Android.
|
|
# This provides the same functionality as webrtc/build/arm_neon.gypi.
|
|
suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
|
|
cflags = [ "-mfpu=neon" ]
|
|
}
|
|
|
|
# Disable LTO on NEON targets due to compiler bug.
|
|
# TODO(fdegans): Enable this. See crbug.com/408997.
|
|
if (rtc_use_lto) {
|
|
cflags -= [
|
|
"-flto",
|
|
"-ffat-lto-objects",
|
|
]
|
|
}
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
deps = [
|
|
":common_audio_c",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:rtc_base_approved",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (rtc_include_tests) {
|
|
rtc_test("common_audio_unittests") {
|
|
visibility += webrtc_default_visibility
|
|
testonly = true
|
|
|
|
sources = [
|
|
"audio_converter_unittest.cc",
|
|
"audio_ring_buffer_unittest.cc",
|
|
"audio_util_unittest.cc",
|
|
"blocker_unittest.cc",
|
|
"channel_buffer_unittest.cc",
|
|
"fir_filter_unittest.cc",
|
|
"lapped_transform_unittest.cc",
|
|
"real_fourier_unittest.cc",
|
|
"resampler/push_resampler_unittest.cc",
|
|
"resampler/push_sinc_resampler_unittest.cc",
|
|
"resampler/resampler_unittest.cc",
|
|
"resampler/sinusoidal_linear_chirp_source.cc",
|
|
"resampler/sinusoidal_linear_chirp_source.h",
|
|
"ring_buffer_unittest.cc",
|
|
"signal_processing/real_fft_unittest.cc",
|
|
"signal_processing/signal_processing_unittest.cc",
|
|
"smoothing_filter_unittest.cc",
|
|
"sparse_fir_filter_unittest.cc",
|
|
"vad/vad_core_unittest.cc",
|
|
"vad/vad_filterbank_unittest.cc",
|
|
"vad/vad_gmm_unittest.cc",
|
|
"vad/vad_sp_unittest.cc",
|
|
"vad/vad_unittest.cc",
|
|
"vad/vad_unittest.h",
|
|
"wav_file_unittest.cc",
|
|
"wav_header_unittest.cc",
|
|
"window_generator_unittest.cc",
|
|
]
|
|
|
|
# Does not compile on iOS for arm: webrtc:5544.
|
|
if (!is_ios || target_cpu != "arm") {
|
|
sources += [ "resampler/sinc_resampler_unittest.cc" ]
|
|
}
|
|
|
|
if (!build_with_chromium && is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
|
|
deps = [
|
|
":common_audio",
|
|
":common_audio_c",
|
|
":fir_filter",
|
|
":fir_filter_factory",
|
|
":sinc_resampler",
|
|
"..:webrtc_common",
|
|
"../:typedefs",
|
|
"../rtc_base:checks",
|
|
"../rtc_base:rtc_base_approved",
|
|
"../rtc_base:rtc_base_tests_utils",
|
|
"../system_wrappers:cpu_features_api",
|
|
"../test:fileutils",
|
|
"../test:test_main",
|
|
"//testing/gtest",
|
|
]
|
|
|
|
if (is_android) {
|
|
deps += [ "//testing/android/native_test:native_test_support" ]
|
|
|
|
shard_timeout = 900
|
|
}
|
|
}
|
|
}
|