diff options
author | kjellander@webrtc.org <kjellander@webrtc.org> | 2014-08-31 20:32:53 +0000 |
---|---|---|
committer | kjellander@webrtc.org <kjellander@webrtc.org> | 2014-08-31 20:32:53 +0000 |
commit | 05f7eb65ac0297786c073fb6536b1e488d8bed05 (patch) | |
tree | 16b5c98c903ee9d012b2bbc82f981b3357144fdd /common_audio | |
parent | f8698ce1dacfdcf804809638483adb702760469c (diff) | |
download | webrtc-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.gn | 197 |
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" ] + } } } |