Skip to content

Commit

Permalink
meson: Enable SSE intrinsics in audio-resampler
Browse files Browse the repository at this point in the history
This files need to be built with the specific C flags for the
corresponding processor optimisations.
  • Loading branch information
ford-prefect committed Oct 3, 2016
1 parent 4de6663 commit 87905cc
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 1 deletion.
3 changes: 3 additions & 0 deletions config.h.meson
Expand Up @@ -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

Expand Down
45 changes: 44 additions & 1 deletion gst-libs/gst/audio/meson.build
Expand Up @@ -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,
Expand Down
18 changes: 18 additions & 0 deletions meson.build
Expand Up @@ -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'],
Expand Down Expand Up @@ -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')
Expand Down

0 comments on commit 87905cc

Please sign in to comment.