# -*- 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 # License path/location is different in tarball vs. monorepo if custom.GStreamer.stype == SourceType.TARBALL: licenses = [{License.LGPLv2Plus: None, License.BSD_like: ['ext/sctp/usrsctp/LICENSE.md']}] else: licenses = [{License.LGPLv2Plus: None, License.BSD_like: ['subprojects/gst-plugins-bad/ext/sctp/usrsctp/LICENSE.md']}] tarball_checksum = 'e1798fee2d86127f0637481c607f983293bf0fd81aad70a5c7b47205af3621d8' # Explicitly enable plugins that we provide dependencies for to ensure that # we error out if they weren't found. meson_options = {'gpl': 'enabled', # enabled plugins 'aes': 'enabled', 'assrender': 'enabled', 'bz2': 'enabled', 'closedcaption': 'enabled', 'codecalpha': 'enabled', 'codectimestamper': 'enabled', 'dash': 'enabled', 'decklink': 'enabled', 'dtls': 'enabled', 'dts': 'enabled', 'hls': 'enabled', 'hls-crypto': 'openssl', 'kate': 'enabled', 'ladspa': 'auto', # lrdf is optional '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 'amfcodec': 'disabled', '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', 'nvcodec': 'disabled', 'openal': 'disabled', 'opencv': 'disabled', 'qsv': 'disabled', 'sndfile': 'disabled', 'teletext': 'disabled', 'voamrwbenc': 'disabled', 'wic': 'disabled', 'win32ipc': 'disabled', 'wildmidi': 'disabled', } deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'bzip2', 'libass', 'libkate', 'zlib', 'openh264', 'opus', 'librtmp', 'libxml2', 'libsrtp', 'libdca', 'libdvdnav', 'libnice', 'soundtouch', 'vo-aacenc', 'librsvg', 'openjpeg', 'pango', 'spandsp', 'webrtc-audio-processing', 'sbc', 'ladspa', 'srt', 'zbar', 'libltc'] 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', 'libgstwebrtcnice-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', 'lib/pkgconfig/gstreamer-webrtc-nice-1.0.pc', ] files_plugins_core = [ 'lib/gstreamer-1.0/libgstswitchbin%(mext)s', ] files_plugins_core_devel = [ 'lib/gstreamer-1.0/libgstswitchbin.a', 'lib/gstreamer-1.0/libgstswitchbin.la', ] files_plugins_effects = [ 'lib/gstreamer-1.0/libgstaccurip%(mext)s', 'lib/gstreamer-1.0/libgstaes%(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/libgstvideosignal%(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/libgstaes.a', 'lib/gstreamer-1.0/libgstaes.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/libgstvideosignal.a', 'lib/gstreamer-1.0/libgstvideosignal.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/libgstassrender%(mext)s', 'lib/gstreamer-1.0/libgstbz2%(mext)s', 'lib/gstreamer-1.0/libgstcodecalpha%(mext)s', 'lib/gstreamer-1.0/libgstcodectimestamper%(mext)s', 'lib/gstreamer-1.0/libgstdash%(mext)s', 'lib/gstreamer-1.0/libgstdvbsubenc%(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', ] 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/libgstassrender.a', 'lib/gstreamer-1.0/libgstassrender.la', 'lib/gstreamer-1.0/libgstbz2.a', 'lib/gstreamer-1.0/libgstbz2.la', 'lib/gstreamer-1.0/libgstcodecalpha.a', 'lib/gstreamer-1.0/libgstcodecalpha.la', 'lib/gstreamer-1.0/libgstcodectimestamper.a', 'lib/gstreamer-1.0/libgstcodectimestamper.la', 'lib/gstreamer-1.0/libgstdash.a', 'lib/gstreamer-1.0/libgstdash.la', 'lib/gstreamer-1.0/libgstdvbsubenc.a', 'lib/gstreamer-1.0/libgstdvbsubenc.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', ] 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 = [ ] files_plugins_codecs_gpl_devel = [ ] 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/libgstrtponvif%(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/libgstrtponvif.a', 'lib/gstreamer-1.0/libgstrtponvif.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/libgstrtmp%(mext)s', ] files_plugins_net_restricted_devel = [ '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 and DirectShow can only be built with MSVC self.enable_plugin('mediafoundation', 'sys', 'visualstudio') self.enable_plugin('directshow', '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') # This dll is used by wasapi2 and mediafoundation UWP build self.files_libs += ['libgstwinrt-1.0'] # WIC plugin supports only MSVC built for now self.enable_plugin('wic', 'codecs') self.files_libs += ['libgstd3d11-1.0'] self.files_plugins_devel += [ 'include/gstreamer-1.0/gst/d3d11', 'lib/gstreamer-1.0/include/gst/d3d11', 'lib/pkgconfig/gstreamer-d3d11-1.0.pc', ] self.enable_plugin('amfcodec', 'codecs') self.enable_plugin('qsv', 'codecs') self.enable_plugin('win32ipc', 'sys') if self.config.target_platform in (Platform.LINUX, Platform.WINDOWS): self.enable_plugin('nvcodec', 'codecs') self.files_plugins_devel += [ 'include/gstreamer-1.0/gst/cuda', 'lib/pkgconfig/gstreamer-cuda-1.0.pc', ] 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'] # TODO: Vulkan support on Linux and Windows # No MoltenVK available for iOS x86_64 # Disabled on macOS ARM64 due to https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/361 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) or \ (self.config.target_platform == Platform.DARWIN 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') # 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('directshow', 'sys') self.disable_plugin('wasapi', 'sys') self.disable_plugin('win32ipc', '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', 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('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') # amf, nvcodec, and qsv all load dlls which wouldn't work on UWP self.disable_plugin('amfcodec', 'codecs') self.disable_plugin('nvcodec', 'codecs') self.disable_plugin('qsv', 'codecs') if self.meson_options['nvcodec'] == 'enabled': self.files_libs += ['libgstcuda-1.0'] 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()