summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac51
-rw-r--r--webrtc/common_audio/Makefile.am65
-rw-r--r--webrtc/modules/audio_processing/Makefile.am39
3 files changed, 113 insertions, 42 deletions
diff --git a/configure.ac b/configure.ac
index 6e2fdc2..e386a59 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,10 +7,14 @@ AC_SUBST(LIBWEBRTC_AUDIO_PROCESSING_VERSION_INFO, [0:0:0])
AM_SILENT_RULES([yes])
+# Set up the host_* variables
+AC_CANONICAL_HOST
+
AC_PROG_CC
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_PROG_INSTALL
+AM_PROG_AS
AC_LANG_C
AC_LANG_CPLUSPLUS
@@ -53,8 +57,51 @@ AS_CASE(["${host}"],
)
AC_SUBST(PLATFORM_CFLAGS)
-COMMON_CFLAGS="-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
-COMMON_CXXFLAGS="-std=c++11 -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
+AS_CASE(["${host_cpu}"],
+ [i?86|x86_64],
+ [
+ HAVE_X86=1
+ ],
+ [armv7*|armv8*],
+ [
+ HAVE_ARM=1
+ HAVE_ARMV7=1
+ ],
+ [arm*],
+ [
+ HAVE_ARM=1
+ ]
+ # FIXME: Add MIPS support, see webrtc/BUILD.gn for defines
+)
+AM_CONDITIONAL(HAVE_X86, [test "x${HAVE_X86}" = "x1"])
+AM_CONDITIONAL(HAVE_ARM, [test "x${HAVE_ARM}" = "x1"])
+AM_CONDITIONAL(HAVE_ARMV7, [test "x${HAVE_ARMV7}" = "x1"])
+
+# Borrowed from pulseaudio's configure.ac
+AC_ARG_ENABLE([neon],
+ AS_HELP_STRING([--enable-neon], [Enable NEON optimisations on ARM CPUs that support it (yes|no|auto|runtime)]))
+
+AS_IF([test "x$enable_neon" != "xno"],
+ AS_IF([test "x$enable_neon" != "xruntime"],
+ [
+ save_CFLAGS="$CFLAGS"; CFLAGS="-mfpu=neon $CFLAGS"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <arm_neon.h>]], [])],
+ [
+ HAVE_NEON=1
+ ARCH_CFLAGS="-mfpu=neon"
+ ])
+ CFLAGS="$save_CFLAGS"
+ ],
+ [
+ HAVE_NEON=1
+ ARCH_CFLAGS="-mfpu=neon -DWEBRTC_DETECT_NEON"
+ ])
+)
+AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = "x1"])
+
+COMMON_CFLAGS="-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
+COMMON_CXXFLAGS="-std=c++11 -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
AC_SUBST([COMMON_CFLAGS])
AC_SUBST([COMMON_CXXFLAGS])
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