1msdk_sources = [ 2 'gstmsdk.c', 3 'gstmsdkbufferpool.c', 4 'gstmsdkcontext.c', 5 'gstmsdkcontextutil.c', 6 'gstmsdkdec.c', 7 'gstmsdkdecproputil.c', 8 'gstmsdkenc.c', 9 'gstmsdkh264dec.c', 10 'gstmsdkh264enc.c', 11 'gstmsdkh265dec.c', 12 'gstmsdkh265enc.c', 13 'gstmsdkmjpegdec.c', 14 'gstmsdkmjpegenc.c', 15 'gstmsdkmpeg2dec.c', 16 'gstmsdkmpeg2enc.c', 17 'gstmsdksystemmemory.c', 18 'gstmsdkvc1dec.c', 19 'gstmsdkvideomemory.c', 20 'gstmsdkvp8dec.c', 21 'gstmsdkvp8enc.c', 22 'gstmsdkvpp.c', 23 'gstmsdkvpputil.c', 24 'msdk-enums.c', 25 'msdk.c', 26] 27 28if host_machine.system() == 'windows' 29 msdk_sources += ['msdk_d3d.c', 'gstmsdkallocator_d3d.c' ] 30else 31 msdk_sources += ['msdk_libva.c', 'gstmsdkallocator_libva.c'] 32endif 33 34have_msdk = false 35msdk_dep = [] 36 37msdk_option = get_option('msdk') 38if msdk_option.disabled() 39 subdir_done() 40endif 41 42mfx_dep = dependency('libmfx', required: false) 43if mfx_dep.found() 44 mfx_incdir = mfx_dep.get_pkgconfig_variable('includedir') 45else 46 # Old versions of MediaSDK don't provide a pkg-config file 47 mfx_root = run_command(python3, '-c', 'import os; print(os.environ.get("INTELMEDIASDKROOT", os.environ.get("MFX_HOME", "")))').stdout().strip() 48 49 if mfx_root != '' 50 mfx_libdir = [mfx_root + '/lib/lin_x64', mfx_root + '/lib/x64', mfx_root + '/lib64', mfx_root + '/lib'] 51 mfx_incdir = join_paths([mfx_root, 'include']) 52 mfx_lib = cxx.find_library('mfx', dirs: mfx_libdir, required: msdk_option) 53 mfx_inc = include_directories(mfx_incdir) 54 mfx_dep = declare_dependency(include_directories: mfx_inc, dependencies: mfx_lib) 55 elif msdk_option.enabled() 56 error('msdk plugin enabled but Intel Media SDK not found: consider setting PKG_CONFIG_PATH, INTELMEDIASDKROOT or MFX_HOME') 57 else 58 subdir_done() 59 endif 60endif 61 62# Old versions of MediaSDK don't have the 'mfx' directory prefix 63if cxx.has_header('mfx/mfxdefs.h', args: '-I' + mfx_incdir) 64 mfx_incdir = join_paths([mfx_incdir, 'mfx']) 65endif 66 67if cxx.has_header('mfxvp9.h', args: '-I' + mfx_incdir) 68 msdk_sources += [ 'gstmsdkvp9dec.c' ] 69 cdata.set10('USE_MSDK_VP9_DEC', 1) 70endif 71 72if host_machine.system() == 'windows' 73 if cc.get_id() != 'msvc' and msdk_option.enabled() 74 error('msdk plugin can only be built with MSVC') 75 endif 76 legacy_stdio_dep = cc.find_library('legacy_stdio_definitions', required: get_option('msdk')) 77 d3d11_dep = cc.find_library('d3d11', required: get_option('msdk')) 78 msdk_deps = declare_dependency(dependencies: [d3d11_dep, legacy_stdio_dep]) 79 msdk_deps_found = d3d11_dep.found() and legacy_stdio_dep.found() and cc.get_id() == 'msvc' 80else 81 libva_dep = dependency('libva-drm', required: get_option('msdk')) 82 libdl_dep = cc.find_library('dl', required: get_option('msdk')) 83 libgudev_dep = dependency('gudev-1.0', required: get_option('msdk')) 84 msdk_deps = declare_dependency(dependencies: [libva_dep, libdl_dep, libgudev_dep]) 85 msdk_deps_found = libva_dep.found() and libdl_dep.found() and libgudev_dep.found() 86endif 87 88if msdk_deps_found 89 gstmsdktag = library('gstmsdk', 90 msdk_sources, 91 c_args : gst_plugins_bad_args, 92 include_directories : [configinc], 93 dependencies : [gstbase_dep, gstvideo_dep, gstpbutils_dep, gstallocators_dep, mfx_dep, msdk_deps], 94 install : true, 95 install_dir : plugins_install_dir, 96 ) 97 pkgconfig.generate(gstmsdktag, install_dir : plugins_pkgconfig_install_dir) 98 have_msdk = true 99endif 100