summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Raghavan <arun@osg.samsung.com>2016-10-03 10:59:37 +0530
committerArun Raghavan <arun@arunraghavan.net>2016-10-03 11:01:36 +0530
commit87905cc48b6c3104eddfb4e486c6cb1f3a3f40b6 (patch)
tree3b00e25badaab72a040085935126e3e9b69cfde9
parent4de66632d79ef40cdc81701203c3e4c3cfb6371e (diff)
downloadgstreamer-plugins-base-87905cc48b6c3104eddfb4e486c6cb1f3a3f40b6.tar.gz
meson: Enable SSE intrinsics in audio-resampler
This files need to be built with the specific C flags for the corresponding processor optimisations.
-rw-r--r--config.h.meson3
-rw-r--r--gst-libs/gst/audio/meson.build45
-rw-r--r--meson.build18
3 files changed, 65 insertions, 1 deletions
diff --git a/config.h.meson b/config.h.meson
index 8e38a525c..3a801b4a9 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -245,6 +245,9 @@
/* Define if RDTSC is available */
#mesondefine HAVE_RDTSC
+/* Define to 1 if you have the <smmintrin.h> header file. */
+#mesondefine HAVE_SMMINTRIN_H
+
/* Define to 1 if you have the <stdint.h> header file. */
#mesondefine HAVE_STDINT_H
diff --git a/gst-libs/gst/audio/meson.build b/gst-libs/gst/audio/meson.build
index a2df57a4f..0fc9bb71a 100644
--- a/gst-libs/gst/audio/meson.build
+++ b/gst-libs/gst/audio/meson.build
@@ -85,10 +85,53 @@ else
configuration : configuration_data())
endif
+simd_cargs = []
+simd_dependencies = []
+
+if have_sse
+ audio_resampler_sse = static_library('audio_resampler_sse',
+ [ 'audio-resampler-x86-sse.c' ],
+ c_args : gst_plugins_base_args + [sse_args] + [pic_args],
+ include_directories : [configinc, libsinc],
+ dependencies : [gst_base_dep],
+ install : false
+ )
+
+ simd_cargs += ['-DHAVE_SSE']
+ simd_dependencies += audio_resampler_sse
+endif
+
+if have_sse2
+ audio_resampler_sse2 = static_library('audio_resampler_sse2',
+ [ 'audio-resampler-x86-sse2.c' ],
+ c_args : gst_plugins_base_args + [sse2_args] + [pic_args],
+ include_directories : [configinc, libsinc],
+ dependencies : [gst_base_dep],
+ install : false
+ )
+
+ simd_cargs += ['-DHAVE_SSE2']
+ simd_dependencies += audio_resampler_sse2
+endif
+
+if have_sse41
+ audio_resampler_sse41 = static_library('audio_resampler_sse41',
+ [ 'audio-resampler-x86-sse41.c' ],
+ c_args : gst_plugins_base_args + [sse41_args] + [pic_args],
+ include_directories : [configinc, libsinc],
+ dependencies : [gst_base_dep],
+ install : false
+ )
+
+ simd_cargs += ['-DHAVE_SSE41']
+ simd_dependencies += audio_resampler_sse41
+endif
+
gstaudio = library('gstaudio-@0@'.format(api_version),
audio_src, gstaudio_h, gstaudio_c, orc_c, orc_h,
- c_args: gst_plugins_base_args,
+ c_args : gst_plugins_base_args + simd_cargs,
include_directories: [configinc, libsinc],
+ link_with : simd_dependencies,
version : libversion,
soversion : soversion,
install : true,
diff --git a/meson.build b/meson.build
index c47a8b47c..75de4a356 100644
--- a/meson.build
+++ b/meson.build
@@ -50,6 +50,7 @@ check_headers = [
['HAVE_INTTYPES_H', 'inttypes.h'],
['HAVE_MEMORY_H', 'memory.h'],
['HAVE_PROCESS_H', 'process.h'],
+ ['HAVE_SMMINTRIN_H', 'smmintrin.h'],
['HAVE_STDINT_H', 'stdint.h'],
['HAVE_STDLIB_H', 'stdlib.h'],
['HAVE_STRINGS_H', 'strings.h'],
@@ -175,6 +176,23 @@ else
core_conf.set('DISABLE_ORC', 1)
endif
+# Used to build SSE* things in audio-resampler
+sse_args = '-msse'
+sse2_args = '-msse2'
+sse41_args = '-msse4.1'
+
+have_sse = cc.has_argument(sse_args)
+have_sse2 = cc.has_argument(sse2_args)
+have_sse41 = cc.has_argument(sse41_args)
+
+# FIXME: Meson should have a way for portably adding -fPIC when needed for use
+# with static libraries that are linked into shared libraries. Or, it should
+# add it by default with an option to turn it off if needed.
+pic_args = ['-fPIC']
+if host_machine.system() == 'windows'
+ pic_args = []
+endif
+
subdir('gst-libs')
subdir('gst')
subdir('ext')