summaryrefslogtreecommitdiff
path: root/modules/media/meson.build
blob: 74364e64395d2c167896928779a2f0d03d328bcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
media_subdir = 'gtk-4.0/@0@/media'.format(gtk_binary_version)
media_install_dir = join_paths(get_option('libdir'), media_subdir)
media_backends = []

extra_c_args = ['-DGTK_COMPILATION']
extra_c_args += common_cflags

ffmpeg_opt = get_option('media-ffmpeg')
ffmpeg_versions = {
  'libavfilter': '>= 6.47.100',
  'libavformat': '>= 57.41.100',
  'libavcodec': '>= 57.48.101',
  'libavdevice': '>= 57.48.101',
  'libavutil': '>= 55.28.100',
  'libswresample': '>= 3.9.100',
  'libswscale': '>= 4.6.100',
}
ffmpeg_deps = []
ffmpeg_found = true
foreach name, version : ffmpeg_versions
  dep = dependency(name, version: version, required: ffmpeg_opt)
  ffmpeg_deps += dep
  if not dep.found()
    ffmpeg_found = false
    break
  endif
endforeach

if ffmpeg_found
  media_backends += 'ffmpeg'
  cdata.set('HAVE_FFMPEG', 1)
  shared_module('media-ffmpeg',
    sources: 'gtkffmediafile.c',
    c_args: extra_c_args,
    dependencies: [ libgtk_dep, ffmpeg_deps ],
    name_suffix: module_suffix,
    install_dir: media_install_dir,
    install: true,
  )
endif

gstplayer_dep = dependency('gstreamer-player-1.0', version: '>= 1.12.3',
                           required: get_option('media-gstreamer'))
gstgl_dep = dependency('gstreamer-gl-1.0', version: '>= 1.12.3',
                       required: get_option('media-gstreamer'))

if gstplayer_dep.found() and gstgl_dep.found()
  extra_win_cflags = []

  if host_machine.system() == 'windows' and gstgl_dep.version().version_compare('>=1.19.1')
    message('libgstgl has gst_gl_display_new_with_type()')
    extra_win_cflags += '-DHAVE_GST_GL_DISPLAY_NEW_WITH_TYPE'
  endif

  media_backends += 'gstreamer'
  cdata.set('HAVE_GSTREAMER', 1)
  shared_module('media-gstreamer',
    sources: [
      'gtkgstmediafile.c',
      'gtkgstpaintable.c',
      'gtkgstsink.c',
    ],
    c_args: extra_c_args + extra_win_cflags,
    dependencies: [ libm, libgtk_dep, gstplayer_dep, gstgl_dep ],
    name_suffix: module_suffix,
    install_dir: media_install_dir,
    install: true,
  )
endif

if media_backends.length() > 0
  gio_module_dirs += media_install_dir
endif