We are using the Ooura FFT in a few places: - AGC - Transient suppression - Noise suppression The optimized OpenMAX DL FFT is considerably faster, but currently does not compile everywhere, notably on iOS. This change will allow us to use Openmax when possible and otherwise fall back to Ooura. (Unfortunately, noise suppression won't be able to take advantage of it since it's not C++. Upgrade time?) R=aluebs@webrtc.org, mgraczyk@chromium.org Review URL: https://webrtc-codereview.appspot.com/45789004 Cr-Commit-Position: refs/heads/master@{#8798} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8798 4adac7df-926f-26a2-2b94-8c16560cd09d
235 lines
6.7 KiB
Plaintext
235 lines
6.7 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("../build/webrtc.gni")
|
|
|
|
config("common_audio_config") {
|
|
include_dirs = [
|
|
"resampler/include",
|
|
"signal_processing/include",
|
|
"vad/include",
|
|
]
|
|
}
|
|
|
|
source_set("common_audio") {
|
|
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",
|
|
"fft4g.c",
|
|
"fft4g.h",
|
|
"fir_filter.cc",
|
|
"fir_filter.h",
|
|
"fir_filter_neon.h",
|
|
"fir_filter_sse.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",
|
|
"resampler/sinc_resampler.h",
|
|
"ring_buffer.c",
|
|
"ring_buffer.h",
|
|
"signal_processing/include/real_fft.h",
|
|
"signal_processing/include/signal_processing_library.h",
|
|
"signal_processing/include/spl_inl.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/dot_product_with_scale.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/levinson_durbin.c",
|
|
"signal_processing/lpc_to_refl_coef.c",
|
|
"signal_processing/min_max_operations.c",
|
|
"signal_processing/randomization_functions.c",
|
|
"signal_processing/refl_coef_to_lpc.c",
|
|
"signal_processing/real_fft.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_sqrt.c",
|
|
"signal_processing/splitting_filter.c",
|
|
"signal_processing/sqrt_of_one_minus_x_squared.c",
|
|
"signal_processing/vector_scaling_operations.c",
|
|
"vad/include/vad.h",
|
|
"vad/include/webrtc_vad.h",
|
|
"vad/vad.cc",
|
|
"vad/webrtc_vad.c",
|
|
"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",
|
|
"wav_header.cc",
|
|
"wav_header.h",
|
|
"wav_file.cc",
|
|
"wav_file.h",
|
|
"window_generator.cc",
|
|
"window_generator.h",
|
|
]
|
|
|
|
deps = [ "../system_wrappers" ]
|
|
|
|
defines = []
|
|
if (rtc_use_openmax_dl) {
|
|
sources += [
|
|
"real_fourier_openmax.cc",
|
|
"real_fourier_openmax.h",
|
|
]
|
|
defines += [ "RTC_USE_OPENMAX_DL" ]
|
|
deps += [ "//third_party/openmax_dl/dl" ]
|
|
}
|
|
|
|
if (current_cpu == "arm") {
|
|
sources += [
|
|
"signal_processing/complex_bit_reverse_arm.S",
|
|
"signal_processing/spl_sqrt_floor_arm.S",
|
|
]
|
|
|
|
if (arm_version >= 7) {
|
|
deps += [ ":common_audio_neon" ]
|
|
sources += [ "signal_processing/filter_ar_fast_q12_armv7.S" ]
|
|
} else {
|
|
sources += [ "signal_processing/filter_ar_fast_q12.c" ]
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "arm64") {
|
|
deps += [ ":common_audio_neon" ]
|
|
}
|
|
|
|
if (current_cpu == "mipsel") {
|
|
sources += [
|
|
"signal_processing/include/spl_inl_mips.h",
|
|
"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/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.
|
|
]
|
|
}
|
|
|
|
configs += [ "..:common_config" ]
|
|
|
|
public_configs = [
|
|
"..:common_inherited_config",
|
|
":common_audio_config",
|
|
]
|
|
|
|
if (is_clang) {
|
|
# Suppress warnings from Chrome's Clang plugins.
|
|
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
|
|
configs -= [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
|
|
if (current_cpu == "x86" || current_cpu == "x64") {
|
|
deps += [ ":common_audio_sse2" ]
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "x86" || current_cpu == "x64") {
|
|
source_set("common_audio_sse2") {
|
|
sources = [
|
|
"fir_filter_sse.cc",
|
|
"resampler/sinc_resampler_sse.cc",
|
|
]
|
|
|
|
cflags = [ "-msse2" ]
|
|
|
|
configs += [ "..:common_inherited_config" ]
|
|
|
|
if (is_clang) {
|
|
# Suppress warnings from Chrome's Clang plugins.
|
|
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
|
|
configs -= [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (rtc_build_armv7_neon || current_cpu == "arm64") {
|
|
source_set("common_audio_neon") {
|
|
sources = [
|
|
"fir_filter_neon.cc",
|
|
"resampler/sinc_resampler_neon.cc",
|
|
"signal_processing/cross_correlation_neon.c",
|
|
"signal_processing/downsample_fast_neon.c",
|
|
"signal_processing/min_max_operations_neon.c",
|
|
]
|
|
|
|
configs += [ "..:common_config" ]
|
|
public_configs = [ "..:common_inherited_config" ]
|
|
|
|
if (!arm_use_neon) {
|
|
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
|
|
cflags = [ "-mfpu=neon" ]
|
|
}
|
|
|
|
# Disable LTO in audio_processing_neon target due to compiler bug.
|
|
if (rtc_use_lto) {
|
|
cflags -= [
|
|
"-flto",
|
|
"-ffat-lto-objects",
|
|
]
|
|
}
|
|
}
|
|
}
|