diff options
author | Arun Raghavan <git@arunraghavan.net> | 2015-10-15 12:51:03 +0530 |
---|---|---|
committer | Arun Raghavan <git@arunraghavan.net> | 2015-10-15 16:18:47 +0530 |
commit | 98454ed26512886b897fee0544fac40a0b694912 (patch) | |
tree | da3705e2a37e30f97e4447fb54d93cc5a654e12f /webrtc | |
parent | f6941fbf6a8d395645fdc0bbfc51b6431189f490 (diff) |
build: Add architecture checks for x86 and ARM
On x86, SSE optimisations are always compiled in, and used based on
runtime checks.
On ARM, we try to autodetect NEON support (with an option of runtime
detection). This has not been build-tested on ARM yet.
This leaves MIPS to be done.
Diffstat (limited to 'webrtc')
-rw-r--r-- | webrtc/common_audio/Makefile.am | 65 | ||||
-rw-r--r-- | webrtc/modules/audio_processing/Makefile.am | 39 |
2 files changed, 64 insertions, 40 deletions
diff --git a/webrtc/common_audio/Makefile.am b/webrtc/common_audio/Makefile.am index 709bf71..9b0bac9 100644 --- a/webrtc/common_audio/Makefile.am +++ b/webrtc/common_audio/Makefile.am @@ -11,7 +11,6 @@ libcommon_audio_la_SOURCES = resampler/include/push_resampler.h \ resampler/push_sinc_resampler.cc \ resampler/resampler.cc \ resampler/sinc_resampler.cc \ - resampler/sinc_resampler_sse.cc \ resampler/sinusoidal_linear_chirp_source.cc \ signal_processing/include/real_fft.h \ signal_processing/include/signal_processing_library.h \ @@ -78,8 +77,6 @@ libcommon_audio_la_SOURCES = resampler/include/push_resampler.h \ fft4g.h \ fir_filter.cc \ fir_filter.h \ - fir_filter_sse.cc \ - fir_filter_sse.h \ lapped_transform.cc \ lapped_transform.h \ real_fourier.cc \ @@ -98,28 +95,46 @@ libcommon_audio_la_SOURCES = resampler/include/push_resampler.h \ window_generator.h \ window_generator.cc +if HAVE_X86 +libcommon_audio_la_SOURCES += \ + resampler/sinc_resampler_sse.cc \ + fir_filter_sse.cc \ + fir_filter_sse.h +endif + +if HAVE_ARM +libcommon_audio_la_SOURCES += \ + signal_processing/complex_bit_reverse_arm.S \ + signal_processing/spl_sqrt_floor_arm.S +endif + +if HAVE_ARMV7 +libcommon_audio_la_SOURCES += \ + signal_processing/filter_ar_fast_q12_armv7.S +endif + +if HAVE_NEON +libcommon_audio_la_SOURCES += \ + resampler/sinc_resampler_neon.cc \ + signal_processing/cross_correlation_neon.c \ + signal_processing/downsample_fast_neon.c \ + signal_processing/min_max_operations_neon.c \ + fir_filter_neon.cc \ + fir_filter_neon.h +endif + libcommon_audio_la_CFLAGS = $(AM_CFLAGS) $(COMMON_CFLAGS) libcommon_audio_la_CXXFLAGS = $(AM_CXXFLAGS) $(COMMON_CXXFLAGS) -EXTRA_DIST = BUILD.gn - -# FIXME: -# x86 - resampler/sinc_resampler_sse.cc -# fir_filter_sse.cc -# ARM - signal_processing/complex_bit_reverse_arm.S -# signal_processing/spl_sqrt_floor_arm.S -# ARM7 - signal_processing/filter_ar_fast_q12_armv7.S -# NEON - resampler/sinc_resampler_neon.cc \ -# signal_processing/cross_correlation_neon.c -# signal_processing/downsample_fast_neon.c -# signal_processing/min_max_operations_neon.c -# fir_filter_neon.c -# MIPS - 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 -# signal_processing/vector_scaling_operations_mips.c +# FIXME: The MIPS optimisations need to be hooked up once we have the +# autotools conditionals in place +EXTRA_DIST = BUILD.gn \ + 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 \ + signal_processing/vector_scaling_operations_mips.c diff --git a/webrtc/modules/audio_processing/Makefile.am b/webrtc/modules/audio_processing/Makefile.am index f9b4ac7..48defd7 100644 --- a/webrtc/modules/audio_processing/Makefile.am +++ b/webrtc/modules/audio_processing/Makefile.am @@ -6,10 +6,8 @@ libwebrtc_audio_processing_la_SOURCES = include/audio_processing.h \ aec/aec_core.c \ aec/aec_core.h \ aec/aec_core_internal.h \ - aec/aec_core_sse2.c \ aec/aec_rdft.c \ aec/aec_rdft.h \ - aec/aec_rdft_sse2.c \ aec/aec_resampler.c \ aec/aec_resampler.h \ aec/echo_cancellation.c \ @@ -130,6 +128,10 @@ libwebrtc_audio_processing_la_SOURCES += \ ns/nsx_core.c \ ns/nsx_core.h \ ns/nsx_core_c.c +if HAVE_NEON +libwebrtc_audio_processing_la_SOURCES += \ + ns/nsx_core_neon.c +endif else COMMON_CFLAGS += -DWEBRTC_NS_FLOAT=1 COMMON_CXXFLAGS += -DWEBRTC_NS_FLOAT=1 @@ -142,6 +144,19 @@ libwebrtc_audio_processing_la_SOURCES += \ ns/windows_private.h endif +if HAVE_X86 +libwebrtc_audio_processing_la_SOURCES += \ + aec/aec_core_sse2.c \ + aec/aec_rdft_sse2.c +endif + +if HAVE_NEON +libwebrtc_audio_processing_la_SOURCES += \ + aec/aec_core_neon.c \ + aec/aec_rdft_neon.c \ + aecm/aecm_core_neon.c +endif + libwebrtc_audio_processing_la_CFLAGS = $(AM_CFLAGS) $(COMMON_CFLAGS) libwebrtc_audio_processing_la_CXXFLAGS = $(AM_CXXFLAGS) $(COMMON_CXXFLAGS) @@ -152,16 +167,10 @@ libwebrtc_audio_processing_la_LIBADD = $(top_builddir)/webrtc/libwebrtc.la \ $(top_builddir)/webrtc/modules/audio_coding/libaudio_coding.la libwebrtc_audio_processing_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBWEBRTC_AUDIO_PROCESSING_VERSION_INFO) -EXTRA_DIST = BUILD.gn - -# FIXME: -# x86: aec/aec_core_sse2.c -# aec/aec_rdft_sse2.c -# NEON: aec/aec_core_neon.c -# aec/aec_rdft_neon.c -# aecm/aecm_core_neon.c -# ns/nsx_core_neon.c -# MIPS: aec/aec_core_mips.c -# aec/aec_rdft_neon.c -# aecm/aecm_core_mips.c -# ns/nsx_core_mips.c +# FIXME: The MIPS optimisations need to be hooked up once we have the +# autotools conditionals in place +EXTRA_DIST = BUILD.gn \ + aec/aec_core_mips.c \ + aec/aec_rdft_neon.c \ + aecm/aecm_core_mips.c \ + ns/nsx_core_mips.c |