summaryrefslogtreecommitdiff
path: root/common_audio
diff options
context:
space:
mode:
authorkjellander@webrtc.org <kjellander@webrtc.org>2014-08-31 20:32:53 +0000
committerkjellander@webrtc.org <kjellander@webrtc.org>2014-08-31 20:32:53 +0000
commit05f7eb65ac0297786c073fb6536b1e488d8bed05 (patch)
tree16b5c98c903ee9d012b2bbc82f981b3357144fdd /common_audio
parentf8698ce1dacfdcf804809638483adb702760469c (diff)
downloadwebrtc-05f7eb65ac0297786c073fb6536b1e488d8bed05.tar.gz
GN: Implement voice engine, common audio, audio coding and audio processing
NOTICE: Assembly offsets generation for audio processing will not be ported to GN and the process of removing them is tracked in https://code.google.com/p/webrtc/issues/detail?id=3580. The GN files are based upon the GYP files as of r7009. BUG=3441 TESTED=Passing builds with: gn gen out/Default --args="build_with_chromium=false" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false is_debug=true" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false aec_debug_dump=true" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false aec_untrusted_delay_for_testing=true" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false prefer_fixed_point=true" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false os=\"android\" cpu_arch=\"arm\" is_clang=false" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false os=\"android\" cpu_arch=\"arm\" arm_version=7 is_clang=false" && ninja -C out/Default I don't know how to setup the mips toolchain to test the following, but it's out of scope for the GN effort for now: gn gen out/Default --args="build_with_chromium=false cpu_arch=\"mipsel\" mips_dsp_rev=0" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false cpu_arch=\"mipsel\" mips_dsp_rev=1" && ninja -C out/Default gn gen out/Default --args="build_with_chromium=false cpu_arch=\"mipsel\" mips_dsp_rev=2" && ninja -C out/Default Compilation of Chromium's 'all' target with src/third_party/webrtc symlinked to the WebRTC checkout with this CL applied, both with the default GN settings and using --args="is_debug=false os=\"android\" cpu_arch=\"arm\"" R=andrew@webrtc.org, brettw@chromium.org Review URL: https://webrtc-codereview.appspot.com/15999004 git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@7012 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'common_audio')
-rw-r--r--common_audio/BUILD.gn197
1 files changed, 193 insertions, 4 deletions
diff --git a/common_audio/BUILD.gn b/common_audio/BUILD.gn
index 4dcc3226..6b5fe9de 100644
--- a/common_audio/BUILD.gn
+++ b/common_audio/BUILD.gn
@@ -9,18 +9,207 @@
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") {
- # TODO(andrew): Implement.
+ sources = [
+ "audio_util.cc",
+ "fir_filter.cc",
+ "fir_filter.h",
+ "fir_filter_neon.h",
+ "fir_filter_sse.h",
+ "include/audio_util.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",
+ "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/spl_version.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/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_writer.cc",
+ "wav_writer.h",
+ ]
+
+ deps = [ "../system_wrappers" ]
+
+ if (cpu_arch == "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 (cpu_arch == "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",
+ "signal_processing/filter_ar_fast_q12.c",
+ ]
+ }
+
+ if (cpu_arch != "arm" && cpu_arch != "mipsel") {
+ sources += [
+ "signal_processing/complex_bit_reverse.c",
+ "signal_processing/spl_sqrt_floor.c",
+ ]
+ }
+
+ if (is_win) {
+ cflags += [
+ "/wd4334", # Ignore warning on shift operator promotion.
+ ]
+ }
+
+ direct_dependent_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 (cpu_arch == "x86" || cpu_arch == "x64") {
+ deps += [ ":common_audio_sse2" ]
+ }
}
if (cpu_arch == "x86" || cpu_arch == "x64") {
source_set("common_audio_sse2") {
- # TODO(andrew): Implement.
+ 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 (cpu_arch == "arm" && arm_version == 7) {
+if (build_armv7_neon) {
source_set("common_audio_neon") {
- # TODO(andrew): Implement.
+ sources = [
+ "fir_filter_neon.cc",
+ "resampler/sinc_resampler_neon.cc",
+ "signal_processing/cross_correlation_neon.S",
+ "signal_processing/downsample_fast_neon.S",
+ "signal_processing/min_max_operations_neon.S",
+ "signal_processing/vector_scaling_operations_neon.S",
+ ]
+
+ configs += [
+ "..:common_config",
+ "..:common_inherited_config",
+ ]
+
+ # Enable compilation for the ARM v7 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.
+ # TODO(kjellander): Investigate if this can be moved into webrtc.gni or
+ # //build/config/arm.gni instead, to reduce code duplication.
+ # Remove the -mfpu=vfpv3-d16 cflag.
+ configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
+ cflags = [
+ "-flax-vector-conversions",
+ "-mfpu=neon",
+ ]
+
+ # Disable LTO in audio_processing_neon target due to compiler bug.
+ if (use_lto) {
+ cflags -= [
+ "-flto",
+ "-ffat-lto-objects",
+ ]
+ }
+
+ 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" ]
+ }
}
}