2023-10-21 07:26:40 +00:00
|
|
|
aja_option = get_option('aja') \
|
|
|
|
.require(host_system == 'linux',
|
|
|
|
error_message: 'AJA plugin is currently only available on Linux')
|
|
|
|
if aja_option.disabled()
|
|
|
|
subdir_done()
|
2021-02-05 17:03:21 +00:00
|
|
|
endif
|
|
|
|
|
2024-05-06 11:55:32 +00:00
|
|
|
common_flags = []
|
2021-02-05 17:03:21 +00:00
|
|
|
|
|
|
|
thread_dep = dependency('threads')
|
|
|
|
rt_dep = cxx.find_library('rt', required : false)
|
2024-05-06 11:55:32 +00:00
|
|
|
dl_dep = cxx.find_library('dl', required : false)
|
2021-02-05 17:03:21 +00:00
|
|
|
|
2024-05-06 11:55:32 +00:00
|
|
|
ajantv2_args = [
|
|
|
|
'-DAJALinux',
|
|
|
|
'-DAJASTATIC',
|
|
|
|
'-DAJA_LINUX',
|
|
|
|
'-DAJA_USE_CPLUSPLUS11',
|
|
|
|
'-DNDEBUG',
|
|
|
|
'-DNTV2_USE_CPLUSPLUS11',
|
|
|
|
]
|
|
|
|
|
|
|
|
aja_include_dir = get_option('aja-include-dir')
|
|
|
|
aja_lib_dir = get_option('aja-lib-dir')
|
|
|
|
|
|
|
|
# Try to automatically find the AJA NTV2 SDK and otherwise fall back to the subproject
|
|
|
|
found_ajantv2 = false
|
|
|
|
found_ajantv2_includes = false
|
|
|
|
|
|
|
|
if aja_include_dir != ''
|
|
|
|
aja_include_dirs = [aja_include_dir]
|
|
|
|
elif not meson.is_cross_build()
|
|
|
|
aja_include_dirs = ['/usr/include', '/usr/local/include']
|
2023-10-21 07:02:43 +00:00
|
|
|
else
|
2024-05-06 11:55:32 +00:00
|
|
|
message('Cross-compiling: cannot autodetect AJA, please set the options "aja-include-dir" and "aja-lib-dir"')
|
|
|
|
aja_include_dirs = []
|
|
|
|
endif
|
|
|
|
|
|
|
|
foreach dir : aja_include_dirs
|
|
|
|
message(f'Checking for AJA NTV2 headers in @dir@')
|
|
|
|
|
|
|
|
fs = import('fs')
|
|
|
|
dir = f'@dir@/libajantv2'
|
|
|
|
if not fs.is_dir(dir)
|
|
|
|
continue
|
|
|
|
endif
|
|
|
|
|
|
|
|
include_dir = include_directories([
|
|
|
|
f'@dir@',
|
|
|
|
f'@dir@/ajaanc/includes',
|
|
|
|
f'@dir@/ajantv2/includes',
|
|
|
|
f'@dir@/ajantv2/src/lin',
|
|
|
|
],
|
|
|
|
is_system : true)
|
|
|
|
|
|
|
|
if cxx.check_header('ajantv2/includes/ntv2card.h',
|
|
|
|
args : ajantv2_args,
|
|
|
|
include_directories : include_dir)
|
|
|
|
ajantv2_include_dir = include_dir
|
|
|
|
found_ajantv2_includes = true
|
|
|
|
break
|
|
|
|
endif
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
# If provided explicitly then consider it an error to not find the headers
|
|
|
|
if aja_include_dir != '' and not found_ajantv2_includes
|
|
|
|
error(f'Did not found AJA NTV2 headers in @aja_include_dir@')
|
|
|
|
endif
|
|
|
|
|
|
|
|
# If we found the includes, now check for the library
|
|
|
|
if found_ajantv2_includes
|
|
|
|
if aja_lib_dir == ''
|
|
|
|
ajantv2_lib = cxx.find_library('ajantv2',
|
|
|
|
# If the header is found, this should also be
|
|
|
|
required : false)
|
|
|
|
else
|
|
|
|
ajantv2_lib = cxx.find_library('ajantv2',
|
|
|
|
dirs : [aja_lib_dir],
|
|
|
|
required : true)
|
2023-10-21 07:02:43 +00:00
|
|
|
endif
|
2021-02-05 17:03:21 +00:00
|
|
|
|
2024-05-06 11:55:32 +00:00
|
|
|
if ajantv2_lib.found()
|
|
|
|
found_ajantv2 = true
|
|
|
|
|
|
|
|
libajantv2_dep = declare_dependency(
|
|
|
|
compile_args : ajantv2_args,
|
|
|
|
dependencies: ajantv2_lib,
|
|
|
|
include_directories: ajantv2_include_dir)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
# If the includes or the library or not found, fall back to the subproject
|
|
|
|
if not found_ajantv2
|
|
|
|
libajantv2_dep = dependency('libajantv2',
|
|
|
|
include_type: 'system',
|
|
|
|
required: aja_option,
|
|
|
|
allow_fallback: true,
|
|
|
|
default_options: ['warning_level=0'])
|
|
|
|
if not libajantv2_dep.found()
|
|
|
|
subdir_done()
|
|
|
|
endif
|
2023-10-21 07:02:43 +00:00
|
|
|
endif
|
2021-02-05 17:03:21 +00:00
|
|
|
|
|
|
|
gstaja = library('gstaja',
|
|
|
|
['plugin.cpp',
|
|
|
|
'gstajacommon.cpp',
|
|
|
|
'gstajasink.cpp',
|
|
|
|
'gstajasinkcombiner.cpp',
|
2021-02-08 18:31:22 +00:00
|
|
|
'gstajasrc.cpp',
|
|
|
|
'gstajasrcdemux.cpp',
|
2021-08-27 11:40:29 +00:00
|
|
|
'gstajadeviceprovider.cpp',
|
2021-02-05 17:03:21 +00:00
|
|
|
],
|
2023-10-21 07:26:40 +00:00
|
|
|
override_options : ['cpp_std=c++11'],
|
|
|
|
cpp_args : gst_plugins_bad_args + common_flags,
|
|
|
|
include_directories : [configinc],
|
2021-02-05 17:03:21 +00:00
|
|
|
link_args : noseh_link_args,
|
2024-05-06 11:55:32 +00:00
|
|
|
dependencies : [gstvideo_dep, gstaudio_dep, gstbase_dep, gst_dep, libajantv2_dep, thread_dep, rt_dep, dl_dep],
|
2021-02-05 17:03:21 +00:00
|
|
|
install : true,
|
|
|
|
install_dir : plugins_install_dir,
|
|
|
|
)
|
|
|
|
|
2023-10-21 07:26:40 +00:00
|
|
|
plugins += [gstaja]
|