gstreamer/subprojects/gst-plugins-bad/sys/msdk/meson.build
Víctor Manuel Jáquez Leal b5de07a8c5 msdk: meson: don't warn deprecated symbols
Since it's impossible to not to use any because any possible version mismatch
between the header and the runtime, such in the case of the denoise structure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5283>
2023-09-18 09:30:33 +00:00

212 lines
6.3 KiB
Meson

msdk_sources = [
'gstmsdk.c',
'gstmsdkallocator.c',
'gstmsdkcaps.c',
'gstmsdkcontext.c',
'gstmsdkcontextutil.c',
'gstmsdkdec.c',
'gstmsdkdecproputil.c',
'gstmsdkenc.c',
'gstmsdkh264dec.c',
'gstmsdkh264enc.c',
'gstmsdkh265dec.c',
'gstmsdkh265enc.c',
'gstmsdkmjpegdec.c',
'gstmsdkmjpegenc.c',
'gstmsdkmpeg2dec.c',
'gstmsdkmpeg2enc.c',
'gstmsdkvc1dec.c',
'gstmsdkvp8dec.c',
'gstmsdkvpp.c',
'gstmsdkvpputil.c',
'msdk-enums.c',
'msdk.c',
]
have_msdk = false
msdk_dep = []
use_msdk = false
use_onevpl = false
onevpl_extra_args = []
extra_args = [
'-DGST_USE_UNSTABLE_API',
'-DMFX_DEPRECATED_OFF'
]
msdk_option = get_option('msdk')
if msdk_option.disabled()
subdir_done()
endif
if host_machine.system() == 'windows'
msdk_sources += ['msdk_d3d.c', 'gstmsdkallocator_d3d.c' ]
if gstd3d11_dep.found()
extra_args += ['-DCOBJMACROS']
else
if msdk_option.enabled()
error('The msdk plugin was enabled explicity, but required d3d11 dependencies were not found.')
endif
subdir_done()
endif
else
if not gstva_dep.found()
if msdk_option.enabled()
error('The msdk plugin was enabled explicity, but required va dependencies were not found.')
endif
subdir_done()
endif
msdk_sources += ['msdk_libva.c', 'gstmsdkallocator_libva.c']
endif
mfx_api = get_option('mfx_api')
if mfx_api != 'oneVPL'
mfx_dep = dependency('libmfx', version: ['>= 1.0', '<= 1.99'], required: false)
if mfx_dep.found()
mfx_incdir = mfx_dep.get_variable('includedir')
mfx_inc = []
use_msdk = true
else
# Old versions of MediaSDK don't provide a pkg-config file
mfx_root = run_command(python3, '-c', 'import os; print(os.environ.get("INTELMEDIASDKROOT", os.environ.get("MFX_HOME", "")))', check: false).stdout().strip()
if mfx_root != ''
mfx_libdir = [mfx_root + '/lib/lin_x64', mfx_root + '/lib/x64', mfx_root + '/lib64', mfx_root + '/lib']
if host_machine.system() == 'windows'
if host_machine.cpu_family() == 'x86'
mfx_libdir = [mfx_root + '/lib/win32']
else
mfx_libdir = [mfx_root + '/lib/x64']
endif
endif
mfx_incdir = join_paths([mfx_root, 'include'])
mfx_lib = cxx.find_library('mfx', dirs: mfx_libdir, required: msdk_option)
mfx_inc = include_directories(mfx_incdir)
mfx_dep = declare_dependency(include_directories: mfx_inc, dependencies: mfx_lib)
use_msdk = true
endif
endif
endif
if not use_msdk and mfx_api != 'MSDK'
mfx_dep = dependency('vpl', version: '>= 2.2', required: false)
if mfx_dep.found()
mfx_incdir = mfx_dep.get_variable('includedir')
mfx_inc = []
use_onevpl = true
endif
endif
if not use_msdk and not use_onevpl
if msdk_option.enabled()
error('msdk plugin enabled but the Intel Media SDK or the oneVPL SDK not found: consider setting PKG_CONFIG_PATH, INTELMEDIASDKROOT or MFX_HOME')
else
subdir_done()
endif
endif
# Check oneVPL firstly
if use_onevpl
onevpl_extra_args += ['-DONEVPL_EXPERIMENTAL']
mfx_incdir = join_paths([mfx_incdir, 'vpl'])
mfx_inc = include_directories(mfx_incdir)
elif cxx.has_header('mfx/mfxdefs.h', args: '-I' + mfx_incdir)
mfx_incdir = join_paths([mfx_incdir, 'mfx'])
mfx_inc = include_directories(mfx_incdir)
endif
if use_onevpl or cxx.has_header('mfxvp9.h', args: '-I' + mfx_incdir)
msdk_sources += [ 'gstmsdkvp9dec.c' ]
cdata.set('USE_MSDK_VP9_DEC', 1)
endif
# Usually MFX_VERSION 1026+ is required to support raw VP9 stream, however Fedora 30 has MFX_VERSION==1026
# but without support for raw VP9 stream, so mfxExtVP9Param is checked as well.
# See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/988#note_408093
mfx_ver126_check_code = '''
#include <mfxdefs.h>
#include <mfxstructures.h>
#if MFX_VERSION < 1026
#error "The current version of mfx doesn't support raw vp9 stream"
#endif
mfxExtVP9Param ext;
'''
have_mfx_ver126 = cc.compiles(mfx_ver126_check_code,
include_directories : [configinc, mfx_inc])
if have_mfx_ver126
msdk_sources += [ 'gstmsdkvp9enc.c' ]
cdata.set('USE_MSDK_VP9_ENC', 1)
endif
mfx_ver134_check_code = '''
#include <mfxdefs.h>
#if MFX_VERSION < 1034
#error "The current version of mfx doesn't support AV1 decoding"
#endif
'''
have_mfx_ver134 = cc.compiles(mfx_ver134_check_code,
include_directories : [configinc, mfx_inc])
if have_mfx_ver134
msdk_sources += [ 'gstmsdkav1dec.c' ]
cdata.set('USE_MSDK_AV1_DEC', 1)
endif
mfx_ver205_check_code = '''
#include <mfxdefs.h>
#if MFX_VERSION < 2005
#error "The current verison of mfx doesn't support AV1 encoding"
#endif
'''
have_mfx_ver205 = cc.compiles(mfx_ver205_check_code,
include_directories: [configinc, mfx_inc])
if use_onevpl and have_mfx_ver205
msdk_sources += [ 'gstmsdkav1enc.c' ]
cdata.set10('USE_MSDK_AV1_ENC', 1)
endif
if host_machine.system() == 'windows'
if cc.get_id() != 'msvc' and msdk_option.enabled()
error('msdk plugin can only be built with MSVC')
endif
legacy_stdio_dep = cc.find_library('legacy_stdio_definitions', required: get_option('msdk'))
msdk_deps = declare_dependency(dependencies: [gstd3d11_dep, legacy_stdio_dep])
msdk_deps_found = gstd3d11_dep.found() and legacy_stdio_dep.found() and cc.get_id() == 'msvc'
else
libdl_dep = cc.find_library('dl', required: get_option('msdk'))
libgudev_dep = dependency('gudev-1.0', required: get_option('msdk'), allow_fallback: true)
libdrm_dep = dependency('libdrm', required: get_option('msdk'))
msdk_deps = declare_dependency(dependencies: [gstva_dep, libdl_dep, libgudev_dep, libdrm_dep])
msdk_deps_found = gstva_dep.found() and libdl_dep.found() and libgudev_dep.found() and libdrm_dep.found()
endif
if msdk_deps_found
if host_machine.system() != 'windows'
driverdir = libva_dep.get_variable('driverdir', default_value: '')
if driverdir == ''
driverdir = join_paths(get_option('prefix'), get_option('libdir'), 'dri')
endif
cdata.set_quoted('VA_DRIVERS_PATH', '@0@'.format(driverdir))
endif
gstmsdktag = library('gstmsdk',
msdk_sources,
c_args : gst_plugins_bad_args + extra_args + onevpl_extra_args,
include_directories : [configinc, mfx_inc],
dependencies : [gstbase_dep, gstvideo_dep, gstpbutils_dep, gstallocators_dep, gstcodecparsers_dep, mfx_dep, msdk_deps],
install : true,
install_dir : plugins_install_dir,
)
plugins += [gstmsdktag]
have_msdk = true
endif