# -*- 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 = 'e90f26c7dc9c76f4aa599b758cfd6d8c10d6a0b9cb265ba2c3c9bdf3888558f8' # 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', 'isac': 'enabled', 'ivfparse': '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', 'dwrite': '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', 'qt6d3d11': 'disabled', 'sndfile': 'disabled', 'teletext': 'disabled', 'voamrwbenc': 'disabled', 'wic': 'disabled', 'win32ipc': 'disabled', 'wildmidi': 'disabled', } deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'bzip2', 'libass', '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', 'libgstanalytics-1.0', 'libgstbadaudio-1.0', 'libgstbasecamerabinsrc-1.0', 'libgstcodecparsers-1.0', 'libgstcodecs-1.0', 'libgstinsertbin-1.0', 'libgstisoff-1.0', 'libgstmpegts-1.0', 'libgstmse-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/analytics', '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/mse', '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', '%(libdir)s/pkgconfig/gstreamer-analytics-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-bad-audio-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-codecparsers-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-insertbin-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-mpegts-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-mse-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-photography-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-play-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-player-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-plugins-bad-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-sctp-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-transcoder-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-vulkan-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-webrtc-1.0.pc', '%(libdir)s/pkgconfig/gstreamer-webrtc-nice-1.0.pc', ] files_plugins_core = [ '%(libdir)s/gstreamer-1.0/libgstinsertbin%(mext)s', '%(libdir)s/gstreamer-1.0/libgstswitchbin%(mext)s', ] files_plugins_core_devel = [ '%(libdir)s/gstreamer-1.0/libgstinsertbin.a', '%(libdir)s/gstreamer-1.0/libgstinsertbin.la', '%(libdir)s/gstreamer-1.0/libgstswitchbin.a', '%(libdir)s/gstreamer-1.0/libgstswitchbin.la', ] files_plugins_effects = [ '%(libdir)s/gstreamer-1.0/libgstaccurip%(mext)s', '%(libdir)s/gstreamer-1.0/libgstaes%(mext)s', '%(libdir)s/gstreamer-1.0/libgstaiff%(mext)s', '%(libdir)s/gstreamer-1.0/libgstaudiobuffersplit%(mext)s', '%(libdir)s/gstreamer-1.0/libgstaudiofxbad%(mext)s', '%(libdir)s/gstreamer-1.0/libgstaudiolatency%(mext)s', '%(libdir)s/gstreamer-1.0/libgstaudiomixmatrix%(mext)s', '%(libdir)s/gstreamer-1.0/libgstautoconvert%(mext)s', '%(libdir)s/gstreamer-1.0/libgstbayer%(mext)s', '%(libdir)s/gstreamer-1.0/libgstcoloreffects%(mext)s', '%(libdir)s/gstreamer-1.0/libgstclosedcaption%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdebugutilsbad%(mext)s', '%(libdir)s/gstreamer-1.0/libgstfieldanalysis%(mext)s', '%(libdir)s/gstreamer-1.0/libgstfreeverb%(mext)s', '%(libdir)s/gstreamer-1.0/libgstfrei0r%(mext)s', '%(libdir)s/gstreamer-1.0/libgstgaudieffects%(mext)s', '%(libdir)s/gstreamer-1.0/libgstgeometrictransform%(mext)s', '%(libdir)s/gstreamer-1.0/libgstinter%(mext)s', '%(libdir)s/gstreamer-1.0/libgstinterlace%(mext)s', '%(libdir)s/gstreamer-1.0/libgstisac%(mext)s', '%(libdir)s/gstreamer-1.0/libgstivtc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstlegacyrawparse%(mext)s', '%(libdir)s/gstreamer-1.0/libgstproxy%(mext)s', '%(libdir)s/gstreamer-1.0/libgstremovesilence%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsegmentclip%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsmooth%(mext)s', '%(libdir)s/gstreamer-1.0/libgstspeed%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsoundtouch%(mext)s', '%(libdir)s/gstreamer-1.0/libgsttimecode%(mext)s', '%(libdir)s/gstreamer-1.0/libgstvideofiltersbad%(mext)s', '%(libdir)s/gstreamer-1.0/libgstvideoframe_audiolevel%(mext)s', '%(libdir)s/gstreamer-1.0/libgstvideosignal%(mext)s', '%(libdir)s/gstreamer-1.0/libgstwebrtcdsp%(mext)s', '%(libdir)s/gstreamer-1.0/libgstladspa%(mext)s', ] files_plugins_effects_devel = [ '%(libdir)s/gstreamer-1.0/libgstaccurip.a', '%(libdir)s/gstreamer-1.0/libgstaccurip.la', '%(libdir)s/gstreamer-1.0/libgstaes.a', '%(libdir)s/gstreamer-1.0/libgstaes.la', '%(libdir)s/gstreamer-1.0/libgstaiff.a', '%(libdir)s/gstreamer-1.0/libgstaiff.la', '%(libdir)s/gstreamer-1.0/libgstaudiobuffersplit.a', '%(libdir)s/gstreamer-1.0/libgstaudiobuffersplit.la', '%(libdir)s/gstreamer-1.0/libgstaudiofxbad.a', '%(libdir)s/gstreamer-1.0/libgstaudiofxbad.la', '%(libdir)s/gstreamer-1.0/libgstaudiolatency.a', '%(libdir)s/gstreamer-1.0/libgstaudiolatency.la', '%(libdir)s/gstreamer-1.0/libgstaudiomixmatrix.a', '%(libdir)s/gstreamer-1.0/libgstaudiomixmatrix.la', '%(libdir)s/gstreamer-1.0/libgstautoconvert.a', '%(libdir)s/gstreamer-1.0/libgstautoconvert.la', '%(libdir)s/gstreamer-1.0/libgstbayer.a', '%(libdir)s/gstreamer-1.0/libgstbayer.la', '%(libdir)s/gstreamer-1.0/libgstcoloreffects.a', '%(libdir)s/gstreamer-1.0/libgstcoloreffects.la', '%(libdir)s/gstreamer-1.0/libgstclosedcaption.a', '%(libdir)s/gstreamer-1.0/libgstclosedcaption.la', '%(libdir)s/gstreamer-1.0/libgstdebugutilsbad.a', '%(libdir)s/gstreamer-1.0/libgstdebugutilsbad.la', '%(libdir)s/gstreamer-1.0/libgstfieldanalysis.a', '%(libdir)s/gstreamer-1.0/libgstfieldanalysis.la', '%(libdir)s/gstreamer-1.0/libgstfreeverb.a', '%(libdir)s/gstreamer-1.0/libgstfreeverb.la', '%(libdir)s/gstreamer-1.0/libgstfrei0r.a', '%(libdir)s/gstreamer-1.0/libgstfrei0r.la', '%(libdir)s/gstreamer-1.0/libgstgaudieffects.a', '%(libdir)s/gstreamer-1.0/libgstgaudieffects.la', '%(libdir)s/gstreamer-1.0/libgstgeometrictransform.a', '%(libdir)s/gstreamer-1.0/libgstgeometrictransform.la', '%(libdir)s/gstreamer-1.0/libgstinter.a', '%(libdir)s/gstreamer-1.0/libgstinter.la', '%(libdir)s/gstreamer-1.0/libgstinterlace.a', '%(libdir)s/gstreamer-1.0/libgstinterlace.la', '%(libdir)s/gstreamer-1.0/libgstisac.a', '%(libdir)s/gstreamer-1.0/libgstisac.la', '%(libdir)s/gstreamer-1.0/libgstivtc.a', '%(libdir)s/gstreamer-1.0/libgstivtc.la', '%(libdir)s/gstreamer-1.0/libgstlegacyrawparse.a', '%(libdir)s/gstreamer-1.0/libgstlegacyrawparse.la', '%(libdir)s/gstreamer-1.0/libgstproxy.a', '%(libdir)s/gstreamer-1.0/libgstproxy.la', '%(libdir)s/gstreamer-1.0/libgstremovesilence.a', '%(libdir)s/gstreamer-1.0/libgstremovesilence.la', '%(libdir)s/gstreamer-1.0/libgstsegmentclip.a', '%(libdir)s/gstreamer-1.0/libgstsegmentclip.la', '%(libdir)s/gstreamer-1.0/libgstsmooth.a', '%(libdir)s/gstreamer-1.0/libgstsmooth.la', '%(libdir)s/gstreamer-1.0/libgstspeed.a', '%(libdir)s/gstreamer-1.0/libgstspeed.la', '%(libdir)s/gstreamer-1.0/libgstsoundtouch.a', '%(libdir)s/gstreamer-1.0/libgstsoundtouch.la', '%(libdir)s/gstreamer-1.0/libgsttimecode.a', '%(libdir)s/gstreamer-1.0/libgsttimecode.la', '%(libdir)s/gstreamer-1.0/libgstvideofiltersbad.a', '%(libdir)s/gstreamer-1.0/libgstvideofiltersbad.la', '%(libdir)s/gstreamer-1.0/libgstvideoframe_audiolevel.a', '%(libdir)s/gstreamer-1.0/libgstvideoframe_audiolevel.la', '%(libdir)s/gstreamer-1.0/libgstvideosignal.a', '%(libdir)s/gstreamer-1.0/libgstvideosignal.la', '%(libdir)s/gstreamer-1.0/libgstwebrtcdsp.a', '%(libdir)s/gstreamer-1.0/libgstwebrtcdsp.la', '%(libdir)s/gstreamer-1.0/libgstladspa.a', '%(libdir)s/gstreamer-1.0/libgstladspa.la', ] files_plugins_codecs = [ '%(libdir)s/gstreamer-1.0/libgstadpcmdec%(mext)s', '%(libdir)s/gstreamer-1.0/libgstadpcmenc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstassrender%(mext)s', '%(libdir)s/gstreamer-1.0/libgstbz2%(mext)s', '%(libdir)s/gstreamer-1.0/libgstcodecalpha%(mext)s', '%(libdir)s/gstreamer-1.0/libgstcodectimestamper%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdash%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdvbsubenc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdvbsuboverlay%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdvdspu%(mext)s', '%(libdir)s/gstreamer-1.0/libgsthls%(mext)s', '%(libdir)s/gstreamer-1.0/libgstid3tag%(mext)s', '%(libdir)s/gstreamer-1.0/libgstivfparse%(mext)s', '%(libdir)s/gstreamer-1.0/libgstmidi%(mext)s', '%(libdir)s/gstreamer-1.0/libgstmxf%(mext)s', '%(libdir)s/gstreamer-1.0/libgstopenh264%(mext)s', '%(libdir)s/gstreamer-1.0/libgstopusparse%(mext)s', '%(libdir)s/gstreamer-1.0/libgstpcapparse%(mext)s', '%(libdir)s/gstreamer-1.0/libgstpnm%(mext)s', '%(libdir)s/gstreamer-1.0/libgstrfbsrc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsiren%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsmoothstreaming%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsubenc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstvideoparsersbad%(mext)s', '%(libdir)s/gstreamer-1.0/libgsty4mdec%(mext)s', '%(libdir)s/gstreamer-1.0/libgstjpegformat%(mext)s', '%(libdir)s/gstreamer-1.0/libgstgdp%(mext)s', '%(libdir)s/gstreamer-1.0/libgstrsvg%(mext)s', '%(libdir)s/gstreamer-1.0/libgstopenjpeg%(mext)s', '%(libdir)s/gstreamer-1.0/libgstspandsp%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsbc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstzbar%(mext)s', ] files_plugins_codecs_devel = [ '%(libdir)s/gstreamer-1.0/libgstadpcmdec.a', '%(libdir)s/gstreamer-1.0/libgstadpcmdec.la', '%(libdir)s/gstreamer-1.0/libgstadpcmenc.a', '%(libdir)s/gstreamer-1.0/libgstadpcmenc.la', '%(libdir)s/gstreamer-1.0/libgstassrender.a', '%(libdir)s/gstreamer-1.0/libgstassrender.la', '%(libdir)s/gstreamer-1.0/libgstbz2.a', '%(libdir)s/gstreamer-1.0/libgstbz2.la', '%(libdir)s/gstreamer-1.0/libgstcodecalpha.a', '%(libdir)s/gstreamer-1.0/libgstcodecalpha.la', '%(libdir)s/gstreamer-1.0/libgstcodectimestamper.a', '%(libdir)s/gstreamer-1.0/libgstcodectimestamper.la', '%(libdir)s/gstreamer-1.0/libgstdash.a', '%(libdir)s/gstreamer-1.0/libgstdash.la', '%(libdir)s/gstreamer-1.0/libgstdvbsubenc.a', '%(libdir)s/gstreamer-1.0/libgstdvbsubenc.la', '%(libdir)s/gstreamer-1.0/libgstdvbsuboverlay.a', '%(libdir)s/gstreamer-1.0/libgstdvbsuboverlay.la', '%(libdir)s/gstreamer-1.0/libgstdvdspu.a', '%(libdir)s/gstreamer-1.0/libgstdvdspu.la', '%(libdir)s/gstreamer-1.0/libgsthls.a', '%(libdir)s/gstreamer-1.0/libgsthls.la', '%(libdir)s/gstreamer-1.0/libgstid3tag.a', '%(libdir)s/gstreamer-1.0/libgstid3tag.la', '%(libdir)s/gstreamer-1.0/libgstivfparse.a', '%(libdir)s/gstreamer-1.0/libgstivfparse.la', '%(libdir)s/gstreamer-1.0/libgstmidi.a', '%(libdir)s/gstreamer-1.0/libgstmidi.la', '%(libdir)s/gstreamer-1.0/libgstmxf.a', '%(libdir)s/gstreamer-1.0/libgstmxf.la', '%(libdir)s/gstreamer-1.0/libgstopenh264.a', '%(libdir)s/gstreamer-1.0/libgstopenh264.la', '%(libdir)s/gstreamer-1.0/libgstopusparse.a', '%(libdir)s/gstreamer-1.0/libgstopusparse.la', '%(libdir)s/gstreamer-1.0/libgstpcapparse.a', '%(libdir)s/gstreamer-1.0/libgstpcapparse.la', '%(libdir)s/gstreamer-1.0/libgstpnm.a', '%(libdir)s/gstreamer-1.0/libgstpnm.la', '%(libdir)s/gstreamer-1.0/libgstrfbsrc.a', '%(libdir)s/gstreamer-1.0/libgstrfbsrc.la', '%(libdir)s/gstreamer-1.0/libgstsiren.a', '%(libdir)s/gstreamer-1.0/libgstsiren.la', '%(libdir)s/gstreamer-1.0/libgstsmoothstreaming.a', '%(libdir)s/gstreamer-1.0/libgstsmoothstreaming.la', '%(libdir)s/gstreamer-1.0/libgstsubenc.a', '%(libdir)s/gstreamer-1.0/libgstsubenc.la', '%(libdir)s/gstreamer-1.0/libgstvideoparsersbad.a', '%(libdir)s/gstreamer-1.0/libgstvideoparsersbad.la', '%(libdir)s/gstreamer-1.0/libgsty4mdec.a', '%(libdir)s/gstreamer-1.0/libgsty4mdec.la', '%(libdir)s/gstreamer-1.0/libgstjpegformat.a', '%(libdir)s/gstreamer-1.0/libgstjpegformat.la', '%(libdir)s/gstreamer-1.0/libgstgdp.a', '%(libdir)s/gstreamer-1.0/libgstgdp.la', '%(libdir)s/gstreamer-1.0/libgstrsvg.a', '%(libdir)s/gstreamer-1.0/libgstrsvg.la', '%(libdir)s/gstreamer-1.0/libgstopenjpeg.a', '%(libdir)s/gstreamer-1.0/libgstopenjpeg.la', '%(libdir)s/gstreamer-1.0/libgstspandsp.a', '%(libdir)s/gstreamer-1.0/libgstspandsp.la', '%(libdir)s/gstreamer-1.0/libgstsbc.a', '%(libdir)s/gstreamer-1.0/libgstsbc.la', '%(libdir)s/gstreamer-1.0/libgstzbar.a', '%(libdir)s/gstreamer-1.0/libgstzbar.la', ] platform_files_plugins_codecs = { Platform.ANDROID: [ '%(libdir)s/gstreamer-1.0/libgstandroidmedia%(mext)s', ] } platform_files_plugins_codecs_devel = { Platform.ANDROID: [ '%(libdir)s/gstreamer-1.0/libgstandroidmedia.a', '%(libdir)s/gstreamer-1.0/libgstandroidmedia.la', ] } files_plugins_codecs_gpl = [ ] files_plugins_codecs_gpl_devel = [ ] files_plugins_codecs_restricted = [ '%(libdir)s/gstreamer-1.0/libgstasfmux%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdtsdec%(mext)s', '%(libdir)s/gstreamer-1.0/libgstmpegpsdemux%(mext)s', '%(libdir)s/gstreamer-1.0/libgstmpegpsmux%(mext)s', '%(libdir)s/gstreamer-1.0/libgstmpegtsdemux%(mext)s', '%(libdir)s/gstreamer-1.0/libgstmpegtsmux%(mext)s', '%(libdir)s/gstreamer-1.0/libgstvoaacenc%(mext)s' ] files_plugins_codecs_restricted_devel = [ '%(libdir)s/gstreamer-1.0/libgstasfmux.a', '%(libdir)s/gstreamer-1.0/libgstasfmux.la', '%(libdir)s/gstreamer-1.0/libgstdtsdec.a', '%(libdir)s/gstreamer-1.0/libgstdtsdec.la', '%(libdir)s/gstreamer-1.0/libgstmpegpsdemux.a', '%(libdir)s/gstreamer-1.0/libgstmpegpsdemux.la', '%(libdir)s/gstreamer-1.0/libgstmpegpsmux.a', '%(libdir)s/gstreamer-1.0/libgstmpegpsmux.la', '%(libdir)s/gstreamer-1.0/libgstmpegtsdemux.a', '%(libdir)s/gstreamer-1.0/libgstmpegtsdemux.la', '%(libdir)s/gstreamer-1.0/libgstmpegtsmux.a', '%(libdir)s/gstreamer-1.0/libgstmpegtsmux.la', '%(libdir)s/gstreamer-1.0/libgstvoaacenc.a', '%(libdir)s/gstreamer-1.0/libgstvoaacenc.la', ] files_plugins_dvd = [ '%(libdir)s/gstreamer-1.0/libgstresindvd%(mext)s', ] files_plugins_dvd_devel = [ '%(libdir)s/gstreamer-1.0/libgstresindvd.a', '%(libdir)s/gstreamer-1.0/libgstresindvd.la', ] files_plugins_net = [ '%(libdir)s/gstreamer-1.0/libgstdtls%(mext)s', '%(libdir)s/gstreamer-1.0/libgstnetsim%(mext)s', '%(libdir)s/gstreamer-1.0/libgstrist%(mext)s', '%(libdir)s/gstreamer-1.0/libgstrtmp2%(mext)s', '%(libdir)s/gstreamer-1.0/libgstrtpmanagerbad%(mext)s', '%(libdir)s/gstreamer-1.0/libgstrtponvif%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsctp%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsdpelem%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsrtp%(mext)s', '%(libdir)s/gstreamer-1.0/libgstsrt%(mext)s', '%(libdir)s/gstreamer-1.0/libgstwebrtc%(mext)s', ] files_plugins_net_devel = [ '%(libdir)s/gstreamer-1.0/libgstdtls.a', '%(libdir)s/gstreamer-1.0/libgstdtls.la', '%(libdir)s/gstreamer-1.0/libgstnetsim.a', '%(libdir)s/gstreamer-1.0/libgstnetsim.la', '%(libdir)s/gstreamer-1.0/libgstrist.a', '%(libdir)s/gstreamer-1.0/libgstrist.la', '%(libdir)s/gstreamer-1.0/libgstrtmp2.a', '%(libdir)s/gstreamer-1.0/libgstrtmp2.la', '%(libdir)s/gstreamer-1.0/libgstrtpmanagerbad.a', '%(libdir)s/gstreamer-1.0/libgstrtpmanagerbad.la', '%(libdir)s/gstreamer-1.0/libgstrtponvif.a', '%(libdir)s/gstreamer-1.0/libgstrtponvif.la', '%(libdir)s/gstreamer-1.0/libgstsctp.a', '%(libdir)s/gstreamer-1.0/libgstsctp.la', '%(libdir)s/gstreamer-1.0/libgstsdpelem.a', '%(libdir)s/gstreamer-1.0/libgstsdpelem.la', '%(libdir)s/gstreamer-1.0/libgstsrtp.a', '%(libdir)s/gstreamer-1.0/libgstsrtp.la', '%(libdir)s/gstreamer-1.0/libgstsrt.a', '%(libdir)s/gstreamer-1.0/libgstsrt.la', '%(libdir)s/gstreamer-1.0/libgstwebrtc.a', '%(libdir)s/gstreamer-1.0/libgstwebrtc.la', ] files_plugins_net_restricted = [ '%(libdir)s/gstreamer-1.0/libgstrtmp%(mext)s', ] files_plugins_net_restricted_devel = [ '%(libdir)s/gstreamer-1.0/libgstrtmp.a', '%(libdir)s/gstreamer-1.0/libgstrtmp.la', ] files_plugins_capture = [ '%(libdir)s/gstreamer-1.0/libgstcamerabin%(mext)s' ] files_plugins_capture_devel = [ '%(libdir)s/gstreamer-1.0/libgstcamerabin.a', '%(libdir)s/gstreamer-1.0/libgstcamerabin.la', ] platform_files_plugins_capture = { Platform.LINUX: [ '%(libdir)s/gstreamer-1.0/libgstdvb%(mext)s', ], Platform.WINDOWS: [ '%(libdir)s/gstreamer-1.0/libgstwinscreencap%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdirectsoundsrc%(mext)s', '%(libdir)s/gstreamer-1.0/libgstwinks%(mext)s', ] } platform_files_plugins_capture_devel = { Platform.LINUX: [ '%(libdir)s/gstreamer-1.0/libgstdvb.a', '%(libdir)s/gstreamer-1.0/libgstdvb.la', ], Platform.WINDOWS: [ '%(libdir)s/gstreamer-1.0/libgstwinscreencap.a', '%(libdir)s/gstreamer-1.0/libgstwinscreencap.la', '%(libdir)s/gstreamer-1.0/libgstdirectsoundsrc.a', '%(libdir)s/gstreamer-1.0/libgstdirectsoundsrc.la', '%(libdir)s/gstreamer-1.0/libgstwinks.a', '%(libdir)s/gstreamer-1.0/libgstwinks.la', ] } files_plugins_vulkan = [ '%(libdir)s/gstreamer-1.0/libgstvulkan%(mext)s', ] files_plugins_vulkan_devel = [ '%(libdir)s/gstreamer-1.0/libgstvulkan.a', '%(libdir)s/gstreamer-1.0/libgstvulkan.la', ] files_plugins_vis = [ '%(libdir)s/gstreamer-1.0/libgstaudiovisualizers%(mext)s', ] files_plugins_vis_devel = [ '%(libdir)s/gstreamer-1.0/libgstaudiovisualizers.a', '%(libdir)s/gstreamer-1.0/libgstaudiovisualizers.la', ] files_plugins_sys = [ '%(libdir)s/gstreamer-1.0/libgstipcpipeline%(mext)s', ] files_plugins_sys_devel = [ '%(libdir)s/gstreamer-1.0/libgstipcpipeline.a', '%(libdir)s/gstreamer-1.0/libgstipcpipeline.la', ] platform_files_plugins_sys = { Platform.LINUX: [ '%(libdir)s/gstreamer-1.0/libgstshm%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdecklink%(mext)s', ], Platform.WINDOWS: [ '%(libdir)s/gstreamer-1.0/libgstd3d%(mext)s', '%(libdir)s/gstreamer-1.0/libgstd3d11%(mext)s', '%(libdir)s/gstreamer-1.0/libgstwasapi%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdecklink%(mext)s', ], Platform.DARWIN: [ '%(libdir)s/gstreamer-1.0/libgstapplemedia%(mext)s', '%(libdir)s/gstreamer-1.0/libgstshm%(mext)s', '%(libdir)s/gstreamer-1.0/libgstdecklink%(mext)s', ], Platform.IOS: [ '%(libdir)s/gstreamer-1.0/libgstapplemedia%(mext)s', '%(libdir)s/gstreamer-1.0/libgstshm%(mext)s', ], Platform.ANDROID: [ '%(libdir)s/gstreamer-1.0/libgstopensles%(mext)s', ] } platform_files_plugins_sys_devel = { Platform.LINUX: [ '%(libdir)s/gstreamer-1.0/libgstshm.a', '%(libdir)s/gstreamer-1.0/libgstshm.la', '%(libdir)s/gstreamer-1.0/libgstdecklink.a', '%(libdir)s/gstreamer-1.0/libgstdecklink.la', ], Platform.WINDOWS: [ '%(libdir)s/gstreamer-1.0/libgstd3d.a', '%(libdir)s/gstreamer-1.0/libgstd3d.la', '%(libdir)s/gstreamer-1.0/libgstd3d11.a', '%(libdir)s/gstreamer-1.0/libgstd3d11.la', '%(libdir)s/gstreamer-1.0/libgstwasapi.a', '%(libdir)s/gstreamer-1.0/libgstwasapi.la', '%(libdir)s/gstreamer-1.0/libgstdecklink.a', '%(libdir)s/gstreamer-1.0/libgstdecklink.la', ], Platform.DARWIN: [ '%(libdir)s/gstreamer-1.0/libgstapplemedia.a', '%(libdir)s/gstreamer-1.0/libgstapplemedia.la', '%(libdir)s/gstreamer-1.0/libgstshm.a', '%(libdir)s/gstreamer-1.0/libgstshm.la', '%(libdir)s/gstreamer-1.0/libgstdecklink.a', '%(libdir)s/gstreamer-1.0/libgstdecklink.la', ], Platform.IOS: [ '%(libdir)s/gstreamer-1.0/libgstapplemedia.a', '%(libdir)s/gstreamer-1.0/libgstapplemedia.la', '%(libdir)s/gstreamer-1.0/libgstshm.a', '%(libdir)s/gstreamer-1.0/libgstshm.la', ], Platform.ANDROID: [ '%(libdir)s/gstreamer-1.0/libgstopensles.a', '%(libdir)s/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): # 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['d3d11-math'] = 'enabled' self.meson_options['d3d12'] = 'disabled' self.meson_options['directsound'] = 'enabled' self.meson_options['winks'] = 'enabled' self.meson_options['winscreencap'] = 'enabled' if self.using_msvc(): 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') # WGC support requires Windows 11 SDK from Visual Studio self.meson_options['d3d11-wgc'] = 'enabled' # HLSL cross-compile is not supported self.meson_options['d3d11-hlsl-precompile'] = 'enabled' # D3D12 needs newer SDK than system installed one with helper library self.deps.append('directx-headers') self.enable_plugin('d3d12', 'sys') else: # mingw does not ship DirectXMath headers self.deps += ['directxmath'] self.files_libs += ['libgstd3d11-1.0'] self.files_plugins_devel += [ 'include/gstreamer-1.0/gst/d3d11', '%(libdir)s/gstreamer-1.0/include/gst/d3d11', '%(libdir)s/pkgconfig/gstreamer-d3d11-1.0.pc', ] # Decoder baseclass library for d3d11 and d3d12 plugins self.files_libs += ['libgstdxva-1.0'] self.enable_plugin('amfcodec', 'codecs') self.enable_plugin('qsv', 'codecs') self.enable_plugin('win32ipc', 'sys') self.enable_plugin('dwrite', 'sys') self.enable_plugin('qt6d3d11', 'qt6', 'qt6') 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', '%(libdir)s/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('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()