gstreamer/sys/applemedia/meson.build

117 lines
4.2 KiB
Meson

applemedia_sources = [
'plugin.m',
'vtutil.c',
'corevideomemory.c',
'corevideobuffer.c',
'coremediabuffer.c',
'videotexturecache.m',
'videotexturecache-gl.m',
'atdec.c',
'glcontexthelper.c'
]
applemedia_args = [
'-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new',
'-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type',
'-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer',
'-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new',
'-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type'
]
applemedia_objc_args = []
applemedia_option = get_option('applemedia')
if not ['darwin', 'ios'].contains(host_system) or applemedia_option.disabled()
subdir_done()
endif
if ['darwin', 'ios'].contains(host_system)
objc = meson.get_compiler('objc')
if not objc.has_argument('-fobjc-arc')
error('ARC is required for building')
endif
applemedia_objc_args += ['-fobjc-arc']
endif
applemedia_frameworks = []
corefoundation_dep = dependency('CoreFoundation', required : applemedia_option)
coremedia_dep = dependency('CoreMedia', required : applemedia_option)
corevideo_dep = dependency('CoreVideo', required : applemedia_option)
audiotoolbox_dep = dependency('AudioToolbox', required : applemedia_option)
applemedia_frameworks += [corefoundation_dep, coremedia_dep, corevideo_dep, audiotoolbox_dep]
avfoundation_dep = dependency('AVFoundation', required : applemedia_option)
if avfoundation_dep.found()
applemedia_sources += [
'avfvideosrc.m',
'avfassetsrc.m',
'avsamplevideosink.m',
'avfdeviceprovider.m',
]
applemedia_frameworks += [avfoundation_dep]
endif
videotoolbox_dep = dependency('VideoToolbox', required : applemedia_option)
if videotoolbox_dep.found()
applemedia_sources += [
'vtenc.c',
'vtdec.c'
]
applemedia_frameworks += [videotoolbox_dep]
endif
if host_system == 'ios'
applemedia_sources += [
'iosassetsrc.m',
'iosglmemory.c'
]
applemedia_objc_args += ['-fobjc-abi-version=2', '-fobjc-legacy-dispatch']
ios_media_dep = dependency('appleframeworks', modules : ['Foundation', 'AssetsLibrary'], required : applemedia_option)
iosurface_dep = dependency('IOSurface', required : applemedia_option)
applemedia_frameworks += [ios_media_dep, iosurface_dep]
else
applemedia_sources += [
'iosurfaceglmemory.c'
]
cocoa_dep = dependency('Cocoa', required : applemedia_option)
iosurface_dep = dependency('IOSurface', required : applemedia_option)
applemedia_opengl_dep = dependency('appleframeworks', modules : ['OpenGL'], required : applemedia_option)
applemedia_frameworks += [cocoa_dep, applemedia_opengl_dep, iosurface_dep]
endif
applemedia_found_deps = true
foreach framework : applemedia_frameworks
if not framework.found()
applemedia_found_deps = false
endif
endforeach
if gstvulkan_dep.found() and have_objcpp
moltenvk_dep = cc.find_library('MoltenVK', required : false)
metal_dep = dependency('appleframeworks', modules : ['Metal'], required : false)
if metal_dep.found() and moltenvk_dep.found() and cc.has_header ('MoltenVK/vk_mvk_moltenvk.h')
applemedia_frameworks += [moltenvk_dep, gstvulkan_dep, metal_dep]
applemedia_sources += [
'videotexturecache-vulkan.mm',
'iosurfacevulkanmemory.c',
]
applemedia_args += ['-DAPPLEMEDIA_MOLTENVK']
endif
endif
if applemedia_found_deps
gstapplemedia = library('gstapplemedia',
applemedia_sources,
c_args : gst_plugins_bad_args + applemedia_args,
objc_args : gst_plugins_bad_args + applemedia_args + applemedia_objc_args,
objcpp_args : gst_plugins_bad_args + applemedia_args + applemedia_objc_args,
link_args : noseh_link_args,
include_directories : [configinc, libsinc],
dependencies : [gstvideo_dep, gstaudio_dep, gstpbutils_dep, gst_dep, gstbase_dep, gstgl_dep, gstglproto_dep] + applemedia_frameworks,
install : true,
install_dir : plugins_install_dir,
)
pkgconfig.generate(gstapplemedia, install_dir : plugins_pkgconfig_install_dir)
plugins += [gstapplemedia]
endif