pipewire/spa/plugins/audioconvert/meson.build
Wim Taymans d8e399dee9 audioconvert: pass state to functions
Pass some state to convert and channelmix functions. This makes it
possible to select per channel optimized convert functions but
also makes it possible to implement noise shaping later.
Pass the channelmix matrix and volume in the state.
Handle specialized 2 channel s16 -> f32 conversion
2019-03-29 17:39:59 +01:00

120 lines
3.1 KiB
Meson

audioconvert_sources = ['fmtconvert.c',
'fmt-ops.c',
'channelmix.c',
'channelmix-ops.c',
'resample.c',
'splitter.c',
'merger.c',
'audioconvert.c',
'plugin.c']
simd_cargs = []
simd_dependencies = []
audioconvert_c = static_library('audioconvert_c',
['resample-native-c.c',
'channelmix-ops-c.c',
'fmt-ops-c.c' ],
c_args : ['-O3'],
include_directories : [spa_inc],
install : false
)
simd_dependencies += audioconvert_c
if have_sse
audioconvert_sse = static_library('audioconvert_sse',
['resample-native-sse.c',
'channelmix-ops-sse.c' ],
c_args : [sse_args, '-O3', '-DHAVE_SSE'],
include_directories : [spa_inc],
install : false
)
simd_cargs += ['-DHAVE_SSE']
simd_dependencies += audioconvert_sse
endif
if have_sse2
audioconvert_sse2 = static_library('audioconvert_sse2',
['fmt-ops-sse2.c' ],
c_args : [sse2_args, '-O3', '-DHAVE_SSE2'],
include_directories : [spa_inc],
install : false
)
simd_cargs += ['-DHAVE_SSE2']
simd_dependencies += audioconvert_sse2
endif
if have_ssse3
audioconvert_ssse3 = static_library('audioconvert_ssse3',
['fmt-ops-ssse3.c',
'resample-native-ssse3.c' ],
c_args : [ssse3_args, '-O3', '-DHAVE_SSSE3'],
include_directories : [spa_inc],
install : false
)
simd_cargs += ['-DHAVE_SSSE3']
simd_dependencies += audioconvert_ssse3
endif
if have_sse41
audioconvert_sse41 = static_library('audioconvert_sse41',
['fmt-ops-sse41.c'],
c_args : [sse41_args, '-O3', '-DHAVE_SSE41'],
include_directories : [spa_inc],
install : false
)
simd_cargs += ['-DHAVE_SSE41']
simd_dependencies += audioconvert_sse41
endif
if have_avx and have_fma
audioconvert_avx = static_library('audioconvert_avx',
['resample-native-avx.c'],
c_args : [avx2_args, fma_args, '-O3', '-DHAVE_AVX', '-DHAVE_FMA'],
include_directories : [spa_inc],
install : false
)
simd_cargs += ['-DHAVE_AVX', '-DHAVE_FMA']
simd_dependencies += audioconvert_avx
endif
audioconvertlib = shared_library('spa-audioconvert',
audioconvert_sources,
c_args : simd_cargs,
include_directories : [spa_inc],
dependencies : [ speexdsp_dep, mathlib ],
link_with : simd_dependencies,
install : true,
install_dir : '@0@/spa/audioconvert/'.format(get_option('libdir')))
test_apps = [
'test-fmt-ops',
'test-resample',
]
foreach a : test_apps
test(a,
executable(a, a + '.c',
dependencies : [dl_lib, pthread_lib, mathlib ],
include_directories : [spa_inc ],
link_with : simd_dependencies,
c_args : [ '-D_GNU_SOURCE' ],
install : false),
env : [
'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
])
endforeach
benchmark_apps = [
'benchmark-fmt-ops',
'benchmark-resample',
]
foreach a : benchmark_apps
benchmark(a,
executable(a, a + '.c',
dependencies : [dl_lib, pthread_lib, mathlib, speexdsp_dep, ],
include_directories : [spa_inc ],
c_args : [ simd_cargs, '-D_GNU_SOURCE' ],
link_with : simd_dependencies,
install : false),
env : [
'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
])
endforeach