1applemedia_sources = [
2    'plugin.m',
3    'vtutil.c',
4    'corevideomemory.c',
5    'corevideobuffer.c',
6    'coremediabuffer.c',
7    'videotexturecache.m',
8    'atdec.c',
9    'glcontexthelper.c'
10]
11
12applemedia_args = [
13    '-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new',
14    '-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type',
15    '-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer',
16    '-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new',
17    '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type'
18]
19
20applemedia_objc_args = []
21applemedia_option = get_option('applemedia')
22if not ['darwin', 'ios'].contains(host_system) or applemedia_option.disabled()
23  subdir_done()
24endif
25
26applemedia_frameworks = []
27corefoundation_dep = dependency('CoreFoundation', required : applemedia_option)
28coremedia_dep = dependency('CoreMedia', required : applemedia_option)
29corevideo_dep = dependency('CoreVideo', required : applemedia_option)
30audiotoolbox_dep = dependency('AudioToolbox', required : applemedia_option)
31applemedia_frameworks += [corefoundation_dep, coremedia_dep, corevideo_dep, audiotoolbox_dep]
32
33avfoundation_dep = dependency('AVFoundation', required : applemedia_option)
34if avfoundation_dep.found()
35    applemedia_sources += [
36        'avfvideosrc.m',
37        'avfassetsrc.m',
38        'avsamplevideosink.m',
39        'avfdeviceprovider.m',
40    ]
41    applemedia_frameworks += [avfoundation_dep]
42endif
43
44videotoolbox_dep = dependency('VideoToolbox', required : applemedia_option)
45if videotoolbox_dep.found()
46    applemedia_sources += [
47        'vtenc.c',
48        'vtdec.c'
49    ]
50    applemedia_frameworks += [videotoolbox_dep]
51endif
52
53if host_system == 'ios'
54    applemedia_sources += [
55        'iosassetsrc.m',
56        'iosglmemory.c'
57    ]
58    applemedia_objc_args += ['-fobjc-abi-version=2', '-fobjc-legacy-dispatch']
59
60    ios_media_dep = dependency('appleframeworks', modules : ['Foundation', 'AssetsLibrary'], required : applemedia_option)
61    applemedia_frameworks += [ios_media_dep]
62else
63    applemedia_sources += [
64        'iosurfacememory.c'
65    ]
66    applemedia_objc_args += ['-mmacosx-version-min=10.8']
67    cocoa_dep = dependency('Cocoa', required : applemedia_option)
68    iosurface_dep = dependency('IOSurface', required : applemedia_option)
69    applemedia_opengl_dep = dependency('appleframeworks', modules : ['OpenGL'], required : applemedia_option)
70    applemedia_frameworks += [cocoa_dep, applemedia_opengl_dep, iosurface_dep]
71endif
72
73applemedia_found_deps = true
74foreach framework : applemedia_frameworks
75    if not framework.found()
76        applemedia_found_deps = false
77    endif
78endforeach
79
80if applemedia_found_deps
81    gstapplemedia = library('gstapplemedia',
82        applemedia_sources,
83        c_args : gst_plugins_bad_args + applemedia_args,
84        objc_args : gst_plugins_bad_args + applemedia_args + applemedia_objc_args,
85        link_args : noseh_link_args,
86        include_directories : [configinc, libsinc],
87        dependencies : [gstvideo_dep, gstaudio_dep, gstpbutils_dep, gst_dep, gstbase_dep, gstgl_dep] + applemedia_frameworks,
88        install : true,
89        install_dir : plugins_install_dir,
90    )
91    pkgconfig.generate(gstapplemedia, install_dir : plugins_pkgconfig_install_dir)
92endif
93