va_sources = [
  'plugin.c',
  'gstjpegdecoder.c',
  'gstvabasedec.c',
  'gstvabasetransform.c',
  'gstvabaseenc.c',
  'gstvacaps.c',
  'gstvacompositor.c',
  'gstvadecoder.c',
  'gstvadeinterlace.c',
  'gstvadisplay_priv.c',
  'gstvaencoder.c',
  'gstvafilter.c',
  'gstvah264dec.c',
  'gstvah264enc.c',
  'gstvah265dec.c',
  'gstvah265enc.c',
  'gstvajpegdec.c',
  'gstvampeg2dec.c',
  'gstvapluginutils.c',
  'gstvaprofile.c',
  'gstvavp8dec.c',
  'gstvavp9dec.c',
  'gstvavpp.c',
]

va_linux_sources = [
  'gstvadevice_linux.c'
]

va_win32_sources = [
  'gstvadevice_win32.cpp'
]

if host_system not in ['linux', 'windows']
  subdir_done()
endif

va_option = get_option('va').require(gstva_dep.found(), error_message: 'va plugin requires libgstva.')
if va_option.disabled()
  subdir_done()
endif

driverdir = libva_dep.get_variable('driverdir', default_value: '')
if driverdir == ''
  driverdir = join_paths(get_option('prefix'), get_option('libdir'), 'dri')
endif

extra_args = [
  '-DLIBVA_DRIVERS_PATH="' + driverdir + '"',
  '-DGST_USE_UNSTABLE_API',
]
extra_dep = []
c_std_arg = ['c_std=c99']

if host_system == 'linux'
  libgudev_dep = dependency('gudev-1.0', required: false, allow_fallback: true)
  if libgudev_dep.found()
    extra_args += ['-DHAVE_GUDEV']
    extra_dep += [libgudev_dep]
  endif
  va_sources += va_linux_sources
else
  va_sources += va_win32_sources
endif

# MSVC does not understand c99
if cc.get_id() == 'msvc'
  c_std_arg = ['c_std=c11']
endif

if libva_dep.version().version_compare('>= 1.8')
  va_sources += 'gstvaav1dec.c'
endif

gstva = library('gstva',
  va_sources,
  c_args : gst_plugins_bad_args + extra_args,
  cpp_args : gst_plugins_bad_args + extra_args,
  include_directories : [configinc],
  dependencies : [gstcodecs_dep, gstva_dep, libgudev_dep] + extra_dep,
  override_options : c_std_arg,
  install : true,
  install_dir : plugins_install_dir,
)
plugins += [gstva]