# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - removed makedepend and gst-plugins-bad depend on svt-hevc
#  - removed makedepend and gst-plugins-bad depend on svt-av1, meson with -D gst-plugins-bad:svtav1=disabled
#  - 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
#  - removed gst-plug-qsv package, meson with -D gst-plugins-bad:qsv=disabled
#  - removed gst-plugin-onnx package, meson with -D gst-plugins-bad:onnx=disabled
#  - removed makedepend on onnxruntime
#  - meson with -D gst-plugins-bad:mfx_api=auto
#  - !distcc - build is failing with distcc

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-plugins-ugly
  gst-libav
  gst-plugin-gtk
  gst-plugin-opencv
  gst-plugin-qml6
  gst-plugin-qmlgl
  gst-plugin-va
  gst-plugin-wpe
  gst-devtools-libs
  gst-devtools
  gst-rtsp-server
  gst-editing-services
  gstreamer-vaapi
  gst-python
  gstreamer-docs
)
pkgver=1.24.9
pkgrel=2
pkgdesc="Multimedia graph framework"
url="https://gstreamer.freedesktop.org/"
arch=(x86_64)
options=(!distcc)
license=(LGPL-2.1-or-later)
makedepends=(
  a52dec
  aalib
  alsa-lib
  aom
  bash-completion
  bluez-libs
  bzip2
  cairo
  cdparanoia
  chromaprint
  curl
  faac
  faad2
  ffmpeg
  flac
  fluidsynth
  gcc-libs
  gdk-pixbuf2
  git
  glib2
  glib2-devel
  glibc
  gobject-introspection
  graphene
  gsm
  gtk3
  hicolor-icon-theme
  imath
  iso-codes
  jack2
  json-glib
  ladspa
  lame
  lcms2
  libass
  libavc1394
  libavtp
  libbs2b
  libcaca
  libcap
  libcdio
  libdc1394
  libdca
  libde265
  libdrm
  libdv
  libdvdnav
  libdvdread
  libelf
  libfdk-aac
  libfreeaptx
  libglvnd
  libgme
  libgudev
  libiec61883
  libjpeg-turbo
  liblc3
  libldac
  liblrdf
  libltc
  libmicrodns
  libmodplug
  libmpcdec
  libmpeg2
  libnice
  libogg
  libopenmpt
  libpng
  libpulse
  libraw1394
  librsvg
  libshout
  libsndfile
  libsoup3
  libsrtp
  libtheora
  libunwind
  libusb
  libva
  libvorbis
  libvpl
  libvpx
  libwebp
  libwpe
  libx11
  libxcb
  libxdamage
  libxext
  libxfixes
  libxi
  libxkbcommon
  libxkbcommon-x11
  libxml2
  libxrandr
  libxtst
  libxv
  lilv
  lv2
  mesa
  meson
  mjpegtools
  mpg123
  nasm
  neon
  nettle
  openal
  opencore-amr
  opencv
  openexr
  openh264
  openjpeg2
  openmpi
  openssl
  opentimelineio
  opus
  orc
  pango
  python
  python-cairo
  python-gobject
  python-lxml
  python-setuptools
  qrencode
  qt5-base
  qt5-declarative
  qt5-tools
  qt5-wayland
  qt5-x11extras
  qt6-base
  qt6-declarative
  qt6-shadertools
  qt6-tools
  qt6-wayland
  rtmpdump
  rust
  sbc
  sdl2
  shaderc
  soundtouch
  spandsp
  speex
  srt
  systemd-libs
  taglib
  twolame
  v4l-utils
  valgrind
  vulkan-headers
  vulkan-icd-loader
  vulkan-validation-layers
  wavpack
  wayland
  wayland-protocols
  webrtc-audio-processing-1
  wildmidi
  wpebackend-fdo
  wpewebkit
  x264
  x265
  zbar
  zlib
  zvbi
  zxing-cpp
)
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-HACK-meson-Disable-broken-tests.patch
  0002-x265enc-Unbreak-build-with-x265-4.0.patch
)
b2sums=('53c72d3d88d48ab5bfe114f0d5ae8e224469811552000cba8952b8f64e8b283266bc6a397fc72586acce94439baba1a4b0ede17190e07eae83c2104ef6117461'
        '45a454b6b53a16b89cf1e9bac5928f7886e666b0c82fa0cc9610a09bf35871424f291e8bdd1ae4f7fba6e18a8c98c846a2d8024b9df3ce3043e8074b912e58ff'
        'SKIP'
        'b58019ca02e388925af02a98d6cc7b2c7f67692bb25b7d947f0759669c13027a069cbadd20c1119b98020085341199b5a7085ba32cc28777ed60bd2a2647d845'
        '23596f6e5ba9628629f9fca36e3518427ffacdc54505224b4a6e6f039bb3fc168e20093c645b1c093ceb8280fe549a2f6d2af857afad55c28fcc5f9f26917e44')
validpgpkeys=(
  D637032E45B8C6585B9456565D2EEE6F6F349D7C # Tim Müller <tim@gstreamer-foundation.org>
)

prepare() {
  cd gstreamer

  # Disable broken tests
  git apply -3 ../0001-HACK-meson-Disable-broken-tests.patch

  # Fix build with x265 4.0
  git apply -3 ../0002-x265enc-Unbreak-build-with-x265-4.0.patch
}

build() {
  local meson_options=(
    -D examples=disabled
    -D gobject-cast-checks=disabled
    -D gpl=enabled
    -D gst-devtools:debug_viewer=enabled
    -D gst-examples=disabled
    -D gst-plugins-bad:aja=disabled
    -D gst-plugins-bad:amfcodec=disabled
    -D gst-plugins-bad:directfb=disabled
    -D gst-plugins-bad:directshow=disabled
    -D gst-plugins-bad:directsound=disabled
    -D gst-plugins-bad:flite=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:svtav1=disabled
    -D gst-plugins-bad:svthevcenc=disabled
    -D gst-plugins-bad:mfx_api=auto
    -D gst-plugins-bad:onnx=disabled
    -D gst-plugins-bad:openni2=disabled
    -D gst-plugins-bad:opensles=disabled
    -D gst-plugins-bad:qt6d3d11=disabled
    -D gst-plugins-bad:qsv=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-bad:wic=disabled
    -D gst-plugins-bad:win32ipc=disabled
    -D gst-plugins-base:libvisual=disabled
    -D gst-plugins-base:tremor=disabled
    -D gst-plugins-good:rpicamsrc=disabled
    -D gst-plugins-ugly:sidplay=disabled
    -D gstreamer:dbghelp=disabled
    -D gstreamer:ptp-helper-permissions=capabilities
    -D libnice=disabled
    -D orc-source=system
    -D package-name="Arch Linux GStreamer ${epoch:+$epoch:}$pkgver-$pkgrel"
    -D package-origin="https://www.archlinux.org/"
    -D vaapi=enabled
  )

  # https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3197
  export GI_SCANNER_DISABLE_CACHE=1

  arch-meson gstreamer build "${meson_options[@]}"
  meson compile -C build
}

check() (
  export XDG_RUNTIME_DIR="$PWD/runtime-dir"
  mkdir -p -m 700 "$XDG_RUNTIME_DIR"

  export NO_AT_BRIDGE=1 GTK_A11Y=none

  # Flaky due to timeouts
  xvfb-run -s "-nolisten local" \
    meson test -C build --print-errorlogs -t 5
)

_install() {
  local src dir
  for src in "${files[@]}"; do
    dir="$pkgdir/$(dirname "$src")"
    mkdir -p "$dir"
    mv -v "$src" "$dir"
  done
}

package_gstreamer() {
  pkgdesc+=" - core"
  depends=(
    gcc-libs
    glib2
    glibc
    libcap
    libelf
    libunwind
  )
  optdepends=("python: gst-plugins-doc-cache-generator")
  install=gstreamer.install

  meson install -C build --destdir "$srcdir/root"

  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-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    gcc-libs
    glib2
    glibc
    libdrm
    libglvnd
    libgudev
    libnice
    libusb
    libva
    libx11
    libxcb
    libxkbcommon
    libxkbcommon-x11
    mesa
    orc
    vulkan-icd-loader
    wayland
    zlib
  )

  cd root; local files=(
    usr/include/gstreamer-1.0/gst/audio/{audio-bad-prelude,gstnonstreamaudiodecoder,gstplanaraudioadapter}.h
    usr/include/gstreamer-1.0/gst/{analytics,basecamerabinsrc,codecparsers,cuda,insertbin,interfaces,isoff,mpegts,mse,play,player,sctp,transcoder,uridownloader,va,vulkan,wayland,webrtc}
    usr/lib/libgst{adaptivedemux,analytics,badaudio,basecamerabinsrc,codecparsers,codecs,cuda,dxva,insertbin,isoff,mpegts,mse}-1.0.so*
    usr/lib/libgst{photography,play,player,sctp,transcoder,uridownloader,va,vulkan,wayland,webrtc,webrtcnice}-1.0.so*
    usr/lib/pkgconfig/gstreamer-{analytics,bad-audio,codecparsers,cuda,insertbin,mpegts,mse,photography,play,player,sctp,transcoder,vulkan{,-wayland,-xcb},va,wayland,webrtc{,-nice}}-1.0.pc
    usr/lib/girepository-1.0/{CudaGst,Gst{Analytics,BadAudio,Codecs,Cuda,Dxva,InsertBin,Mpegts,Mse,Play,Player,Transcoder,Va,Vulkan{,Wayland,XCB},WebRTC}}-1.0.typelib
    usr/share/gir-1.0/{CudaGst,Gst{Analytics,BadAudio,Codecs,Cuda,Dxva,InsertBin,Mpegts,Mse,Play,Player,Transcoder,Va,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/libgstcodectimestamper.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/libgstinsertbin.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/libgstmse.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/libgstunixfd.so
    usr/lib/gstreamer-1.0/libgstuvcgadget.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/libgstvulkan.so
    usr/lib/gstreamer-1.0/libgstwaylandsink.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-$pkgrel"
    glib2
    glibc
    iso-codes
    libdrm
    libglvnd
    libgudev
    libx11
    libxcb
    libxext
    libxi
    libxv
    mesa
    orc
    wayland
    zlib
  )

  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/libgstbasedebug.so
    usr/lib/gstreamer-1.0/libgstcompositor.so
    usr/lib/gstreamer-1.0/libgstdsd.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/libgstvideoconvertscale.so
    usr/lib/gstreamer-1.0/libgstvideorate.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-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    alsa-lib
    cairo
    cdparanoia
    glib2
    glibc
    graphene
    libjpeg-turbo
    libogg
    libpng
    libtheora
    libvorbis
    libx11
    opus
    pango
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstalsa.so
    usr/lib/gstreamer-1.0/libgstcdparanoia.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-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    aalib
    bzip2
    cairo
    flac
    gcc-libs
    gdk-pixbuf2
    glib2
    glibc
    lame
    libavc1394
    libcaca
    libdv
    libgudev
    libiec61883
    libjpeg-turbo
    libpng
    libpulse
    libraw1394
    libshout
    libsoup3
    libvpx
    libx11
    libxdamage
    libxext
    libxfixes
    libxml2
    libxtst
    mpg123
    nettle
    opencore-amr
    orc
    speex
    taglib
    twolame
    v4l-utils
    wavpack
    zlib
  )
  optdepends=("jack: JACK backend")

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgst1394.so
    usr/lib/gstreamer-1.0/libgstaasink.so
    usr/lib/gstreamer-1.0/libgstadaptivedemux2.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/libgstamrnb.so
    usr/lib/gstreamer-1.0/libgstamrwbdec.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/libgstxingmux.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/GstQTMux.prs
    usr/share/gstreamer-1.0/presets/Gst{Amrnb,VP8}Enc.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-$pkgrel"
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    aom
    bzip2
    cairo
    chromaprint
    curl
    faac
    faad2
    fluidsynth
    gcc-libs
    glib2
    glibc
    gsm
    imath
    json-glib
    lcms2
    libass
    libavtp
    libbs2b
    libdc1394
    libdca
    libde265
    libdvdnav
    libdvdread
    libfdk-aac
    libfreeaptx
    libgme
    liblc3
    libldac
    liblrdf
    libltc
    libmicrodns
    libmodplug
    libmpcdec
    libopenmpt
    librsvg
    libsndfile
    libsrtp
    libwebp
    libxml2
    lilv
    mjpegtools
    neon
    nettle
    openal
    openexr
    openh264
    openjpeg2
    openssl
    opus
    orc
    pango
    qrencode
    rtmpdump
    sbc
    soundtouch
    spandsp
    srt
    webrtc-audio-processing-1
    wildmidi
    x265
    zbar
    zvbi
    zxing-cpp
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstaes.so
    usr/lib/gstreamer-1.0/libgstanalyticsoverlay.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/libgstcodec2json.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/libgstladspa.so
    usr/lib/gstreamer-1.0/libgstlc3.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/libgstopenh264.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/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-plugins-ugly() {
  pkgdesc+=" - ugly plugins"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    a52dec
    glib2
    glibc
    libcdio
    libdvdread
    libmpeg2
    orc
    x264
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgsta52dec.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/libgstx264.so

    usr/share/gstreamer-1.0/presets/GstX264Enc.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-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    ffmpeg
    glib2
    glibc
  )
  provides=("gst-ffmpeg=$pkgver-$pkgrel")

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstlibav.so
  ); _install
}

package_gst-plugin-gtk() {
  pkgdesc+=" - gtk plugin"
  depends=(
    "gst-plugins-bad-libs=$pkgver-$pkgrel"
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    cairo
    glib2
    glibc
    gtk3
    wayland
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstgtk.so
    usr/lib/gstreamer-1.0/libgstgtkwayland.so
  ); _install
}

package_gst-plugin-opencv() {
  pkgdesc+=" - opencv plugin"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    gcc-libs
    glib2
    glibc
    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-qml6() {
  pkgdesc+=" - qml6 plugin"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    gcc-libs
    glib2
    glibc
    libglvnd
    qt6-base
    qt6-declarative
    qt6-wayland
    openmpi
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstqml6.so
  ); _install
}

package_gst-plugin-qmlgl() {
  pkgdesc+=" - qmlgl plugin"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    gcc-libs
    glib2
    glibc
    libglvnd
    qt5-base
    qt5-declarative
    qt5-wayland
    qt5-x11extras
  )

  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-$pkgrel"
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    glib2
    glibc
    libgudev
    libva
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstva.so
  ); _install
}

package_gst-plugin-wpe() {
  pkgdesc+=" - wpe plugin"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    gcc-libs
    glib2
    glibc
    libwpe
    libxkbcommon
    wayland
    wpebackend-fdo
    wpewebkit
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstwpe.so
    usr/lib/gst-plugins-bad/wpe-extension/libgstwpeextension.so
  ); _install
}

package_gst-devtools-libs() {
  pkgdesc+=" - development and debugging libraries"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    glib2
    glibc
    json-glib
    orc
    zlib
  )

  cd root; local files=(
    usr/include/gstreamer-1.0/gst/validate
    usr/lib/libgstvalidate-*
    usr/lib/pkgconfig/gstreamer-validate-1.0.pc
    usr/lib/girepository-1.0/GstValidate-1.0.typelib
    usr/share/gir-1.0/GstValidate-1.0.gir
  ); _install
}

package_gst-devtools() {
  pkgdesc+=" - development and debugging tools"
  depends=(
    "gst-devtools-libs=$pkgver-$pkgrel"
    "gst-plugins-bad-libs=$pkgver-$pkgrel"
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gst-rtsp-server=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    cairo
    glib2
    glibc
    gtk3
    hicolor-icon-theme
    json-glib
    python
    python-cairo
    python-gobject
    python-lxml
  )

  cd root; local files=(
    usr/bin/gst-validate-*
    usr/lib/gst-validate-launcher
    usr/lib/gstreamer-1.0/libgstvalidatetracer.so
    usr/lib/gstreamer-1.0/validate
    usr/share/gstreamer-1.0/validate

    usr/bin/gst-debug-viewer
    usr/lib/python*/site-packages/GstDebugViewer
    usr/share/applications/org.freedesktop.GstDebugViewer.desktop
    usr/share/gst-debug-viewer
    usr/share/icons/hicolor/*/apps/gst-debug-viewer.*
    usr/share/metainfo/org.freedesktop.GstDebugViewer.appdata.xml
  ); _install
}

package_gst-rtsp-server() {
  pkgdesc+=" - rtsp server"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    glib2
    glibc
    orc
    zlib
  )

  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-devtools-libs=$pkgver-$pkgrel"
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gst-python=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    glib2
    glibc
    json-glib
    libxml2
    orc
    python
    python-gobject
    zlib
  )
  optdepends=(
    "opentimelineio: Support for the OpenTimelineIO format"
  )

  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/lib/python*/site-packages/gi/overrides/__pycache__/GES.*.pyc

    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
}

package_gstreamer-vaapi() {
  pkgdesc+=" - vaapi plugin"
  depends=(
    "gst-plugins-bad-libs=$pkgver-$pkgrel"
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    glib2
    glibc
    libglvnd
    libva
    libx11
    libxrandr
    systemd-libs
    wayland
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstvaapi.so
  ); _install
}

package_gst-python() {
  pkgdesc+=" - python plugin"
  depends=(
    "gst-plugins-base-libs=$pkgver-$pkgrel"
    "gstreamer=$pkgver-$pkgrel"
    glib2
    glibc
    python
    python-gobject
  )

  cd root; local files=(
    usr/lib/gstreamer-1.0/libgstpython.so
    usr/lib/python*/site-packages/gi/overrides
  ); _install
}

package_gstreamer-docs() {
  pkgdesc+=" - documentation"
  license=(
    "BSD-2-Clause OR MIT OR LGPL-2.1-or-later"
    CC-BY-SA-4.0
    LGPL-2.1-or-later
    MIT
    OPUBL-1.0
  )
  options=(
    !debug
    !strip
  )

  # make sure there are no files left to install
  find root -depth ! -type d
  find root -depth -print0 | xargs -0 rmdir

  cd gstreamer-docs-${pkgver%%+*}

  mkdir -p "$pkgdir/usr/share/doc/$pkgbase"
  cp -t "$pkgdir/usr/share" -a devhelp
  cp -t "$pkgdir/usr/share/doc/$pkgbase" -a html README*

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 COPYING LICENSE*
}

# vim:set sw=2 sts=-1 et: