summaryrefslogtreecommitdiff
path: root/recipes/gst-plugins-bad-1.0.recipe
blob: 9aa12aa6b289077a65d2154be002fe541e285ce2 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
from cerbero.tools.libtool import LibtoolLibrary

class Recipe(custom.GStreamer):
    name = 'gst-plugins-bad-1.0'
    btype = BuildType.MESON
    licenses = [{License.LGPLv2Plus: None, License.BSD_like: ['ext/sctp/usrsctp/LICENSE.md']}]
    tarball_checksum = 'f382ab1caddd64aaa7acb7c4787487f63fd39bd0fde9c757655cbaa457c1185f'
    # Explicitly enable plugins that we provide dependencies for to ensure that
    # we error out if they weren't found.
    meson_options = {# enabled plugins
                     'assrender': 'enabled',
                     'bz2': 'enabled',
                     'closedcaption': 'enabled',
                     'dash': 'enabled',
                     'decklink': 'enabled',
                     'dtls': 'enabled',
                     'dts': 'enabled',
                     'hls': 'enabled',
                     'hls-crypto': 'openssl',
                     'kate': 'enabled',
                     'ladspa': 'auto', # lrdf is optional
                     'libmms': 'enabled',
                     'nvcodec': 'enabled',
                     'openh264': 'enabled',
                     'openjpeg': 'enabled',
                     'opus': 'enabled',
                     'rtmp': 'enabled',
                     'rtmp2': 'enabled',
                     'sbc': 'enabled',
                     'sctp': 'enabled',
                     'sctp-internal-usrsctp': 'enabled',
                     'soundtouch': 'enabled',
                     'srt': 'enabled',
                     'spandsp': 'enabled',
                     'srtp': 'enabled',
                     'resindvd': 'enabled',
                     'rist' : 'enabled',
                     'rsvg': 'enabled',
                     'voaacenc': 'enabled',
                     'vulkan': 'enabled',
                     'webrtc': 'enabled',
                     'webrtcdsp': 'enabled',
                     'zbar': 'enabled',
                     # disabled plugins
                     'curl': 'disabled',
                     'curl-ssh2': 'disabled',
                     'dc1394': 'disabled',
                     'directfb': 'disabled',
                     'faac': 'disabled',
                     'faad': 'disabled',
                     'fbdev': 'disabled',
                     'festival': 'disabled',
                     'flite': 'disabled',
                     'gme': 'disabled',
                     'gsm': 'disabled',
                     'libde265': 'disabled',
                     'lv2': 'disabled',
                     'modplug': 'disabled',
                     'mpeg2enc': 'disabled',
                     'mplex': 'disabled',
                     'musepack': 'disabled',
                     'neon': 'disabled',
                     'ofa': 'disabled',
                     'openal': 'disabled',
                     'opencv': 'disabled',
                     'sndfile': 'disabled',
                     'teletext': 'disabled',
                     'voamrwbenc': 'disabled',
                     'wildmidi': 'disabled',
                    }
    deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'bzip2', 'libass',
            'libkate', 'zlib', 'openh264', 'opus', 'librtmp', 'libxml2',
            'libsrtp', 'libdca', 'libmms', 'libdvdnav', 'libnice',
            'soundtouch', 'vo-aacenc', 'librsvg', 'openjpeg',
            'pango', 'spandsp', 'webrtc-audio-processing', 'sbc', 'ladspa',
            'srt', 'zbar']
    use_system_libs = True

    files_lang = ['gst-plugins-bad-1.0']

    files_libs = [
        'libgstadaptivedemux-1.0',
        'libgstbadaudio-1.0',
        'libgstbasecamerabinsrc-1.0',
        'libgstcodecparsers-1.0',
        'libgstcodecs-1.0',
        'libgstinsertbin-1.0',
        'libgstisoff-1.0',
        'libgstmpegts-1.0',
        'libgstphotography-1.0',
        'libgstplay-1.0',
        'libgstplayer-1.0',
        'libgstsctp-1.0',
        'libgsttranscoder-1.0',
        'libgsturidownloader-1.0',
        'libgstvulkan-1.0',
        'libgstwebrtc-1.0',
    ]

    files_plugins_devel = [
        'include/gstreamer-1.0/gst/audio',
        'include/gstreamer-1.0/gst/base',
        'include/gstreamer-1.0/gst/basecamerabinsrc',
        'include/gstreamer-1.0/gst/codecparsers',
        'include/gstreamer-1.0/gst/insertbin',
        'include/gstreamer-1.0/gst/interfaces',
        'include/gstreamer-1.0/gst/isoff',
        'include/gstreamer-1.0/gst/mpegts',
        'include/gstreamer-1.0/gst/play',
        'include/gstreamer-1.0/gst/player',
        'include/gstreamer-1.0/gst/sctp',
        'include/gstreamer-1.0/gst/transcoder',
        'include/gstreamer-1.0/gst/vulkan',
        'include/gstreamer-1.0/gst/webrtc',
        'lib/pkgconfig/gstreamer-bad-audio-1.0.pc',
        'lib/pkgconfig/gstreamer-codecparsers-1.0.pc',
        'lib/pkgconfig/gstreamer-insertbin-1.0.pc',
        'lib/pkgconfig/gstreamer-mpegts-1.0.pc',
        'lib/pkgconfig/gstreamer-photography-1.0.pc',
        'lib/pkgconfig/gstreamer-play-1.0.pc',
        'lib/pkgconfig/gstreamer-player-1.0.pc',
        'lib/pkgconfig/gstreamer-plugins-bad-1.0.pc',
        'lib/pkgconfig/gstreamer-sctp-1.0.pc',
        'lib/pkgconfig/gstreamer-transcoder-1.0.pc',
        'lib/pkgconfig/gstreamer-vulkan-1.0.pc',
        'lib/pkgconfig/gstreamer-webrtc-1.0.pc',
    ]

    files_plugins_effects = [
             'lib/gstreamer-1.0/libgstaccurip%(mext)s',
             'lib/gstreamer-1.0/libgstaiff%(mext)s',
             'lib/gstreamer-1.0/libgstaudiobuffersplit%(mext)s',
             'lib/gstreamer-1.0/libgstaudiofxbad%(mext)s',
             'lib/gstreamer-1.0/libgstaudiolatency%(mext)s',
             'lib/gstreamer-1.0/libgstaudiomixmatrix%(mext)s',
             'lib/gstreamer-1.0/libgstautoconvert%(mext)s',
             'lib/gstreamer-1.0/libgstbayer%(mext)s',
             'lib/gstreamer-1.0/libgstcoloreffects%(mext)s',
             'lib/gstreamer-1.0/libgstclosedcaption%(mext)s',
             'lib/gstreamer-1.0/libgstdebugutilsbad%(mext)s',
             'lib/gstreamer-1.0/libgstfieldanalysis%(mext)s',
             'lib/gstreamer-1.0/libgstfreeverb%(mext)s',
             'lib/gstreamer-1.0/libgstfrei0r%(mext)s',
             'lib/gstreamer-1.0/libgstgaudieffects%(mext)s',
             'lib/gstreamer-1.0/libgstgeometrictransform%(mext)s',
             'lib/gstreamer-1.0/libgstinter%(mext)s',
             'lib/gstreamer-1.0/libgstinterlace%(mext)s',
             'lib/gstreamer-1.0/libgstivtc%(mext)s',
             'lib/gstreamer-1.0/libgstlegacyrawparse%(mext)s',
             'lib/gstreamer-1.0/libgstproxy%(mext)s',
             'lib/gstreamer-1.0/libgstremovesilence%(mext)s',
             'lib/gstreamer-1.0/libgstsegmentclip%(mext)s',
             'lib/gstreamer-1.0/libgstsmooth%(mext)s',
             'lib/gstreamer-1.0/libgstspeed%(mext)s',
             'lib/gstreamer-1.0/libgstsoundtouch%(mext)s',
             'lib/gstreamer-1.0/libgsttimecode%(mext)s',
             'lib/gstreamer-1.0/libgstvideofiltersbad%(mext)s',
             'lib/gstreamer-1.0/libgstvideoframe_audiolevel%(mext)s',
             'lib/gstreamer-1.0/libgstwebrtcdsp%(mext)s',
             'lib/gstreamer-1.0/libgstladspa%(mext)s',
    ]

    files_plugins_effects_devel = [
             'lib/gstreamer-1.0/libgstaccurip.a', 'lib/gstreamer-1.0/libgstaccurip.la',
             'lib/gstreamer-1.0/libgstaiff.a', 'lib/gstreamer-1.0/libgstaiff.la',
             'lib/gstreamer-1.0/libgstaudiobuffersplit.a', 'lib/gstreamer-1.0/libgstaudiobuffersplit.la',
             'lib/gstreamer-1.0/libgstaudiofxbad.a', 'lib/gstreamer-1.0/libgstaudiofxbad.la',
             'lib/gstreamer-1.0/libgstaudiolatency.a', 'lib/gstreamer-1.0/libgstaudiolatency.la',
             'lib/gstreamer-1.0/libgstaudiomixmatrix.a', 'lib/gstreamer-1.0/libgstaudiomixmatrix.la',
             'lib/gstreamer-1.0/libgstautoconvert.a', 'lib/gstreamer-1.0/libgstautoconvert.la',
             'lib/gstreamer-1.0/libgstbayer.a', 'lib/gstreamer-1.0/libgstbayer.la',
             'lib/gstreamer-1.0/libgstcoloreffects.a', 'lib/gstreamer-1.0/libgstcoloreffects.la',
             'lib/gstreamer-1.0/libgstclosedcaption.a', 'lib/gstreamer-1.0/libgstclosedcaption.la',
             'lib/gstreamer-1.0/libgstdebugutilsbad.a', 'lib/gstreamer-1.0/libgstdebugutilsbad.la',
             'lib/gstreamer-1.0/libgstfieldanalysis.a', 'lib/gstreamer-1.0/libgstfieldanalysis.la',
             'lib/gstreamer-1.0/libgstfreeverb.a', 'lib/gstreamer-1.0/libgstfreeverb.la',
             'lib/gstreamer-1.0/libgstfrei0r.a', 'lib/gstreamer-1.0/libgstfrei0r.la',
             'lib/gstreamer-1.0/libgstgaudieffects.a', 'lib/gstreamer-1.0/libgstgaudieffects.la',
             'lib/gstreamer-1.0/libgstgeometrictransform.a', 'lib/gstreamer-1.0/libgstgeometrictransform.la',
             'lib/gstreamer-1.0/libgstinter.a', 'lib/gstreamer-1.0/libgstinter.la',
             'lib/gstreamer-1.0/libgstinterlace.a', 'lib/gstreamer-1.0/libgstinterlace.la',
             'lib/gstreamer-1.0/libgstivtc.a', 'lib/gstreamer-1.0/libgstivtc.la',
             'lib/gstreamer-1.0/libgstlegacyrawparse.a', 'lib/gstreamer-1.0/libgstlegacyrawparse.la',
             'lib/gstreamer-1.0/libgstproxy.a', 'lib/gstreamer-1.0/libgstproxy.la',
             'lib/gstreamer-1.0/libgstremovesilence.a', 'lib/gstreamer-1.0/libgstremovesilence.la',
             'lib/gstreamer-1.0/libgstsegmentclip.a', 'lib/gstreamer-1.0/libgstsegmentclip.la',
             'lib/gstreamer-1.0/libgstsmooth.a', 'lib/gstreamer-1.0/libgstsmooth.la',
             'lib/gstreamer-1.0/libgstspeed.a', 'lib/gstreamer-1.0/libgstspeed.la',
             'lib/gstreamer-1.0/libgstsoundtouch.a', 'lib/gstreamer-1.0/libgstsoundtouch.la',
             'lib/gstreamer-1.0/libgsttimecode.a', 'lib/gstreamer-1.0/libgsttimecode.la',
             'lib/gstreamer-1.0/libgstvideofiltersbad.a', 'lib/gstreamer-1.0/libgstvideofiltersbad.la',
             'lib/gstreamer-1.0/libgstvideoframe_audiolevel.a', 'lib/gstreamer-1.0/libgstvideoframe_audiolevel.la',
             'lib/gstreamer-1.0/libgstwebrtcdsp.a', 'lib/gstreamer-1.0/libgstwebrtcdsp.la',
             'lib/gstreamer-1.0/libgstladspa.a', 'lib/gstreamer-1.0/libgstladspa.la',
    ]

    files_plugins_codecs = [
             'lib/gstreamer-1.0/libgstadpcmdec%(mext)s',
             'lib/gstreamer-1.0/libgstadpcmenc%(mext)s',
             'lib/gstreamer-1.0/libgstbz2%(mext)s',
             'lib/gstreamer-1.0/libgstdash%(mext)s',
             'lib/gstreamer-1.0/libgstdvbsuboverlay%(mext)s',
             'lib/gstreamer-1.0/libgstdvdspu%(mext)s',
             'lib/gstreamer-1.0/libgsthls%(mext)s',
             'lib/gstreamer-1.0/libgstid3tag%(mext)s',
             'lib/gstreamer-1.0/libgstkate%(mext)s',
             'lib/gstreamer-1.0/libgstmidi%(mext)s',
             'lib/gstreamer-1.0/libgstmxf%(mext)s',
             'lib/gstreamer-1.0/libgstopenh264%(mext)s',
             'lib/gstreamer-1.0/libgstopusparse%(mext)s',
             'lib/gstreamer-1.0/libgstpcapparse%(mext)s',
             'lib/gstreamer-1.0/libgstpnm%(mext)s',
             'lib/gstreamer-1.0/libgstrfbsrc%(mext)s',
             'lib/gstreamer-1.0/libgstsiren%(mext)s',
             'lib/gstreamer-1.0/libgstsmoothstreaming%(mext)s',
             'lib/gstreamer-1.0/libgstsubenc%(mext)s',
             'lib/gstreamer-1.0/libgstvideoparsersbad%(mext)s',
             'lib/gstreamer-1.0/libgsty4mdec%(mext)s',
             'lib/gstreamer-1.0/libgstjpegformat%(mext)s',
             'lib/gstreamer-1.0/libgstgdp%(mext)s',
             'lib/gstreamer-1.0/libgstrsvg%(mext)s',
             'lib/gstreamer-1.0/libgstopenjpeg%(mext)s',
             'lib/gstreamer-1.0/libgstspandsp%(mext)s',
             'lib/gstreamer-1.0/libgstsbc%(mext)s',
             'lib/gstreamer-1.0/libgstzbar%(mext)s',
             'lib/gstreamer-1.0/libgstnvcodec%(mext)s',
    ]

    files_plugins_codecs_devel = [
             'lib/gstreamer-1.0/libgstadpcmdec.a', 'lib/gstreamer-1.0/libgstadpcmdec.la',
             'lib/gstreamer-1.0/libgstadpcmenc.a', 'lib/gstreamer-1.0/libgstadpcmenc.la',
             'lib/gstreamer-1.0/libgstbz2.a', 'lib/gstreamer-1.0/libgstbz2.la',
             'lib/gstreamer-1.0/libgstdash.a', 'lib/gstreamer-1.0/libgstdash.la',
             'lib/gstreamer-1.0/libgstdvbsuboverlay.a', 'lib/gstreamer-1.0/libgstdvbsuboverlay.la',
             'lib/gstreamer-1.0/libgstdvdspu.a', 'lib/gstreamer-1.0/libgstdvdspu.la',
             'lib/gstreamer-1.0/libgsthls.a', 'lib/gstreamer-1.0/libgsthls.la',
             'lib/gstreamer-1.0/libgstid3tag.a', 'lib/gstreamer-1.0/libgstid3tag.la',
             'lib/gstreamer-1.0/libgstkate.a', 'lib/gstreamer-1.0/libgstkate.la',
             'lib/gstreamer-1.0/libgstmidi.a', 'lib/gstreamer-1.0/libgstmidi.la',
             'lib/gstreamer-1.0/libgstmxf.a', 'lib/gstreamer-1.0/libgstmxf.la',
             'lib/gstreamer-1.0/libgstopenh264.a', 'lib/gstreamer-1.0/libgstopenh264.la',
             'lib/gstreamer-1.0/libgstopusparse.a', 'lib/gstreamer-1.0/libgstopusparse.la',
             'lib/gstreamer-1.0/libgstpcapparse.a', 'lib/gstreamer-1.0/libgstpcapparse.la',
             'lib/gstreamer-1.0/libgstpnm.a', 'lib/gstreamer-1.0/libgstpnm.la',
             'lib/gstreamer-1.0/libgstrfbsrc.a', 'lib/gstreamer-1.0/libgstrfbsrc.la',
             'lib/gstreamer-1.0/libgstsiren.a', 'lib/gstreamer-1.0/libgstsiren.la',
             'lib/gstreamer-1.0/libgstsmoothstreaming.a', 'lib/gstreamer-1.0/libgstsmoothstreaming.la',
             'lib/gstreamer-1.0/libgstsubenc.a', 'lib/gstreamer-1.0/libgstsubenc.la',
             'lib/gstreamer-1.0/libgstvideoparsersbad.a', 'lib/gstreamer-1.0/libgstvideoparsersbad.la',
             'lib/gstreamer-1.0/libgsty4mdec.a', 'lib/gstreamer-1.0/libgsty4mdec.la',
             'lib/gstreamer-1.0/libgstjpegformat.a', 'lib/gstreamer-1.0/libgstjpegformat.la',
             'lib/gstreamer-1.0/libgstgdp.a', 'lib/gstreamer-1.0/libgstgdp.la',
             'lib/gstreamer-1.0/libgstrsvg.a', 'lib/gstreamer-1.0/libgstrsvg.la',
             'lib/gstreamer-1.0/libgstopenjpeg.a', 'lib/gstreamer-1.0/libgstopenjpeg.la',
             'lib/gstreamer-1.0/libgstspandsp.a', 'lib/gstreamer-1.0/libgstspandsp.la',
             'lib/gstreamer-1.0/libgstsbc.a', 'lib/gstreamer-1.0/libgstsbc.la',
             'lib/gstreamer-1.0/libgstzbar.a', 'lib/gstreamer-1.0/libgstzbar.la',
             'lib/gstreamer-1.0/libgstnvcodec.a', 'lib/gstreamer-1.0/libgstnvcodec.la',
    ]

    platform_files_plugins_codecs = {
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstandroidmedia%(mext)s',
            ]
    }

    platform_files_plugins_codecs_devel = {
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstandroidmedia.a', 'lib/gstreamer-1.0/libgstandroidmedia.la',
            ]
    }

    files_plugins_codecs_gpl = [
             'lib/gstreamer-1.0/libgstassrender%(mext)s',
    ]

    files_plugins_codecs_gpl_devel = [
             'lib/gstreamer-1.0/libgstassrender.a', 'lib/gstreamer-1.0/libgstassrender.la',
    ]

    files_plugins_codecs_restricted = [
             'lib/gstreamer-1.0/libgstasfmux%(mext)s',
             'lib/gstreamer-1.0/libgstdtsdec%(mext)s',
             'lib/gstreamer-1.0/libgstmpegpsdemux%(mext)s',
             'lib/gstreamer-1.0/libgstmpegpsmux%(mext)s',
             'lib/gstreamer-1.0/libgstmpegtsdemux%(mext)s',
             'lib/gstreamer-1.0/libgstmpegtsmux%(mext)s',
             'lib/gstreamer-1.0/libgstvoaacenc%(mext)s'
    ]

    files_plugins_codecs_restricted_devel = [
             'lib/gstreamer-1.0/libgstasfmux.a', 'lib/gstreamer-1.0/libgstasfmux.la',
             'lib/gstreamer-1.0/libgstdtsdec.a', 'lib/gstreamer-1.0/libgstdtsdec.la',
             'lib/gstreamer-1.0/libgstmpegpsdemux.a', 'lib/gstreamer-1.0/libgstmpegpsdemux.la',
             'lib/gstreamer-1.0/libgstmpegpsmux.a', 'lib/gstreamer-1.0/libgstmpegpsmux.la',
             'lib/gstreamer-1.0/libgstmpegtsdemux.a', 'lib/gstreamer-1.0/libgstmpegtsdemux.la',
             'lib/gstreamer-1.0/libgstmpegtsmux.a', 'lib/gstreamer-1.0/libgstmpegtsmux.la',
             'lib/gstreamer-1.0/libgstvoaacenc.a', 'lib/gstreamer-1.0/libgstvoaacenc.la',
    ]

    files_plugins_dvd = [
             'lib/gstreamer-1.0/libgstresindvd%(mext)s',
    ]

    files_plugins_dvd_devel = [
             'lib/gstreamer-1.0/libgstresindvd.a', 'lib/gstreamer-1.0/libgstresindvd.la',
    ]

    files_plugins_net = [
             'lib/gstreamer-1.0/libgstdtls%(mext)s',
             'lib/gstreamer-1.0/libgstnetsim%(mext)s',
             'lib/gstreamer-1.0/libgstrist%(mext)s',
             'lib/gstreamer-1.0/libgstrtmp2%(mext)s',
             'lib/gstreamer-1.0/libgstrtpmanagerbad%(mext)s',
             'lib/gstreamer-1.0/libgstsctp%(mext)s',
             'lib/gstreamer-1.0/libgstsdpelem%(mext)s',
             'lib/gstreamer-1.0/libgstsrtp%(mext)s',
             'lib/gstreamer-1.0/libgstsrt%(mext)s',
             'lib/gstreamer-1.0/libgstwebrtc%(mext)s',
    ]

    files_plugins_net_devel = [
             'lib/gstreamer-1.0/libgstdtls.a', 'lib/gstreamer-1.0/libgstdtls.la',
             'lib/gstreamer-1.0/libgstnetsim.a', 'lib/gstreamer-1.0/libgstnetsim.la',
             'lib/gstreamer-1.0/libgstrist.a', 'lib/gstreamer-1.0/libgstrist.la',
             'lib/gstreamer-1.0/libgstrtmp2.a', 'lib/gstreamer-1.0/libgstrtmp2.la',
             'lib/gstreamer-1.0/libgstrtpmanagerbad.a', 'lib/gstreamer-1.0/libgstrtpmanagerbad.la',
             'lib/gstreamer-1.0/libgstsctp.a', 'lib/gstreamer-1.0/libgstsctp.la',
             'lib/gstreamer-1.0/libgstsdpelem.a', 'lib/gstreamer-1.0/libgstsdpelem.la',
             'lib/gstreamer-1.0/libgstsrtp.a', 'lib/gstreamer-1.0/libgstsrtp.la',
             'lib/gstreamer-1.0/libgstsrt.a', 'lib/gstreamer-1.0/libgstsrt.la',
             'lib/gstreamer-1.0/libgstwebrtc.a', 'lib/gstreamer-1.0/libgstwebrtc.la',
    ]

    files_plugins_net_restricted = [
             'lib/gstreamer-1.0/libgstmms%(mext)s',
             'lib/gstreamer-1.0/libgstrtmp%(mext)s',
    ]

    files_plugins_net_restricted_devel = [
             'lib/gstreamer-1.0/libgstmms.a', 'lib/gstreamer-1.0/libgstmms.la',
             'lib/gstreamer-1.0/libgstrtmp.a', 'lib/gstreamer-1.0/libgstrtmp.la',
    ]

    files_plugins_capture = [
             'lib/gstreamer-1.0/libgstcamerabin%(mext)s'
    ]

    files_plugins_capture_devel = [
             'lib/gstreamer-1.0/libgstcamerabin.a', 'lib/gstreamer-1.0/libgstcamerabin.la',
    ]

    platform_files_plugins_capture = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstdvb%(mext)s',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstwinscreencap%(mext)s',
             'lib/gstreamer-1.0/libgstdirectsoundsrc%(mext)s',
             'lib/gstreamer-1.0/libgstwinks%(mext)s',
            ]
    }

    platform_files_plugins_capture_devel = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstdvb.a', 'lib/gstreamer-1.0/libgstdvb.la',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstwinscreencap.a', 'lib/gstreamer-1.0/libgstwinscreencap.la',
             'lib/gstreamer-1.0/libgstdirectsoundsrc.a', 'lib/gstreamer-1.0/libgstdirectsoundsrc.la',
             'lib/gstreamer-1.0/libgstwinks.a', 'lib/gstreamer-1.0/libgstwinks.la',
            ]
    }

    files_plugins_vulkan = [
        'lib/gstreamer-1.0/libgstvulkan%(mext)s',
    ]

    files_plugins_vulkan_devel = [
        'lib/gstreamer-1.0/libgstvulkan.a', 'lib/gstreamer-1.0/libgstvulkan.la',
    ]

    files_plugins_vis = [
             'lib/gstreamer-1.0/libgstaudiovisualizers%(mext)s',
    ]

    files_plugins_vis_devel = [
             'lib/gstreamer-1.0/libgstaudiovisualizers.a', 'lib/gstreamer-1.0/libgstaudiovisualizers.la',
    ]

    files_plugins_sys = [
        'lib/gstreamer-1.0/libgstipcpipeline%(mext)s',
    ]

    files_plugins_sys_devel = [
        'lib/gstreamer-1.0/libgstipcpipeline.a', 'lib/gstreamer-1.0/libgstipcpipeline.la',
    ]

    platform_files_plugins_sys = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstshm%(mext)s',
             'lib/gstreamer-1.0/libgstdecklink%(mext)s',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstd3d%(mext)s',
             'lib/gstreamer-1.0/libgstd3d11%(mext)s',
             'lib/gstreamer-1.0/libgstwasapi%(mext)s',
             'lib/gstreamer-1.0/libgstdecklink%(mext)s',
            ],
        Platform.DARWIN: [
             'lib/gstreamer-1.0/libgstapplemedia%(mext)s',
             'lib/gstreamer-1.0/libgstshm%(mext)s',
             'lib/gstreamer-1.0/libgstdecklink%(mext)s',
            ],
        Platform.IOS: [
             'lib/gstreamer-1.0/libgstapplemedia%(mext)s',
             'lib/gstreamer-1.0/libgstshm%(mext)s',
            ],
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstopensles%(mext)s',
            ]
    }

    platform_files_plugins_sys_devel = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstshm.a', 'lib/gstreamer-1.0/libgstshm.la',
             'lib/gstreamer-1.0/libgstdecklink.a', 'lib/gstreamer-1.0/libgstdecklink.la',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstd3d.a', 'lib/gstreamer-1.0/libgstd3d.la',
             'lib/gstreamer-1.0/libgstd3d11.a', 'lib/gstreamer-1.0/libgstd3d11.la',
             'lib/gstreamer-1.0/libgstwasapi.a', 'lib/gstreamer-1.0/libgstwasapi.la',
             'lib/gstreamer-1.0/libgstdecklink.a', 'lib/gstreamer-1.0/libgstdecklink.la',
            ],
        Platform.DARWIN: [
             'lib/gstreamer-1.0/libgstapplemedia.a', 'lib/gstreamer-1.0/libgstapplemedia.la',
             'lib/gstreamer-1.0/libgstshm.a', 'lib/gstreamer-1.0/libgstshm.la',
             'lib/gstreamer-1.0/libgstdecklink.a', 'lib/gstreamer-1.0/libgstdecklink.la',
            ],
        Platform.IOS: [
             'lib/gstreamer-1.0/libgstapplemedia.a', 'lib/gstreamer-1.0/libgstapplemedia.la',
             'lib/gstreamer-1.0/libgstshm.a', 'lib/gstreamer-1.0/libgstshm.la',
            ],
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstopensles.a', 'lib/gstreamer-1.0/libgstopensles.la',
            ]
    }

    files_typelibs = [
        'GstInsertBin-1.0',
        'GstMpegts-1.0',
        'GstPlay-1.0',
        'GstPlayer-1.0',
        'GstTranscoder-1.0',
    ]

    platform_files_codecs_devel = {
        Platform.ANDROID: [
              'share/gst-android/ndk-build',
            ]
    }

    def prepare(self):
        # Disable Cocoa NSApp integration since we enable the Cocoa MainLoop
        # integration in the GLib recipe
        if self.config.target_platform in (Platform.DARWIN, Platform.IOS):
            self.append_env('CFLAGS', '-DGSTREAMER_GLIB_COCOA_NSAPPLICATION=1')
            self.append_env('OBJCFLAGS', '-DGSTREAMER_GLIB_COCOA_NSAPPLICATION=1')

        # Enable hardware codecs if variants are enabled since they have
        # external dependencies such as SDKs.
        self.enable_plugin('msdk', 'codecs', 'intelmsdk')
        self.enable_plugin('va', 'codecs', 'vaapi')

        # MediaFoundation can only be built with MSVC
        self.enable_plugin('mediafoundation', 'sys', 'visualstudio')

        if self.config.target_platform == Platform.WINDOWS:
            self.meson_options['wasapi2'] = 'disabled'
            self.meson_options['wasapi'] = 'enabled'
            self.meson_options['d3dvideosink'] = 'enabled'
            self.meson_options['d3d11'] = 'enabled'
            self.meson_options['directsound'] = 'enabled'
            self.meson_options['winks'] = 'enabled'
            self.meson_options['winscreencap'] = 'enabled'
            if self.using_msvc():
                # plugin is C++, library is Autotools
                self.disable_plugin('soundtouch', 'effects', dep='soundtouch')
                # Plugin is C++ and hence webrtc-audio-processing must also be
                # built with MSVC, it uses Meson but it doesn't build:
                # https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/issues/2
                self.disable_plugin('webrtcdsp', 'effects', dep='webrtc-audio-processing')
                self.enable_plugin('wasapi2', 'sys', 'visualstudio')
                if self.config.msvc_version == 'vs14':
                    self.disable_plugin('d3d11', 'sys')

            if self.meson_options['d3d11'] == 'enabled':
                self.files_libs += ['libgstd3d11-1.0']

        if self.config.target_platform in (Platform.LINUX, Platform.DARWIN, Platform.IOS):
            self.meson_options['shm'] = 'enabled'

        if self.config.target_platform in (Platform.DARWIN, Platform.IOS):
            self.meson_options['applemedia'] = 'enabled'
            self.deps += ['moltenvk']
        if self.config.target_platform in (Platform.ANDROID):
            self.deps += ['vulkan-android']

        if self.config.target_platform not in (Platform.DARWIN, Platform.IOS, Platform.ANDROID) or \
                (self.config.target_platform == Platform.IOS and self.config.target_arch != Architecture.ARM64):
            self.disable_plugin('vulkan', 'vulkan', library_name='vulkan')

        if self.config.target_platform in (Platform.ANDROID, Platform.IOS):
            self.disable_plugin('resindvd', 'dvd', dep='libdvdnav')
            self.disable_plugin('nvcodec', 'codecs')

        # Recipes that need autoreconf hang on the Windows CI
        if self.config.platform == Platform.WINDOWS:
            self.disable_plugin('resindvd', 'dvd', dep='libdvdnav')

        # dtls plugin needs openssl, and we pick up the system openssl if on
        # Linux and not cross-compiling.
        if self.config.target_platform != Platform.LINUX or self.config.cross_compiling():
            self.deps.append('openssl')

        if self.using_uwp():
            # Uses unavailable APIs
            self.disable_plugin('d3d', 'sys', option='d3dvideosink')
            self.disable_plugin('decklink', 'sys')
            self.disable_plugin('directsoundsrc', 'capture', option='directsound')
            self.disable_plugin('wasapi', 'sys')
            self.disable_plugin('winscreencap', 'capture')
            self.disable_plugin('winks', 'capture')
            # External deps that haven't been ported to UWP
            self.disable_plugin('assrender', 'codecs_gpl', dep='libass')
            self.disable_plugin('closedcaption', 'effects', dep='pango')
            self.disable_plugin('dash', 'codecs', dep='libxml2')
            self.disable_plugin('dtsdec', 'codecs_restricted', option='dts', dep='libdca')
            self.disable_plugin('kate', 'codecs', dep='libkate')
            self.disable_plugin('ladspa', 'effects', dep='ladspa')
            self.disable_plugin('mms', 'net_restricted', option='libmms', dep='libmms')
            self.disable_plugin('openjpeg', 'codecs', dep='openjpeg')
            self.disable_plugin('rtmp', 'net_restricted', option='rtmp', dep='librtmp')
            self.disable_plugin('sbc', 'codecs', dep='sbc')
            self.disable_plugin('spandsp', 'codecs', dep='spandsp')
            self.disable_plugin('smoothstreaming', 'codecs', dep='libxml2')
            self.disable_plugin('srt', 'net', dep='srt')
            self.disable_plugin('rsvg', 'codecs', dep='librsvg')
            self.disable_plugin('voaacenc', 'codecs_restricted', dep='vo-aacenc')
            self.disable_plugin('zbar', 'codecs', dep='zbar')

        if self.config.variants.nodebug:
            self.append_env('CFLAGS', '-DGST_LEVEL_MAX=GST_LEVEL_FIXME')

    def post_install(self):
        LibtoolLibrary('gsturidownloader-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0', 'gstbase-1.0']).save()
        LibtoolLibrary('gstadaptivedemux-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0', 'gsturidownloader-1.0', 'gstapp-1.0', 'gstbase-1.0']).save()
        LibtoolLibrary('gstbasecamerabinsrc-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0', 'gstapp-1.0', 'gstbase-1.0']).save()
        LibtoolLibrary('gstisoff-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0']).save()
        super().post_install()