8 'videotexturecache-gl.m',
14 '-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new',
15 '-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type',
16 '-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer',
17 '-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new',
18 '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type'
21 applemedia_objc_args = []
22 applemedia_option = get_option('applemedia')
23 if not ['darwin', 'ios'].contains(host_system) or applemedia_option.disabled()
27 if ['darwin', 'ios'].contains(host_system)
28 objc = meson.get_compiler('objc')
29 if not objc.has_argument('-fobjc-arc')
30 error('ARC is required for building')
33 applemedia_objc_args += ['-fobjc-arc']
35 objcpp = meson.get_compiler('objcpp')
38 applemedia_frameworks = []
39 corefoundation_dep = dependency('CoreFoundation', required : applemedia_option)
40 coremedia_dep = dependency('CoreMedia', required : applemedia_option)
41 corevideo_dep = dependency('CoreVideo', required : applemedia_option)
42 audiotoolbox_dep = dependency('AudioToolbox', required : applemedia_option)
43 applemedia_frameworks += [corefoundation_dep, coremedia_dep, corevideo_dep, audiotoolbox_dep]
45 avfoundation_dep = dependency('AVFoundation', required : applemedia_option)
46 if avfoundation_dep.found()
47 applemedia_sources += [
50 'avsamplevideosink.m',
51 'avfdeviceprovider.m',
53 applemedia_frameworks += [avfoundation_dep]
56 videotoolbox_dep = dependency('VideoToolbox', required : applemedia_option)
57 if videotoolbox_dep.found()
58 applemedia_sources += [
62 applemedia_frameworks += [videotoolbox_dep]
65 if host_system == 'ios'
66 applemedia_sources += [
70 applemedia_objc_args += ['-fobjc-abi-version=2', '-fobjc-legacy-dispatch']
72 ios_media_dep = dependency('appleframeworks', modules : ['Foundation', 'AssetsLibrary'], required : applemedia_option)
73 iosurface_dep = dependency('IOSurface', required : applemedia_option)
74 applemedia_frameworks += [ios_media_dep, iosurface_dep]
76 applemedia_sources += [
79 cocoa_dep = dependency('Cocoa', required : applemedia_option)
80 iosurface_dep = dependency('IOSurface', required : applemedia_option)
81 applemedia_opengl_dep = dependency('appleframeworks', modules : ['OpenGL'], required : applemedia_option)
82 applemedia_frameworks += [cocoa_dep, applemedia_opengl_dep, iosurface_dep]
85 applemedia_found_deps = true
86 foreach framework : applemedia_frameworks
87 if not framework.found()
88 applemedia_found_deps = false
92 applemedia_objcpp_args = []
93 if gstvulkan_dep.found() and have_objcpp
94 moltenvk_dep = cc.find_library('MoltenVK', required : false)
95 metal_dep = dependency('appleframeworks', modules : ['Metal'], required : false)
96 if metal_dep.found() and moltenvk_dep.found() and cc.has_header ('MoltenVK/vk_mvk_moltenvk.h')
97 applemedia_frameworks += [moltenvk_dep, gstvulkan_dep, metal_dep]
98 applemedia_sources += [
99 'videotexturecache-vulkan.mm',
100 'iosurfacevulkanmemory.c',
102 applemedia_args += ['-DAPPLEMEDIA_MOLTENVK']
103 # override_options : ['cpp_std=c++11'] doesn't seem to work for objcpp
104 applemedia_objcpp_args += objcpp.get_supported_arguments([
110 if applemedia_found_deps
111 gstapplemedia = library('gstapplemedia',
113 c_args : gst_plugins_bad_args + applemedia_args,
114 objc_args : gst_plugins_bad_args + applemedia_args + applemedia_objc_args,
115 objcpp_args : gst_plugins_bad_args + applemedia_args + applemedia_objc_args + applemedia_objcpp_args,
116 link_args : noseh_link_args,
117 include_directories : [configinc, libsinc],
118 dependencies : [gstvideo_dep, gstaudio_dep, gstpbutils_dep, gst_dep, gstbase_dep, gstgl_dep, gstglproto_dep, gstcodecparsers_dep] + applemedia_frameworks,
119 override_options : ['cpp_std=c++11'],
121 install_dir : plugins_install_dir,
123 plugins += [gstapplemedia]