project('gstreamer-vaapi', 'c',
- version : '1.19.3.1',
- meson_version : '>= 0.59',
+ version : '1.22.6',
+ meson_version : '>= 0.62',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
endif
libva_req = ['>= 0.39.0', '!= 0.99.0']
-glib_req = '>= 2.44.0'
libwayland_req = '>= 1.11.0'
libdrm_req = '>= 2.4.98'
gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
cc = meson.get_compiler('c')
+static_build = get_option('default_library') == 'static'
if cc.has_link_argument('-Wl,-Bsymbolic-functions')
add_project_link_arguments('-Wl,-Bsymbolic-functions', language : 'c')
message('GStreamer debug system is enabled')
endif
-# Other deps
-gmodule_dep = dependency('gmodule-2.0', required: false)
-libva_dep = dependency('libva', version: libva_req)
-
-libva_drm_dep = dependency('libva-drm', version: libva_req, required: false)
-libva_wayland_dep = dependency('libva-wayland', version: libva_req, required: false)
-libva_x11_dep = dependency('libva-x11', version: libva_req, required: false)
-libdrm_dep = dependency('libdrm', version: libdrm_req, required: false,
- fallback: ['libdrm', 'ext_libdrm'])
-libudev_dep = dependency('libudev', required: false)
-egl_dep = dependency('egl', required: false)
-gl_dep = dependency('gl', required: false)
+libva_dep = dependency('libva', version: libva_req,
+ fallback : ['libva', 'libva_dep'])
+libva_drm_dep = dependency('libva-drm', version: libva_req,
+ required: get_option('drm'), fallback : ['libva', 'libva_drm_dep'])
+libva_wayland_dep = dependency('libva-wayland', version: libva_req,
+ required: get_option('wayland'), fallback : ['libva', 'libva_wayland_dep'])
+libva_x11_dep = dependency('libva-x11', version: libva_req,
+ required: get_option('x11'), fallback : ['libva', 'libva_x11_dep'])
+
+libdrm_dep = dependency('libdrm', version: libdrm_req,
+ required: get_option('drm'), fallback: ['libdrm', 'ext_libdrm'])
+libudev_dep = dependency('libudev', required: get_option('drm'))
+
+x11_dep = dependency('x11', required: get_option('x11'))
+xrandr_dep = dependency('xrandr', required: get_option('x11'))
+
+gmodule_dep = dependency('gmodule-no-export-2.0')
+egl_dep = dependency('egl', required: get_option('egl'))
glesv2_dep = dependency('glesv2', required: false)
+
+glx_option = get_option('glx').require(libva_x11_dep.found() and x11_dep.found(),
+ error_message: 'glx requires libva-x11 and x11 dependency')
+gl_dep = dependency('gl', required: glx_option)
+libdl_dep = cc.find_library('dl', required: glx_option)
+
+wayland_option = get_option('wayland').require(libdrm_dep.found(),
+ error_message: 'wayland requires libdrm dependency')
+wayland_client_dep = dependency('wayland-client', version: libwayland_req,
+ required: wayland_option)
+wayland_protocols_dep = dependency('wayland-protocols', version: '>= 1.15',
+ required: wayland_option)
+wayland_scanner_bin = find_program('wayland-scanner', required: wayland_option)
+
gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req,
required : get_option('tests'),
fallback : ['gstreamer', 'gst_check_dep'])
-libdl_dep = cc.find_library('dl', required: false)
-wayland_client_dep = dependency('wayland-client', version: libwayland_req, required: false)
-wayland_protocols_dep = dependency('wayland-protocols', version: '>= 1.15', required: false)
-wayland_scanner_bin = find_program('wayland-scanner', required: false)
-x11_dep = dependency('x11', required: false)
-xrandr_dep = dependency('xrandr', required: false)
# some of the examples can use GTK+-3
gtk_dep = dependency('gtk+-3.0', version : '>= 3.10', required : get_option('examples'))
endif
endif
-USE_ENCODERS = get_option('with_encoders') != 'no'
-USE_VP9_ENCODER = USE_ENCODERS and cc.has_header('va/va_enc_vp9.h', dependencies: libva_dep, prefix: '#include <va/va.h>')
-USE_AV1_DECODER = cc.has_header('va/va_dec_av1.h', dependencies: libva_dep, prefix: '#include <va/va.h>')
+USE_ENCODERS = get_option('encoders').allowed()
+USE_VP9_ENCODER = USE_ENCODERS and libva_dep.version().version_compare('>= 0.40.0')
+USE_AV1_DECODER = libva_dep.version().version_compare('>= 1.10')
-USE_DRM = libva_drm_dep.found() and libdrm_dep.found() and libudev_dep.found() and get_option('with_drm') != 'no'
-USE_EGL = gmodule_dep.found() and egl_dep.found() and GLES_VERSION_MASK != 0 and get_option('with_egl') != 'no'
-USE_WAYLAND = libva_wayland_dep.found() and wayland_client_dep.found() and wayland_protocols_dep.found() and wayland_scanner_bin.found() and get_option('with_wayland') != 'no'
-USE_X11 = libva_x11_dep.found() and x11_dep.found() and get_option('with_x11') != 'no'
-USE_GLX = gl_dep.found() and libdl_dep.found() and get_option('with_glx') != 'no' and USE_X11
+USE_DRM = (libva_drm_dep.found()
+ and libdrm_dep.found()
+ and libudev_dep.found())
+USE_EGL = (egl_dep.found()
+ and GLES_VERSION_MASK != 0)
+USE_WAYLAND = (libva_wayland_dep.found()
+ and wayland_client_dep.found()
+ and wayland_protocols_dep.found()
+ and wayland_scanner_bin.found()
+ and libdrm_dep.found())
+USE_X11 = (libva_x11_dep.found() and x11_dep.found())
+USE_GLX = (USE_X11 and gl_dep.found() and libdl_dep.found())
if not (USE_DRM or USE_X11 or USE_WAYLAND)
error('No renderer API found (it is requried either DRM, X11 and/or WAYLAND)')
endif
endif
-driverdir = libva_dep.get_variable('driverdir')
+driverdir = libva_dep.get_variable('driverdir', default_value: '')
if driverdir == ''
driverdir = join_paths(get_option('prefix'), get_option('libdir'), 'dri')
endif
cdata.set_quoted('PACKAGE_STRING', 'GStreamer VA-API Plug-ins @0@'.format(gst_version))
cdata.set_quoted('PACKAGE_BUGREPORT', get_option('package-origin'))
cdata.set_quoted('VA_DRIVERS_PATH', '@0@'.format(driverdir))
-cdata.set10('USE_DRM', USE_DRM)
-cdata.set10('USE_EGL', USE_EGL)
-cdata.set10('USE_ENCODERS', USE_ENCODERS)
-cdata.set10('USE_GLX', USE_GLX)
-cdata.set10('USE_VP9_ENCODER', USE_VP9_ENCODER)
-cdata.set10('USE_AV1_DECODER', USE_AV1_DECODER)
-cdata.set10('USE_WAYLAND', USE_WAYLAND)
-cdata.set10('USE_X11', USE_X11)
+cdata.set10('GST_VAAPI_USE_DRM', USE_DRM)
+cdata.set10('GST_VAAPI_USE_EGL', USE_EGL)
+cdata.set10('GST_VAAPI_USE_ENCODERS', USE_ENCODERS)
+cdata.set10('GST_VAAPI_USE_GLX', USE_GLX)
+cdata.set10('GST_VAAPI_USE_VP9_ENCODER', USE_VP9_ENCODER)
+cdata.set10('GST_VAAPI_USE_AV1_DECODER', USE_AV1_DECODER)
+cdata.set10('GST_VAAPI_USE_WAYLAND', USE_WAYLAND)
+cdata.set10('GST_VAAPI_USE_X11', USE_X11)
cdata.set10('HAVE_XKBLIB', cc.has_header('X11/XKBlib.h', dependencies: x11_dep))
cdata.set10('HAVE_XRANDR', xrandr_dep.found())
cdata.set10('USE_GST_GL_HELPERS', gstgl_dep.found())
endif
configure_file(output: 'config.h', configuration: cdata)
+
+meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.20.0', meson.project_version())
+
+pkgconfig = import('pkgconfig')
+plugins_pkgconfig_install_dir = join_paths(plugins_install_dir, 'pkgconfig')
+if get_option('default_library') == 'shared'
+ # If we don't build static plugins there is no need to generate pc files
+ plugins_pkgconfig_install_dir = disabler()
+endif
+
+plugin_names = []
+gst_plugins = []
+foreach plugin: plugins
+ pkgconfig.generate(plugin, install_dir: plugins_pkgconfig_install_dir)
+ dep = declare_dependency(link_with: plugin, variables: {'full_path': plugin.full_path()})
+ meson.override_dependency(plugin.name(), dep)
+ gst_plugins += [dep]
+ if plugin.name().startswith('gst')
+ plugin_names += [plugin.name().substring(3)]
+ else
+ plugin_names += [plugin.name()]
+ endif
+endforeach
+
+summary({
+ 'Plugins': plugin_names,
+}, list_sep: ', ')