diff --git a/extra/gstreamer/0001-openaptx-Support-libfreeaptx.patch b/extra/gstreamer/0001-openaptx-Support-libfreeaptx.patch new file mode 100644 index 000000000..2ad54478b --- /dev/null +++ b/extra/gstreamer/0001-openaptx-Support-libfreeaptx.patch @@ -0,0 +1,76 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 7 Feb 2022 22:44:30 +0100 +Subject: [PATCH] openaptx: Support libfreeaptx + +[libfreeaptx][1] is a fork of libopenapt 0.2.0, used by pipewire. + +[1]: https://github.com/iamthehorker/libfreeaptx +--- + .../gst-plugins-bad/ext/openaptx/gstopenaptxdec.h | 4 ++++ + .../gst-plugins-bad/ext/openaptx/gstopenaptxenc.h | 4 ++++ + .../gst-plugins-bad/ext/openaptx/meson.build | 15 +++++++++++++-- + 3 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxdec.h b/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxdec.h +index 95b126c57ecb..081b194fb542 100644 +--- a/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxdec.h ++++ b/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxdec.h +@@ -24,7 +24,11 @@ + #include + #include + ++#ifdef USE_FREEAPTX ++#include ++#else + #include ++#endif + + G_BEGIN_DECLS + +diff --git a/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxenc.h b/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxenc.h +index ab80b61b7c94..4cf7e17b93af 100644 +--- a/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxenc.h ++++ b/subprojects/gst-plugins-bad/ext/openaptx/gstopenaptxenc.h +@@ -24,7 +24,11 @@ + #include + #include + ++#ifdef USE_FREEAPTX ++#include ++#else + #include ++#endif + + G_BEGIN_DECLS + +diff --git a/subprojects/gst-plugins-bad/ext/openaptx/meson.build b/subprojects/gst-plugins-bad/ext/openaptx/meson.build +index e361ef3b6c59..4db8fdbb1564 100644 +--- a/subprojects/gst-plugins-bad/ext/openaptx/meson.build ++++ b/subprojects/gst-plugins-bad/ext/openaptx/meson.build +@@ -4,12 +4,23 @@ openaptx_sources = [ + 'gstopenaptxenc.c', + ] + +-openaptx_dep = dependency('libopenaptx', version : '== 0.2.0', required : get_option('openaptx')) ++if not get_option('openaptx').allowed() ++ subdir_done() ++endif ++ ++openaptx_defines = [] ++ ++openaptx_dep = dependency('libfreeaptx', version : '>= 0.1.1', required : false) ++if openaptx_dep.found() ++ openaptx_defines += ['-DUSE_FREEAPTX'] ++else ++ openaptx_dep = dependency('libopenaptx', version : '== 0.2.0', required : get_option('openaptx')) ++endif + + if openaptx_dep.found() + gstopenaptx = library('gstopenaptx', + openaptx_sources, +- c_args : gst_plugins_bad_args, ++ c_args : gst_plugins_bad_args + openaptx_defines, + include_directories : [configinc], + dependencies : [gstaudio_dep, openaptx_dep], + install : true, diff --git a/extra/gstreamer/0002-wpe-Clean-up-build-script.patch b/extra/gstreamer/0002-wpe-Clean-up-build-script.patch new file mode 100644 index 000000000..7b699e1b4 --- /dev/null +++ b/extra/gstreamer/0002-wpe-Clean-up-build-script.patch @@ -0,0 +1,69 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 7 Feb 2022 22:48:29 +0100 +Subject: [PATCH] wpe: Clean up build script + +Use feature.require to check for gstgl and exit early if 'wpe' is +disabled (don't even check for wpe-webkit-1.1). +--- + .../gst-plugins-bad/ext/wpe/meson.build | 29 ++++++++++--------- + 1 file changed, 16 insertions(+), 13 deletions(-) + +diff --git a/subprojects/gst-plugins-bad/ext/wpe/meson.build b/subprojects/gst-plugins-bad/ext/wpe/meson.build +index 7637cb29f318..7d7edcfdf4a9 100644 +--- a/subprojects/gst-plugins-bad/ext/wpe/meson.build ++++ b/subprojects/gst-plugins-bad/ext/wpe/meson.build +@@ -1,37 +1,40 @@ ++wpe_feat = get_option('wpe').require(gstgl_dep.found(), ++ error_message : 'wpe plugin enabled but GL support was not detected') + +-if not gstgl_dep.found() +- if get_option('wpe').enabled() +- error('wpe plugin enabled but GL support was not detected') +- endif ++if not wpe_feat.allowed() + subdir_done() + endif + + wpe_dep = dependency('wpe-webkit-1.1', version : '>= 2.28', required : false) + if not wpe_dep.found() +- wpe_dep = dependency('wpe-webkit-1.0', version : '>= 2.28', required : get_option('wpe')) ++ wpe_dep = dependency('wpe-webkit-1.0', version : '>= 2.28', required : wpe_feat) + endif +-wpe_fdo_dep = dependency('wpebackend-fdo-1.0', version : '>= 1.8', required : get_option('wpe')) +-egl_dep = dependency('egl', required : get_option('wpe')) +-xkbcommon_dep = dependency('xkbcommon', version : '>= 0.8', required : get_option('wpe')) +-wl_server_dep = dependency('wayland-server', required : get_option('wpe')) ++wpe_fdo_dep = dependency('wpebackend-fdo-1.0', version : '>= 1.8', required : wpe_feat) ++egl_dep = dependency('egl', required : wpe_feat) ++xkbcommon_dep = dependency('xkbcommon', version : '>= 0.8', required : wpe_feat) ++wl_server_dep = dependency('wayland-server', required : wpe_feat) + +-if not wpe_dep.found() or not wpe_fdo_dep.found() or not egl_dep.found() or not xkbcommon_dep.found() ++if not (wpe_dep.found() and wpe_fdo_dep.found() and egl_dep.found() and xkbcommon_dep.found()) + subdir_done() + endif + ++giounix_dep = dependency('gio-unix-2.0', required: false) ++ + wpe_extension_install_dir = get_option('prefix') / get_option('libdir') / meson.project_name() / 'wpe-extension' + +-giounix_dep = dependency('gio-unix-2.0', required: false) + gstwpe = library('gstwpe', + ['WPEThreadedView.cpp', 'gstwpe.cpp', 'gstwpevideosrc.cpp', 'gstwpesrcbin.cpp'], +- dependencies : [egl_dep, wpe_dep, wpe_fdo_dep, gstallocators_dep, gstaudio_dep, gstvideo_dep, gstbase_dep, gstgl_dep, xkbcommon_dep, wl_server_dep, giounix_dep], +- cpp_args : gst_plugins_bad_args + ['-DHAVE_CONFIG_H=1', '-DWPE_EXTENSION_INSTALL_DIR=' + wpe_extension_install_dir], ++ dependencies : [egl_dep, wpe_dep, wpe_fdo_dep, gstallocators_dep, gstaudio_dep, gstvideo_dep, ++ gstbase_dep, gstgl_dep, xkbcommon_dep, wl_server_dep, giounix_dep], ++ cpp_args : gst_plugins_bad_args + ['-DHAVE_CONFIG_H=1', ++ '-DWPE_EXTENSION_INSTALL_DIR=' + wpe_extension_install_dir], + include_directories : [configinc], + install : true, + install_dir : plugins_install_dir) + + if giounix_dep.found() + subdir('wpe-extension') + endif ++ + pkgconfig.generate(gstwpe, install_dir : plugins_pkgconfig_install_dir) + plugins += [gstwpe] diff --git a/extra/gstreamer/PKGBUILD b/extra/gstreamer/PKGBUILD index 1aee0e2ba..1fc5ad98b 100644 --- a/extra/gstreamer/PKGBUILD +++ b/extra/gstreamer/PKGBUILD @@ -1,47 +1,739 @@ # Maintainer: Jan Alexander Steffens (heftig) # Contributor: Jan de Groot -# ALARM: Kevin Mihelich -# - remove valgrind makedepend +# ALARM: Kevin Mihelich +# - removed makedepend and gst-plugins-bad depend on svt-hevc +# - removed libgstsvthevcenc.so from gst-plugins-bad install list +# - meson with -D gst-plugins-bad:svthevcenc=disabled +# - removed gst-plug-msdk package, meson with -D gst-plugins-bad:msdk=disabled +# - !distcc - build is failing with distcc -pkgname=gstreamer -pkgver=1.18.5 +pkgbase=gstreamer +pkgname=( + gstreamer + gst-plugins-bad-libs # Split badaudio first + gst-plugins-base-libs + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugin-gtk + gst-plugin-opencv + gst-plugin-qmlgl + gst-plugin-va + gst-plugin-wpe + gst-plugins-ugly + gst-libav + gst-rtsp-server + gst-editing-services + gstreamer-vaapi + gst-python + gstreamer-docs +) +pkgver=1.20.0 pkgrel=1 -pkgdesc="Multimedia graph framework - core" +pkgdesc="Multimedia graph framework" url="https://gstreamer.freedesktop.org/" arch=(x86_64) license=(LGPL) -depends=(libxml2 glib2 libunwind libcap libelf python) -makedepends=(gobject-introspection git bash-completion meson gmp gsl gtk3) -_commit=71c213f99ad5c8fc8f36a26238483f2bdf7d846a # tags/1.18.5^0 -install=gstreamer.install -source=("git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git#commit=$_commit") -sha256sums=('SKIP') +options=(!distcc) +makedepends=( + # superproject + git meson + + # gstreamer + valgrind libunwind gobject-introspection bash-completion gtk3 libcap python + + # gst-plugins-base + cdparanoia graphene libvisual opus libtheora libxv sdl2 qt5-base qt5-tools + zlib libglvnd wayland wayland-protocols libx11 libgudev libdrm mesa orc + + # gst-plugins-good + nasm v4l-utils aalib flac jack2 lame libcaca libdv mpg123 libraw1394 + libavc1394 libiec61883 qt5-declarative qt5-x11extras qt5-wayland libpulse + libshout taglib twolame libvpx wavpack cairo libsoup3 + + # gst-plugins-bad + opencv vulkan-icd-loader vulkan-headers vulkan-validation-layers shaderc + libltc bluez-libs libavtp libbs2b bzip2 chromaprint libdca faac faad2 + libfdk-aac fluidsynth libgme libkate liblrdf ladspa libde265 lilv lv2 + libmicrodns mjpegtools libmpcdec neon openal libdvdnav rtmpdump sbc soundtouch + spandsp libsrtp zvbi libnice webrtc-audio-processing wildmidi + zxing-cpp zbar nettle libxml2 gsm libopenmpt wpewebkit libldac libfreeaptx + qrencode json-glib libva libxkbcommon-x11 + + # gst-plugins-ugly + a52dec opencore-amr libcdio libdvdread libmpeg2 libsidplay x264 + + # gst-libav + ffmpeg + + # gstreamer-vaapi + libxrandr + + # gst-python + python-gobject +) +checkdepends=(xorg-server-xvfb) +source=( + "git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git?signed#tag=$pkgver" + "https://gstreamer.freedesktop.org/src/gstreamer-docs/gstreamer-docs-$pkgver.tar.xz"{,.asc} + 0001-openaptx-Support-libfreeaptx.patch + 0002-wpe-Clean-up-build-script.patch +) +sha256sums=('SKIP' + '8c0cdf6faf99bb7ed9d54d5ea1bb31bfb58dcce77cbf7e17e54ca5d7c64ceb62' + 'SKIP' + 'dafd73f4264a027b207b2907d54f89f5c5731eab3f4806843878f29504f39b03' + 'bbb07e1e21d385b40a69a0f2ae70ca07ccb41adfa1d35d9648e2e16df7d6d59e') +validpgpkeys=(D637032E45B8C6585B9456565D2EEE6F6F349D7C) # Tim Müller pkgver() { - cd $pkgname - git describe --tags | sed 's/-/+/g' + cd gstreamer + git describe --tags | sed 's/[^-]*-g/r&/;s/-/+/g' } prepare() { - cd $pkgname + cd gstreamer + + # Build fixes + git apply -3 ../0001-openaptx-Support-libfreeaptx.patch + git apply -3 ../0002-wpe-Clean-up-build-script.patch + + # Fix linking with system orc + sed -i "s/get_option('orc')/false/" meson.build + + # Disable broken tests + sed -i "/subdir('tests')/d" subprojects/{gst-editing-services,gstreamer-vaapi}/meson.build + sed -i "/subdir('testsuite')/d" subprojects/gst-python/meson.build + sed -i "/'gst\/rtspserver'/d" subprojects/gst-rtsp-server/tests/check/meson.build + + # Workaround broken detection of underscore prefixes + # https://github.com/mesonbuild/meson/issues/5482 + sed -i 's/-DPREFIX/-UPREFIX/' subprojects/gst-plugins-good/gst/deinterlace/meson.build } build() { - arch-meson $pkgname build \ - -D doc=disabled \ - -D ptp-helper-permissions=capabilities \ - -D dbghelp=disabled \ - -D gobject-cast-checks=disabled \ - -D package-name="GStreamer (Arch Linux)" \ - -D package-origin="https://www.archlinux.org/" + local meson_options=( + -D devtools=disabled + -D doc=disabled + -D examples=disabled + -D gpl=enabled + -D gst-examples=disabled + -D libnice=disabled + -D vaapi=enabled + -D gstreamer:dbghelp=disabled + -D gstreamer:gobject-cast-checks=disabled + -D gstreamer:package-name="Arch Linux gstreamer $pkgver-$pkgrel" + -D gstreamer:package-origin="https://www.archlinux.org/" + -D gstreamer:ptp-helper-permissions=capabilities + -D gst-plugins-base:gobject-cast-checks=disabled + -D gst-plugins-base:package-name="Arch Linux gst-plugins-base $pkgver-$pkgrel" + -D gst-plugins-base:package-origin="https://www.archlinux.org/" + -D gst-plugins-base:tremor=disabled + -D gst-plugins-good:gobject-cast-checks=disabled + -D gst-plugins-good:package-name="Arch Linux gst-plugins-good $pkgver-$pkgrel" + -D gst-plugins-good:package-origin="https://www.archlinux.org/" + -D gst-plugins-good:rpicamsrc=disabled + -D gst-plugins-bad:directfb=disabled + -D gst-plugins-bad:flite=disabled + -D gst-plugins-bad:gobject-cast-checks=disabled + -D gst-plugins-bad:gs=disabled + -D gst-plugins-bad:iqa=disabled + -D gst-plugins-bad:isac=disabled + -D gst-plugins-bad:magicleap=disabled + -D gst-plugins-bad:msdk=disabled + -D gst-plugins-bad:onnx=disabled + -D gst-plugins-bad:openh264=disabled + -D gst-plugins-bad:openni2=disabled + -D gst-plugins-bad:opensles=disabled + -D gst-plugins-bad:package-name="Arch Linux gst-plugins-bad $pkgver-$pkgrel" + -D gst-plugins-bad:package-origin="https://www.archlinux.org/" + -D gst-plugins-bad:svthevcenc=disabled + -D gst-plugins-bad:tinyalsa=disabled + -D gst-plugins-bad:voaacenc=disabled + -D gst-plugins-bad:voamrwbenc=disabled + -D gst-plugins-bad:wasapi2=disabled + -D gst-plugins-bad:wasapi=disabled + -D gst-plugins-ugly:gobject-cast-checks=disabled + -D gst-plugins-ugly:package-name="Arch Linux gst-plugins-ugly $pkgver-$pkgrel" + -D gst-plugins-ugly:package-origin="https://www.archlinux.org/" + -D gst-libav:package-name="Arch Linux gst-libav $pkgver-$pkgrel" + -D gst-libav:package-origin="https://www.archlinux.org/" + -D gst-rtsp-server:gobject-cast-checks=disabled + -D gst-rtsp-server:package-name="Arch Linux gst-rtsp-server $pkgver-$pkgrel" + -D gst-rtsp-server:package-origin="https://www.archlinux.org/" + -D gst-editing-services:validate=disabled + -D gstreamer-vaapi:package-origin="https://www.archlinux.org/" + ) + + arch-meson gstreamer build "${meson_options[@]}" meson compile -C build } -check() { - meson test -C build --print-errorlogs +check() ( + mkdir -p -m 700 "${XDG_RUNTIME_DIR:=$PWD/runtime-dir}" + export XDG_RUNTIME_DIR + + # Flaky due to timeouts + xvfb-run -s '-nolisten local' \ + meson test -C build --print-errorlogs || : +) + +_install() { + local src dir + for src in "${files[@]}"; do + dir="$pkgdir/$(dirname "$src")" + mkdir -p "$dir" + mv -v "$src" "$dir" + done } -package() { - meson install -C build --destdir "$pkgdir" +package_gstreamer() { + pkgdesc+=" - core" + depends=(libxml2 glib2 libunwind libcap libelf) + optdepends=('python: gst-plugins-doc-cache-generator') + install=gstreamer.install + + DESTDIR="$srcdir/root" meson install -C build + + cd root; local files=( + usr/include/gstreamer-1.0/gst/{base,check,controller,net,*.h} + usr/lib/libgst{reamer,base,check,controller,net}-1.0.so* + usr/lib/pkgconfig/gstreamer{,-base,-check,-controller,-net}-1.0.pc + usr/lib/girepository-1.0/Gst{,Base,Check,Controller,Net}-1.0.typelib + usr/share/gir-1.0/Gst{,Base,Check,Controller,Net}-1.0.gir + + usr/lib/gstreamer-1.0/gst-{completion,ptp}-helper + usr/lib/gstreamer-1.0/gst-{hotdoc-plugins,plugin}-scanner + usr/lib/gstreamer-1.0/gst-plugins-doc-cache-generator + usr/lib/gstreamer-1.0/libgstcoreelements.so + usr/lib/gstreamer-1.0/libgstcoretracers.so + + usr/share/locale/*/LC_MESSAGES/gstreamer-1.0.mo + + usr/bin/gst-{inspect,launch,stats,tester,typefind}-1.0 + usr/share/man/man1/gst-{inspect,launch,stats,typefind}-1.0.1 + + usr/share/bash-completion/completions/gst-{inspect,launch}-1.0 + usr/share/bash-completion/helpers/gst + + usr/share/gdb/auto-load/usr/lib/libgstreamer-1.0.so*.py + usr/share/gstreamer-1.0/gdb/glib_gobject_helper.py + usr/share/gstreamer-1.0/gdb/gst_gdb.py + + usr/share/aclocal/gst-element-check-1.0.m4 + ); _install } + +package_gst-plugins-bad-libs() { + pkgdesc+=" - bad" + depends=( + "gst-plugins-base-libs=$pkgver" + orc libdrm libx11 libgudev libusb libxkbcommon-x11 + ) + + cd root; local files=( + usr/include/gstreamer-1.0/gst/audio/{audio-bad-prelude,gstnonstreamaudiodecoder,gstplanaraudioadapter}.h + usr/include/gstreamer-1.0/gst/{basecamerabinsrc,codecparsers,insertbin,interfaces,isoff,mpegts,play,player,sctp,transcoder,uridownloader,vulkan,wayland,webrtc} + usr/lib/libgst{adaptivedemux,badaudio,basecamerabinsrc,codecparsers,codecs,insertbin,isoff,mpegts,photography,play,player,sctp,transcoder,uridownloader,vulkan,wayland,webrtc}-1.0.so* + usr/lib/pkgconfig/gstreamer-{bad-audio,codecparsers,insertbin,mpegts,photography,play,player,sctp,transcoder,vulkan{,-wayland,-xcb},wayland,webrtc}-1.0.pc + usr/lib/girepository-1.0/Gst{BadAudio,Codecs,InsertBin,Mpegts,Play,Player,Transcoder,Vulkan{,Wayland,XCB},WebRTC}-1.0.typelib + usr/share/gir-1.0/Gst{BadAudio,Codecs,InsertBin,Mpegts,Play,Player,Transcoder,Vulkan{,Wayland,XCB},WebRTC}-1.0.gir + + usr/lib/pkgconfig/gstreamer-plugins-bad-1.0.pc + usr/lib/gstreamer-1.0/libgstaccurip.so + usr/lib/gstreamer-1.0/libgstadpcmdec.so + usr/lib/gstreamer-1.0/libgstadpcmenc.so + usr/lib/gstreamer-1.0/libgstaiff.so + usr/lib/gstreamer-1.0/libgstasfmux.so + usr/lib/gstreamer-1.0/libgstaudiobuffersplit.so + usr/lib/gstreamer-1.0/libgstaudiofxbad.so + usr/lib/gstreamer-1.0/libgstaudiolatency.so + usr/lib/gstreamer-1.0/libgstaudiomixmatrix.so + usr/lib/gstreamer-1.0/libgstaudiovisualizers.so + usr/lib/gstreamer-1.0/libgstautoconvert.so + usr/lib/gstreamer-1.0/libgstbayer.so + usr/lib/gstreamer-1.0/libgstbluez.so + usr/lib/gstreamer-1.0/libgstcamerabin.so + usr/lib/gstreamer-1.0/libgstcodecalpha.so + usr/lib/gstreamer-1.0/libgstcoloreffects.so + usr/lib/gstreamer-1.0/libgstdebugutilsbad.so + usr/lib/gstreamer-1.0/libgstdecklink.so + usr/lib/gstreamer-1.0/libgstdvb.so + usr/lib/gstreamer-1.0/libgstdvbsubenc.so + usr/lib/gstreamer-1.0/libgstdvbsuboverlay.so + usr/lib/gstreamer-1.0/libgstdvdspu.so + usr/lib/gstreamer-1.0/libgstfaceoverlay.so + usr/lib/gstreamer-1.0/libgstfbdevsink.so + usr/lib/gstreamer-1.0/libgstfestival.so + usr/lib/gstreamer-1.0/libgstfieldanalysis.so + usr/lib/gstreamer-1.0/libgstfreeverb.so + usr/lib/gstreamer-1.0/libgstfrei0r.so + usr/lib/gstreamer-1.0/libgstgaudieffects.so + usr/lib/gstreamer-1.0/libgstgdp.so + usr/lib/gstreamer-1.0/libgstgeometrictransform.so + usr/lib/gstreamer-1.0/libgstid3tag.so + usr/lib/gstreamer-1.0/libgstinter.so + usr/lib/gstreamer-1.0/libgstinterlace.so + usr/lib/gstreamer-1.0/libgstipcpipeline.so + usr/lib/gstreamer-1.0/libgstivfparse.so + usr/lib/gstreamer-1.0/libgstivtc.so + usr/lib/gstreamer-1.0/libgstjp2kdecimator.so + usr/lib/gstreamer-1.0/libgstjpegformat.so + usr/lib/gstreamer-1.0/libgstkms.so + usr/lib/gstreamer-1.0/libgstlegacyrawparse.so + usr/lib/gstreamer-1.0/libgstmidi.so + usr/lib/gstreamer-1.0/libgstmpegpsdemux.so + usr/lib/gstreamer-1.0/libgstmpegpsmux.so + usr/lib/gstreamer-1.0/libgstmpegtsdemux.so + usr/lib/gstreamer-1.0/libgstmpegtsmux.so + usr/lib/gstreamer-1.0/libgstmxf.so + usr/lib/gstreamer-1.0/libgstnetsim.so + usr/lib/gstreamer-1.0/libgstnvcodec.so + usr/lib/gstreamer-1.0/libgstpcapparse.so + usr/lib/gstreamer-1.0/libgstpnm.so + usr/lib/gstreamer-1.0/libgstproxy.so + usr/lib/gstreamer-1.0/libgstremovesilence.so + usr/lib/gstreamer-1.0/libgstrfbsrc.so + usr/lib/gstreamer-1.0/libgstrist.so + usr/lib/gstreamer-1.0/libgstrtmp2.so + usr/lib/gstreamer-1.0/libgstrtpmanagerbad.so + usr/lib/gstreamer-1.0/libgstrtponvif.so + usr/lib/gstreamer-1.0/libgstsdpelem.so + usr/lib/gstreamer-1.0/libgstsegmentclip.so + usr/lib/gstreamer-1.0/libgstshm.so + usr/lib/gstreamer-1.0/libgstsiren.so + usr/lib/gstreamer-1.0/libgstsmooth.so + usr/lib/gstreamer-1.0/libgstspeed.so + usr/lib/gstreamer-1.0/libgstsubenc.so + usr/lib/gstreamer-1.0/libgstswitchbin.so + usr/lib/gstreamer-1.0/libgsttranscode.so + usr/lib/gstreamer-1.0/libgstuvch264.so + usr/lib/gstreamer-1.0/libgstv4l2codecs.so + usr/lib/gstreamer-1.0/libgstvideofiltersbad.so + usr/lib/gstreamer-1.0/libgstvideoframe_audiolevel.so + usr/lib/gstreamer-1.0/libgstvideoparsersbad.so + usr/lib/gstreamer-1.0/libgstvideosignal.so + usr/lib/gstreamer-1.0/libgstvmnc.so + usr/lib/gstreamer-1.0/libgsty4mdec.so + + usr/share/gstreamer-1.0/encoding-profiles + usr/share/gstreamer-1.0/presets/GstFreeverb.prs + + usr/share/locale/*/LC_MESSAGES/gst-plugins-bad-1.0.mo + + usr/bin/gst-transcoder-1.0 + ); _install +} + +package_gst-plugins-base-libs() { + pkgdesc+=" - base" + depends=( + "gstreamer=$pkgver" + orc libxv iso-codes libgudev libgl mesa + ) + + cd root; local files=( + usr/include/gstreamer-1.0/gst/{allocators,app,audio,fft,gl,pbutils,riff,rtp,rtsp,sdp,tag,video} + usr/lib/libgst{allocators,app,audio,fft,gl,pbutils,riff,rtp,rtsp,sdp,tag,video}-1.0.so* + usr/lib/pkgconfig/gstreamer-{allocators,app,audio,fft,gl{,-egl,-prototypes,-wayland,-x11},pbutils,riff,rtp,rtsp,sdp,tag,video}-1.0.pc + usr/lib/girepository-1.0/Gst{Allocators,App,Audio,GL{,EGL,Wayland,X11},Pbutils,Rtp,Rtsp,Sdp,Tag,Video}-1.0.typelib + usr/share/gir-1.0/Gst{Allocators,App,Audio,GL{,EGL,Wayland,X11},Pbutils,Rtp,Rtsp,Sdp,Tag,Video}-1.0.gir + + usr/lib/pkgconfig/gstreamer-plugins-base-1.0.pc + usr/lib/gstreamer-1.0/include/gst/gl/gstglconfig.h + usr/lib/gstreamer-1.0/libgstadder.so + usr/lib/gstreamer-1.0/libgstapp.so + usr/lib/gstreamer-1.0/libgstaudioconvert.so + usr/lib/gstreamer-1.0/libgstaudiomixer.so + usr/lib/gstreamer-1.0/libgstaudiorate.so + usr/lib/gstreamer-1.0/libgstaudioresample.so + usr/lib/gstreamer-1.0/libgstaudiotestsrc.so + usr/lib/gstreamer-1.0/libgstcompositor.so + usr/lib/gstreamer-1.0/libgstencoding.so + usr/lib/gstreamer-1.0/libgstgio.so + usr/lib/gstreamer-1.0/libgstoverlaycomposition.so + usr/lib/gstreamer-1.0/libgstpbtypes.so + usr/lib/gstreamer-1.0/libgstplayback.so + usr/lib/gstreamer-1.0/libgstrawparse.so + usr/lib/gstreamer-1.0/libgstsubparse.so + usr/lib/gstreamer-1.0/libgsttcp.so + usr/lib/gstreamer-1.0/libgsttypefindfunctions.so + usr/lib/gstreamer-1.0/libgstvideoconvert.so + usr/lib/gstreamer-1.0/libgstvideorate.so + usr/lib/gstreamer-1.0/libgstvideoscale.so + usr/lib/gstreamer-1.0/libgstvideotestsrc.so + usr/lib/gstreamer-1.0/libgstvolume.so + usr/lib/gstreamer-1.0/libgstximagesink.so + usr/lib/gstreamer-1.0/libgstxvimagesink.so + + usr/share/locale/*/LC_MESSAGES/gst-plugins-base-1.0.mo + + usr/bin/gst-{device-monitor,discoverer,play}-1.0 + usr/share/man/man1/gst-{device-monitor,discoverer,play}-1.0.1 + + usr/share/gst-plugins-base + ); _install +} + +package_gst-plugins-base() { + pkgdesc+=" - base plugins" + depends=( + "gst-plugins-base-libs=$pkgver" + alsa-lib cdparanoia libvisual libvorbis libtheora pango opus graphene libpng + libjpeg + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstalsa.so + usr/lib/gstreamer-1.0/libgstcdparanoia.so + usr/lib/gstreamer-1.0/libgstlibvisual.so + usr/lib/gstreamer-1.0/libgstogg.so + usr/lib/gstreamer-1.0/libgstopengl.so + usr/lib/gstreamer-1.0/libgstopus.so + usr/lib/gstreamer-1.0/libgstpango.so + usr/lib/gstreamer-1.0/libgsttheora.so + usr/lib/gstreamer-1.0/libgstvorbis.so + ); _install +} + +package_gst-plugins-good() { + pkgdesc+=" - good plugins" + depends=( + "gst-plugins-base-libs=$pkgver" + libpulse libsoup3 gst-plugins-base-libs wavpack aalib taglib libdv libshout + libvpx gdk-pixbuf2 libcaca libavc1394 libiec61883 libxdamage v4l-utils cairo + libgudev speex flac libraw1394 lame mpg123 twolame + libjack.so + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgst1394.so + usr/lib/gstreamer-1.0/libgstaasink.so + usr/lib/gstreamer-1.0/libgstalaw.so + usr/lib/gstreamer-1.0/libgstalpha.so + usr/lib/gstreamer-1.0/libgstalphacolor.so + usr/lib/gstreamer-1.0/libgstapetag.so + usr/lib/gstreamer-1.0/libgstaudiofx.so + usr/lib/gstreamer-1.0/libgstaudioparsers.so + usr/lib/gstreamer-1.0/libgstauparse.so + usr/lib/gstreamer-1.0/libgstautodetect.so + usr/lib/gstreamer-1.0/libgstavi.so + usr/lib/gstreamer-1.0/libgstcacasink.so + usr/lib/gstreamer-1.0/libgstcairo.so + usr/lib/gstreamer-1.0/libgstcutter.so + usr/lib/gstreamer-1.0/libgstdebug.so + usr/lib/gstreamer-1.0/libgstdeinterlace.so + usr/lib/gstreamer-1.0/libgstdtmf.so + usr/lib/gstreamer-1.0/libgstdv.so + usr/lib/gstreamer-1.0/libgsteffectv.so + usr/lib/gstreamer-1.0/libgstequalizer.so + usr/lib/gstreamer-1.0/libgstflac.so + usr/lib/gstreamer-1.0/libgstflv.so + usr/lib/gstreamer-1.0/libgstflxdec.so + usr/lib/gstreamer-1.0/libgstgdkpixbuf.so + usr/lib/gstreamer-1.0/libgstgoom.so + usr/lib/gstreamer-1.0/libgstgoom2k1.so + usr/lib/gstreamer-1.0/libgsticydemux.so + usr/lib/gstreamer-1.0/libgstid3demux.so + usr/lib/gstreamer-1.0/libgstimagefreeze.so + usr/lib/gstreamer-1.0/libgstinterleave.so + usr/lib/gstreamer-1.0/libgstisomp4.so + usr/lib/gstreamer-1.0/libgstjack.so + usr/lib/gstreamer-1.0/libgstjpeg.so + usr/lib/gstreamer-1.0/libgstlame.so + usr/lib/gstreamer-1.0/libgstlevel.so + usr/lib/gstreamer-1.0/libgstmatroska.so + usr/lib/gstreamer-1.0/libgstmonoscope.so + usr/lib/gstreamer-1.0/libgstmpg123.so + usr/lib/gstreamer-1.0/libgstmulaw.so + usr/lib/gstreamer-1.0/libgstmultifile.so + usr/lib/gstreamer-1.0/libgstmultipart.so + usr/lib/gstreamer-1.0/libgstnavigationtest.so + usr/lib/gstreamer-1.0/libgstoss4.so + usr/lib/gstreamer-1.0/libgstossaudio.so + usr/lib/gstreamer-1.0/libgstpng.so + usr/lib/gstreamer-1.0/libgstpulseaudio.so + usr/lib/gstreamer-1.0/libgstreplaygain.so + usr/lib/gstreamer-1.0/libgstrtp.so + usr/lib/gstreamer-1.0/libgstrtpmanager.so + usr/lib/gstreamer-1.0/libgstrtsp.so + usr/lib/gstreamer-1.0/libgstshapewipe.so + usr/lib/gstreamer-1.0/libgstshout2.so + usr/lib/gstreamer-1.0/libgstsmpte.so + usr/lib/gstreamer-1.0/libgstsoup.so + usr/lib/gstreamer-1.0/libgstspectrum.so + usr/lib/gstreamer-1.0/libgstspeex.so + usr/lib/gstreamer-1.0/libgsttaglib.so + usr/lib/gstreamer-1.0/libgsttwolame.so + usr/lib/gstreamer-1.0/libgstudp.so + usr/lib/gstreamer-1.0/libgstvideo4linux2.so + usr/lib/gstreamer-1.0/libgstvideobox.so + usr/lib/gstreamer-1.0/libgstvideocrop.so + usr/lib/gstreamer-1.0/libgstvideofilter.so + usr/lib/gstreamer-1.0/libgstvideomixer.so + usr/lib/gstreamer-1.0/libgstvpx.so + usr/lib/gstreamer-1.0/libgstwavenc.so + usr/lib/gstreamer-1.0/libgstwavpack.so + usr/lib/gstreamer-1.0/libgstwavparse.so + usr/lib/gstreamer-1.0/libgstximagesrc.so + usr/lib/gstreamer-1.0/libgsty4menc.so + + usr/share/gstreamer-1.0/presets/GstIirEqualizer{3,10}Bands.prs + usr/share/gstreamer-1.0/presets/Gst{QTMux,VP8Enc}.prs + + usr/share/locale/*/LC_MESSAGES/gst-plugins-good-1.0.mo + ); _install +} + +package_gst-plugins-bad() { + pkgdesc+=" - bad plugins" + depends=( + "gst-plugins-bad-libs=$pkgver" + aom libass libbs2b bzip2 chromaprint pango lcms2 curl libxml2 libdc1394 + libde265 openssl libdca faac faad2 libfdk-aac fluidsynth libgme nettle + libkate liblrdf lilv libmodplug mjpegtools libmpcdec neon openal openexr + openjpeg2 opus libdvdnav libdvdread librsvg rtmpdump sbc libsndfile libltc + soundtouch spandsp srt libsrtp zvbi vulkan-icd-loader libxcb wayland libwebp + libnice webrtc-audio-processing wildmidi x265 zbar gsm libopenmpt libldac + libfreeaptx qrencode json-glib libavtp libmicrodns zxing-cpp + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstaes.so + usr/lib/gstreamer-1.0/libgstaom.so + usr/lib/gstreamer-1.0/libgstassrender.so + usr/lib/gstreamer-1.0/libgstavtp.so + usr/lib/gstreamer-1.0/libgstbs2b.so + usr/lib/gstreamer-1.0/libgstbz2.so + usr/lib/gstreamer-1.0/libgstchromaprint.so + usr/lib/gstreamer-1.0/libgstclosedcaption.so + usr/lib/gstreamer-1.0/libgstcolormanagement.so + usr/lib/gstreamer-1.0/libgstcurl.so + usr/lib/gstreamer-1.0/libgstdash.so + usr/lib/gstreamer-1.0/libgstdc1394.so + usr/lib/gstreamer-1.0/libgstde265.so + usr/lib/gstreamer-1.0/libgstdtls.so + usr/lib/gstreamer-1.0/libgstdtsdec.so + usr/lib/gstreamer-1.0/libgstfaac.so + usr/lib/gstreamer-1.0/libgstfaad.so + usr/lib/gstreamer-1.0/libgstfdkaac.so + usr/lib/gstreamer-1.0/libgstfluidsynthmidi.so + usr/lib/gstreamer-1.0/libgstgme.so + usr/lib/gstreamer-1.0/libgstgsm.so + usr/lib/gstreamer-1.0/libgsthls.so + usr/lib/gstreamer-1.0/libgstkate.so + usr/lib/gstreamer-1.0/libgstladspa.so + usr/lib/gstreamer-1.0/libgstldac.so + usr/lib/gstreamer-1.0/libgstlv2.so + usr/lib/gstreamer-1.0/libgstmicrodns.so + usr/lib/gstreamer-1.0/libgstmodplug.so + usr/lib/gstreamer-1.0/libgstmpeg2enc.so + usr/lib/gstreamer-1.0/libgstmplex.so + usr/lib/gstreamer-1.0/libgstmusepack.so + usr/lib/gstreamer-1.0/libgstneonhttpsrc.so + usr/lib/gstreamer-1.0/libgstopenal.so + usr/lib/gstreamer-1.0/libgstopenaptx.so + usr/lib/gstreamer-1.0/libgstopenexr.so + usr/lib/gstreamer-1.0/libgstopenjpeg.so + usr/lib/gstreamer-1.0/libgstopenmpt.so + usr/lib/gstreamer-1.0/libgstopusparse.so + usr/lib/gstreamer-1.0/libgstqroverlay.so + usr/lib/gstreamer-1.0/libgstresindvd.so + usr/lib/gstreamer-1.0/libgstrsvg.so + usr/lib/gstreamer-1.0/libgstrtmp.so + usr/lib/gstreamer-1.0/libgstsbc.so + usr/lib/gstreamer-1.0/libgstsctp.so + usr/lib/gstreamer-1.0/libgstsmoothstreaming.so + usr/lib/gstreamer-1.0/libgstsndfile.so + usr/lib/gstreamer-1.0/libgstsoundtouch.so + usr/lib/gstreamer-1.0/libgstspandsp.so + usr/lib/gstreamer-1.0/libgstsrt.so + usr/lib/gstreamer-1.0/libgstsrtp.so + usr/lib/gstreamer-1.0/libgstteletext.so + usr/lib/gstreamer-1.0/libgsttimecode.so + usr/lib/gstreamer-1.0/libgstttmlsubs.so + usr/lib/gstreamer-1.0/libgstvulkan.so + usr/lib/gstreamer-1.0/libgstwaylandsink.so + usr/lib/gstreamer-1.0/libgstwebp.so + usr/lib/gstreamer-1.0/libgstwebrtc.so + usr/lib/gstreamer-1.0/libgstwebrtcdsp.so + usr/lib/gstreamer-1.0/libgstwildmidi.so + usr/lib/gstreamer-1.0/libgstx265.so + usr/lib/gstreamer-1.0/libgstzbar.so + usr/lib/gstreamer-1.0/libgstzxing.so + ); _install +} + +package_gst-plugin-gtk() { + pkgdesc+=" - gtk plugin" + depends=("gst-plugins-base-libs=$pkgver" gtk3) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstgtk.so + ); _install +} + +package_gst-plugin-opencv() { + pkgdesc+=" - opencv plugin" + depends=("gst-plugins-base-libs=$pkgver" opencv) + + cd root; local files=( + usr/include/gstreamer-1.0/gst/opencv + usr/lib/libgstopencv-1.0.so* + + usr/lib/gstreamer-1.0/libgstopencv.so + ); _install +} + +package_gst-plugin-qmlgl() { + pkgdesc+=" - qmlgl plugin" + depends=( + "gst-plugins-base-libs=$pkgver" + qt5-declarative qt5-x11extras qt5-wayland + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstqmlgl.so + ); _install +} + +package_gst-plugin-va() { + pkgdesc+=" - va plugin" + depends=("gst-plugins-bad-libs=$pkgver" libva) + + cd root; local files=( + usr/lib/libgstva-1.0.so* + usr/lib/pkgconfig/gstreamer-va-1.0.pc + + usr/lib/gstreamer-1.0/libgstva.so + ); _install +} + +package_gst-plugin-wpe() { + pkgdesc+=" - wpe plugin" + depends=("gst-plugins-base-libs=$pkgver" wpewebkit) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstwpe.so + usr/lib/gst-plugins-bad/wpe-extension/libgstwpeextension.so + ); _install +} + +package_gst-plugins-ugly() { + pkgdesc+=" - ugly plugins" + depends=( + "gst-plugins-base-libs=$pkgver" + libdvdread libmpeg2 a52dec libsidplay libcdio x264 opencore-amr + ) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgsta52dec.so + usr/lib/gstreamer-1.0/libgstamrnb.so + usr/lib/gstreamer-1.0/libgstamrwbdec.so + usr/lib/gstreamer-1.0/libgstasf.so + usr/lib/gstreamer-1.0/libgstcdio.so + usr/lib/gstreamer-1.0/libgstdvdlpcmdec.so + usr/lib/gstreamer-1.0/libgstdvdread.so + usr/lib/gstreamer-1.0/libgstdvdsub.so + usr/lib/gstreamer-1.0/libgstmpeg2dec.so + usr/lib/gstreamer-1.0/libgstrealmedia.so + usr/lib/gstreamer-1.0/libgstsid.so + usr/lib/gstreamer-1.0/libgstx264.so + usr/lib/gstreamer-1.0/libgstxingmux.so + + usr/share/gstreamer-1.0/presets/Gst{Amrnb,X264}Enc.prs + + usr/share/locale/*/LC_MESSAGES/gst-plugins-ugly-1.0.mo + ); _install +} + +package_gst-libav() { + pkgdesc+=" - libav plugin" + depends=("gst-plugins-base-libs=$pkgver" bzip2 ffmpeg) + provides=("gst-ffmpeg=$pkgver") + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstlibav.so + ); _install +} + +package_gst-rtsp-server() { + pkgdesc+=" - rtsp server" + depends=("gst-plugins-base-libs=$pkgver") + + cd root; local files=( + usr/include/gstreamer-1.0/gst/rtsp-server + usr/lib/libgstrtspserver-1.0.so* + usr/lib/pkgconfig/gstreamer-rtsp-server-1.0.pc + usr/lib/girepository-1.0/GstRtspServer-1.0.typelib + usr/share/gir-1.0/GstRtspServer-1.0.gir + + usr/lib/gstreamer-1.0/libgstrtspclientsink.so + ); _install +} + +package_gst-editing-services() { + pkgdesc+=" - editing services" + depends=("gst-plugins-base-libs=$pkgver" python) + + cd root; local files=( + usr/include/gstreamer-1.0/ges + usr/lib/libges-1.0.so* + usr/lib/pkgconfig/gst-editing-services-1.0.pc + usr/lib/girepository-1.0/GES-1.0.typelib + usr/share/gir-1.0/GES-1.0.gir + + usr/lib/gstreamer-1.0/libgstges.so + usr/lib/gstreamer-1.0/libgstnle.so + + usr/lib/python*/site-packages/gi/overrides/GES.py + + usr/bin/ges-launch-1.0 + usr/share/man/man1/ges-launch-1.0.1 + + usr/share/bash-completion/completions/ges-launch-1.0 + ); _install + + python -m compileall -d /usr/lib "$pkgdir/usr/lib" + python -O -m compileall -d /usr/lib "$pkgdir/usr/lib" +} + +package_gstreamer-vaapi() { + pkgdesc+=" - vaapi plugin" + depends=("gst-plugins-bad-libs=$pkgver" libva libxrandr) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstvaapi.so + ); _install +} + +package_gst-python() { + pkgdesc+=" - python plugin" + depends=("gst-plugins-base-libs=$pkgver" python-gobject) + + cd root; local files=( + usr/lib/gstreamer-1.0/libgstpython.so + usr/lib/python*/site-packages/gi/overrides + ); _install + + python -m compileall -d /usr/lib "$pkgdir/usr/lib" + python -O -m compileall -d /usr/lib "$pkgdir/usr/lib" +} + +package_gstreamer-docs() { + pkgdesc+=" - documentation" + license=(GPL3 LGPL custom:BSD custom:CC-BY-SA-4.0 custom:MIT custom:OPL) + + # make sure there are no files left to install + find root -depth -print0 | xargs -0 rmdir + + cd gstreamer-docs-$pkgver + + mkdir -p "$pkgdir/usr/share" + cp -a devhelp "$pkgdir/usr/share/devhelp" + + install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 COPYING LICENSE* +} + +# vim:set sw=2 et: