FreeBSD Bugzilla – Attachment 236981 Details for
Bug 261585
multimedia/gstreamer1: Update to 1.20.3
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Updated patch
gstreamer.diff.txt (text/plain), 426.37 KB, created by
Thomas Zander
on 2022-10-01 13:13:21 UTC
(
hide
)
Description:
Updated patch
Filename:
MIME Type:
Creator:
Thomas Zander
Created:
2022-10-01 13:13:21 UTC
Size:
426.37 KB
patch
obsolete
>diff --git a/audio/gstreamer1-plugins-a52dec/Makefile b/audio/gstreamer1-plugins-a52dec/Makefile >index 75d248e4951f..d3daabc4b262 100644 >--- a/audio/gstreamer1-plugins-a52dec/Makefile >+++ b/audio/gstreamer1-plugins-a52dec/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer ATSC A/52 stream aka AC-3 (dvd audio) plugin >@@ -8,4 +7,10 @@ DIST= ugly > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+MESON_ARGS+= -Dgpl=enabled >+ >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= liba52.so:audio/liba52 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-a52dec/pkg-plist b/audio/gstreamer1-plugins-a52dec/pkg-plist >new file mode 100644 >index 000000000000..2bab8ee560ac >--- /dev/null >+++ b/audio/gstreamer1-plugins-a52dec/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgsta52dec.so >diff --git a/audio/gstreamer1-plugins-amrnb/Makefile b/audio/gstreamer1-plugins-amrnb/Makefile >index 9d4a2316871b..7f29a02aaa79 100644 >--- a/audio/gstreamer1-plugins-amrnb/Makefile >+++ b/audio/gstreamer1-plugins-amrnb/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer OpenCore based Adaptive Multi-Rate Narrow-Band plugin >@@ -6,6 +5,12 @@ COMMENT= GStreamer OpenCore based Adaptive Multi-Rate Narrow-Band plugin > GST_PLUGIN= amrnb > DIST= ugly > >-MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+ >+MESON_ARGS+= -Dgpl=enabled >+ >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libopencore-amrnb.so:audio/opencore-amr > > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-amrnb/pkg-plist b/audio/gstreamer1-plugins-amrnb/pkg-plist >new file mode 100644 >index 000000000000..51b9ecad98a2 >--- /dev/null >+++ b/audio/gstreamer1-plugins-amrnb/pkg-plist >@@ -0,0 +1,2 @@ >+lib/gstreamer-%%VERSION%%/libgstamrnb.so >+%%DATADIR%%-%%VERSION%%/presets/GstAmrnbEnc.prs >diff --git a/audio/gstreamer1-plugins-amrwbdec/Makefile b/audio/gstreamer1-plugins-amrwbdec/Makefile >index 20baa4d53017..74fd727680a6 100644 >--- a/audio/gstreamer1-plugins-amrwbdec/Makefile >+++ b/audio/gstreamer1-plugins-amrwbdec/Makefile >@@ -1,12 +1,17 @@ >-PORTREVISION= 2 > CATEGORIES= audio > PKGNAMESUFFIX= 1-plugins-amrwbdec > > COMMENT= GStreamer OpenCore based Adaptive Multi-Rate Wide-Band Decoder plugin > >-GST_PLUGIN= amrwb >+GST_PLUGIN= amrwbdec > DIST= ugly > >-MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+ >+MESON_ARGS+= -Dgpl=enabled >+ >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr > > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-amrwbdec/pkg-plist b/audio/gstreamer1-plugins-amrwbdec/pkg-plist >new file mode 100644 >index 000000000000..57bdc4d6ae6d >--- /dev/null >+++ b/audio/gstreamer1-plugins-amrwbdec/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstamrwbdec.so >diff --git a/audio/gstreamer1-plugins-bs2b/Makefile b/audio/gstreamer1-plugins-bs2b/Makefile >index 4f26acbc25ad..3b67b5fd61ee 100644 >--- a/audio/gstreamer1-plugins-bs2b/Makefile >+++ b/audio/gstreamer1-plugins-bs2b/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer Bauer Stereophonic to Banaural BSP (bs2b) plugin >@@ -6,6 +5,12 @@ COMMENT= GStreamer Bauer Stereophonic to Banaural BSP (bs2b) plugin > GST_PLUGIN= bs2b > DIST= bad > >-MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+ >+PLIST= ${.CURDIR}/pkg-plist >+LIB_DEPENDS= libbs2b.so:audio/libbs2b >+ >+MESON_ARGS+= -Dgpl=enabled > > .include "${MASTERDIR}/Makefile" >+ >diff --git a/audio/gstreamer1-plugins-bs2b/pkg-plist b/audio/gstreamer1-plugins-bs2b/pkg-plist >new file mode 100644 >index 000000000000..f941fa3c7588 >--- /dev/null >+++ b/audio/gstreamer1-plugins-bs2b/pkg-plist >@@ -0,0 +1 @@ >+ lib/gstreamer-%%VERSION%%/libgstbs2b.so >diff --git a/audio/gstreamer1-plugins-cdparanoia/Makefile b/audio/gstreamer1-plugins-cdparanoia/Makefile >index 94195a1a3ebd..e99eb1383a71 100644 >--- a/audio/gstreamer1-plugins-cdparanoia/Makefile >+++ b/audio/gstreamer1-plugins-cdparanoia/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer CDDA extraction (aka audio ripping) plugin >@@ -8,4 +7,8 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libcdda_interface.so:audio/cdparanoia >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-cdparanoia/pkg-plist b/audio/gstreamer1-plugins-cdparanoia/pkg-plist >new file mode 100644 >index 000000000000..b8454271c5c6 >--- /dev/null >+++ b/audio/gstreamer1-plugins-cdparanoia/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstcdparanoia.so >diff --git a/audio/gstreamer1-plugins-chromaprint/Makefile b/audio/gstreamer1-plugins-chromaprint/Makefile >index cea3e1f5f245..b6b5f762b02a 100644 >--- a/audio/gstreamer1-plugins-chromaprint/Makefile >+++ b/audio/gstreamer1-plugins-chromaprint/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer audio fingerprint extracting plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libchromaprint.so:audio/chromaprint >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-chromaprint/pkg-plist b/audio/gstreamer1-plugins-chromaprint/pkg-plist >new file mode 100644 >index 000000000000..0f036beaf645 >--- /dev/null >+++ b/audio/gstreamer1-plugins-chromaprint/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstchromaprint.so >diff --git a/audio/gstreamer1-plugins-faac/Makefile b/audio/gstreamer1-plugins-faac/Makefile >index b1e7fe10dc77..0e24836887b2 100644 >--- a/audio/gstreamer1-plugins-faac/Makefile >+++ b/audio/gstreamer1-plugins-faac/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer MPEG-2 and MPEG-4 AAC encoder plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libfaac.so:audio/faac >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-faac/pkg-plist b/audio/gstreamer1-plugins-faac/pkg-plist >new file mode 100644 >index 000000000000..fd3227e7eb00 >--- /dev/null >+++ b/audio/gstreamer1-plugins-faac/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstfaac.so >diff --git a/audio/gstreamer1-plugins-faad/Makefile b/audio/gstreamer1-plugins-faad/Makefile >index 387cd607f5b4..2e02c9602a2e 100644 >--- a/audio/gstreamer1-plugins-faad/Makefile >+++ b/audio/gstreamer1-plugins-faad/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer MPEG-2 and MPEG-4 AAC decoder plugin >@@ -8,4 +7,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libfaad.so:audio/faad >+ >+MESON_ARGS+= -Dgpl=enabled >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-faad/pkg-plist b/audio/gstreamer1-plugins-faad/pkg-plist >new file mode 100644 >index 000000000000..158cd52ec689 >--- /dev/null >+++ b/audio/gstreamer1-plugins-faad/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstfaad.so >diff --git a/audio/gstreamer1-plugins-flac/Makefile b/audio/gstreamer1-plugins-flac/Makefile >index 45b07d466e85..be81032e15b5 100644 >--- a/audio/gstreamer1-plugins-flac/Makefile >+++ b/audio/gstreamer1-plugins-flac/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= audio > > COMMENT= GStreamer free lossless audio encoder/decoder plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libFLAC.so:audio/flac >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-flac/pkg-plist b/audio/gstreamer1-plugins-flac/pkg-plist >new file mode 100644 >index 000000000000..13e6c60bbf26 >--- /dev/null >+++ b/audio/gstreamer1-plugins-flac/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstflac.so >diff --git a/audio/gstreamer1-plugins-flite/Makefile b/audio/gstreamer1-plugins-flite/Makefile >index 90efcedad499..3c23ec38eeea 100644 >--- a/audio/gstreamer1-plugins-flite/Makefile >+++ b/audio/gstreamer1-plugins-flite/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer flite run-time speech synthesis engine plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libflite.so:audio/flite >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-flite/pkg-plist b/audio/gstreamer1-plugins-flite/pkg-plist >new file mode 100644 >index 000000000000..7efc937a2f47 >--- /dev/null >+++ b/audio/gstreamer1-plugins-flite/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstflite.so >diff --git a/audio/gstreamer1-plugins-gme/Makefile b/audio/gstreamer1-plugins-gme/Makefile >index 4d4fa060bbd8..e9c39713958e 100644 >--- a/audio/gstreamer1-plugins-gme/Makefile >+++ b/audio/gstreamer1-plugins-gme/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer emulate gaming console sound processors plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libgme.so:audio/libgme >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-gme/pkg-plist b/audio/gstreamer1-plugins-gme/pkg-plist >new file mode 100644 >index 000000000000..fb27f08c5888 >--- /dev/null >+++ b/audio/gstreamer1-plugins-gme/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstgme.so >diff --git a/audio/gstreamer1-plugins-gsm/Makefile b/audio/gstreamer1-plugins-gsm/Makefile >index e5bdefb7830d..3c00a192d044 100644 >--- a/audio/gstreamer1-plugins-gsm/Makefile >+++ b/audio/gstreamer1-plugins-gsm/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer gsm encoding/decoding plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libgsm.so:audio/gsm >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-gsm/pkg-plist b/audio/gstreamer1-plugins-gsm/pkg-plist >new file mode 100644 >index 000000000000..ab459fcc8bde >--- /dev/null >+++ b/audio/gstreamer1-plugins-gsm/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstgsm.so >diff --git a/audio/gstreamer1-plugins-jack/Makefile b/audio/gstreamer1-plugins-jack/Makefile >index 548f755c8731..b409c32278d1 100644 >--- a/audio/gstreamer1-plugins-jack/Makefile >+++ b/audio/gstreamer1-plugins-jack/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer low-latency audio server plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libjack.so:audio/jack >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-jack/pkg-plist b/audio/gstreamer1-plugins-jack/pkg-plist >new file mode 100644 >index 000000000000..4f48f62312fe >--- /dev/null >+++ b/audio/gstreamer1-plugins-jack/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstjack.so >diff --git a/audio/gstreamer1-plugins-ladspa/Makefile b/audio/gstreamer1-plugins-ladspa/Makefile >index 11cf4092d0b6..1e94eee5e5d1 100644 >--- a/audio/gstreamer1-plugins-ladspa/Makefile >+++ b/audio/gstreamer1-plugins-ladspa/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= Gstreamer ladspa (Linux Audio Developer's Simple Plugin API) plugin >@@ -8,4 +7,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+BUILD_DEPENDS= ${LOCALBASE}/include/ladspa.h:audio/ladspa >+ >+LIB_DEPENDS= liblrdf.so:textproc/liblrdf >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-ladspa/pkg-plist b/audio/gstreamer1-plugins-ladspa/pkg-plist >new file mode 100644 >index 000000000000..309ed3de532d >--- /dev/null >+++ b/audio/gstreamer1-plugins-ladspa/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstladspa.so >diff --git a/audio/gstreamer1-plugins-lame/Makefile b/audio/gstreamer1-plugins-lame/Makefile >index f2a13edec8a7..a657fb2b56f0 100644 >--- a/audio/gstreamer1-plugins-lame/Makefile >+++ b/audio/gstreamer1-plugins-lame/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer High-quality free mp3 encode plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libmp3lame.so:audio/lame >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-lame/pkg-plist b/audio/gstreamer1-plugins-lame/pkg-plist >new file mode 100644 >index 000000000000..d4bc14d79b11 >--- /dev/null >+++ b/audio/gstreamer1-plugins-lame/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstlame.so >diff --git a/audio/gstreamer1-plugins-lv2/Makefile b/audio/gstreamer1-plugins-lv2/Makefile >index b5b05a5cb3b7..f05ba15ca35b 100644 >--- a/audio/gstreamer1-plugins-lv2/Makefile >+++ b/audio/gstreamer1-plugins-lv2/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= Gstreamer lv2 wrapper plugin >@@ -8,4 +7,14 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+BUILD_DEPENDS= lv2>=1.14.0:audio/lv2 >+LIB_DEPENDS= libsord-0.so:devel/sord \ >+ libserd-0.so:devel/serd \ >+ libsratom-0.so:audio/sratom \ >+ liblilv-0.so:audio/lilv >+ > .include "${MASTERDIR}/Makefile" >+ >+USES+= pkgconfig >diff --git a/audio/gstreamer1-plugins-lv2/pkg-plist b/audio/gstreamer1-plugins-lv2/pkg-plist >new file mode 100644 >index 000000000000..196519ac3d83 >--- /dev/null >+++ b/audio/gstreamer1-plugins-lv2/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstlv2.so >diff --git a/audio/gstreamer1-plugins-modplug/Makefile b/audio/gstreamer1-plugins-modplug/Makefile >index 8a565fae0823..a9575ae40ceb 100644 >--- a/audio/gstreamer1-plugins-modplug/Makefile >+++ b/audio/gstreamer1-plugins-modplug/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer module decoder based on modplug egine plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libmodplug.so:audio/libmodplug >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-modplug/pkg-plist b/audio/gstreamer1-plugins-modplug/pkg-plist >new file mode 100644 >index 000000000000..8e164ae85030 >--- /dev/null >+++ b/audio/gstreamer1-plugins-modplug/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmodplug.so >diff --git a/audio/gstreamer1-plugins-mpg123/Makefile b/audio/gstreamer1-plugins-mpg123/Makefile >index 17c4723b2fe1..e10f023adab7 100644 >--- a/audio/gstreamer1-plugins-mpg123/Makefile >+++ b/audio/gstreamer1-plugins-mpg123/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer MPEG Layer 1, 2, and 3 plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libmpg123.so:audio/mpg123 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-mpg123/pkg-plist b/audio/gstreamer1-plugins-mpg123/pkg-plist >new file mode 100644 >index 000000000000..bf17e1875d77 >--- /dev/null >+++ b/audio/gstreamer1-plugins-mpg123/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmpg123.so >diff --git a/audio/gstreamer1-plugins-musepack/Makefile b/audio/gstreamer1-plugins-musepack/Makefile >index 83f4143a39dd..05900d247567 100644 >--- a/audio/gstreamer1-plugins-musepack/Makefile >+++ b/audio/gstreamer1-plugins-musepack/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= Gstreamer musepack mpc encoder/decoder plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS=libmpcdec.so:audio/musepack >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-musepack/pkg-plist b/audio/gstreamer1-plugins-musepack/pkg-plist >new file mode 100644 >index 000000000000..920aed8cd783 >--- /dev/null >+++ b/audio/gstreamer1-plugins-musepack/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmusepack.so >diff --git a/audio/gstreamer1-plugins-ogg/Makefile b/audio/gstreamer1-plugins-ogg/Makefile >index c64dd7fa509f..3c8ac54def86 100644 >--- a/audio/gstreamer1-plugins-ogg/Makefile >+++ b/audio/gstreamer1-plugins-ogg/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer Ogg bitstream plugin >@@ -8,4 +7,8 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libogg.so:audio/libogg >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-ogg/pkg-plist b/audio/gstreamer1-plugins-ogg/pkg-plist >new file mode 100644 >index 000000000000..60e66f54d229 >--- /dev/null >+++ b/audio/gstreamer1-plugins-ogg/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstogg.so >diff --git a/audio/gstreamer1-plugins-openmpt/Makefile b/audio/gstreamer1-plugins-openmpt/Makefile >index a7a0613a20e7..6aa2014b1ae7 100644 >--- a/audio/gstreamer1-plugins-openmpt/Makefile >+++ b/audio/gstreamer1-plugins-openmpt/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= audio > > COMMENT= GStreamer OpenMPT audio decoder plugin >@@ -6,13 +5,10 @@ COMMENT= GStreamer OpenMPT audio decoder plugin > GST_PLUGIN= openmpt > DIST= bad > >-OPENMPT_GST_DIRS= gst-libs/gst/audio >- > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >-pre-build: >-.for dir in ${OPENMPT_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libopenmpt.so:audio/libopenmpt > > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-openmpt/pkg-plist b/audio/gstreamer1-plugins-openmpt/pkg-plist >new file mode 100644 >index 000000000000..742950336a96 >--- /dev/null >+++ b/audio/gstreamer1-plugins-openmpt/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstopenmpt.so >diff --git a/audio/gstreamer1-plugins-opus/Makefile b/audio/gstreamer1-plugins-opus/Makefile >index 4abd03b29a8c..39be8b61aedd 100644 >--- a/audio/gstreamer1-plugins-opus/Makefile >+++ b/audio/gstreamer1-plugins-opus/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer Opus audio encoder/decoder plugin >@@ -8,4 +7,8 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libopus.so:audio/opus >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-opus/pkg-plist b/audio/gstreamer1-plugins-opus/pkg-plist >new file mode 100644 >index 000000000000..30d7eb71dceb >--- /dev/null >+++ b/audio/gstreamer1-plugins-opus/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstopus.so >diff --git a/audio/gstreamer1-plugins-pulse/Makefile b/audio/gstreamer1-plugins-pulse/Makefile >index 904ac0dc6ef0..a6b66ad85fbf 100644 >--- a/audio/gstreamer1-plugins-pulse/Makefile >+++ b/audio/gstreamer1-plugins-pulse/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer pulseaudio plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libpulse.so:audio/pulseaudio >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-pulse/pkg-plist b/audio/gstreamer1-plugins-pulse/pkg-plist >new file mode 100644 >index 000000000000..8455c8d5cc09 >--- /dev/null >+++ b/audio/gstreamer1-plugins-pulse/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstpulseaudio.so >diff --git a/audio/gstreamer1-plugins-shout2/Makefile b/audio/gstreamer1-plugins-shout2/Makefile >index cdd7985ae537..183289ad5dd6 100644 >--- a/audio/gstreamer1-plugins-shout2/Makefile >+++ b/audio/gstreamer1-plugins-shout2/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer icecast output plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libshout.so:audio/libshout >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-shout2/pkg-plist b/audio/gstreamer1-plugins-shout2/pkg-plist >new file mode 100644 >index 000000000000..b271580df9cf >--- /dev/null >+++ b/audio/gstreamer1-plugins-shout2/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstshout2.so >diff --git a/audio/gstreamer1-plugins-sidplay/Makefile b/audio/gstreamer1-plugins-sidplay/Makefile >index bdd24b90ad56..e565da694eb6 100644 >--- a/audio/gstreamer1-plugins-sidplay/Makefile >+++ b/audio/gstreamer1-plugins-sidplay/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer Commodore SID audio decoder plugin >@@ -8,4 +7,10 @@ DIST= ugly > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libsidplay.so:audio/libsidplay >+ >+MESON_ARGS+= -Dgpl=enabled >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-sidplay/pkg-plist b/audio/gstreamer1-plugins-sidplay/pkg-plist >new file mode 100644 >index 000000000000..f9fa43398929 >--- /dev/null >+++ b/audio/gstreamer1-plugins-sidplay/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstsid.so >diff --git a/audio/gstreamer1-plugins-sndfile/Makefile b/audio/gstreamer1-plugins-sndfile/Makefile >index f12e103a8457..9f5fe2dfbe75 100644 >--- a/audio/gstreamer1-plugins-sndfile/Makefile >+++ b/audio/gstreamer1-plugins-sndfile/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= audio > > COMMENT= Gstreamer sndfile plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libsndfile.so:audio/libsndfile >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-sndfile/pkg-plist b/audio/gstreamer1-plugins-sndfile/pkg-plist >new file mode 100644 >index 000000000000..48f69b606c62 >--- /dev/null >+++ b/audio/gstreamer1-plugins-sndfile/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstsndfile.so >diff --git a/audio/gstreamer1-plugins-soundtouch/Makefile b/audio/gstreamer1-plugins-soundtouch/Makefile >index f593bc7b7544..bd2065809263 100644 >--- a/audio/gstreamer1-plugins-soundtouch/Makefile >+++ b/audio/gstreamer1-plugins-soundtouch/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= audio > > COMMENT= GStreamer soundtouch plugin >@@ -8,4 +7,7 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+LIB_DEPENDS= libSoundTouch.so:audio/soundtouch >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-soundtouch/pkg-plist b/audio/gstreamer1-plugins-soundtouch/pkg-plist >new file mode 100644 >index 000000000000..006db82b00bd >--- /dev/null >+++ b/audio/gstreamer1-plugins-soundtouch/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstsoundtouch.so >diff --git a/audio/gstreamer1-plugins-speex/Makefile b/audio/gstreamer1-plugins-speex/Makefile >index 2ffc6bfa15e4..650b15d3b44e 100644 >--- a/audio/gstreamer1-plugins-speex/Makefile >+++ b/audio/gstreamer1-plugins-speex/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer speex voice encode/decode plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libspeex.so:audio/speex >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-speex/pkg-plist b/audio/gstreamer1-plugins-speex/pkg-plist >new file mode 100644 >index 000000000000..181e9d106bf6 >--- /dev/null >+++ b/audio/gstreamer1-plugins-speex/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstspeex.so >diff --git a/audio/gstreamer1-plugins-taglib/Makefile b/audio/gstreamer1-plugins-taglib/Makefile >index f8b0214328fb..626415c37426 100644 >--- a/audio/gstreamer1-plugins-taglib/Makefile >+++ b/audio/gstreamer1-plugins-taglib/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer taglib plugin for adding APEv2 and ID3v2 headers >@@ -11,4 +10,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libtag.so:audio/taglib >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-taglib/pkg-plist b/audio/gstreamer1-plugins-taglib/pkg-plist >new file mode 100644 >index 000000000000..5b2a3e819c8a >--- /dev/null >+++ b/audio/gstreamer1-plugins-taglib/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgsttaglib.so >diff --git a/audio/gstreamer1-plugins-twolame/Makefile b/audio/gstreamer1-plugins-twolame/Makefile >index 948a002eeb97..6174d010af1d 100644 >--- a/audio/gstreamer1-plugins-twolame/Makefile >+++ b/audio/gstreamer1-plugins-twolame/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer High-quality free MP2 encoder plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libtwolame.so:audio/twolame >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-twolame/pkg-plist b/audio/gstreamer1-plugins-twolame/pkg-plist >new file mode 100644 >index 000000000000..a15e4beec7d5 >--- /dev/null >+++ b/audio/gstreamer1-plugins-twolame/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgsttwolame.so >diff --git a/audio/gstreamer1-plugins-vorbis/Makefile b/audio/gstreamer1-plugins-vorbis/Makefile >index ec728eb301ec..7e20c4067b46 100644 >--- a/audio/gstreamer1-plugins-vorbis/Makefile >+++ b/audio/gstreamer1-plugins-vorbis/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer vorbis encoder/decoder plugin >@@ -8,4 +7,9 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GSTREAMER= ogg >+LIB_DEPENDS= libvorbis.so:audio/libvorbis >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-vorbis/pkg-plist b/audio/gstreamer1-plugins-vorbis/pkg-plist >new file mode 100644 >index 000000000000..b23a87d00b30 >--- /dev/null >+++ b/audio/gstreamer1-plugins-vorbis/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstvorbis.so >diff --git a/audio/gstreamer1-plugins-wavpack/Makefile b/audio/gstreamer1-plugins-wavpack/Makefile >index 71a190ccb3a1..132649f3566c 100644 >--- a/audio/gstreamer1-plugins-wavpack/Makefile >+++ b/audio/gstreamer1-plugins-wavpack/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= audio > > COMMENT= GStreamer wavpack encode/decode plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libwavpack.so:audio/wavpack >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-wavpack/pkg-plist b/audio/gstreamer1-plugins-wavpack/pkg-plist >new file mode 100644 >index 000000000000..1d38aacae74b >--- /dev/null >+++ b/audio/gstreamer1-plugins-wavpack/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstwavpack.so >diff --git a/audio/gstreamer1-plugins-webrtcdsp/Makefile b/audio/gstreamer1-plugins-webrtcdsp/Makefile >index 08ae90184c71..5c569a8523e5 100644 >--- a/audio/gstreamer1-plugins-webrtcdsp/Makefile >+++ b/audio/gstreamer1-plugins-webrtcdsp/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= audio > > COMMENT= GStreamer WebRTC Audio Processing plugin >@@ -10,4 +9,8 @@ USES+= compiler:c++11-lang > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libwebrtc_audio_processing.so:audio/webrtc-audio-processing0 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/audio/gstreamer1-plugins-webrtcdsp/pkg-plist b/audio/gstreamer1-plugins-webrtcdsp/pkg-plist >new file mode 100644 >index 000000000000..5c123eacb5b5 >--- /dev/null >+++ b/audio/gstreamer1-plugins-webrtcdsp/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstwebrtcdsp.so >diff --git a/comms/gstreamer1-plugins-spandsp/Makefile b/comms/gstreamer1-plugins-spandsp/Makefile >index ec9ec8005762..c1ebb86b0c4c 100644 >--- a/comms/gstreamer1-plugins-spandsp/Makefile >+++ b/comms/gstreamer1-plugins-spandsp/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= comms > > COMMENT= GStreamer DSP library and software FAX machine plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libspandsp.so:comms/spandsp >+ > .include "${MASTERDIR}/Makefile" >diff --git a/comms/gstreamer1-plugins-spandsp/pkg-plist b/comms/gstreamer1-plugins-spandsp/pkg-plist >new file mode 100644 >index 000000000000..c1037be42adc >--- /dev/null >+++ b/comms/gstreamer1-plugins-spandsp/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstspandsp.so >diff --git a/devel/gstreamer1-plugins-soup/Makefile b/devel/gstreamer1-plugins-soup/Makefile >index 6a39f2788ec6..54d683c8d086 100644 >--- a/devel/gstreamer1-plugins-soup/Makefile >+++ b/devel/gstreamer1-plugins-soup/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= devel > > COMMENT= GStreamer soup based http input plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libsoup-2.4.so:devel/libsoup >+ > .include "${MASTERDIR}/Makefile" >diff --git a/devel/gstreamer1-plugins-soup/pkg-plist b/devel/gstreamer1-plugins-soup/pkg-plist >new file mode 100644 >index 000000000000..9ee64d40c994 >--- /dev/null >+++ b/devel/gstreamer1-plugins-soup/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstsoup.so >diff --git a/ftp/gstreamer1-plugins-curl/Makefile b/ftp/gstreamer1-plugins-curl/Makefile >index 8849b953662a..6c3ef65fc39c 100644 >--- a/ftp/gstreamer1-plugins-curl/Makefile >+++ b/ftp/gstreamer1-plugins-curl/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= ftp > > COMMENT= GStreamer curl based output plugin >@@ -8,4 +7,9 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libcurl.so:ftp/curl \ >+ libssh2.so:security/libssh2 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/ftp/gstreamer1-plugins-curl/pkg-plist b/ftp/gstreamer1-plugins-curl/pkg-plist >new file mode 100644 >index 000000000000..bb7890160811 >--- /dev/null >+++ b/ftp/gstreamer1-plugins-curl/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstcurl.so >diff --git a/graphics/gstreamer1-plugins-aalib/Makefile b/graphics/gstreamer1-plugins-aalib/Makefile >index eec531d319ef..8e0b9a8d9f5e 100644 >--- a/graphics/gstreamer1-plugins-aalib/Makefile >+++ b/graphics/gstreamer1-plugins-aalib/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer ASCII art videosink plugin >@@ -8,4 +7,9 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libaa.so:graphics/aalib >+USES= ncurses >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-aalib/pkg-plist b/graphics/gstreamer1-plugins-aalib/pkg-plist >new file mode 100644 >index 000000000000..d8bbb140e72f >--- /dev/null >+++ b/graphics/gstreamer1-plugins-aalib/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstaasink.so >diff --git a/graphics/gstreamer1-plugins-cairo/Makefile b/graphics/gstreamer1-plugins-cairo/Makefile >index ad84b22359ff..0cf0c0ed1dd2 100644 >--- a/graphics/gstreamer1-plugins-cairo/Makefile >+++ b/graphics/gstreamer1-plugins-cairo/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer overlay renderer plugin based on cairo >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= cairo >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-cairo/pkg-plist b/graphics/gstreamer1-plugins-cairo/pkg-plist >new file mode 100644 >index 000000000000..60c5147a46ee >--- /dev/null >+++ b/graphics/gstreamer1-plugins-cairo/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstcairo.so >diff --git a/graphics/gstreamer1-plugins-gdkpixbuf/Makefile b/graphics/gstreamer1-plugins-gdkpixbuf/Makefile >index 1ad5db6274c7..9c5ff7f46ae8 100644 >--- a/graphics/gstreamer1-plugins-gdkpixbuf/Makefile >+++ b/graphics/gstreamer1-plugins-gdkpixbuf/Makefile >@@ -1,12 +1,15 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > PKGNAMESUFFIX= 1-plugins-gdkpixbuf > > COMMENT= GStreamer image decoder/overlay plugin > >-GST_PLUGIN= gdk_pixbuf >+GST_PLUGIN= gdk-pixbuf > DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= gdkpixbuf2 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-gdkpixbuf/pkg-plist b/graphics/gstreamer1-plugins-gdkpixbuf/pkg-plist >new file mode 100644 >index 000000000000..2b84907e0149 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-gdkpixbuf/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstgdkpixbuf.so >diff --git a/graphics/gstreamer1-plugins-gl/Makefile b/graphics/gstreamer1-plugins-gl/Makefile >index a47b346cb4c4..5b49d431877d 100644 >--- a/graphics/gstreamer1-plugins-gl/Makefile >+++ b/graphics/gstreamer1-plugins-gl/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 4 > CATEGORIES= graphics > > COMMENT= GStreamer GL graphics plugin >@@ -15,17 +14,28 @@ OPTIONS_DEFINE= WAYLAND > OPTIONS_DEFAULT=WAYLAND > OPTIONS_SUB= yes > >-WAYLAND_CONFIGURE_ENABLE= wayland >+OPTIONS_UNSET= WAYLAND >+ >+GL_WINSYS= "x11,egl" >+ >+WAYLAND_VARS= gl_winsys+=",wayland" > WAYLAND_BUILD_DEPENDS= wayland-protocols>=0:graphics/wayland-protocols > WAYLAND_LIB_DEPENDS= libwayland-egl.so:graphics/wayland > >-pre-build: >-.for dir in ${GL_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >- >-post-install: >- ${INSTALL_DATA} ${WRKSRC}/pkgconfig/gstreamer-gl.pc \ >- ${STAGEDIR}${PREFIX}/libdata/pkgconfig/gstreamer-gl-1.0.pc >+USES= gl >+USE_GL= gl glu glesv2 egl >+USE_XORG+=x11 \ >+ xext \ >+ xcb >+BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto >+LIB_DEPENDS= libgraphene-1.0.so:graphics/graphene \ >+ libpng16.so:graphics/png >+ >+MESON_ARGS+= -Dgl=enabled \ >+ -Dgl_winsys="${GL_WINSYS}" \ >+ -Dgl_api=opengl,gles2 \ >+ -Dgl_platform=glx,egl >+ >+GST_PLUGIN_DIR= gst-libs/gst/gl ext/gl > > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-gl/pkg-plist b/graphics/gstreamer1-plugins-gl/pkg-plist >index fd58e0c5b7f6..9f0bc9b5d91f 100644 >--- a/graphics/gstreamer1-plugins-gl/pkg-plist >+++ b/graphics/gstreamer1-plugins-gl/pkg-plist >@@ -1,6 +1,8 @@ >+include/gstreamer-%%VERSION%%/gst/gl/egl/egl.h > include/gstreamer-%%VERSION%%/gst/gl/egl/gstegl.h > include/gstreamer-%%VERSION%%/gst/gl/egl/gsteglimage.h > include/gstreamer-%%VERSION%%/gst/gl/egl/gstgldisplay_egl.h >+include/gstreamer-%%VERSION%%/gst/gl/egl/gstgldisplay_egl_device.h > include/gstreamer-%%VERSION%%/gst/gl/egl/gstglmemoryegl.h > include/gstreamer-%%VERSION%%/gst/gl/gl-enumtypes.h > include/gstreamer-%%VERSION%%/gst/gl/gl-prelude.h >@@ -8,6 +10,7 @@ include/gstreamer-%%VERSION%%/gst/gl/gl.h > include/gstreamer-%%VERSION%%/gst/gl/glprototypes/all_functions.h > include/gstreamer-%%VERSION%%/gst/gl/glprototypes/base.h > include/gstreamer-%%VERSION%%/gst/gl/glprototypes/blending.h >+include/gstreamer-%%VERSION%%/gst/gl/glprototypes/buffer_storage.h > include/gstreamer-%%VERSION%%/gst/gl/glprototypes/buffers.h > include/gstreamer-%%VERSION%%/gst/gl/glprototypes/debug.h > include/gstreamer-%%VERSION%%/gst/gl/glprototypes/eglimage.h >@@ -26,10 +29,12 @@ include/gstreamer-%%VERSION%%/gst/gl/gstgl_fwd.h > include/gstreamer-%%VERSION%%/gst/gl/gstglapi.h > include/gstreamer-%%VERSION%%/gst/gl/gstglbasefilter.h > include/gstreamer-%%VERSION%%/gst/gl/gstglbasememory.h >+include/gstreamer-%%VERSION%%/gst/gl/gstglbasesrc.h > include/gstreamer-%%VERSION%%/gst/gl/gstglbuffer.h > include/gstreamer-%%VERSION%%/gst/gl/gstglbufferpool.h > include/gstreamer-%%VERSION%%/gst/gl/gstglcolorconvert.h > include/gstreamer-%%VERSION%%/gst/gl/gstglcontext.h >+include/gstreamer-%%VERSION%%/gst/gl/gstglcontextconfig.h > include/gstreamer-%%VERSION%%/gst/gl/gstgldebug.h > include/gstreamer-%%VERSION%%/gst/gl/gstgldisplay.h > include/gstreamer-%%VERSION%%/gst/gl/gstglfeature.h >@@ -52,12 +57,24 @@ include/gstreamer-%%VERSION%%/gst/gl/gstglutils.h > include/gstreamer-%%VERSION%%/gst/gl/gstglviewconvert.h > include/gstreamer-%%VERSION%%/gst/gl/gstglwindow.h > %%WAYLAND%%include/gstreamer-%%VERSION%%/gst/gl/wayland/gstgldisplay_wayland.h >+%%WAYLAND%%include/gstreamer-%%VERSION%%/gst/gl/wayland/wayland.h > include/gstreamer-%%VERSION%%/gst/gl/x11/gstgldisplay_x11.h >-lib/girepository-1.0/GstGL-%%VERSION%%.typelib >+include/gstreamer-%%VERSION%%/gst/gl/x11/x11.h >+lib/girepository-%%VERSION%%/GstGL-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstGLEGL-%%VERSION%%.typelib >+%%WAYLAND%%lib/girepository-%%VERSION%%/GstGLWayland-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstGLX11-%%VERSION%%.typelib > lib/gstreamer-%%VERSION%%/include/gst/gl/gstglconfig.h > lib/gstreamer-%%VERSION%%/libgstopengl.so > lib/libgstgl-%%VERSION%%.so > lib/libgstgl-%%VERSION%%.so.0 > lib/libgstgl-%%VERSION%%.so.%%SOVERSION%% > libdata/pkgconfig/gstreamer-gl-%%VERSION%%.pc >-share/gir-1.0/GstGL-%%VERSION%%.gir >+libdata/pkgconfig/gstreamer-gl-egl-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-gl-prototypes-%%VERSION%%.pc >+%%WAYLAND%%libdata/pkgconfig/gstreamer-gl-wayland-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-gl-x11-%%VERSION%%.pc >+share/gir-%%VERSION%%/GstGL-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstGLEGL-%%VERSION%%.gir >+%%WAYLAND%%share/gir-%%VERSION%%/GstGLWayland-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstGLX11-%%VERSION%%.gir >diff --git a/graphics/gstreamer1-plugins-jpeg/Makefile b/graphics/gstreamer1-plugins-jpeg/Makefile >index 2edce202fad1..c477529c5db2 100644 >--- a/graphics/gstreamer1-plugins-jpeg/Makefile >+++ b/graphics/gstreamer1-plugins-jpeg/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer jpeg encoder/decoder plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USES= jpeg >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-jpeg/pkg-plist b/graphics/gstreamer1-plugins-jpeg/pkg-plist >new file mode 100644 >index 000000000000..b55fa17884af >--- /dev/null >+++ b/graphics/gstreamer1-plugins-jpeg/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstjpeg.so >diff --git a/graphics/gstreamer1-plugins-kms/Makefile b/graphics/gstreamer1-plugins-kms/Makefile >index b373ff1ed060..d619bd1c916c 100644 >--- a/graphics/gstreamer1-plugins-kms/Makefile >+++ b/graphics/gstreamer1-plugins-kms/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer video sink via KMS plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libdrm.so:graphics/libdrm >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-kms/pkg-plist b/graphics/gstreamer1-plugins-kms/pkg-plist >new file mode 100644 >index 000000000000..8ae47e487193 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-kms/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstkms.so >diff --git a/graphics/gstreamer1-plugins-libcaca/Makefile b/graphics/gstreamer1-plugins-libcaca/Makefile >index c0bcaac8eaee..34a5ded185ea 100644 >--- a/graphics/gstreamer1-plugins-libcaca/Makefile >+++ b/graphics/gstreamer1-plugins-libcaca/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer color ASCII art plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libcaca.so:graphics/libcaca >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-libcaca/pkg-plist b/graphics/gstreamer1-plugins-libcaca/pkg-plist >new file mode 100644 >index 000000000000..3892e34cc7a0 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-libcaca/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstcacasink.so >diff --git a/graphics/gstreamer1-plugins-libvisual/Makefile b/graphics/gstreamer1-plugins-libvisual/Makefile >index b92503806e7c..3ff6170c1f5e 100644 >--- a/graphics/gstreamer1-plugins-libvisual/Makefile >+++ b/graphics/gstreamer1-plugins-libvisual/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer libvisual plugin >@@ -8,4 +7,8 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libvisual-0.4.so:graphics/libvisual04 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-libvisual/pkg-plist b/graphics/gstreamer1-plugins-libvisual/pkg-plist >new file mode 100644 >index 000000000000..ba6965efb4ec >--- /dev/null >+++ b/graphics/gstreamer1-plugins-libvisual/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstlibvisual.so >diff --git a/graphics/gstreamer1-plugins-opencv/Makefile b/graphics/gstreamer1-plugins-opencv/Makefile >index 448a5bfdc7b0..88c10dd1b4d8 100644 >--- a/graphics/gstreamer1-plugins-opencv/Makefile >+++ b/graphics/gstreamer1-plugins-opencv/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 4 > CATEGORIES= graphics > > COMMENT= GStreamer opencv real time computer vision plugin >@@ -10,6 +9,8 @@ MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > > # Clang has issues with Overloaded stuff inside OpenCV > CXXFLAGS+= -Wno-overloaded-virtual >+LIB_DEPENDS= libopencv_highgui.so:graphics/opencv >+GST_PLUGIN_DIR= gst-libs/gst/opencv ext/opencv > > PLIST= ${.CURDIR}/pkg-plist > >diff --git a/graphics/gstreamer1-plugins-opencv/pkg-plist b/graphics/gstreamer1-plugins-opencv/pkg-plist >index 858267e57084..c8429907cf55 100644 >--- a/graphics/gstreamer1-plugins-opencv/pkg-plist >+++ b/graphics/gstreamer1-plugins-opencv/pkg-plist >@@ -5,5 +5,3 @@ lib/gstreamer-%%VERSION%%/libgstopencv.so > lib/libgstopencv-%%VERSION%%.so > lib/libgstopencv-%%VERSION%%.so.0 > lib/libgstopencv-%%VERSION%%.so.%%SOVERSION%% >-share/gst-plugins-bad/%%VERSION%%/opencv_haarcascades/fist.xml >-share/gst-plugins-bad/%%VERSION%%/opencv_haarcascades/palm.xml >diff --git a/graphics/gstreamer1-plugins-openexr/Makefile b/graphics/gstreamer1-plugins-openexr/Makefile >index 6beaa76499c4..196ccc474431 100644 >--- a/graphics/gstreamer1-plugins-openexr/Makefile >+++ b/graphics/gstreamer1-plugins-openexr/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 12 > CATEGORIES= graphics > > COMMENT= GStreamer OpenExr codec plugin >@@ -9,9 +8,11 @@ DIST= bad > > CPPFLAGS+= -DInt64=uint64_t > >-pre-configure: >- ${REINPLACE_CMD} -e 's/c++98/c++11/' ${WRKSRC}/ext/openexr/Makefile.in >- > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libOpenEXR.so:graphics/openexr \ >+ libImath-3_1.so:math/Imath >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-openexr/pkg-plist b/graphics/gstreamer1-plugins-openexr/pkg-plist >new file mode 100644 >index 000000000000..6314c51ffa27 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-openexr/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstopenexr.so >diff --git a/graphics/gstreamer1-plugins-openjpeg/Makefile b/graphics/gstreamer1-plugins-openjpeg/Makefile >index ffb8ccedd462..942fdfd7dd93 100644 >--- a/graphics/gstreamer1-plugins-openjpeg/Makefile >+++ b/graphics/gstreamer1-plugins-openjpeg/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer jpeg2000 decoder plugin >@@ -8,6 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >-EXTRA_PATCHES= ${.CURDIR}/files/patch-inc >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libopenjp2.so:graphics/openjpeg > > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-openjpeg/files/patch-inc b/graphics/gstreamer1-plugins-openjpeg/files/patch-inc >deleted file mode 100644 >index 1662b4301ea8..000000000000 >--- a/graphics/gstreamer1-plugins-openjpeg/files/patch-inc >+++ /dev/null >@@ -1,30 +0,0 @@ >-Put the openjpeg include directory first, so that <openjpeg.h> includes >-$LOCALBASE/include/openjpeg-2.3/openjpeg.h instead of $LOCALBASE/include/openjpeg.h >- >---- ext/openjpeg/Makefile.in.orig 2018-09-16 22:05:02.688860000 +0300 >-+++ ext/openjpeg/Makefile.in 2018-09-16 22:05:11.316104000 +0300 >-@@ -861,21 +861,21 @@ >- @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< >- >- libgstopenjpeg_la-gstopenjpegdec.lo: gstopenjpegdec.c >--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -MT libgstopenjpeg_la-gstopenjpegdec.lo -MD -MP -MF $(DEPDIR)/libgstopenjpeg_la-gstopenjpegdec.Tpo -c -o libgstopenjpeg_la-gstopenjpegdec.lo `test -f 'gstopenjpegdec.c' || echo '$(srcdir)/'`gstopenjpegdec.c >-+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(OPENJPEG_CFLAGS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -MT libgstopenjpeg_la-gstopenjpegdec.lo -MD -MP -MF $(DEPDIR)/libgstopenjpeg_la-gstopenjpegdec.Tpo -c -o libgstopenjpeg_la-gstopenjpegdec.lo `test -f 'gstopenjpegdec.c' || echo '$(srcdir)/'`gstopenjpegdec.c >- @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopenjpeg_la-gstopenjpegdec.Tpo $(DEPDIR)/libgstopenjpeg_la-gstopenjpegdec.Plo >- @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstopenjpegdec.c' object='libgstopenjpeg_la-gstopenjpegdec.lo' libtool=yes @AMDEPBACKSLASH@ >- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >- @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -c -o libgstopenjpeg_la-gstopenjpegdec.lo `test -f 'gstopenjpegdec.c' || echo '$(srcdir)/'`gstopenjpegdec.c >- >- libgstopenjpeg_la-gstopenjpegenc.lo: gstopenjpegenc.c >--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -MT libgstopenjpeg_la-gstopenjpegenc.lo -MD -MP -MF $(DEPDIR)/libgstopenjpeg_la-gstopenjpegenc.Tpo -c -o libgstopenjpeg_la-gstopenjpegenc.lo `test -f 'gstopenjpegenc.c' || echo '$(srcdir)/'`gstopenjpegenc.c >-+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(OPENJPEG_CFLAGS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -MT libgstopenjpeg_la-gstopenjpegenc.lo -MD -MP -MF $(DEPDIR)/libgstopenjpeg_la-gstopenjpegenc.Tpo -c -o libgstopenjpeg_la-gstopenjpegenc.lo `test -f 'gstopenjpegenc.c' || echo '$(srcdir)/'`gstopenjpegenc.c >- @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopenjpeg_la-gstopenjpegenc.Tpo $(DEPDIR)/libgstopenjpeg_la-gstopenjpegenc.Plo >- @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstopenjpegenc.c' object='libgstopenjpeg_la-gstopenjpegenc.lo' libtool=yes @AMDEPBACKSLASH@ >- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >- @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -c -o libgstopenjpeg_la-gstopenjpegenc.lo `test -f 'gstopenjpegenc.c' || echo '$(srcdir)/'`gstopenjpegenc.c >- >- libgstopenjpeg_la-gstopenjpeg.lo: gstopenjpeg.c >--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -MT libgstopenjpeg_la-gstopenjpeg.lo -MD -MP -MF $(DEPDIR)/libgstopenjpeg_la-gstopenjpeg.Tpo -c -o libgstopenjpeg_la-gstopenjpeg.lo `test -f 'gstopenjpeg.c' || echo '$(srcdir)/'`gstopenjpeg.c >-+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(OPENJPEG_CFLAGS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopenjpeg_la_CFLAGS) $(CFLAGS) -MT libgstopenjpeg_la-gstopenjpeg.lo -MD -MP -MF $(DEPDIR)/libgstopenjpeg_la-gstopenjpeg.Tpo -c -o libgstopenjpeg_la-gstopenjpeg.lo `test -f 'gstopenjpeg.c' || echo '$(srcdir)/'`gstopenjpeg.c >- @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopenjpeg_la-gstopenjpeg.Tpo $(DEPDIR)/libgstopenjpeg_la-gstopenjpeg.Plo >- @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstopenjpeg.c' object='libgstopenjpeg_la-gstopenjpeg.lo' libtool=yes @AMDEPBACKSLASH@ >- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >diff --git a/graphics/gstreamer1-plugins-openjpeg/pkg-plist b/graphics/gstreamer1-plugins-openjpeg/pkg-plist >new file mode 100644 >index 000000000000..59b2f1740ae9 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-openjpeg/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstopenjpeg.so >diff --git a/graphics/gstreamer1-plugins-png/Makefile b/graphics/gstreamer1-plugins-png/Makefile >index 24d724669845..bf71f1cfdd9e 100644 >--- a/graphics/gstreamer1-plugins-png/Makefile >+++ b/graphics/gstreamer1-plugins-png/Makefile >@@ -1,12 +1,15 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > PKGNAMESUFFIX= 1-plugins-png > > COMMENT= GStreamer png plugin > >-GST_PLUGIN= libpng >+GST_PLUGIN= png > DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libpng.so:graphics/png >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-png/pkg-plist b/graphics/gstreamer1-plugins-png/pkg-plist >new file mode 100644 >index 000000000000..a12ca0b2e693 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-png/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstpng.so >diff --git a/graphics/gstreamer1-plugins-qt/Makefile b/graphics/gstreamer1-plugins-qt/Makefile >index b1bbe5a6db2e..3a5997d5ff53 100644 >--- a/graphics/gstreamer1-plugins-qt/Makefile >+++ b/graphics/gstreamer1-plugins-qt/Makefile >@@ -1,11 +1,17 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer Qt videosink plugin > >-GST_PLUGIN= qt >+GST_PLUGIN_SUFFIX= -qt >+GST_PLUGIN= qt5 > DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USES= compiler:c++11-lang qt:5 >+USE_QT= core gui declarative buildtools:build network x11extras >+USE_GSTREAMER= gl >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-qt/pkg-plist b/graphics/gstreamer1-plugins-qt/pkg-plist >new file mode 100644 >index 000000000000..beefc5f2b344 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-qt/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstqmlgl.so >diff --git a/graphics/gstreamer1-plugins-rsvg/Makefile b/graphics/gstreamer1-plugins-rsvg/Makefile >index fbb7847500df..dc1829c39322 100644 >--- a/graphics/gstreamer1-plugins-rsvg/Makefile >+++ b/graphics/gstreamer1-plugins-rsvg/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer SVG plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= cairo librsvg2 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-rsvg/pkg-plist b/graphics/gstreamer1-plugins-rsvg/pkg-plist >new file mode 100644 >index 000000000000..a0060b22ff8b >--- /dev/null >+++ b/graphics/gstreamer1-plugins-rsvg/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstrsvg.so >diff --git a/graphics/gstreamer1-plugins-vulkan/Makefile b/graphics/gstreamer1-plugins-vulkan/Makefile >index 8113da2c2040..74a38d6726cf 100644 >--- a/graphics/gstreamer1-plugins-vulkan/Makefile >+++ b/graphics/gstreamer1-plugins-vulkan/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= graphics > > COMMENT= GStreamer Vulkan graphics plugin >@@ -8,4 +7,17 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GSTREAMER= gl >+BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto \ >+ ${LOCALBASE}/include/libdrm/drm_fourcc.h:graphics/libdrm \ >+ ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \ >+ wayland-protocols>=0:graphics/wayland-protocols >+LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader \ >+ libwayland-client.so:graphics/wayland \ >+ libshaderc_shared.so:graphics/shaderc >+ >+MESON_ARGS+= -Dwayland=enabled >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-vulkan/pkg-plist b/graphics/gstreamer1-plugins-vulkan/pkg-plist >new file mode 100644 >index 000000000000..03d21e5e2674 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-vulkan/pkg-plist >@@ -0,0 +1,53 @@ >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkapi.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkbarrier.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkbuffermemory.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkbufferpool.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkcommandbuffer.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkcommandpool.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkconfig.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdebug.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdescriptorcache.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdescriptorpool.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdescriptorset.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdevice.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdisplay.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkerror.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkfence.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkformat.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkfullscreenquad.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkhandle.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkhandlepool.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkimagebufferpool.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkimagememory.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkimageview.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkinstance.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkmemory.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkphysicaldevice.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkqueue.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkswapper.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvktrash.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkutils.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkvideofilter.h >+include/gstreamer-%%VERSION%%/gst/vulkan/gstvkwindow.h >+include/gstreamer-%%VERSION%%/gst/vulkan/vulkan-enumtypes.h >+include/gstreamer-%%VERSION%%/gst/vulkan/vulkan-prelude.h >+include/gstreamer-%%VERSION%%/gst/vulkan/vulkan.h >+include/gstreamer-%%VERSION%%/gst/vulkan/vulkan_fwd.h >+include/gstreamer-%%VERSION%%/gst/vulkan/wayland/gstvkdisplay_wayland.h >+include/gstreamer-%%VERSION%%/gst/vulkan/wayland/wayland.h >+include/gstreamer-%%VERSION%%/gst/wayland/wayland.h >+lib/girepository-%%VERSION%%/GstVulkan-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstVulkanWayland-%%VERSION%%.typelib >+lib/gstreamer-%%VERSION%%/libgstvulkan.so >+lib/gstreamer-%%VERSION%%/libgstwaylandsink.so >+lib/libgstvulkan-%%VERSION%%.so >+lib/libgstvulkan-%%VERSION%%.so.0 >+lib/libgstvulkan-%%VERSION%%.so.%%SOVERSION%% >+lib/libgstwayland-%%VERSION%%.so >+lib/libgstwayland-%%VERSION%%.so.0 >+lib/libgstwayland-%%VERSION%%.so.%%SOVERSION%% >+libdata/pkgconfig/gstreamer-vulkan-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-vulkan-wayland-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-wayland-%%VERSION%%.pc >+share/gir-%%VERSION%%/GstVulkan-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstVulkanWayland-%%VERSION%%.gir >diff --git a/graphics/gstreamer1-plugins-webp/Makefile b/graphics/gstreamer1-plugins-webp/Makefile >index cbe5a9ea1948..ca3d3814183d 100644 >--- a/graphics/gstreamer1-plugins-webp/Makefile >+++ b/graphics/gstreamer1-plugins-webp/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer webp image decoder plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libwebp.so:graphics/webp >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-webp/pkg-plist b/graphics/gstreamer1-plugins-webp/pkg-plist >new file mode 100644 >index 000000000000..f5c2ff1873a8 >--- /dev/null >+++ b/graphics/gstreamer1-plugins-webp/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstwebp.so >diff --git a/graphics/gstreamer1-plugins-zbar/Makefile b/graphics/gstreamer1-plugins-zbar/Makefile >index 0b703526e8c4..43618695ac05 100644 >--- a/graphics/gstreamer1-plugins-zbar/Makefile >+++ b/graphics/gstreamer1-plugins-zbar/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= graphics > > COMMENT= GStreamer ZBar barcode detector plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libzbar.so:graphics/zbar >+ > .include "${MASTERDIR}/Makefile" >diff --git a/graphics/gstreamer1-plugins-zbar/pkg-plist b/graphics/gstreamer1-plugins-zbar/pkg-plist >new file mode 100644 >index 000000000000..455baeafe32b >--- /dev/null >+++ b/graphics/gstreamer1-plugins-zbar/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstzbar.so >diff --git a/multimedia/gstreamer1-editing-services/Makefile b/multimedia/gstreamer1-editing-services/Makefile >index e8f0ff05f553..e93872cb82f8 100644 >--- a/multimedia/gstreamer1-editing-services/Makefile >+++ b/multimedia/gstreamer1-editing-services/Makefile >@@ -1,8 +1,8 @@ > PORTNAME= gstreamer1-editing-services >-PORTVERSION= 1.16.3 >+PORTVERSION= 1.20.3 > CATEGORIES= multimedia >-MASTER_SITES= http://gstreamer.freedesktop.org/src/gstreamer-editing-services/ >-DISTNAME= gstreamer-editing-services-${PORTVERSION} >+MASTER_SITES= https://gstreamer.freedesktop.org/src/gstreamer-editing-services/ >+DISTNAME= gst-editing-services-${PORTVERSION} > > MAINTAINER= multimedia@FreeBSD.org > COMMENT= GStreamer editing services >@@ -10,21 +10,23 @@ WWW= http://gstreamer.freedeskop.org > > LICENSE= LGPL20 > >-USES= compiler:c11 gnome gstreamer meson python pkgconfig tar:xz >+USES= bison compiler:c11 gnome gstreamer meson ninja python:3.8+ pkgconfig tar:xz > USE_LDCONFIG= yes > USE_GNOME= glib20 introspection:build libxml2 pygobject3:build > USE_GSTREAMER= good bad > LIB_DEPENDS+= libgstvalidate-1.0.so:multimedia/gstreamer1-validate > PORTSCOUT= limitw:1,even > >-CONFIGURE_ARGS= -D gtk_doc=disabled \ >- -D introspection=enabled \ >- -D pygi-overrides-dir=${PYTHON_SITELIBDIR}/gstreamer-editing-services >-PLIST_SUB= VERSION=1.0 SOVERSION=0.1603.0 >+CONFIGURE_ARGS= -Ddoc=disabled \ >+ -Dintrospection=enabled \ >+ -Dpygi-overrides-dir=${PYTHON_SITELIBDIR}/gstreamer-editing-services >+PLIST_SUB= VERSION=1.0 SOVERSION=0.2003.0 >+ >+BINARY_ALIAS= python3=${PYTHON_VERSION} > > post-install: >- ${MKDIR} ${PREFIX}/share/bash-completion/completions >- ${INSTALL_SCRIPT} ${WRKSRC}/data/completions/ges-launch-1.0 \ >- ${STAGEDIR}${PREFIX}/share/bash-completion/completions/ >+ ${MKDIR} ${PREFIX}/share/bash-completion/completions >+ ${INSTALL_SCRIPT} ${WRKSRC}/data/completions/ges-launch-1.0 \ >+ ${STAGEDIR}${PREFIX}/share/bash-completion/completions/ > > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1-editing-services/distinfo b/multimedia/gstreamer1-editing-services/distinfo >index 51d19f59607d..6cfba2f2190c 100644 >--- a/multimedia/gstreamer1-editing-services/distinfo >+++ b/multimedia/gstreamer1-editing-services/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1654955116 >-SHA256 (gstreamer-editing-services-1.16.3.tar.xz) = 9b05cbb8a6f1db53999e7ad11f00f4f1ccc154d6805b7e49cb7755eb37a99ba6 >-SIZE (gstreamer-editing-services-1.16.3.tar.xz) = 1091208 >+TIMESTAMP = 1661966172 >+SHA256 (gst-editing-services-1.20.3.tar.xz) = 5fd896de69fbe24421eb6b0ff8d2f8b4c3cba3f3025ceacd302172f39a8abaa2 >+SIZE (gst-editing-services-1.20.3.tar.xz) = 979284 >diff --git a/multimedia/gstreamer1-editing-services/pkg-plist b/multimedia/gstreamer1-editing-services/pkg-plist >index 918a07698746..bb8837624758 100644 >--- a/multimedia/gstreamer1-editing-services/pkg-plist >+++ b/multimedia/gstreamer1-editing-services/pkg-plist >@@ -23,6 +23,7 @@ include/gstreamer-%%VERSION%%/ges/ges-gerror.h > include/gstreamer-%%VERSION%%/ges/ges-group.h > include/gstreamer-%%VERSION%%/ges/ges-image-source.h > include/gstreamer-%%VERSION%%/ges/ges-layer.h >+include/gstreamer-%%VERSION%%/ges/ges-marker-list.h > include/gstreamer-%%VERSION%%/ges/ges-meta-container.h > include/gstreamer-%%VERSION%%/ges/ges-multi-file-source.h > include/gstreamer-%%VERSION%%/ges/ges-operation-clip.h >@@ -34,15 +35,18 @@ include/gstreamer-%%VERSION%%/ges/ges-prelude.h > include/gstreamer-%%VERSION%%/ges/ges-project.h > include/gstreamer-%%VERSION%%/ges/ges-screenshot.h > include/gstreamer-%%VERSION%%/ges/ges-source-clip.h >+include/gstreamer-%%VERSION%%/ges/ges-source-clip-asset.h > include/gstreamer-%%VERSION%%/ges/ges-source.h > include/gstreamer-%%VERSION%%/ges/ges-test-clip.h > include/gstreamer-%%VERSION%%/ges/ges-text-overlay-clip.h > include/gstreamer-%%VERSION%%/ges/ges-text-overlay.h >+include/gstreamer-%%VERSION%%/ges/ges-time-overlay-clip.h > include/gstreamer-%%VERSION%%/ges/ges-timeline-element.h > include/gstreamer-%%VERSION%%/ges/ges-timeline.h > include/gstreamer-%%VERSION%%/ges/ges-title-clip.h > include/gstreamer-%%VERSION%%/ges/ges-title-source.h > include/gstreamer-%%VERSION%%/ges/ges-track-element-asset.h >+include/gstreamer-%%VERSION%%/ges/ges-track-element-deprecated.h > include/gstreamer-%%VERSION%%/ges/ges-track-element.h > include/gstreamer-%%VERSION%%/ges/ges-track.h > include/gstreamer-%%VERSION%%/ges/ges-transition-clip.h >diff --git a/multimedia/gstreamer1-libav/Makefile b/multimedia/gstreamer1-libav/Makefile >index 6ee6bdcf6f6f..21bbf6c067b4 100644 >--- a/multimedia/gstreamer1-libav/Makefile >+++ b/multimedia/gstreamer1-libav/Makefile >@@ -1,37 +1,32 @@ > PORTNAME= gstreamer1-libav >-PORTVERSION= 1.16.2 >+PORTVERSION= 1.20.3 > CATEGORIES= multimedia > MASTER_SITES= http://gstreamer.freedesktop.org/src/gst-libav/ > DISTNAME= gst-libav-${PORTVERSION} > >-PATCH_SITES= https://gitlab.freedesktop.org/gstreamer/gst-libav/-/commit/ >-PATCHFILES+= 07b43c727c9a.patch:-p1 # https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/127 >- > MAINTAINER= multimedia@FreeBSD.org > COMMENT= GStreamer plug-in with many audio/video decoders/encoders > WWW= https://gstreamer.freedesktop.org/ > > LICENSE= LGPL20+ >-LICENSE_FILE= ${WRKSRC}/COPYING.LIB >+LICENSE_FILE= ${WRKSRC}/COPYING > > BUILD_DEPENDS= orc>=0.4.16:devel/orc > LIB_DEPENDS= liborc-0.4.so:devel/orc > > PORTSCOUT= limitw:1,even > >-USES= compiler:features gettext-runtime gmake gnome gstreamer libtool localbase \ >- pkgconfig python:build tar:xz >-USE_LDCONFIG= yes >+USES= bison gettext-runtime gnome gstreamer libtool localbase \ >+ meson ninja pkgconfig python:3.8+,build tar:xz > USE_GNOME= glib20 >-GNU_CONFIGURE= yes >-INSTALL_TARGET= install-strip >+ >+BINARY_ALIAS= python3=${PYTHON_VERSION} > > OPTIONS_DEFINE= FFMPEG > OPTIONS_DEFAULT=FFMPEG > > FFMPEG_DESC?= Use system ffmpeg instead of internal libav > FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg >-FFMPEG_CONFIGURE_WITH= system-libav > FFMPEG_BUILD_DEPENDS_OFF= nasm:devel/nasm > FFMPEG_MAKE_ENV_OFF= V=1 > FFMPEG_VARS_OFF+= NOPRECIOUSMAKEVARS=yes # ARCH >@@ -42,8 +37,4 @@ FFMPEG_VARS_OFF+= NOPRECIOUSMAKEVARS=yes # ARCH > LDFLAGS_aarch64= -Wl,-z,notext > .endif > >-post-patch: >- @${REINPLACE_CMD} -e 's|-Werror||g' \ >- ${WRKSRC}/configure >- > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1-libav/distinfo b/multimedia/gstreamer1-libav/distinfo >index c2a3b536868f..5e4903508c08 100644 >--- a/multimedia/gstreamer1-libav/distinfo >+++ b/multimedia/gstreamer1-libav/distinfo >@@ -1,5 +1,3 @@ >-TIMESTAMP = 1575825716 >-SHA256 (gst-libav-1.16.2.tar.xz) = c724f612700c15a933c7356fbeabb0bb9571fb5538f8b1b54d4d2d94188deef2 >-SIZE (gst-libav-1.16.2.tar.xz) = 9466288 >-SHA256 (07b43c727c9a.patch) = a0331d46d744dba3885a3834457ed071111b49eccfda70ebada914090831f12b >-SIZE (07b43c727c9a.patch) = 1237 >+TIMESTAMP = 1663682373 >+SHA256 (gst-libav-1.20.3.tar.xz) = 3fedd10560fcdfaa1b6462cbf79a38c4e7b57d7f390359393fc0cef6dbf27dfe >+SIZE (gst-libav-1.20.3.tar.xz) = 284528 >diff --git a/multimedia/gstreamer1-libav/pkg-plist b/multimedia/gstreamer1-libav/pkg-plist >index e61456f3a70a..bedffff6e24c 100644 >--- a/multimedia/gstreamer1-libav/pkg-plist >+++ b/multimedia/gstreamer1-libav/pkg-plist >@@ -1,23 +1 @@ > lib/gstreamer-1.0/libgstlibav.so >-share/gtk-doc/html/gst-libav-plugins-1.0/ch01.html >-share/gtk-doc/html/gst-libav-plugins-1.0/ch02.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-1.0.devhelp2 >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegAudDec.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegAudEnc.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegVidDec.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegVidEnc.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstav.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavcfg.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavcodecmap.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavprotocol.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavutils.html >-share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-plugin-libav.html >-share/gtk-doc/html/gst-libav-plugins-1.0/home.png >-share/gtk-doc/html/gst-libav-plugins-1.0/index.html >-share/gtk-doc/html/gst-libav-plugins-1.0/left-insensitive.png >-share/gtk-doc/html/gst-libav-plugins-1.0/left.png >-share/gtk-doc/html/gst-libav-plugins-1.0/right-insensitive.png >-share/gtk-doc/html/gst-libav-plugins-1.0/right.png >-share/gtk-doc/html/gst-libav-plugins-1.0/style.css >-share/gtk-doc/html/gst-libav-plugins-1.0/up-insensitive.png >-share/gtk-doc/html/gst-libav-plugins-1.0/up.png >diff --git a/multimedia/gstreamer1-plugins-all/Makefile b/multimedia/gstreamer1-plugins-all/Makefile >index 52ded3b9e796..b3822a3c59ce 100644 >--- a/multimedia/gstreamer1-plugins-all/Makefile >+++ b/multimedia/gstreamer1-plugins-all/Makefile >@@ -1,6 +1,5 @@ > PORTNAME= gstreamer1-plugins-all >-PORTVERSION= 1.16 >-PORTREVISION= 4 >+PORTVERSION= 1.20 > CATEGORIES= multimedia > > MAINTAINER= multimedia@FreeBSD.org >diff --git a/multimedia/gstreamer1-plugins-aom/Makefile b/multimedia/gstreamer1-plugins-aom/Makefile >index 0a9b13372f38..e640fa4385ab 100644 >--- a/multimedia/gstreamer1-plugins-aom/Makefile >+++ b/multimedia/gstreamer1-plugins-aom/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 18 > CATEGORIES= multimedia > > COMMENT= GStreamer (libaom) plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libaom.so:multimedia/aom >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-aom/pkg-plist b/multimedia/gstreamer1-plugins-aom/pkg-plist >new file mode 100644 >index 000000000000..a7fc16b5a906 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-aom/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstaom.so >diff --git a/multimedia/gstreamer1-plugins-assrender/Makefile b/multimedia/gstreamer1-plugins-assrender/Makefile >index a152852e391c..96769b404155 100644 >--- a/multimedia/gstreamer1-plugins-assrender/Makefile >+++ b/multimedia/gstreamer1-plugins-assrender/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer ASS/SSA text renderer plugin >@@ -8,4 +7,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libass.so:multimedia/libass >+ > .include "${MASTERDIR}/Makefile" >+ >+USES+= compiler:c11 >diff --git a/multimedia/gstreamer1-plugins-assrender/pkg-plist b/multimedia/gstreamer1-plugins-assrender/pkg-plist >new file mode 100644 >index 000000000000..675f908991c1 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-assrender/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstassrender.so >diff --git a/multimedia/gstreamer1-plugins-bad/Makefile b/multimedia/gstreamer1-plugins-bad/Makefile >index 5302b0f489fc..8900ec151aeb 100644 >--- a/multimedia/gstreamer1-plugins-bad/Makefile >+++ b/multimedia/gstreamer1-plugins-bad/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= multimedia > > COMMENT= GStreamer-plugins that need more quality, testing or documentation >@@ -6,25 +5,113 @@ COMMENT= GStreamer-plugins that need more quality, testing or documentation > GST_PLUGIN= bad > GST_PLUGIN_SUFFIX= -bad > >-MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+USES+= xorg >+USE_XORG+=x11 > >-BUILD_DEPENDS+= v4l_compat>=1.0.20100321:multimedia/v4l_compat >+MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > > DIST= bad >-BAD_GST_DIRS= gst-libs sys gst po pkgconfig >-# "extra" plugins enabled by default in Makefile.common >-BAD_GST_DIRS+= ext/bz2 >+BAD_GST_ENABLED_PLUGINS=accurip \ >+ adaptivedemux \ >+ adpcmdec \ >+ adpcmenc \ >+ aes \ >+ aiff \ >+ asfmux \ >+ audio \ >+ audiobuffersplit \ >+ audiofxbad \ >+ audiolatency \ >+ audiomixmatrix \ >+ audiovisualizers \ >+ autoconvert \ >+ basecamerabinsrc \ >+ bayer \ >+ bz2 \ >+ camerabin2 \ >+ codecalpha \ >+ codecparsers \ >+ codecs \ >+ coloreffects \ >+ data \ >+ debugutils \ >+ dvbsubenc \ >+ dvbsuboverlay \ >+ dvdspu \ >+ examples \ >+ faceoverlay \ >+ festival \ >+ fieldanalysis \ >+ freeverb \ >+ frei0r \ >+ gaudieffects \ >+ gdp \ >+ geometrictransform \ >+ id3tag \ >+ insertbin \ >+ inter \ >+ interfaces \ >+ interlace \ >+ ipcpipeline \ >+ isoff \ >+ ivfparse \ >+ ivtc \ >+ jp2kdecimator \ >+ jpegformat \ >+ librfb \ >+ midi \ >+ mpegdemux \ >+ mpegpsmux \ >+ mpegts \ >+ mpegtsdemux \ >+ mpegtsmux \ >+ mxf \ >+ netsim \ >+ nls \ >+ onvif \ >+ pcapparse \ >+ pkgconfig \ >+ play \ >+ player \ >+ pnm \ >+ proxy \ >+ rawparse \ >+ removesilence \ >+ rist \ >+ rtmp2 \ >+ rtp \ >+ sctp \ >+ sdp \ >+ segmentclip \ >+ shm \ >+ siren \ >+ smooth \ >+ speed \ >+ subenc \ >+ switchbin \ >+ timecode \ >+ transcode \ >+ transcoder \ >+ uridownloader \ >+ videofilters \ >+ videoframe_audiolevel \ >+ videoparsers \ >+ videosignal \ >+ vmnc \ >+ webrtc \ >+ y4m >+ > NO_GSTREAMER_COMMON= yes > PLIST= ${.CURDIR}/pkg-plist > >-do-build: >-.for dir in ${BAD_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >- >-do-install: >-.for dir in ${BAD_GST_DIRS} >- @(cd ${INSTALL_WRKSRC}/${dir} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET}) >-.endfor >+USES+=ssl > > .include "${MASTERDIR}/Makefile" >+ >+USE_GNOME+= glib20 gtk30 >+ >+BUILD_DEPENDS+= v4l_compat>=1.0.20100321:multimedia/v4l_compat \ >+ gtk3>=3.10:x11-toolkits/gtk30 >+ >+LIB_DEPENDS+=libnice.so:net-im/libnice >+ >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-data_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-data_meson.build >new file mode 100644 >index 000000000000..6b23a6827851 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-data_meson.build >@@ -0,0 +1,12 @@ >+--- data/meson.build.orig 2022-09-05 21:41:46 UTC >++++ data/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('data').enabled() >+ encoding_targetsdir = join_paths(get_option('datadir'), >+ 'gstreamer-' + api_version, 'encoding-profiles') >+ >+@@ -21,3 +22,4 @@ foreach path_targets : encoding_targets >+ etargets = path_targets.get(1) >+ install_data(sources: etargets, install_dir: dir) >+ endforeach >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_dash_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-ext_dash_meson.build >new file mode 100644 >index 000000000000..da6913ecbf4c >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_dash_meson.build >@@ -0,0 +1,21 @@ >+--- ext/dash/meson.build.orig 2022-09-13 21:07:32 UTC >++++ ext/dash/meson.build >+@@ -45,9 +45,15 @@ if xml2_dep.found() >+ c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'], >+ link_args : noseh_link_args, >+ include_directories : [configinc, libsinc], >+- dependencies : [gstadaptivedemux_dep, gsturidownloader_dep, gsttag_dep, >+- gstnet_dep, gstpbutils_dep, gstbase_dep, gstisoff_dep, >+- gio_dep, xml2_dep], >++ dependencies : [cc.find_library('gstadaptivedemux-1.0', required : true), >++ cc.find_library('gsturidownloader-1.0', required : true), >++ dependency('gstreamer-tag-1.0'), >++ dependency('gstreamer-net-1.0'), >++ dependency('gstreamer-pbutils-1.0'), >++ gstbase_dep, >++ cc.find_library('gstisoff-1.0', required : true), >++ gio_dep, >++ xml2_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_hls_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-ext_hls_meson.build >new file mode 100644 >index 000000000000..cc1e561b6d3d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_hls_meson.build >@@ -0,0 +1,12 @@ >+--- ext/hls/meson.build.orig 2022-09-16 17:38:38 UTC >++++ ext/hls/meson.build >+@@ -58,7 +58,8 @@ gsthls = library('gsthls', >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+ dependencies : [gstpbutils_dep, gsttag_dep, gstvideo_dep, >+- gstadaptivedemux_dep, gsturidownloader_dep, >++ cc.find_library('gstadaptivedemux-1.0', required: true), >++ cc.find_library('gsturidownloader-1.0', required: true), >+ hls_crypto_dep, gio_dep, libm], >+ install : true, >+ install_dir : plugins_install_dir, >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_opencv_gstcvdilateerode.cpp b/multimedia/gstreamer1-plugins-bad/files/patch-ext_opencv_gstcvdilateerode.cpp >deleted file mode 100644 >index 632a5b18225a..000000000000 >--- a/multimedia/gstreamer1-plugins-bad/files/patch-ext_opencv_gstcvdilateerode.cpp >+++ /dev/null >@@ -1,11 +0,0 @@ >---- ext/opencv/gstcvdilateerode.cpp.orig 2021-08-02 14:37:33 UTC >-+++ ext/opencv/gstcvdilateerode.cpp >-@@ -89,7 +89,7 @@ gst_cv_dilate_erode_get_type (void) >- { >- static volatile gsize opencv_dilate_erode_type = 0; >- >-- if (g_once_init_enter (&opencv_dilate_erode_type)) { >-+ if (g_once_init_enter ((unsigned long *)&opencv_dilate_erode_type)) { >- GType _type; >- static const GTypeInfo opencv_dilate_erode_info = { >- sizeof (GstCvDilateErodeClass), >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_openjpeg_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-ext_openjpeg_meson.build >new file mode 100644 >index 000000000000..91d6ee280f39 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_openjpeg_meson.build >@@ -0,0 +1,11 @@ >+--- ext/openjpeg/meson.build.orig 2022-09-12 08:53:57 UTC >++++ ext/openjpeg/meson.build >+@@ -18,7 +18,7 @@ if openjpeg_dep.found() >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+ dependencies : [gst_dep, gstvideo_dep, openjpeg_dep, >+- gstcodecparsers_dep, libm], >++ dependency('gstreamer-codecparsers-1.0'), libm], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_openmpt_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-ext_openmpt_meson.build >new file mode 100644 >index 000000000000..f7b9a0e82bc5 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_openmpt_meson.build >@@ -0,0 +1,11 @@ >+--- ext/openmpt/meson.build.orig 2022-06-15 22:36:22 UTC >++++ ext/openmpt/meson.build >+@@ -4,7 +4,7 @@ if openmpt_dep.found() >+ 'gstopenmptdec.c', 'plugin.c', >+ c_args: gst_plugins_bad_args, >+ include_directories: [configinc], >+- dependencies: [gstbadaudio_dep, gstaudio_dep, openmpt_dep], >++ dependencies: [dependency('gstreamer-bad-audio-1.0'), dependency('gstreamer-audio-1.0'), openmpt_dep], >+ install: true, >+ install_dir: plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_smoothstreaming_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-ext_smoothstreaming_meson.build >new file mode 100644 >index 000000000000..53ad3bf562e7 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_smoothstreaming_meson.build >@@ -0,0 +1,17 @@ >+--- ext/smoothstreaming/meson.build.orig 2022-09-16 20:01:19 UTC >++++ ext/smoothstreaming/meson.build >+@@ -13,8 +13,12 @@ if xml28_dep.found() >+ c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'], >+ link_args : noseh_link_args, >+ include_directories : [configinc, libsinc], >+- dependencies : [gst_dep, gstadaptivedemux_dep, gstcodecparsers_dep, >+- gsturidownloader_dep, gstisoff_dep, xml28_dep, gio_dep], >++ dependencies : [gst_dep, >++ cc.find_library('gstadaptivedemux-1.0', required : true), >++ dependency('gstreamer-codecparsers-1.0', required : true), >++ cc.find_library('gsturidownloader-1.0', required : true), >++ cc.find_library('gstisoff-1.0', required : true), >++ xml28_dep, gio_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_spandsp_gstspanplc.h b/multimedia/gstreamer1-plugins-bad/files/patch-ext_spandsp_gstspanplc.h >new file mode 100644 >index 000000000000..1ecaa7622f5c >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_spandsp_gstspanplc.h >@@ -0,0 +1,10 @@ >+--- ext/spandsp/gstspanplc.h.orig 2022-09-16 22:58:32 UTC >++++ ext/spandsp/gstspanplc.h >+@@ -22,6 +22,7 @@ >+ >+ #include <gst/gst.h> >+ >++#include <spandsp/private/plc.h> >+ #include <spandsp.h> >+ >+ G_BEGIN_DECLS >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-ext_webrtcdsp_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-ext_webrtcdsp_meson.build >new file mode 100644 >index 000000000000..10e6460bbda0 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-ext_webrtcdsp_meson.build >@@ -0,0 +1,11 @@ >+--- ext/webrtcdsp/meson.build.orig 2022-09-07 19:55:24 UTC >++++ ext/webrtcdsp/meson.build >+@@ -17,7 +17,7 @@ if webrtc_dep.found() and gnustl_dep.found() >+ cpp_args : gst_plugins_bad_args, >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+- dependencies : [gstbase_dep, gstaudio_dep, gstbadaudio_dep, webrtc_dep, gnustl_dep], >++ dependencies : [gstbase_dep, gstaudio_dep, dependency('gstreamer-bad-audio-1.0'), webrtc_dep, gnustl_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ override_options : ['cpp_std=c++11'], >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_a0cd455d b/multimedia/gstreamer1-plugins-bad/files/patch-git_a0cd455d >deleted file mode 100644 >index dda40dab4b28..000000000000 >--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_a0cd455d >+++ /dev/null >@@ -1,142 +0,0 @@ >-From a0cd455dd0e0375c6395fe732173225ea7e18562 Mon Sep 17 00:00:00 2001 >-From: Debarshi Ray <rishi@gnu.org> >-Date: Fri, 20 Mar 2020 15:49:06 +0100 >-Subject: [PATCH] lv2: Make it build with -fno-common >- >-GCC 10 defaults to -fno-common. This means that global variables shared >-across multiple translation units should be declared as 'extern' in >-header files and defined in exactly one C file. See: >-https://gcc.gnu.org/gcc-10/porting_to.html >- >-https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1125 >- >-Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1125> >---- >- ext/lv2/gstlv2.c | 33 ++++++++++++++++++++++++++ >- ext/lv2/gstlv2.h | 62 ++++++++++++++++++++++++------------------------ >- 2 files changed, 64 insertions(+), 31 deletions(-) >- >-diff --git a/ext/lv2/gstlv2.c b/ext/lv2/gstlv2.c >-index 60d502f41a..7feeee1921 100644 >---- ext/lv2/gstlv2.c >-+++ ext/lv2/gstlv2.c >-@@ -69,6 +69,39 @@ GST_DEBUG_CATEGORY (lv2_debug); >- #error "Unsupported OS" >- #endif >- >-+LilvWorld *world = NULL; >-+LilvNode *atom_class = NULL; >-+LilvNode *audio_class = NULL; >-+LilvNode *control_class = NULL; >-+LilvNode *cv_class = NULL; >-+LilvNode *event_class = NULL; >-+LilvNode *input_class = NULL; >-+LilvNode *output_class = NULL; >-+LilvNode *preset_class = NULL; >-+LilvNode *state_iface = NULL; >-+LilvNode *state_uri = NULL; >-+ >-+LilvNode *integer_prop = NULL; >-+LilvNode *toggled_prop = NULL; >-+LilvNode *designation_pred = NULL; >-+LilvNode *in_place_broken_pred = NULL; >-+LilvNode *optional_pred = NULL; >-+LilvNode *group_pred = NULL; >-+LilvNode *supports_event_pred = NULL; >-+LilvNode *label_pred = NULL; >-+ >-+LilvNode *center_role = NULL; >-+LilvNode *left_role = NULL; >-+LilvNode *right_role = NULL; >-+LilvNode *rear_center_role = NULL; >-+LilvNode *rear_left_role = NULL; >-+LilvNode *rear_right_role = NULL; >-+LilvNode *lfe_role = NULL; >-+LilvNode *center_left_role = NULL; >-+LilvNode *center_right_role = NULL; >-+LilvNode *side_left_role = NULL; >-+LilvNode *side_right_role = NULL; >-+ >- GstStructure *lv2_meta_all = NULL; >- >- static void >-diff --git a/ext/lv2/gstlv2.h b/ext/lv2/gstlv2.h >-index 177f9b2c19..9f72582294 100644 >---- ext/lv2/gstlv2.h >-+++ ext/lv2/gstlv2.h >-@@ -28,40 +28,40 @@ >- >- #include "gstlv2utils.h" >- >--LilvWorld *world; >--LilvNode *atom_class; >--LilvNode *audio_class; >--LilvNode *control_class; >--LilvNode *cv_class; >--LilvNode *event_class; >--LilvNode *input_class; >--LilvNode *output_class; >--LilvNode *preset_class; >--LilvNode *state_iface; >--LilvNode *state_uri; >-+extern LilvWorld *world; >-+extern LilvNode *atom_class; >-+extern LilvNode *audio_class; >-+extern LilvNode *control_class; >-+extern LilvNode *cv_class; >-+extern LilvNode *event_class; >-+extern LilvNode *input_class; >-+extern LilvNode *output_class; >-+extern LilvNode *preset_class; >-+extern LilvNode *state_iface; >-+extern LilvNode *state_uri; >- >--LilvNode *integer_prop; >--LilvNode *toggled_prop; >--LilvNode *designation_pred; >--LilvNode *in_place_broken_pred; >--LilvNode *optional_pred; >--LilvNode *group_pred; >--LilvNode *supports_event_pred; >--LilvNode *label_pred; >-+extern LilvNode *integer_prop; >-+extern LilvNode *toggled_prop; >-+extern LilvNode *designation_pred; >-+extern LilvNode *in_place_broken_pred; >-+extern LilvNode *optional_pred; >-+extern LilvNode *group_pred; >-+extern LilvNode *supports_event_pred; >-+extern LilvNode *label_pred; >- >--LilvNode *center_role; >--LilvNode *left_role; >--LilvNode *right_role; >--LilvNode *rear_center_role; >--LilvNode *rear_left_role; >--LilvNode *rear_right_role; >--LilvNode *lfe_role; >--LilvNode *center_left_role; >--LilvNode *center_right_role; >--LilvNode *side_left_role; >--LilvNode *side_right_role; >-+extern LilvNode *center_role; >-+extern LilvNode *left_role; >-+extern LilvNode *right_role; >-+extern LilvNode *rear_center_role; >-+extern LilvNode *rear_left_role; >-+extern LilvNode *rear_right_role; >-+extern LilvNode *lfe_role; >-+extern LilvNode *center_left_role; >-+extern LilvNode *center_right_role; >-+extern LilvNode *side_left_role; >-+extern LilvNode *side_right_role; >- >--GstStructure *lv2_meta_all; >-+extern GstStructure *lv2_meta_all; >- >- void gst_lv2_filter_register_element (GstPlugin *plugin, >- GstStructure * lv2_meta); >--- >-GitLab >- >- >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_dc57fb70 b/multimedia/gstreamer1-plugins-bad/files/patch-git_dc57fb70 >deleted file mode 100644 >index 536a69bcbbd3..000000000000 >--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_dc57fb70 >+++ /dev/null >@@ -1,26 +0,0 @@ >-https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1255 >- >-vkerror.c:66:16: error: use of undeclared identifier 'VK_RESULT_BEGIN_RANGE' >- if (result < VK_RESULT_BEGIN_RANGE) >- ^ >- >---- ext/vulkan/vkerror.c.orig 2019-04-19 09:16:36 UTC >-+++ ext/vulkan/vkerror.c >-@@ -27,7 +27,7 @@ >- #include "vkerror.h" >- >- /* *INDENT-OFF* */ >--static const struct >-+static const struct >- { >- VkResult result; >- const char *str; >-@@ -63,8 +63,6 @@ _vk_result_to_string (VkResult result) >- >- if (result >= 0) >- return NULL; >-- if (result < VK_RESULT_BEGIN_RANGE) >-- return "Unknown Error"; >- >- for (i = 0; i < G_N_ELEMENTS (vk_result_string_map); i++) { >- if (result == vk_result_string_map[i].result) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_adaptivedemux_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_adaptivedemux_meson.build >new file mode 100644 >index 000000000000..99a8f3eafb3e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_adaptivedemux_meson.build >@@ -0,0 +1,20 @@ >+--- gst-libs/gst/adaptivedemux/meson.build.orig 2022-09-05 19:47:37 UTC >++++ gst-libs/gst/adaptivedemux/meson.build >+@@ -1,5 +1,8 @@ >++if get_option('adaptivedemux').enabled() >+ adaptivedemux_sources = files('gstadaptivedemux.c') >+-adaptivedemux_headers = files('gstadaptivedemux.h') >++adaptivedemux_headers = files('gstadaptivedemux.h', >++ 'adaptive-demux-prelude.h') >++install_headers(adaptivedemux_headers, subdir : 'gstreamer-1.0/gst/adaptivedemux') >+ >+ pkg_name = 'gstreamer-adaptivedemux-1.0' >+ gstadaptivedemux = library('gstadaptivedemux-' + api_version, >+@@ -18,4 +21,5 @@ gstadaptivedemux_dep = declare_dependency(link_with : >+ include_directories : [libsinc], >+ dependencies : [gstbase_dep, gsturidownloader_dep]) >+ >+-meson.override_dependency(pkg_name, gstadaptivedemux_dep) >+\ No newline at end of file >++meson.override_dependency(pkg_name, gstadaptivedemux_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_audio_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_audio_meson.build >new file mode 100644 >index 000000000000..87d10befb10e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_audio_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/audio/meson.build.orig 2022-09-05 20:33:42 UTC >++++ gst-libs/gst/audio/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('audio').enabled() >+ badaudio_sources = files('gstnonstreamaudiodecoder.c', 'gstplanaraudioadapter.c') >+ badaudio_headers = files('gstnonstreamaudiodecoder.h', 'audio-bad-prelude.h', 'gstplanaraudioadapter.h') >+ install_headers(badaudio_headers, subdir : 'gstreamer-1.0/gst/audio') >+@@ -52,3 +53,4 @@ gstbadaudio_dep = declare_dependency(link_with : gstba >+ dependencies : [gstaudio_dep, gstbase_dep]) >+ >+ meson.override_dependency(pkg_name, gstbadaudio_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_basecamerabinsrc_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_basecamerabinsrc_meson.build >new file mode 100644 >index 000000000000..bf9ed256ab87 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_basecamerabinsrc_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/basecamerabinsrc/meson.build.orig 2022-09-05 21:00:40 UTC >++++ gst-libs/gst/basecamerabinsrc/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('basecamerabinsrc').enabled() >+ camerabin_sources = files( >+ 'gstcamerabin-enum.c', >+ 'gstcamerabinpreview.c', >+@@ -51,3 +52,4 @@ gstbasecamerabin_dep = declare_dependency(link_with : >+ sources: gen_sources, >+ dependencies : [gstapp_dep]) >+ meson.override_dependency(pkg_name, gstbasecamerabin_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecparsers_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecparsers_meson.build >new file mode 100644 >index 000000000000..be194a066bf9 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecparsers_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/codecparsers/meson.build.orig 2022-09-05 20:42:22 UTC >++++ gst-libs/gst/codecparsers/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('codecparsers').enabled() >+ codecparser_sources = files([ >+ 'gstjpeg2000sampling.c', >+ 'gstjpegparser.c', >+@@ -69,3 +70,4 @@ gstcodecparsers_dep = declare_dependency(link_with : g >+ >+ libraries += [[pkg_name, {'lib': gstcodecparsers}]] >+ meson.override_dependency(pkg_name, gstcodecparsers_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecs_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecs_meson.build >new file mode 100644 >index 000000000000..b02b8b43b1c8 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecs_meson.build >@@ -0,0 +1,15 @@ >+--- gst-libs/gst/codecs/meson.build.orig 2022-09-05 20:49:44 UTC >++++ gst-libs/gst/codecs/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('codecs').enabled() >+ codecs_sources = files( >+ 'gsth264decoder.c', >+ 'gsth264picture.c', >+@@ -81,4 +82,5 @@ gstcodecs_dep = declare_dependency(link_with : gstcode >+ include_directories : [libsinc], >+ sources: gen_sources, >+ dependencies : [gstvideo_dep, gstcodecparsers_dep]) >+-meson.override_dependency(pkg_name, gstcodecs_dep) >+\ No newline at end of file >++meson.override_dependency(pkg_name, gstcodecs_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_insertbin_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_insertbin_meson.build >new file mode 100644 >index 000000000000..a3823ab4e9a7 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_insertbin_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/insertbin/meson.build.orig 2022-09-05 21:06:02 UTC >++++ gst-libs/gst/insertbin/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('insertbin').enabled() >+ insert_sources = files('gstinsertbin.c') >+ insert_headers = files('gstinsertbin.h') >+ install_headers(insert_headers, subdir : 'gstreamer-1.0/gst/insertbin') >+@@ -51,3 +52,4 @@ gstinsertbin_dep = declare_dependency(link_with : gsti >+ dependencies : [gst_dep]) >+ >+ meson.override_dependency(pkg_name, gstinsertbin_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_interfaces_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_interfaces_meson.build >new file mode 100644 >index 000000000000..ef3b197d131c >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_interfaces_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/interfaces/meson.build.orig 2022-09-05 21:08:24 UTC >++++ gst-libs/gst/interfaces/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('interfaces').enabled() >+ photography_sources = ['photography.c'] >+ photo_headers = ['photography.h', 'photography-prelude.h'] >+ install_headers(photo_headers, subdir : 'gstreamer-1.0/gst/interfaces') >+@@ -40,3 +41,4 @@ gstphotography_dep = declare_dependency(link_with : gs >+ >+ libraries += [[pkg_name, {'lib': gstphotography}]] >+ meson.override_dependency(pkg_name, gstphotography_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_isoff_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_isoff_meson.build >new file mode 100644 >index 000000000000..47a492a31c64 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_isoff_meson.build >@@ -0,0 +1,21 @@ >+--- gst-libs/gst/isoff/meson.build.orig 2022-09-15 15:00:43 UTC >++++ gst-libs/gst/isoff/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('isoff').enabled() >+ isoff_sources = [ >+ 'gstisoff.c', >+ ] >+@@ -6,6 +7,8 @@ isoff_headers = [ >+ ] >+ install_headers(isoff_headers, subdir : 'gstreamer-1.0/gst/isoff') >+ >++pkg_name = 'gstreamer-isoff-1.0' >++ >+ gstisoff = library('gstisoff-' + api_version, >+ isoff_sources, >+ c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DBUILDING_GST_ISOFF', '-DG_LOG_DOMAIN="GStreamer-ISOFF"'], >+@@ -20,3 +23,4 @@ gstisoff = library('gstisoff-' + api_version, >+ gstisoff_dep = declare_dependency(link_with : gstisoff, >+ include_directories : [libsinc], >+ dependencies : [gstbase_dep]) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_mpegts_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_mpegts_meson.build >new file mode 100644 >index 000000000000..4cc1d85948f8 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_mpegts_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/mpegts/meson.build.orig 2022-09-05 21:11:41 UTC >++++ gst-libs/gst/mpegts/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('mpegts').enabled() >+ mpegts_sources = files( >+ 'mpegts.c', >+ 'gstmpegtssection.c', >+@@ -82,3 +83,4 @@ gstmpegts_dep = declare_dependency(link_with : gstmpeg >+ dependencies : [gst_dep], >+ sources : gen_sources) >+ meson.override_dependency(pkg_name, gstmpegts_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_play_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_play_meson.build >new file mode 100644 >index 000000000000..57c62c02d424 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_play_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/play/meson.build.orig 2022-09-05 21:13:21 UTC >++++ gst-libs/gst/play/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('play').enabled() >+ gstplay_sources = files( >+ 'gstplay.c', >+ 'gstplay-signal-adapter.c', >+@@ -74,3 +75,4 @@ gstplay_dep = declare_dependency(link_with : gstplay, >+ gsttag_dep, gstpbutils_dep]) >+ >+ meson.override_dependency(pkg_name, gstplay_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_player_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_player_meson.build >new file mode 100644 >index 000000000000..807a3448ee44 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_player_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/player/meson.build.orig 2022-09-05 21:14:52 UTC >++++ gst-libs/gst/player/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('player').enabled() >+ gstplayer_sources = files([ >+ 'gstplayer.c', >+ 'gstplayer-signal-dispatcher.c', >+@@ -77,3 +78,4 @@ gstplayer_dep = declare_dependency(link_with : gstplay >+ gsttag_dep, gstpbutils_dep]) >+ >+ meson.override_dependency(pkg_name, gstplayer_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_sctp_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_sctp_meson.build >new file mode 100644 >index 000000000000..c97c79c7eb54 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_sctp_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/sctp/meson.build.orig 2022-09-05 21:16:11 UTC >++++ gst-libs/gst/sctp/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('sctp').enabled() >+ sctp_sources = [ >+ 'sctpreceivemeta.c', >+ 'sctpsendmeta.c', >+@@ -36,3 +37,4 @@ gstsctp_dep = declare_dependency(link_with : libgstsct >+ dependencies : [gstbase_dep]) >+ >+ meson.override_dependency(pkg_name, gstsctp_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_transcoder_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_transcoder_meson.build >new file mode 100644 >index 000000000000..a6f42c3067bd >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_transcoder_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/transcoder/meson.build.orig 2022-09-05 21:18:30 UTC >++++ gst-libs/gst/transcoder/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('transcoder').enabled() >+ sources = files(['gsttranscoder.c', 'gsttranscoder-signal-adapter.c']) >+ headers = files(['gsttranscoder.h', 'transcoder-prelude.h', 'gsttranscoder-signal-adapter.h']) >+ >+@@ -64,3 +65,4 @@ gst_transcoder_dep = declare_dependency(link_with: gst >+ include_directories : [libsinc] >+ ) >+ meson.override_dependency(pkg_name, gst_transcoder_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_uridownloader_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_uridownloader_meson.build >new file mode 100644 >index 000000000000..2ac8c66b84d5 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_uridownloader_meson.build >@@ -0,0 +1,15 @@ >+--- gst-libs/gst/uridownloader/meson.build.orig 2022-09-05 21:20:17 UTC >++++ gst-libs/gst/uridownloader/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('uridownloader').enabled() >+ urid_sources = [ >+ 'gstfragment.c', >+ 'gsturidownloader.c', >+@@ -27,4 +28,5 @@ gsturidownloader_dep = declare_dependency(link_with : >+ dependencies : [gstbase_dep]) >+ >+ libraries += [[pkg_name, {'lib': gsturidownloader}]] >+-meson.override_dependency(pkg_name, gsturidownloader_dep) >+\ No newline at end of file >++meson.override_dependency(pkg_name, gsturidownloader_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_webrtc_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_webrtc_meson.build >new file mode 100644 >index 000000000000..bbd698236e2a >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_webrtc_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/webrtc/meson.build.orig 2022-09-05 21:22:10 UTC >++++ gst-libs/gst/webrtc/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('webrtc').enabled() >+ webrtc_sources = files([ >+ 'dtlstransport.c', >+ 'icetransport.c', >+@@ -95,3 +96,4 @@ gstwebrtc_dep = declare_dependency(link_with: gstwebrt >+ dependencies: gstwebrtc_dependencies) >+ >+ meson.override_dependency(pkg_name, gstwebrtc_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-meson.build >new file mode 100644 >index 000000000000..9fa7faba7c08 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-meson.build >@@ -0,0 +1,18 @@ >+--- meson.build.orig 2022-09-04 20:06:36 UTC >++++ meson.build >+@@ -498,6 +498,7 @@ pkgconfig_variables = ['exec_prefix=${prefix}', >+ >+ pkgconfig_subdirs = ['gstreamer-1.0'] >+ >++if get_option('pkgconfig').enabled() >+ pkgconfig.generate( >+ libraries : [gst_dep], >+ variables : pkgconfig_variables, >+@@ -505,6 +506,7 @@ pkgconfig.generate( >+ name : 'gstreamer-plugins-bad-1.0', >+ description : 'Streaming media framework, bad plugins libraries', >+ ) >++endif >+ >+ gpl_allowed = get_option('gpl').allowed() >+ >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-meson__options.txt b/multimedia/gstreamer1-plugins-bad/files/patch-meson__options.txt >new file mode 100644 >index 000000000000..fbd2a0a69f2f >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-meson__options.txt >@@ -0,0 +1,42 @@ >+--- meson_options.txt.orig 2022-09-04 20:24:08 UTC >++++ meson_options.txt >+@@ -1,5 +1,39 @@ >+ option('gst_play_tests', type: 'boolean', value: false, >+ description: 'Enable GstPlay tests that need network access') >++option('adaptivedemux', type: 'feature', value: 'auto', >++ description: 'adaptivedemux lib') >++option('audio', type: 'feature', value: 'auto', >++ description: 'audio lib') >++option('codecparsers', type: 'feature', value: 'auto', >++ description: 'codecparsers lib') >++option('codecs', type: 'feature', value: 'auto', >++ description: 'codecs lib') >++option('basecamerabinsrc', type: 'feature', value: 'auto', >++ description: 'basecamerabinsrc lib') >++option('insertbin', type: 'feature', value: 'auto', >++ description: 'insertbin lib') >++option('interfaces', type: 'feature', value: 'auto', >++ description: 'interfaces lib') >++option('isoff', type: 'feature', value: 'auto', >++ description: 'isoff lib') >++option('mpegts', type: 'feature', value: 'auto', >++ description: 'mpegts lib') >++option('play', type: 'feature', value: 'auto', >++ description: 'play lib') >++option('player', type: 'feature', value: 'auto', >++ description: 'player lib') >++option('transcoder', type: 'feature', value: 'auto', >++ description: 'transcoder lib') >++option('uridownloader', type: 'feature', value: 'auto', >++ description: 'uridownloader lib') >++option('webrtc', type: 'feature', value: 'auto', >++ description: 'webrtc lib') >++option('tools', type: 'feature', value: 'auto', >++ description: 'tools lib') >++option('data', type: 'feature', value: 'auto', >++ description: 'data lib') >++option('pkgconfig', type: 'feature', value: 'auto', >++ description: 'pkgconfig lib') >+ >+ # Feature options for plugins without external deps >+ option('accurip', type : 'feature', value : 'auto') >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-sys_kms_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-sys_kms_meson.build >new file mode 100644 >index 000000000000..eba4af58db21 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-sys_kms_meson.build >@@ -0,0 +1,13 @@ >+--- sys/kms/meson.build.orig 2022-09-12 09:58:35 UTC >++++ sys/kms/meson.build >+@@ -5,10 +5,6 @@ kmssink_sources = [ >+ 'gstkmsutils.c', >+ ] >+ >+-if host_system != 'linux' >+- subdir_done() >+-endif >+- >+ libdrm_dep = dependency('libdrm', version : '>= 2.4.98', >+ required : get_option('kms'), >+ fallback: ['libdrm', 'ext_libdrm']) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-sys_msdk_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-sys_msdk_meson.build >new file mode 100644 >index 000000000000..625d4e8742ed >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-sys_msdk_meson.build >@@ -0,0 +1,16 @@ >+--- sys/msdk/meson.build.orig 2022-09-16 08:39:55 UTC >++++ sys/msdk/meson.build >+@@ -169,7 +169,12 @@ if msdk_deps_found >+ msdk_sources, >+ c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'], >+ include_directories : [configinc, mfx_inc], >+- dependencies : [gstbase_dep, gstvideo_dep, gstpbutils_dep, gstallocators_dep, gstcodecparsers_dep, mfx_dep, msdk_deps], >++ dependencies : [gstbase_dep, >++ dependency('gstreamer-video-1.0', required : true), >++ dependency('gstreamer-pbutils-1.0', required : true), >++ dependency('gstreamer-allocators-1.0', required : true), >++ dependency('gstreamer-codecparsers-1.0', required : true), >++ mfx_dep, msdk_deps], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-tests_examples_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-tests_examples_meson.build >new file mode 100644 >index 000000000000..658275f7a8e0 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-tests_examples_meson.build >@@ -0,0 +1,74 @@ >+--- tests/examples/meson.build.orig 2022-09-13 22:41:40 UTC >++++ tests/examples/meson.build >+@@ -1,20 +1,54 @@ >+-subdir('audiomixmatrix') >+-subdir('avsamplesink') >+-subdir('camerabin2') >+-subdir('codecparsers') >+-subdir('d3d11') >+-subdir('directfb') >+-subdir('ipcpipeline') >+-subdir('mpegts') >+-subdir('msdk') >+-subdir('mxf') >+-subdir('nvcodec') >+-subdir('opencv', if_found: opencv_dep) >+-subdir('uvch264') >+-subdir('va') >+-subdir('waylandsink') >+-subdir('webrtc') >+-subdir('wpe') >++if get_option('audiomixmatrix').enabled() >++ subdir('audiomixmatrix') >++endif >++if get_option('applemedia').enabled() >++ subdir('avsamplesink') >++endif >++if get_option('camerabin2').enabled() >++ subdir('camerabin2') >++endif >++if get_option('codecparsers').enabled() >++ subdir('codecparsers') >++endif >++if get_option('d3d11').enabled() >++ subdir('d3d11') >++endif >++if get_option('directfb').enabled() >++ subdir('directfb') >++endif >++if get_option('ipcpipeline').enabled() >++ subdir('ipcpipeline') >++endif >++if get_option('mpegts').enabled() >++ subdir('mpegts') >++endif >++if get_option('msdk').enabled() >++ subdir('msdk') >++endif >++if get_option('mxf').enabled() >++ subdir('mxf') >++endif >++if get_option('nvcodec').enabled() >++ subdir('nvcodec') >++endif >++if get_option('opencv').enabled() >++ subdir('opencv', if_found: opencv_dep) >++endif >++if get_option('uvch264').enabled() >++ subdir('uvch264') >++endif >++if get_option('va').enabled() >++ subdir('va') >++endif >++if get_option('wayland').enabled() >++ subdir('waylandsink') >++endif >++if get_option('webrtc').enabled() >++ subdir('webrtc') >++endif >++if get_option('wpe').enabled() >++ subdir('wpe') >++endif >+ >+ executable('playout', >+ 'playout.c', >diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-tools_meson.build b/multimedia/gstreamer1-plugins-bad/files/patch-tools_meson.build >new file mode 100644 >index 000000000000..35a3c9b6f67c >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-bad/files/patch-tools_meson.build >@@ -0,0 +1,11 @@ >+--- tools/meson.build.orig 2022-09-05 21:25:23 UTC >++++ tools/meson.build >+@@ -1,6 +1,8 @@ >++if get_option('tools').enabled() >+ executable('gst-transcoder-' + api_version, >+ 'gst-transcoder.c', 'utils.c', >+ install : true, >+ dependencies : [gst_dep, gstpbutils_dep, gst_transcoder_dep], >+ c_args: ['-DG_LOG_DOMAIN="gst-transcoder-@0@"'.format(api_version)], >+ ) >++endif >diff --git a/multimedia/gstreamer1-plugins-bad/pkg-plist b/multimedia/gstreamer1-plugins-bad/pkg-plist >index 4e41315a3fa0..2b235aef0b6e 100644 >--- a/multimedia/gstreamer1-plugins-bad/pkg-plist >+++ b/multimedia/gstreamer1-plugins-bad/pkg-plist >@@ -1,3 +1,6 @@ >+bin/playout >+include/gstreamer-%%VERSION%%/gst/adaptivedemux/gstadaptivedemux.h >+include/gstreamer-%%VERSION%%/gst/adaptivedemux/adaptive-demux-prelude.h > include/gstreamer-%%VERSION%%/gst/audio/audio-bad-prelude.h > include/gstreamer-%%VERSION%%/gst/audio/gstnonstreamaudiodecoder.h > include/gstreamer-%%VERSION%%/gst/audio/gstplanaraudioadapter.h >@@ -6,6 +9,7 @@ include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstbasecamerasrc.h > include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstcamerabin-enum.h > include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstcamerabinpreview.h > include/gstreamer-%%VERSION%%/gst/codecparsers/codecparsers-prelude.h >+include/gstreamer-%%VERSION%%/gst/codecparsers/gstav1parser.h > include/gstreamer-%%VERSION%%/gst/codecparsers/gsth264parser.h > include/gstreamer-%%VERSION%%/gst/codecparsers/gsth265parser.h > include/gstreamer-%%VERSION%%/gst/codecparsers/gstjpeg2000sampling.h >@@ -22,15 +26,27 @@ include/gstreamer-%%VERSION%%/gst/interfaces/photography-enumtypes.h > include/gstreamer-%%VERSION%%/gst/interfaces/photography-prelude.h > include/gstreamer-%%VERSION%%/gst/interfaces/photography.h > include/gstreamer-%%VERSION%%/gst/isoff/gstisoff.h >+include/gstreamer-%%VERSION%%/gst/mpegts/gst-atsc-descriptor.h > include/gstreamer-%%VERSION%%/gst/mpegts/gst-atsc-section.h > include/gstreamer-%%VERSION%%/gst/mpegts/gst-dvb-descriptor.h > include/gstreamer-%%VERSION%%/gst/mpegts/gst-dvb-section.h >+include/gstreamer-%%VERSION%%/gst/mpegts/gst-hdmv-section.h >+include/gstreamer-%%VERSION%%/gst/mpegts/gst-isdb-descriptor.h > include/gstreamer-%%VERSION%%/gst/mpegts/gst-scte-section.h > include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegts-enumtypes.h > include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegtsdescriptor.h > include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegtssection.h > include/gstreamer-%%VERSION%%/gst/mpegts/mpegts-prelude.h > include/gstreamer-%%VERSION%%/gst/mpegts/mpegts.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay-media-info.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay-signal-adapter.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay-types.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay-video-overlay-video-renderer.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay-video-renderer.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay-visualization.h >+include/gstreamer-%%VERSION%%/gst/play/gstplay.h >+include/gstreamer-%%VERSION%%/gst/play/play-prelude.h >+include/gstreamer-%%VERSION%%/gst/play/play.h > include/gstreamer-%%VERSION%%/gst/player/gstplayer-g-main-context-signal-dispatcher.h > include/gstreamer-%%VERSION%%/gst/player/gstplayer-media-info.h > include/gstreamer-%%VERSION%%/gst/player/gstplayer-signal-dispatcher.h >@@ -44,26 +60,37 @@ include/gstreamer-%%VERSION%%/gst/player/player.h > include/gstreamer-%%VERSION%%/gst/sctp/sctp-prelude.h > include/gstreamer-%%VERSION%%/gst/sctp/sctpreceivemeta.h > include/gstreamer-%%VERSION%%/gst/sctp/sctpsendmeta.h >+include/gstreamer-%%VERSION%%/gst/transcoder/gsttranscoder-signal-adapter.h >+include/gstreamer-%%VERSION%%/gst/transcoder/gsttranscoder.h >+include/gstreamer-%%VERSION%%/gst/transcoder/transcoder-enumtypes.h >+include/gstreamer-%%VERSION%%/gst/transcoder/transcoder-prelude.h > include/gstreamer-%%VERSION%%/gst/uridownloader/gstfragment.h > include/gstreamer-%%VERSION%%/gst/uridownloader/gsturidownloader.h > include/gstreamer-%%VERSION%%/gst/uridownloader/gsturidownloader_debug.h > include/gstreamer-%%VERSION%%/gst/uridownloader/uridownloader-prelude.h >+include/gstreamer-%%VERSION%%/gst/webrtc/datachannel.h > include/gstreamer-%%VERSION%%/gst/webrtc/dtlstransport.h > include/gstreamer-%%VERSION%%/gst/webrtc/icetransport.h > include/gstreamer-%%VERSION%%/gst/webrtc/rtcsessiondescription.h > include/gstreamer-%%VERSION%%/gst/webrtc/rtpreceiver.h > include/gstreamer-%%VERSION%%/gst/webrtc/rtpsender.h > include/gstreamer-%%VERSION%%/gst/webrtc/rtptransceiver.h >+include/gstreamer-%%VERSION%%/gst/webrtc/sctptransport.h > include/gstreamer-%%VERSION%%/gst/webrtc/webrtc-enumtypes.h > include/gstreamer-%%VERSION%%/gst/webrtc/webrtc.h > include/gstreamer-%%VERSION%%/gst/webrtc/webrtc_fwd.h >-lib/girepository-1.0/GstInsertBin-%%VERSION%%.typelib >-lib/girepository-1.0/GstMpegts-%%VERSION%%.typelib >-lib/girepository-1.0/GstPlayer-%%VERSION%%.typelib >-lib/girepository-1.0/GstWebRTC-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstBadAudio-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstCodecs-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstInsertBin-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstMpegts-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstPlay-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstPlayer-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstTranscoder-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstWebRTC-%%VERSION%%.typelib > lib/gstreamer-%%VERSION%%/libgstaccurip.so > lib/gstreamer-%%VERSION%%/libgstadpcmdec.so > lib/gstreamer-%%VERSION%%/libgstadpcmenc.so >+lib/gstreamer-%%VERSION%%/libgstaes.so > lib/gstreamer-%%VERSION%%/libgstaiff.so > lib/gstreamer-%%VERSION%%/libgstasfmux.so > lib/gstreamer-%%VERSION%%/libgstaudiobuffersplit.so >@@ -75,9 +102,10 @@ lib/gstreamer-%%VERSION%%/libgstautoconvert.so > lib/gstreamer-%%VERSION%%/libgstbayer.so > lib/gstreamer-%%VERSION%%/libgstbz2.so > lib/gstreamer-%%VERSION%%/libgstcamerabin.so >+lib/gstreamer-%%VERSION%%/libgstcodecalpha.so > lib/gstreamer-%%VERSION%%/libgstcoloreffects.so > lib/gstreamer-%%VERSION%%/libgstdebugutilsbad.so >-lib/gstreamer-%%VERSION%%/libgstdvb.so >+lib/gstreamer-%%VERSION%%/libgstdvbsubenc.so > lib/gstreamer-%%VERSION%%/libgstdvbsuboverlay.so > lib/gstreamer-%%VERSION%%/libgstdvdspu.so > lib/gstreamer-%%VERSION%%/libgstfaceoverlay.so >@@ -109,7 +137,11 @@ lib/gstreamer-%%VERSION%%/libgstpnm.so > lib/gstreamer-%%VERSION%%/libgstproxy.so > lib/gstreamer-%%VERSION%%/libgstremovesilence.so > lib/gstreamer-%%VERSION%%/libgstrfbsrc.so >+lib/gstreamer-%%VERSION%%/libgstrist.so >+lib/gstreamer-%%VERSION%%/libgstrtmp2.so >+lib/gstreamer-%%VERSION%%/libgstrtpmanagerbad.so > lib/gstreamer-%%VERSION%%/libgstrtponvif.so >+lib/gstreamer-%%VERSION%%/libgstsctp.so > lib/gstreamer-%%VERSION%%/libgstsdpelem.so > lib/gstreamer-%%VERSION%%/libgstsegmentclip.so > lib/gstreamer-%%VERSION%%/libgstshm.so >@@ -117,14 +149,16 @@ lib/gstreamer-%%VERSION%%/libgstsiren.so > lib/gstreamer-%%VERSION%%/libgstsmooth.so > lib/gstreamer-%%VERSION%%/libgstspeed.so > lib/gstreamer-%%VERSION%%/libgstsubenc.so >+lib/gstreamer-%%VERSION%%/libgstswitchbin.so > lib/gstreamer-%%VERSION%%/libgsttimecode.so >+lib/gstreamer-%%VERSION%%/libgsttranscode.so > lib/gstreamer-%%VERSION%%/libgstvideofiltersbad.so > lib/gstreamer-%%VERSION%%/libgstvideoframe_audiolevel.so > lib/gstreamer-%%VERSION%%/libgstvideoparsersbad.so > lib/gstreamer-%%VERSION%%/libgstvideosignal.so >+lib/gstreamer-%%VERSION%%/libgstwebrtc.so > lib/gstreamer-%%VERSION%%/libgstvmnc.so > lib/gstreamer-%%VERSION%%/libgsty4mdec.so >-lib/gstreamer-%%VERSION%%/libgstyadif.so > lib/libgstadaptivedemux-%%VERSION%%.so > lib/libgstadaptivedemux-%%VERSION%%.so.0 > lib/libgstadaptivedemux-%%VERSION%%.so.%%SOVERSION%% >@@ -137,6 +171,9 @@ lib/libgstbasecamerabinsrc-%%VERSION%%.so.%%SOVERSION%% > lib/libgstcodecparsers-%%VERSION%%.so > lib/libgstcodecparsers-%%VERSION%%.so.0 > lib/libgstcodecparsers-%%VERSION%%.so.%%SOVERSION%% >+lib/libgstcodecs-%%VERSION%%.so >+lib/libgstcodecs-%%VERSION%%.so.0 >+lib/libgstcodecs-%%VERSION%%.so.%%SOVERSION%% > lib/libgstinsertbin-%%VERSION%%.so > lib/libgstinsertbin-%%VERSION%%.so.0 > lib/libgstinsertbin-%%VERSION%%.so.%%SOVERSION%% >@@ -149,12 +186,17 @@ lib/libgstmpegts-%%VERSION%%.so.%%SOVERSION%% > lib/libgstphotography-%%VERSION%%.so > lib/libgstphotography-%%VERSION%%.so.0 > lib/libgstphotography-%%VERSION%%.so.%%SOVERSION%% >+lib/libgstplay-%%VERSION%%.so >+lib/libgstplay-%%VERSION%%.so.0 >+lib/libgstplay-%%VERSION%%.so.%%SOVERSION%% > lib/libgstplayer-%%VERSION%%.so > lib/libgstplayer-%%VERSION%%.so.0 > lib/libgstplayer-%%VERSION%%.so.%%SOVERSION%% > lib/libgstsctp-%%VERSION%%.so > lib/libgstsctp-%%VERSION%%.so.0 > lib/libgstsctp-%%VERSION%%.so.%%SOVERSION%% >+lib/libgsttranscoder-%%VERSION%%.so >+lib/libgsttranscoder-%%VERSION%%.so.0 > lib/libgsturidownloader-%%VERSION%%.so > lib/libgsturidownloader-%%VERSION%%.so.0 > lib/libgsturidownloader-%%VERSION%%.so.%%SOVERSION%% >@@ -165,14 +207,32 @@ libdata/pkgconfig/gstreamer-bad-audio-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-codecparsers-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-insertbin-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-mpegts-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-photography-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-play-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-player-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-plugins-bad-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-sctp-%%VERSION%%.pc >+libdata/pkgconfig/gstreamer-transcoder-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-webrtc-%%VERSION%%.pc >-share/gir-1.0/GstInsertBin-%%VERSION%%.gir >-share/gir-1.0/GstMpegts-%%VERSION%%.gir >-share/gir-1.0/GstPlayer-%%VERSION%%.gir >-share/gir-1.0/GstWebRTC-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstBadAudio-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstCodecs-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstInsertBin-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstMpegts-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstPlay-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstPlayer-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstTranscoder-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstWebRTC-%%VERSION%%.gir >+%%DATADIR%%-%%VERSION%%/encoding-profiles/device/dvd.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/avi.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/flv.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/mkv.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/mp3.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/mp4.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/oga.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/ogv.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/ts.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/webm.gep >+%%DATADIR%%-%%VERSION%%/encoding-profiles/online-services/youtube.gep > %%DATADIR%%-%%VERSION%%/presets/GstFreeverb.prs > share/locale/af/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo > share/locale/ast/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo >@@ -216,3 +276,4 @@ share/locale/tr/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo > share/locale/uk/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo > share/locale/vi/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo > share/locale/zh_CN/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo >+share/locale/zh_TW/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo >diff --git a/multimedia/gstreamer1-plugins-core/Makefile b/multimedia/gstreamer1-plugins-core/Makefile >index f38bac3fbc05..b09563fc3ae3 100644 >--- a/multimedia/gstreamer1-plugins-core/Makefile >+++ b/multimedia/gstreamer1-plugins-core/Makefile >@@ -1,5 +1,5 @@ > PORTNAME= gstreamer1-plugins-core >-PORTVERSION= 1.16 >+PORTVERSION= 1.20.3 > CATEGORIES= multimedia audio > MASTER_SITES= # empty > DISTFILES= # empty >diff --git a/multimedia/gstreamer1-plugins-dash/Makefile b/multimedia/gstreamer1-plugins-dash/Makefile >index 2418df2f162f..72df1da15bdb 100644 >--- a/multimedia/gstreamer1-plugins-dash/Makefile >+++ b/multimedia/gstreamer1-plugins-dash/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer Dynamic Adaptive Streaming over HTTP demuxer plugin >@@ -6,13 +5,10 @@ COMMENT= GStreamer Dynamic Adaptive Streaming over HTTP demuxer plugin > GST_PLUGIN= dash > DIST= bad > >-DASH_GST_DIRS= gst-libs/gst/isoff >- > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >-pre-build: >-.for dir in ${DASH_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= libxml2 > > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-dash/pkg-plist b/multimedia/gstreamer1-plugins-dash/pkg-plist >new file mode 100644 >index 000000000000..575735fb048d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-dash/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstdash.so >diff --git a/multimedia/gstreamer1-plugins-dts/Makefile b/multimedia/gstreamer1-plugins-dts/Makefile >index 9cc305dd5936..f382feb966ed 100644 >--- a/multimedia/gstreamer1-plugins-dts/Makefile >+++ b/multimedia/gstreamer1-plugins-dts/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer dts audio decode plugin >@@ -8,4 +7,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libdca.so:multimedia/libdca >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-dts/pkg-plist b/multimedia/gstreamer1-plugins-dts/pkg-plist >new file mode 100644 >index 000000000000..95cfe9ccc02d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-dts/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstdtsdec.so >diff --git a/multimedia/gstreamer1-plugins-dv/Makefile b/multimedia/gstreamer1-plugins-dv/Makefile >index 4be9b3b4481d..d55cad21e1d0 100644 >--- a/multimedia/gstreamer1-plugins-dv/Makefile >+++ b/multimedia/gstreamer1-plugins-dv/Makefile >@@ -1,12 +1,15 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > PKGNAMESUFFIX= 1-plugins-dv > > COMMENT= GStreamer dv demux and decoder plugin based on libdv > >-GST_PLUGIN= libdv >+GST_PLUGIN= dv > DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libdv.so:multimedia/libdv >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-dv/pkg-plist b/multimedia/gstreamer1-plugins-dv/pkg-plist >new file mode 100644 >index 000000000000..e8f6fd5b9a57 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-dv/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstdv.so >diff --git a/multimedia/gstreamer1-plugins-dvdread/Makefile b/multimedia/gstreamer1-plugins-dvdread/Makefile >index d7a213275294..248f45de0a76 100644 >--- a/multimedia/gstreamer1-plugins-dvdread/Makefile >+++ b/multimedia/gstreamer1-plugins-dvdread/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 4 > CATEGORIES= multimedia > > COMMENT= GStreamer DVD access plugin with libdvdread >@@ -8,4 +7,10 @@ DIST= ugly > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS=libdvdread.so:multimedia/libdvdread >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-dvdread/pkg-plist b/multimedia/gstreamer1-plugins-dvdread/pkg-plist >new file mode 100644 >index 000000000000..33d2b24fd25d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-dvdread/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstdvdread.so >diff --git a/multimedia/gstreamer1-plugins-gnonlin/Makefile b/multimedia/gstreamer1-plugins-gnonlin/Makefile >index a6f8f0f77538..462287bf37f3 100644 >--- a/multimedia/gstreamer1-plugins-gnonlin/Makefile >+++ b/multimedia/gstreamer1-plugins-gnonlin/Makefile >@@ -8,7 +8,8 @@ MAINTAINER= multimedia@FreeBSD.org > COMMENT= GStreamer library for writing non-linear audio and video > WWW= http://gstreamer.net > >-USES= gstreamer libtool pkgconfig python:3.4+,build tar:xz >+USES= gettext-runtime gnome gstreamer libtool pkgconfig python:3.4+,build tar:xz >+USE_GNOME= glib20 > GNU_CONFIGURE= yes > USE_GSTREAMER= good > INSTALL_TARGET= install-strip >diff --git a/multimedia/gstreamer1-plugins-good/Makefile b/multimedia/gstreamer1-plugins-good/Makefile >index 6109bf41fd37..0a14b4f0b46f 100644 >--- a/multimedia/gstreamer1-plugins-good/Makefile >+++ b/multimedia/gstreamer1-plugins-good/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer-plugins good-quality plug-ins >@@ -9,21 +8,57 @@ GST_PLUGIN_SUFFIX= -good > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > > DIST= good >-GOOD_GST_DIRS= gst sys po > > PLIST= ${.CURDIR}/pkg-plist >-FILESDIR= ${.CURDIR}/files > PATCHDIR= ${.CURDIR}/files > NO_GSTREAMER_COMMON= yes > >-do-build: >-.for dir in ${GOOD_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >- >-do-install: >-.for dir in ${GOOD_GST_DIRS} >- @(cd ${INSTALL_WRKSRC}/${dir} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET}) >-.endfor >+GOOD_GST_ENABLED_PLUGINS= alpha \ >+ apetag \ >+ audiofx \ >+ audioparsers \ >+ auparse \ >+ autodetect \ >+ avi \ >+ cutter \ >+ deinterlace \ >+ debugutils \ >+ dtmf \ >+ effectv \ >+ equalizer \ >+ flv \ >+ flx \ >+ goom \ >+ goom2k1 \ >+ icydemux \ >+ id3demux \ >+ imagefreeze \ >+ interleave \ >+ isomp4 \ >+ law \ >+ level \ >+ matroska \ >+ monoscope \ >+ multifile \ >+ multipart \ >+ nls \ >+ oss \ >+ oss4 \ >+ replaygain \ >+ rtp \ >+ rtpmanager \ >+ rtsp \ >+ shapewipe \ >+ smpte \ >+ spectrum \ >+ tests \ >+ udp \ >+ videobox \ >+ videocrop \ >+ videofilter \ >+ videomixer \ >+ wavenc \ >+ wavparse \ >+ y4m > > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqsgtexture.cc b/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqsgtexture.cc >deleted file mode 100644 >index 04beb939a5af..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqsgtexture.cc >+++ /dev/null >@@ -1,11 +0,0 @@ >---- ext/qt/gstqsgtexture.cc.orig 2021-08-02 23:41:35 UTC >-+++ ext/qt/gstqsgtexture.cc >-@@ -39,7 +39,7 @@ GstQSGTexture::GstQSGTexture () >- >- initializeOpenGLFunctions(); >- >-- if (g_once_init_enter (&_debug)) { >-+ if (g_once_init_enter ((unsigned long *)&_debug)) { >- GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtqsgtexture", 0, >- "Qt Scenegraph Texture"); >- g_once_init_leave (&_debug, 1); >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqtglutility.cc b/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqtglutility.cc >deleted file mode 100644 >index 5f8a46fa4fbb..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqtglutility.cc >+++ /dev/null >@@ -1,15 +0,0 @@ >---- ext/qt/gstqtglutility.cc.orig 2021-08-02 23:37:36 UTC >-+++ ext/qt/gstqtglutility.cc >-@@ -62,10 +62,10 @@ gst_qt_get_gl_display () >- >- g_assert (app != NULL); >- >-- if (g_once_init_enter (&_debug)) { >-+ if (g_once_init_enter ((unsigned long *)&_debug)) { >- GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglutility", 0, >- "Qt gl utility functions"); >-- g_once_init_leave (&_debug, 1); >-+ g_once_init_leave ((unsigned long *)&_debug, 1); >- } >- GST_INFO ("QGuiApplication::instance()->platformName() %s", app->platformName().toUtf8().data()); >- >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtitem.cc b/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtitem.cc >deleted file mode 100644 >index de63d41826cb..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtitem.cc >+++ /dev/null >@@ -1,11 +0,0 @@ >---- ext/qt/qtitem.cc.orig 2021-08-02 23:44:43 UTC >-+++ ext/qt/qtitem.cc >-@@ -104,7 +104,7 @@ QtGLVideoItem::QtGLVideoItem() >- { >- static volatile gsize _debug; >- >-- if (g_once_init_enter (&_debug)) { >-+ if (g_once_init_enter ((unsigned long *)&_debug)) { >- GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwidget", 0, "Qt GL Widget"); >- g_once_init_leave (&_debug, 1); >- } >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtwindow.cc b/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtwindow.cc >deleted file mode 100644 >index 42703a0fc2bb..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtwindow.cc >+++ /dev/null >@@ -1,20 +0,0 @@ >---- ext/qt/qtwindow.cc.orig 2021-08-02 23:46:48 UTC >-+++ ext/qt/qtwindow.cc >-@@ -107,7 +107,7 @@ QtGLWindow::QtGLWindow ( QWindow * parent, QQuickWindo >- >- g_assert (app != NULL); >- >-- if (g_once_init_enter (&_debug)) { >-+ if (g_once_init_enter ((unsigned long *)&_debug)) { >- GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwindow", 0, "Qt GL QuickWindow"); >- g_once_init_leave (&_debug, 1); >- } >-@@ -153,7 +153,7 @@ QtGLWindow::beforeRendering() >- g_mutex_lock (&this->priv->lock); >- >- static volatile gsize once = 0; >-- if (g_once_init_enter(&once)) { >-+ if (g_once_init_enter((unsigned long *)&once)) { >- this->priv->start = QDateTime::currentDateTime().toMSecsSinceEpoch(); >- g_once_init_leave(&once,1); >- } >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosshelper.c b/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosshelper.c >deleted file mode 100644 >index c5790c08eb8d..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosshelper.c >+++ /dev/null >@@ -1,82 +0,0 @@ >---- sys/oss/gstosshelper.c.orig 2014-07-21 10:24:27.000000000 +0200 >-+++ sys/oss/gstosshelper.c 2014-10-12 18:13:53.847663389 +0200 >-@@ -82,9 +82,9 @@ >- gst_oss_helper_probe_caps (gint fd) >- { >- #if G_BYTE_ORDER == G_LITTLE_ENDIAN >-- const guint probe_formats[] = { AFMT_S16_LE, AFMT_U16_LE, AFMT_U8, AFMT_S8 }; >-+ const guint probe_formats[] = { AFMT_U32_LE, AFMT_S32_LE, AFMT_U24_LE, AFMT_S24_LE, AFMT_S16_LE, AFMT_U16_LE, AFMT_U8, AFMT_S8 }; >- #else >-- const guint probe_formats[] = { AFMT_S16_BE, AFMT_U16_BE, AFMT_U8, AFMT_S8 }; >-+ const guint probe_formats[] = { AFMT_U32_BE, AFMT_S32_BE, AFMT_U24_BE, AFMT_S24_BE, AFMT_S16_BE, AFMT_U16_BE, AFMT_U8, AFMT_S8 }; >- #endif >- GstOssProbe *probe; >- int i, f; >-@@ -165,6 +165,9 @@ >- const gchar *format; >- >- switch (format_bit) { >-+ case AFMT_S8: >-+ format = "S8"; >-+ break; >- case AFMT_U8: >- format = "U8"; >- break; >-@@ -174,15 +177,36 @@ >- case AFMT_S16_BE: >- format = "S16BE"; >- break; >-- case AFMT_S8: >-- format = "S8"; >-- break; >- case AFMT_U16_LE: >- format = "U16LE"; >- break; >- case AFMT_U16_BE: >- format = "U16BE"; >- break; >-+ case AFMT_S24_LE: >-+ format = "S24LE"; >-+ break; >-+ case AFMT_S24_BE: >-+ format = "S24BE"; >-+ break; >-+ case AFMT_U24_LE: >-+ format = "U24LE"; >-+ break; >-+ case AFMT_U24_BE: >-+ format = "U24BE"; >-+ break; >-+ case AFMT_S32_LE: >-+ format = "S32LE"; >-+ break; >-+ case AFMT_S32_BE: >-+ format = "S32BE"; >-+ break; >-+ case AFMT_U32_LE: >-+ format = "U32LE"; >-+ break; >-+ case AFMT_U32_BE: >-+ format = "U32BE"; >-+ break; >- default: >- g_assert_not_reached (); >- return NULL; >-@@ -320,13 +344,17 @@ >- int format; >- int n_channels; >- int ret; >-+ int rst; >- >- rate = irate; >- format = probe->format; >- n_channels = probe->n_channels; >-+ rst = 4000; /* XXX Lowest supported rate for FreeBSD. */ >- >- GST_LOG ("checking format %d, channels %d, rate %d", >- format, n_channels, rate); >-+ /* Reset rate to lowest supported rate. */ >-+ ioctl (probe->fd, SNDCTL_DSP_SPEED, &rst); >- ret = ioctl (probe->fd, SNDCTL_DSP_SETFMT, &format); >- if (ret < 0 || format != probe->format) { >- GST_DEBUG ("unsupported format: %d (%d)", probe->format, format); >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssink.c b/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssink.c >deleted file mode 100644 >index 3b0a46ab7303..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssink.c >+++ /dev/null >@@ -1,73 +0,0 @@ >---- sys/oss/gstosssink.c.orig 2013-09-24 15:05:22.000000000 +0200 >-+++ sys/oss/gstosssink.c 2014-09-11 09:10:55.116013220 +0200 >-@@ -106,7 +106,10 @@ >- PROP_DEVICE, >- }; >- >--#define FORMATS "{" GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)", S8, U8 }" >-+#define FORMATS "{" GST_AUDIO_NE(S32)","GST_AUDIO_NE(U32)"," \ >-+ GST_AUDIO_NE(S24)","GST_AUDIO_NE(U24)"," \ >-+ GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)"," \ >-+ "S8, U8 }" >- >- static GstStaticPadTemplate osssink_sink_factory = >- GST_STATIC_PAD_TEMPLATE ("sink", >-@@ -321,6 +324,9 @@ >- case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW: >- { >- switch (rfmt) { >-+ case GST_AUDIO_FORMAT_S8: >-+ result = AFMT_S8; >-+ break; >- case GST_AUDIO_FORMAT_U8: >- result = AFMT_U8; >- break; >-@@ -330,15 +336,36 @@ >- case GST_AUDIO_FORMAT_S16BE: >- result = AFMT_S16_BE; >- break; >-- case GST_AUDIO_FORMAT_S8: >-- result = AFMT_S8; >-- break; >- case GST_AUDIO_FORMAT_U16LE: >- result = AFMT_U16_LE; >- break; >- case GST_AUDIO_FORMAT_U16BE: >- result = AFMT_U16_BE; >- break; >-+ case GST_AUDIO_FORMAT_S24LE: >-+ result = AFMT_S24_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_S24BE: >-+ result = AFMT_S24_BE; >-+ break; >-+ case GST_AUDIO_FORMAT_U24LE: >-+ result = AFMT_U24_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_U24BE: >-+ result = AFMT_U24_BE; >-+ break; >-+ case GST_AUDIO_FORMAT_S32LE: >-+ result = AFMT_S32_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_S32BE: >-+ result = AFMT_S32_BE; >-+ break; >-+ case GST_AUDIO_FORMAT_U32LE: >-+ result = AFMT_U32_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_U32BE: >-+ result = AFMT_U32_BE; >-+ break; >- default: >- result = 0; >- break; >-@@ -441,7 +468,7 @@ >- rate = GST_AUDIO_INFO_RATE (&spec->info); >- channels = GST_AUDIO_INFO_CHANNELS (&spec->info); >- >-- if (width != 16 && width != 8) >-+ if (width != 32 && width != 24 && width != 16 && width != 8) >- goto dodgy_width; >- >- SET_PARAM (oss, SNDCTL_DSP_SETFMT, tmp, "SETFMT"); >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssrc.c b/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssrc.c >deleted file mode 100644 >index 0709d8abc5a1..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssrc.c >+++ /dev/null >@@ -1,73 +0,0 @@ >---- sys/oss/gstosssrc.c.orig 2013-09-24 15:05:22.000000000 +0200 >-+++ sys/oss/gstosssrc.c 2014-09-11 09:10:55.116013220 +0200 >-@@ -100,7 +100,10 @@ >- static guint gst_oss_src_delay (GstAudioSrc * asrc); >- static void gst_oss_src_reset (GstAudioSrc * asrc); >- >--#define FORMATS "{" GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)", S8, U8 }" >-+#define FORMATS "{" GST_AUDIO_NE(S32)","GST_AUDIO_NE(U32)"," \ >-+ GST_AUDIO_NE(S24)","GST_AUDIO_NE(U24)"," \ >-+ GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)"," \ >-+ "S8, U8 }" >- >- static GstStaticPadTemplate osssrc_src_factory = GST_STATIC_PAD_TEMPLATE ("src", >- GST_PAD_SRC, >-@@ -314,6 +317,9 @@ >- case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW: >- { >- switch (rfmt) { >-+ case GST_AUDIO_FORMAT_S8: >-+ result = AFMT_S8; >-+ break; >- case GST_AUDIO_FORMAT_U8: >- result = AFMT_U8; >- break; >-@@ -323,15 +329,36 @@ >- case GST_AUDIO_FORMAT_S16BE: >- result = AFMT_S16_BE; >- break; >-- case GST_AUDIO_FORMAT_S8: >-- result = AFMT_S8; >-- break; >- case GST_AUDIO_FORMAT_U16LE: >- result = AFMT_U16_LE; >- break; >- case GST_AUDIO_FORMAT_U16BE: >- result = AFMT_U16_BE; >- break; >-+ case GST_AUDIO_FORMAT_S24LE: >-+ result = AFMT_S24_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_S24BE: >-+ result = AFMT_S24_BE; >-+ break; >-+ case GST_AUDIO_FORMAT_U24LE: >-+ result = AFMT_U24_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_U24BE: >-+ result = AFMT_U24_BE; >-+ break; >-+ case GST_AUDIO_FORMAT_S32LE: >-+ result = AFMT_S32_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_S32BE: >-+ result = AFMT_S32_BE; >-+ break; >-+ case GST_AUDIO_FORMAT_U32LE: >-+ result = AFMT_U32_LE; >-+ break; >-+ case GST_AUDIO_FORMAT_U32BE: >-+ result = AFMT_U32_BE; >-+ break; >- default: >- result = 0; >- break; >-@@ -428,7 +455,7 @@ >- rate = GST_AUDIO_INFO_RATE (&spec->info); >- channels = GST_AUDIO_INFO_CHANNELS (&spec->info); >- >-- if (width != 16 && width != 8) >-+ if (width != 32 && width != 24 && width != 16 && width != 8) >- goto dodgy_width; >- >- tmp = ilog2 (spec->segsize); >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_gstv4l2object.c b/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_gstv4l2object.c >deleted file mode 100644 >index 736cd618765c..000000000000 >--- a/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_gstv4l2object.c >+++ /dev/null >@@ -1,13 +0,0 @@ >---- sys/v4l2/gstv4l2object.c.orig 2020-04-06 14:45:19 UTC >-+++ sys/v4l2/gstv4l2object.c >-@@ -2891,8 +2891,9 @@ gst_v4l2_object_is_dmabuf_supported (GstV4l2Object * v >- } >- >- /* Expected to fail, but ENOTTY tells us that it is not implemented. */ >-+ /* FreeBSD cuse sends EINVAL? */ >- v4l2object->ioctl (v4l2object->video_fd, VIDIOC_EXPBUF, &expbuf); >-- if (errno == ENOTTY) >-+ if (errno == ENOTTY || errno == EINVAL) >- ret = FALSE; >- >- return ret; >diff --git a/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_v4l2__calls.c b/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_v4l2__calls.c >new file mode 100644 >index 000000000000..94d86410cf1d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_v4l2__calls.c >@@ -0,0 +1,15 @@ >+--- sys/v4l2/v4l2_calls.c.orig 2022-09-13 20:56:55 UTC >++++ sys/v4l2/v4l2_calls.c >+@@ -1329,10 +1329,12 @@ gst_v4l2_query_dv_timings (GstV4l2Object * v4l2object, >+ >+ if (ret < 0) { >+ switch (errno) { >++#ifdef ENODATA >+ case ENODATA: >+ GST_DEBUG_OBJECT (v4l2object->dbg_obj, >+ "QUERY_DV_TIMINGS not supported for this input/output"); >+ break; >++#endif >+ case ENOLINK: >+ GST_DEBUG_OBJECT (v4l2object->dbg_obj, >+ "No timings could be detected because no signal was found."); >diff --git a/multimedia/gstreamer1-plugins-good/pkg-plist b/multimedia/gstreamer1-plugins-good/pkg-plist >index 319189859dad..c0aec864185d 100644 >--- a/multimedia/gstreamer1-plugins-good/pkg-plist >+++ b/multimedia/gstreamer1-plugins-good/pkg-plist >@@ -24,6 +24,7 @@ lib/gstreamer-%%VERSION%%/libgstinterleave.so > lib/gstreamer-%%VERSION%%/libgstisomp4.so > lib/gstreamer-%%VERSION%%/libgstlevel.so > lib/gstreamer-%%VERSION%%/libgstmatroska.so >+lib/gstreamer-%%VERSION%%/libgstmonoscope.so > lib/gstreamer-%%VERSION%%/libgstmulaw.so > lib/gstreamer-%%VERSION%%/libgstmultifile.so > lib/gstreamer-%%VERSION%%/libgstmultipart.so >diff --git a/multimedia/gstreamer1-plugins-hls/Makefile b/multimedia/gstreamer1-plugins-hls/Makefile >index 331317517ba5..19574e4a7c4b 100644 >--- a/multimedia/gstreamer1-plugins-hls/Makefile >+++ b/multimedia/gstreamer1-plugins-hls/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= multimedia > > COMMENT= GStreamer HTTP Live Streaming (HLS) plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libnettle.so:security/nettle >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-hls/pkg-plist b/multimedia/gstreamer1-plugins-hls/pkg-plist >new file mode 100644 >index 000000000000..47ff89a96e42 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-hls/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgsthls.so >diff --git a/multimedia/gstreamer1-plugins-kate/Makefile b/multimedia/gstreamer1-plugins-kate/Makefile >index 795126ecc38a..a1401d449b5c 100644 >--- a/multimedia/gstreamer1-plugins-kate/Makefile >+++ b/multimedia/gstreamer1-plugins-kate/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer kate codec plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libkate.so:multimedia/libkate >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-kate/pkg-plist b/multimedia/gstreamer1-plugins-kate/pkg-plist >new file mode 100644 >index 000000000000..8b0aaeb15a05 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-kate/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstkate.so >diff --git a/multimedia/gstreamer1-plugins-libde265/Makefile b/multimedia/gstreamer1-plugins-libde265/Makefile >index 966adfd4013b..42f79c5bb37f 100644 >--- a/multimedia/gstreamer1-plugins-libde265/Makefile >+++ b/multimedia/gstreamer1-plugins-libde265/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer HEVC/H.265 decoder (libde265) plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libde265.so:multimedia/libde265 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-libde265/pkg-plist b/multimedia/gstreamer1-plugins-libde265/pkg-plist >new file mode 100644 >index 000000000000..ae2a674e4dd3 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-libde265/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstde265.so >diff --git a/multimedia/gstreamer1-plugins-mpeg2dec/Makefile b/multimedia/gstreamer1-plugins-mpeg2dec/Makefile >index 7deb6eee1a67..65743cd5e1a2 100644 >--- a/multimedia/gstreamer1-plugins-mpeg2dec/Makefile >+++ b/multimedia/gstreamer1-plugins-mpeg2dec/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer mpeg decode plugin >@@ -8,4 +7,10 @@ DIST= ugly > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libmpeg2.so:multimedia/libmpeg2 >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-mpeg2dec/pkg-plist b/multimedia/gstreamer1-plugins-mpeg2dec/pkg-plist >new file mode 100644 >index 000000000000..b1f9d7d9a583 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-mpeg2dec/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmpeg2dec.so >diff --git a/multimedia/gstreamer1-plugins-mpeg2enc/Makefile b/multimedia/gstreamer1-plugins-mpeg2enc/Makefile >index f6c265d3f944..1b5af66d2066 100644 >--- a/multimedia/gstreamer1-plugins-mpeg2enc/Makefile >+++ b/multimedia/gstreamer1-plugins-mpeg2enc/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer mpeg encoder plugin >@@ -11,4 +10,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libmjpegutils.so:multimedia/mjpegtools >+ >+MESON_ARGS+= -Dgpl=enabled >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-mpeg2enc/pkg-plist b/multimedia/gstreamer1-plugins-mpeg2enc/pkg-plist >new file mode 100644 >index 000000000000..1e0053210a0a >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-mpeg2enc/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmpeg2enc.so >diff --git a/multimedia/gstreamer1-plugins-mplex/Makefile b/multimedia/gstreamer1-plugins-mplex/Makefile >index 95fcba0bf6d3..9a717fd99ff1 100644 >--- a/multimedia/gstreamer1-plugins-mplex/Makefile >+++ b/multimedia/gstreamer1-plugins-mplex/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer mplex plugin >@@ -11,4 +10,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libmplex2.so:multimedia/mjpegtools >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-mplex/pkg-plist b/multimedia/gstreamer1-plugins-mplex/pkg-plist >new file mode 100644 >index 000000000000..ac7fcf1afa5e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-mplex/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmplex.so >diff --git a/multimedia/gstreamer1-plugins-msdk/Makefile b/multimedia/gstreamer1-plugins-msdk/Makefile >index 01fe796c473f..3924870b1609 100644 >--- a/multimedia/gstreamer1-plugins-msdk/Makefile >+++ b/multimedia/gstreamer1-plugins-msdk/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer (Intel MediaSDK) plugin >@@ -8,4 +7,11 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libgudev-1.0.so:devel/libgudev \ >+ libmfx.so:multimedia/intel-media-sdk \ >+ libva-drm.so:multimedia/libva \ >+ libdrm.so:graphics/libdrm >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-msdk/pkg-plist b/multimedia/gstreamer1-plugins-msdk/pkg-plist >new file mode 100644 >index 000000000000..56730199f119 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-msdk/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstmsdk.so >diff --git a/multimedia/gstreamer1-plugins-openh264/Makefile b/multimedia/gstreamer1-plugins-openh264/Makefile >index 7698c7b4bd3b..cbdf751cea65 100644 >--- a/multimedia/gstreamer1-plugins-openh264/Makefile >+++ b/multimedia/gstreamer1-plugins-openh264/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= multimedia > > COMMENT= GStreamer (openh264) plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libopenh264.so:multimedia/openh264 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-openh264/pkg-plist b/multimedia/gstreamer1-plugins-openh264/pkg-plist >new file mode 100644 >index 000000000000..e031f2999255 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-openh264/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstopenh264.so >diff --git a/multimedia/gstreamer1-plugins-resindvd/Makefile b/multimedia/gstreamer1-plugins-resindvd/Makefile >index e30cf054923c..bc1d42e54d76 100644 >--- a/multimedia/gstreamer1-plugins-resindvd/Makefile >+++ b/multimedia/gstreamer1-plugins-resindvd/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 4 > CATEGORIES= multimedia > > COMMENT= GStreamer resindvd DVD playback plugin >@@ -8,4 +7,12 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+BUILD_DEPENDS+= libdvdnav>=4.1.2:multimedia/libdvdnav >+LIB_DEPENDS+= libdvdread.so:multimedia/libdvdread >+RUN_DEPENDS+= libdvdnav>=4.1.2:multimedia/libdvdnav >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-resindvd/pkg-plist b/multimedia/gstreamer1-plugins-resindvd/pkg-plist >new file mode 100644 >index 000000000000..07fdaf1b4561 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-resindvd/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstresindvd.so >diff --git a/multimedia/gstreamer1-plugins-rtmp/Makefile b/multimedia/gstreamer1-plugins-rtmp/Makefile >index 7510f0ab600a..dbb4db1f78d4 100644 >--- a/multimedia/gstreamer1-plugins-rtmp/Makefile >+++ b/multimedia/gstreamer1-plugins-rtmp/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer RTMP stream source and sink plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= librtmp.so:multimedia/librtmp >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-rtmp/pkg-plist b/multimedia/gstreamer1-plugins-rtmp/pkg-plist >new file mode 100644 >index 000000000000..371212146547 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-rtmp/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstrtmp.so >diff --git a/multimedia/gstreamer1-plugins-smoothstreaming/Makefile b/multimedia/gstreamer1-plugins-smoothstreaming/Makefile >index 63077d4ab804..80b1000ac3b2 100644 >--- a/multimedia/gstreamer1-plugins-smoothstreaming/Makefile >+++ b/multimedia/gstreamer1-plugins-smoothstreaming/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer parse and demuliplex a Smooth Streaming manifest into audio/video streams plugin >@@ -10,9 +9,8 @@ SMOOTH_GST_DIRS= gst-libs/gst/isoff > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >-pre-build: >-.for dir in ${SMOOTH_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= libxml2 > > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-smoothstreaming/pkg-plist b/multimedia/gstreamer1-plugins-smoothstreaming/pkg-plist >new file mode 100644 >index 000000000000..d664eeec4529 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-smoothstreaming/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstsmoothstreaming.so >diff --git a/multimedia/gstreamer1-plugins-theora/Makefile b/multimedia/gstreamer1-plugins-theora/Makefile >index 5e0238dc4730..8b4edb681352 100644 >--- a/multimedia/gstreamer1-plugins-theora/Makefile >+++ b/multimedia/gstreamer1-plugins-theora/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer theora plugin >@@ -8,4 +7,9 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS+= libtheora.so:multimedia/libtheora \ >+ libogg.so:audio/libogg >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-theora/pkg-plist b/multimedia/gstreamer1-plugins-theora/pkg-plist >new file mode 100644 >index 000000000000..5ff8c2ddf2da >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-theora/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgsttheora.so >diff --git a/multimedia/gstreamer1-plugins-ttml/Makefile b/multimedia/gstreamer1-plugins-ttml/Makefile >index ca7a7c0de231..fa70625a3536 100644 >--- a/multimedia/gstreamer1-plugins-ttml/Makefile >+++ b/multimedia/gstreamer1-plugins-ttml/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= multimedia > > COMMENT= GStreamer ttml subtitle plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= cairo libxml2 pango >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-ttml/pkg-plist b/multimedia/gstreamer1-plugins-ttml/pkg-plist >new file mode 100644 >index 000000000000..12f7d6a43806 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-ttml/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstttmlsubs.so >diff --git a/multimedia/gstreamer1-plugins-ugly/Makefile b/multimedia/gstreamer1-plugins-ugly/Makefile >index 5c8cc2996f75..3ad279120cfc 100644 >--- a/multimedia/gstreamer1-plugins-ugly/Makefile >+++ b/multimedia/gstreamer1-plugins-ugly/Makefile >@@ -1,5 +1,4 @@ >-PORTREVISION= 2 >-CATEGORIES= multimedia >+CATEGORIES?= multimedia audio > > COMMENT= GStreamer-plugins set of good-quality plug-ins that might have distribution problems > >@@ -9,18 +8,13 @@ GST_PLUGIN_SUFFIX= -ugly > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > > DIST= ugly >-UGLY_GST_DIRS= gst po gst-libs > NO_GSTREAMER_COMMON= yes > PLIST= ${.CURDIR}/pkg-plist >- >-do-build: >-.for dir in ${UGLY_GST_DIRS} >- @(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}) >-.endfor >- >-do-install: >-.for dir in ${UGLY_GST_DIRS} >- @(cd ${INSTALL_WRKSRC}/${dir} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET}) >-.endfor >+UGLY_GST_ENABLED_PLUGINS= asfdemux \ >+ nls \ >+ dvdlpcmdec \ >+ dvdsub \ >+ realmedia \ >+ xingmux > > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-ugly/files/patch-meson.build b/multimedia/gstreamer1-plugins-ugly/files/patch-meson.build >new file mode 100644 >index 000000000000..f42f5c6f266b >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-ugly/files/patch-meson.build >@@ -0,0 +1,14 @@ >+*** meson.build.orig Fri Sep 2 18:21:32 2022 >+--- meson.build Fri Sep 2 18:24:38 2022 >+*************** >+*** 117,122 **** >+--- 117,125 ---- >+ cdata.set_quoted('GETTEXT_PACKAGE', 'gst-plugins-ugly-1.0') >+ cdata.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) >+ >++ cdata.set_quoted('DEFAULT_AUDIOSINK', get_option('defaultaudiosink')) >++ cdata.set_quoted('DEFAULT_AUDIOSRC', get_option('defaultaudiosrc')) >++ >+ # GStreamer package name and origin url >+ gst_package_name = get_option('package-name') >+ if gst_package_name == '' >diff --git a/multimedia/gstreamer1-plugins-ugly/files/patch-meson_options.txt b/multimedia/gstreamer1-plugins-ugly/files/patch-meson_options.txt >new file mode 100644 >index 000000000000..0c5da395fa31 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-ugly/files/patch-meson_options.txt >@@ -0,0 +1,15 @@ >+*** meson_options.txt.orig Fri Sep 2 18:21:12 2022 >+--- meson_options.txt Fri Sep 2 18:22:42 2022 >+*************** >+*** 7,12 **** >+--- 7,16 ---- >+ option('dvdsub', type : 'feature', value : 'auto') >+ option('realmedia', type : 'feature', value : 'auto') >+ option('xingmux', type : 'feature', value : 'auto') >++ option('defaultaudiosink', type : 'string', value : 'autoaudiosink', >++ description: 'set default audio sink') >++ option('defaultaudiosrc', type : 'string', value : 'autoaudiosrc', >++ description: 'set default audio src') >+ >+ # Feature options for plugins that need external deps >+ option('a52dec', type : 'feature', value : 'auto', description : 'Dolby Digital (AC-3) audio decoder plugin based on liba52 (GPL - only built if gpl option is also enabled!)') >diff --git a/multimedia/gstreamer1-plugins-ugly/pkg-plist b/multimedia/gstreamer1-plugins-ugly/pkg-plist >index 55e17f8ce5f7..3b1530dd6107 100644 >--- a/multimedia/gstreamer1-plugins-ugly/pkg-plist >+++ b/multimedia/gstreamer1-plugins-ugly/pkg-plist >@@ -46,3 +46,4 @@ share/locale/tr/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo > share/locale/uk/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo > share/locale/vi/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo > share/locale/zh_CN/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo >+share/locale/zh_TW/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo >diff --git a/multimedia/gstreamer1-plugins-v4l2/Makefile b/multimedia/gstreamer1-plugins-v4l2/Makefile >index 0df229b29429..d06032098e89 100644 >--- a/multimedia/gstreamer1-plugins-v4l2/Makefile >+++ b/multimedia/gstreamer1-plugins-v4l2/Makefile >@@ -1,12 +1,17 @@ >-PORTREVISION= 3 > CATEGORIES= multimedia > PKGNAMESUFFIX= 1-plugins-v4l2 > > COMMENT= GStreamer Video 4 Linux 2 source plugin > >-GST_PLUGIN= gst_v4l2 >+GST_PLUGIN= v4l2 > DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat >+LIB_DEPENDS= libv4l2.so:multimedia/libv4l >+RUN_DEPENDS= webcamd:multimedia/webcamd >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-v4l2/pkg-plist b/multimedia/gstreamer1-plugins-v4l2/pkg-plist >new file mode 100644 >index 000000000000..aa63465578c0 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-v4l2/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstvideo4linux2.so >diff --git a/multimedia/gstreamer1-plugins-vpx/Makefile b/multimedia/gstreamer1-plugins-vpx/Makefile >index beb27bd858ac..284ec75dfc33 100644 >--- a/multimedia/gstreamer1-plugins-vpx/Makefile >+++ b/multimedia/gstreamer1-plugins-vpx/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= multimedia > > COMMENT= GStreamer vp8 codec plugin >@@ -8,4 +7,8 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libvpx.so:multimedia/libvpx >+ > .include "${MASTERDIR}/Makefile" >diff --git a/multimedia/gstreamer1-plugins-vpx/pkg-plist b/multimedia/gstreamer1-plugins-vpx/pkg-plist >new file mode 100644 >index 000000000000..bf2d3ac38cfd >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-vpx/pkg-plist >@@ -0,0 +1,2 @@ >+lib/gstreamer-%%VERSION%%/libgstvpx.so >+%%DATADIR%%-%%VERSION%%/presets/GstVP8Enc.prs >diff --git a/multimedia/gstreamer1-plugins-x264/Makefile b/multimedia/gstreamer1-plugins-x264/Makefile >index b4076501847b..cc8634c4de99 100644 >--- a/multimedia/gstreamer1-plugins-x264/Makefile >+++ b/multimedia/gstreamer1-plugins-x264/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 6 > CATEGORIES= multimedia > > COMMENT= GStreamer libx264 based H264 plugin >@@ -8,4 +7,10 @@ DIST= ugly > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libx264.so:multimedia/libx264 >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-x264/pkg-plist b/multimedia/gstreamer1-plugins-x264/pkg-plist >new file mode 100644 >index 000000000000..0e00f12e355e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-x264/pkg-plist >@@ -0,0 +1,2 @@ >+lib/gstreamer-%%VERSION%%/libgstx264.so >+%%DATADIR%%-%%VERSION%%/presets/GstX264Enc.prs >diff --git a/multimedia/gstreamer1-plugins-x265/Makefile b/multimedia/gstreamer1-plugins-x265/Makefile >index c46a2588fcc4..1dc2e03d0719 100644 >--- a/multimedia/gstreamer1-plugins-x265/Makefile >+++ b/multimedia/gstreamer1-plugins-x265/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 3 > CATEGORIES= multimedia > > COMMENT= GStreamer libx265 based H265 plugin >@@ -8,4 +7,10 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libx265.so:multimedia/x265 >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/multimedia/gstreamer1-plugins-x265/pkg-plist b/multimedia/gstreamer1-plugins-x265/pkg-plist >new file mode 100644 >index 000000000000..38414eeb962f >--- /dev/null >+++ b/multimedia/gstreamer1-plugins-x265/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstx265.so >diff --git a/multimedia/gstreamer1-plugins/Makefile b/multimedia/gstreamer1-plugins/Makefile >index ca2ce7b27b02..84b3eefba760 100644 >--- a/multimedia/gstreamer1-plugins/Makefile >+++ b/multimedia/gstreamer1-plugins/Makefile >@@ -1,15 +1,12 @@ > PORTNAME= gstreamer > PORTVERSION?= ${BASE_PORTVERSION} >-# When chasing a shared library for a plug-in bump the PORTREVISION in the > # plug-in port instead, like ${category}/gstreamer1-plugin-${PLUGIN}. >-PORTREVISION?= 7 >+PORTREVISION?= 0 > CATEGORIES?= multimedia audio >-MASTER_SITES= GNOME/sources/gst-plugins-base/${PORTVERSION:R}:base \ >- GNOME/sources/gst-plugins-good/${PORTVERSION:R}:good \ >- http://gstreamer.freedesktop.org/src/gst-plugins-base/:base \ >- http://gstreamer.freedesktop.org/src/gst-plugins-bad/:bad \ >- http://gstreamer.freedesktop.org/src/gst-plugins-good/:good \ >- http://gstreamer.freedesktop.org/src/gst-plugins-ugly/:ugly >+MASTER_SITES= https://gstreamer.freedesktop.org/src/gst-plugins-base/:base \ >+ https://gstreamer.freedesktop.org/src/gst-plugins-bad/:bad \ >+ https://gstreamer.freedesktop.org/src/gst-plugins-good/:good \ >+ https://gstreamer.freedesktop.org/src/gst-plugins-ugly/:ugly > PKGNAMESUFFIX?= 1-plugins${GST_PLUGIN_SUFFIX} > > MAINTAINER= multimedia@FreeBSD.org >@@ -26,24 +23,22 @@ RUN_DEPENDS+= iso-codes>=0:misc/iso-codes > > PORTSCOUT= limitw:1,even > >-BASE_PORTVERSION= 1.16.2 >+BASE_PORTVERSION= 1.20.3 > BASE_DISTNAME= gst-plugins-base-${BASE_PORTVERSION} > BASE_DISTFILE= ${BASE_DISTNAME}${EXTRACT_SUFX} >-BAD_PORTVERSION= 1.16.2 >+BAD_PORTVERSION= 1.20.3 > BAD_DISTNAME= gst-plugins-bad-${BAD_PORTVERSION} > BAD_DISTFILE= ${BAD_DISTNAME}${EXTRACT_SUFX} >-GOOD_PORTVERSION= 1.16.2 >+GOOD_PORTVERSION= 1.20.3 > GOOD_DISTNAME= gst-plugins-good-${GOOD_PORTVERSION} > GOOD_DISTFILE= ${GOOD_DISTNAME}${EXTRACT_SUFX} >-UGLY_PORTVERSION= 1.16.2 >+UGLY_PORTVERSION= 1.20.3 > UGLY_DISTNAME= gst-plugins-ugly-${UGLY_PORTVERSION} > UGLY_DISTFILE= ${UGLY_DISTNAME}${EXTRACT_SUFX} > DIST?= base > >-USES+= cpe gettext gmake gnome gstreamer libtool pathfix pkgconfig python tar:xz >+USES+= meson cpe gettext gnome gstreamer libtool pathfix pkgconfig python:3.8+,build tar:xz > USE_GNOME+= glib20 introspection:build libxml2 >-GNU_CONFIGURE= yes >-INSTALL_TARGET= install-strip > GST_PLUGIN?= base > USE_LDCONFIG= yes > >@@ -54,8 +49,6 @@ CFLAGS+= -Wno-format > CPPFLAGS+= -I${LOCALBASE}/include > LDFLAGS+= -lpthread -L${LOCALBASE}/lib ${EXTRA_LIBS} > >-CONFIGURE_ARGS+= --disable-fatal-warnings >- > DEFAULT_AUDIOSINK?= osssink > DEFAULT_AUDIOSRC?= osssrc > >@@ -64,7 +57,7 @@ IGNORE= DIST not specified > .endif > > VERSION= 1.0 >-SOVERSION= 0.1602.0 >+SOVERSION= 0.2003.0 > PLIST_SUB+= VERSION="${VERSION}" \ > SOVERSION="${SOVERSION}" > >@@ -74,16 +67,47 @@ PLIST_SUB+= VERSION="${VERSION}" \ > .if ${GST_PLUGIN} == "base" > DIST= base > NO_GSTREAMER_COMMON= yes >+ >+BASE_GST_ENABLED_PLUGINS= adder \ >+ allocators \ >+ app \ >+ audio \ >+ audioconvert \ >+ audiomixer \ >+ audiorate \ >+ audioresample \ >+ audiotestsrc \ >+ compositor \ >+ encoding \ >+ fft \ >+ gio \ >+ nls \ >+ overlaycomposition \ >+ pbtypes \ >+ pkgconfig \ >+ pbutils \ >+ playback \ >+ rawparse \ >+ riff \ >+ rtp \ >+ rtsp \ >+ sdp \ >+ subparse \ >+ tag \ >+ tcp \ >+ tools \ >+ typefind \ >+ video \ >+ videoconvert \ >+ videorate \ >+ videoscale \ >+ videotestsrc \ >+ volume > .endif > > .if ${DIST} == base || ${DIST} == ugly >-# --with-default-audiosink specify default audio sink >-# --with-default-audiosrc specify default audio source >-# --with-default-videosink specify default video sink >-# --with-default-videosrc specify default video source >-# --with-default-visualizer specify default visualizer >-CONFIGURE_ARGS+=--with-default-audiosink="${DEFAULT_AUDIOSINK}" \ >- --with-default-audiosrc="${DEFAULT_AUDIOSRC}" >+CONFIGURE_ARGS+= -Ddefaultaudiosink="${DEFAULT_AUDIOSINK}" \ >+ -Ddefaultaudiosrc="${DEFAULT_AUDIOSRC}" > .endif > > .include "${MASTERDIR}/Makefile.common" >@@ -126,75 +150,7 @@ DEFAULT_DVD_DEVICE=${WITH_DVD_DEVICE} > DEFAULT_DVD_DEVICE=/dev/cd0 > .endif > >-post-patch: >-.if ${DIST} == bad >-# custom rule to fix opencv detection in configure >-# @${REINPLACE_CMD} -e 's|opencv <= 2.4.8|opencv <= 2.4.9|g' \ >-# ${WRKSRC}/configure >- @${REINPLACE_CMD} -e 's|/dev/dvd|${DEFAULT_DVD_DEVICE}|g' \ >- ${WRKSRC}/ext/resindvd/resindvdbin.c \ >- ${WRKSRC}/ext/resindvd/resindvdsrc.c >-# Fix dependency on neon-0.31 and 0.32 >- ${REINPLACE_CMD} -e '/neon/s|0.30.99|0.32.99|g' \ >- ${WRKSRC}/configure >-# Fix build against OpenCV 4.5.1 >- ${REINPLACE_CMD} '/opencv/s|4\.2\.0|4.7.0|g' \ >- ${WRKSRC}/configure >- >-.endif >-.if ${DIST} != ugly >- @${FIND} ${WRKSRC}/ext ${WRKSRC}/sys \ >- -name Makefile.in | ${XARGS} -n 10 ${REINPLACE_CMD} -e \ >- '/la_DEPENDENCIES/,/am__DEPENDENCIES/s,$$(top_builddir)/gst-libs/.*.la,,' -e \ >- 's|$$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la|-lgsttag-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la|-lgstaudio-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_API_VERSION@.la|-lgstpbutils-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/riff/libgstriff-@GST_API_VERSION@.la|-lgstriff-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la|-lgstsignalprocessor-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/video/libgstbasevideo-@GST_API_VERSION@.la|-lgstbasevideo-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la|-lgstvideo-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la|-lgstbadbase-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la|-lgsturidownloader-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la|-lgstadaptivedemux-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-@GST_API_VERSION@.la|-lgstcodecparsers-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/allocators/libgstbadallocators-@GST_API_VERSION@.la|-lgstbadallocators-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-@GST_API_VERSION@.la|-lgstbadaudio-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/video/libgstbadvideo-@GST_API_VERSION@.la|-lgstbadvideo-${VERSION}|' >- >- @${FIND} ${WRKSRC}/ext ${WRKSRC}/sys -name Makefile.in | \ >- ${XARGS} -n 10 ${REINPLACE_CMD} -e \ >- '/la_DEPENDENCIES/,/am__DEPENDENCIES/s,$$(top_builddir)/gst-libs/.*.la,,' -e \ >- 's|$$(top_builddir)/gst-libs/gst/tag/libgsttag-$$(GST_API_VERSION).la|-lgsttag-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/audio/libgstaudio-$$(GST_API_VERSION).la|-lgstaudio-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-$$(GST_API_VERSION).la|-lgstpbutils-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/riff/libgstriff-$$(GST_API_VERSION).la|-lgstriff-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-$$(GST_API_VERSION).la|-lgstsignalprocessor-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/video/libgstbasevideo-$$(GST_API_VERSION).la|-lgstbasevideo-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/video/libgstvideo-$$(GST_API_VERSION).la|-lgstvideo-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/base/libgstbadbase-$$(GST_API_VERSION).la|-lgstbadbase-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-$$(GST_API_VERSION).la|-lgsturidownloader-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la|-lgstadaptivedemux-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$$(GST_API_VERSION).la|-lgstcodecparsers-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/allocators/libgstbadallocators-$$(GST_API_VERSION).la|-lgstbadallocators-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-$$(GST_API_VERSION).la|-lgstbadaudio-${VERSION}|; \ >- s|$$(top_builddir)/gst-libs/gst/video/libgstbadvideo-$$(GST_API_VERSION).la|-lgstbadvideo-${VERSION}|' >- @${FIND} ${WRKSRC}/ext ${WRKSRC}/gst ${WRKSRC}/gst-libs \ >- -name Makefile.in -exec ${REINPLACE_CMD} \ >- '/foreach/s/\\#include/#include/' {} + >-.endif >- >-.if ${DIST} == bad >-# Disable X11 support in librfb >-post-configure: >- @${REINPLACE_CMD} -e 's|HAVE_X11 = yes|HAVE_X11 = no|g' \ >- -e 's|#ifdef HAVE_X11|#ifdef NO_X11|g' \ >- -e 's|$$(X11_CFLAGS) \\|\\|g' \ >- -e 's|$$(X11_LIBS) \\|\\|g' \ >- ${WRKSRC}/gst/librfb/Makefile \ >- ${WRKSRC}/gst/librfb/gstrfbsrc.c >-.endif >- > pre-install: >- ${MKDIR} ${STAGEDIR}${PREFIX}/lib/gstreamer-1.0 >+ ${MKDIR} ${STAGEDIR}${PREFIX}/lib/gstreamer-${VERSION} > > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1-plugins/Makefile.common b/multimedia/gstreamer1-plugins/Makefile.common >index 4282b92969ac..6a43434bd79b 100644 >--- a/multimedia/gstreamer1-plugins/Makefile.common >+++ b/multimedia/gstreamer1-plugins/Makefile.common >@@ -1,608 +1,365 @@ >-BASE_GST_ALL_PLUGINS= \ >+BASE_GST_ALL_PLUGINS+= \ >+ adder \ >+ allocators \ > alsa \ >+ app \ >+ audio \ >+ audioconvert \ >+ audiomixer \ >+ audiorate \ >+ audioresample \ >+ audiotestsrc \ > cdparanoia \ >+ compositor \ >+ doc \ >+ encoding \ >+ examples \ >+ fft \ >+ gio \ > gl \ >- ivorbis \ > libvisual \ >+ nls \ > ogg \ >- opengl \ > opus \ >+ overlaycomposition \ > pango \ >+ pbtypes \ >+ pbutils \ >+ pkgconfig \ >+ playback \ >+ rawparse \ >+ riff \ >+ rtp \ >+ rtsp \ >+ sdp \ >+ subparse \ >+ tag \ >+ tcp \ >+ tests \ > theora \ >+ tools \ >+ typefind \ >+ video \ >+ videoconvert \ >+ videorate \ >+ videoscale \ >+ videotestsrc \ >+ volume \ > vorbis \ >- x \ >+ ximage \ > xvideo > >-BASE_GST_NON_PLUGINS= \ >- --disable-gles2 \ >- --disable-egl \ >- --disable-glx >+BASE_GST_ENABLED_PLUGINS?= > > BAD_GST_ALL_PLUGINS+= \ >+ accurip \ >+ adaptivedemux \ >+ adpcmdec \ >+ adpcmenc \ >+ aes \ >+ aiff \ >+ androidmedia \ > aom \ >+ applemedia \ >+ asfmux \ > assrender \ >+ audiobuffersplit \ >+ audiofxbad \ >+ audiolatency \ >+ audiomixmatrix \ >+ audiovisualizers \ >+ autoconvert \ >+ basecamerabinsrc \ >+ bayer \ >+ bluez \ > bs2b \ >+ bz2 \ >+ camerabin2 \ > chromaprint \ >+ closedcaption \ >+ codecalpha \ >+ codecparsers \ >+ codecs \ >+ coloreffects \ >+ colormanagement \ > curl \ > dash \ >+ data \ >+ dc1394 \ >+ debugutils \ >+ directfb \ >+ directsound \ >+ doc \ > dtls \ > dts \ >+ dvb \ >+ dvbsubenc \ >+ dvbsuboverlay \ >+ dvdspu \ >+ examples \ > faac \ > faad \ >+ faceoverlay \ >+ festival \ >+ fieldanalysis \ > flite \ >+ freeverb \ >+ frei0r \ >+ gaudieffects \ >+ gdp \ >+ geometrictransform \ > gme \ > gsm \ > hls \ >+ id3tag \ >+ insertbin \ >+ inter \ >+ interfaces \ >+ interlace \ >+ ipcpipeline \ >+ isoff \ >+ ivfparse \ >+ ivtc \ >+ jp2kdecimator \ >+ jpegformat \ > kate \ > kms \ > ladspa \ > libde265 \ >+ librfb \ > lv2 \ >+ midi \ > modplug \ > mpeg2enc \ >+ mpegdemux \ >+ mpegpsmux \ >+ mpegts \ >+ mpegtsdemux \ >+ mpegtsmux \ > mplex \ > msdk \ > musepack \ >+ mxf \ > neon \ >- ofa \ >+ netsim \ >+ nls \ >+ nvcodec \ >+ onvif \ > openal \ > opencv \ > openexr \ > openh264 \ > openjpeg \ > openmpt \ >+ opus \ >+ pcapparse \ >+ pkgconfig \ >+ play \ >+ player \ >+ pnm \ >+ proxy \ >+ rawparse \ >+ removesilence \ > resindvd \ >- rtmp \ >+ rist \ > rsvg \ >+ rtmp \ >+ rtmp2 \ >+ rtp \ >+ sbc \ >+ sctp \ >+ sdp \ >+ segmentclip \ >+ shm \ >+ siren \ >+ smooth \ > smoothstreaming \ > sndfile \ > soundtouch \ > spandsp \ >+ speed \ > srtp \ >+ subenc \ >+ switchbin \ >+ tests \ >+ timecode \ >+ tinyalsa \ >+ tools \ >+ transcode \ >+ transcoder \ > ttml \ >- vdpau \ >+ uridownloader \ >+ uvch264 \ >+ videofilters \ >+ videoframe_audiolevel \ >+ videoparsers \ >+ videosignal \ >+ vmnc \ > vulkan \ >+ wasapi \ > wayland \ > webp \ >+ webrtc \ > webrtcdsp \ >+ winks \ >+ winscreencap \ > x265 \ >- zbar \ >+ y4m \ >+ zbar > >-BAD_GST_NON_PLUGINS= \ >- --enable-bz2 \ >- --enable-dvb \ >- --enable-shm \ >- --disable-acm \ >- --disable-android_media \ >- --disable-apple_media \ >- --disable-avc \ >- --disable-bluez \ >- --disable-directfb \ >- --disable-direct3d \ >- --disable-directsound \ >- --disable-nvenc \ >- --disable-nvdec \ >- --disable-sbc \ >- --disable-spc \ >- --disable-tinyalsa \ >- --disable-uvch264 \ >- --disable-vcd \ >- --disable-wasapi \ >- --disable-winks \ >- --disable-winscreencap >+BAD_GST_ENABLED_PLUGINS?= > > GOOD_GST_ALL_PLUGINS+= \ > aalib \ >+ alpha \ >+ apetag \ >+ audiofx \ >+ audioparsers \ >+ auparse \ >+ autodetect \ >+ avi \ > cairo \ >+ cutter \ >+ debugutils \ >+ deinterlace \ >+ directsound \ >+ dtmf \ >+ dv \ >+ dv1394 \ >+ effectv \ >+ equalizer \ >+ examples \ > flac \ >- gdk_pixbuf \ >- gst_v4l2 \ >+ flv \ >+ flx \ >+ gdk-pixbuf \ >+ goom \ >+ goom2k1 \ > gtk3 \ >+ icydemux \ >+ id3demux \ >+ imagefreeze \ >+ interleave \ >+ isomp4 \ > jack \ > jpeg \ > lame \ >+ law \ >+ level \ > libcaca \ >- libdv \ >- libpng \ >+ matroska \ >+ monoscope \ > mpg123 \ >+ multifile \ >+ multipart \ >+ nls \ >+ oss \ >+ oss4 \ >+ osxaudio \ >+ osxvideo \ >+ png \ > pulse \ >- qt \ >+ qt5 \ >+ replaygain \ >+ rtp \ >+ rtpmanager \ >+ rtsp \ >+ shapewipe \ > shout2 \ >+ smpte \ > soup \ >+ spectrum \ > speex \ > taglib \ >+ tests \ > twolame \ >+ udp \ >+ v4l2 \ >+ videobox \ >+ videocrop \ >+ videofilter \ >+ videomixer \ > vpx \ >+ waveform \ >+ wavenc \ > wavpack \ >- x >+ wavparse \ >+ ximagesrc \ >+ y4m > >-GOOD_GST_NON_PLUGINS= \ >- --disable-dv1394 \ >- --disable-directsound \ >- --disable-osx_audio \ >- --disable-osx_video \ >- --disable-waveform \ >- --enable-bz2 \ >- --enable-oss \ >- --enable-oss4 \ >- --enable-zlib >+GOOD_GST_ENABLED_PLUGINS?= > > UGLY_GST_ALL_PLUGINS+= \ > a52dec \ > amrnb \ >- amrwb \ >+ amrwbdec \ >+ asfdemux \ > cdio \ >+ dvdlpcmdec \ > dvdread \ >+ dvdsub \ > mpeg2dec \ >+ nls \ >+ realmedia \ > sidplay \ >- x264 >+ x264 \ >+ xingmux >+ >+UGLY_GST_ENABLED_PLUGINS?= > >-UGLY_GST_NON_PLUGINS= >+# gstreamer scripts tend to call python3 rather than python >+BINARY_ALIAS= python3=${PYTHON_VERSION} > > # Disable all plugins by default > .if ${DIST}=="base" > .for d in ${BASE_GST_ALL_PLUGINS} >-CONFIGURE_ARGS+= --disable-${d} >+CONFIGURE_ARGS+= -D${d}=disabled >+.endfor >+.for d in ${BASE_GST_ENABLED_PLUGINS} >+CONFIGURE_ARGS+= -D${d}=enabled > .endfor >-CONFIGURE_ARGS+= ${BASE_GST_NON_PLUGINS} > .endif > > .if ${DIST}=="bad" > .for d in ${BAD_GST_ALL_PLUGINS} >-CONFIGURE_ARGS+= --disable-${d} >+CONFIGURE_ARGS+= -D${d}=disabled >+.endfor >+.for d in ${BAD_GST_ENABLED_PLUGINS} >+CONFIGURE_ARGS+= -D${d}=enabled > .endfor >-CONFIGURE_ARGS+= ${BAD_GST_NON_PLUGINS} > .endif > > .if ${DIST}=="good" > .for d in ${GOOD_GST_ALL_PLUGINS} >-CONFIGURE_ARGS+= --disable-${d} >+CONFIGURE_ARGS+= -D${d}=disabled >+.endfor >+.for d in ${GOOD_GST_ENABLED_PLUGINS} >+CONFIGURE_ARGS+= -D${d}=enabled > .endfor >-CONFIGURE_ARGS+= ${GOOD_GST_NON_PLUGINS} > .endif > > .if ${DIST}=="ugly" > .for d in ${UGLY_GST_ALL_PLUGINS} >-CONFIGURE_ARGS+= --disable-${d} >+CONFIGURE_ARGS+= -D${d}=disabled >+.endfor >+.for d in ${UGLY_GST_ENABLED_PLUGINS} >+CONFIGURE_ARGS+= -D${d}=enabled > .endfor >-CONFIGURE_ARGS+= ${UGLY_GST_NON_PLUGINS} > .endif > > .if ${GST_PLUGIN}!="base" && ${GST_PLUGIN}!="bad" && \ >- ${GST_PLUGIN}!="good" && ${GST_PLUGIN}!="ugly" >-CONFIGURE_ARGS+= --enable-${GST_PLUGIN} >+ ${GST_PLUGIN}!="good" && ${GST_PLUGIN}!="ugly" && \ >+ ${GST_PLUGIN}!="x" >+CONFIGURE_ARGS+= -D${GST_PLUGIN}=enabled > .endif > > .if !defined(NO_GSTREAMER_COMMON) > GST_PLUGIN_SUFFIX?= -${GST_PLUGIN} > >-# Enable the right plugin >-CONFIGURE_ARGS:=${CONFIGURE_ARGS:S|--disable-${GST_PLUGIN}|--enable-${GST_PLUGIN}|} >+USE_GSTREAMER+= ${DIST:base=} > > GST_INC_DIR= include/gstreamer-${VERSION} > GST_LIB_DIR= lib/gstreamer-${VERSION} > >-# Auto create PLIST >-PLIST?= ${NONEXISTENT} >- >-# ------- plugins --------- >- >-# a52dec >-gst_a52dec_LIB_DEPENDS= liba52.so:audio/liba52 >- >-# aalib >-gst_aalib_LIB_DEPENDS= libaa.so:graphics/aalib >-gst_aalib_USES= ncurses >-gst_aalib_PLIST_FILES= ${GST_LIB_DIR}/libgstaasink.so >- >-# amrnb >-gst_amrnb_LIB_DEPENDS= libopencore-amrnb.so:audio/opencore-amr >-gst_amrnb_PLIST_FILES= ${GST_LIB_DIR}/libgstamrnb.so \ >- share/gstreamer-${VERSION}/presets/GstAmrnbEnc.prs >- >-# amrwb >-gst_amrwb_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr >-gst_amrwb_GST_PLUGIN_DIR= ext/amrwbdec >-gst_amrwb_PLIST_FILES= ${GST_LIB_DIR}/libgstamrwbdec.so >- >-# aom >-gst_aom_LIB_DEPENDS= libaom.so:multimedia/aom >- >-# assrender >-gst_assrender_LIB_DEPENDS= libass.so:multimedia/libass >-gst_assrender_USES= compiler:c11 >- >-# bs2b >-gst_bs2b_LIB_DEPENDS= libbs2b.so:audio/libbs2b >- >-# cairo >-gst_cairo_USE_GNOME= cairo >- >-# cdparanoia >-gst_cdparanoia_LIB_DEPENDS= libcdda_interface.so:audio/cdparanoia >- >-# cdio >-gst_cdio_LIB_DEPENDS= libcdio.so:sysutils/libcdio >- >-# chromaprint >-gst_chromaprint_LIB_DEPENDS= libchromaprint.so:audio/chromaprint >- >-# curl >-gst_curl_LIB_DEPENDS= libcurl.so:ftp/curl \ >- libssh2.so:security/libssh2 >- >-# dash >-gst_dash_USE_GNOME= libxml2 >-gst_dash_PLIST_FILES= ${GST_LIB_DIR}/libgstdashdemux.so >- >-# dtls >-gst_dtls_USES= compiler:c11 ssl >-gst_dtls_CONFIGURE_ENV= DTLS_CFLAGS="-I${OPENSSLINC}" \ >- DTLS_LIBS="-L${OPENSSLLIB} -lcrypto -lssl" >- >-# dts >-gst_dts_LIB_DEPENDS= libdca.so:multimedia/libdca >-gst_dts_PLIST_FILES= ${GST_LIB_DIR}/libgstdtsdec.so >- >-# libdv >-gst_libdv_LIB_DEPENDS= libdv.so:multimedia/libdv >-gst_libdv_GST_PLUGIN_DIR= ext/dv >-gst_libdv_PLIST_FILES= ${GST_LIB_DIR}/libgstdv.so >- >-# dvdread >-gst_dvdread_LIB_DEPENDS=libdvdread.so:multimedia/libdvdread >- >-# faac >-gst_faac_LIB_DEPENDS= libfaac.so:audio/faac >- >-# faad >-gst_faad_LIB_DEPENDS= libfaad.so:audio/faad >- >-# flac >-gst_flac_LIB_DEPENDS= libFLAC.so:audio/flac >- >-# flite >-gst_flite_LIB_DEPENDS= libflite.so:audio/flite >- >-# gdk_pixbuf >-gst_gdk_pixbuf_USE_GNOME= gdkpixbuf2 >-gst_gdk_pixbuf_PLIST_FILES= ${GST_LIB_DIR}/libgstgdkpixbuf.so >- >-# gl >-gst_gl_USES= gl >-gst_gl_USE_GL= gl glu glesv2 egl >-gst_gl_BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto >-gst_gl_LIB_DEPENDS= libgraphene-1.0.so:graphics/graphene >-gst_gl_CONFIGURE_ARGS= --enable-gl --enable-glx \ >- --enable-egl --enable-gles2 >-gst_gl_GST_PLUGIN_DIR= gst-libs/gst/gl ext/gl >-gst_gl_PLIST_FILES= # >- >-# gme >-gst_gme_LIB_DEPENDS= libgme.so:audio/libgme >- >-# gsm >-gst_gsm_LIB_DEPENDS= libgsm.so:audio/gsm >- >-# gtk3 >-gst_gtk3_USES= gnome >-gst_gtk3_USE_GSTREAMER= gl >-gst_gtk3_USE_GNOME= cairo gdkpixbuf2 gtk30 >-gst_gtk3_CONFIGURE_ARGS=--enable-gtk3 >-gst_gtk3_GST_PLUGIN_DIR=ext/gtk >-gst_gtk3_PLIST_FILES= ${GST_LIB_DIR}/libgstgtk.so >- >-# hls >-gst_hls_LIB_DEPENDS= libnettle.so:security/nettle >- >-# jack >-gst_jack_LIB_DEPENDS= libjack.so:audio/jack >- >-# jpeg >-gst_jpeg_USES= jpeg >- >-# kate >-gst_kate_LIB_DEPENDS= libkate.so:multimedia/libkate >- >-# kms >-gst_kms_LIB_DEPENDS= libdrm.so:graphics/libdrm >-gst_kms_GST_PLUGIN_DIR= sys/kms >- >-# ladspa >-gst_ladspa_BUILD_DEPENDS= ${LOCALBASE}/include/ladspa.h:audio/ladspa >- >-# lame >-gst_lame_LIB_DEPENDS= libmp3lame.so:audio/lame >- >-# libcaca >-gst_libcaca_LIB_DEPENDS= libcaca.so:graphics/libcaca >-gst_libcaca_PLIST_FILES= ${GST_LIB_DIR}/libgstcacasink.so >- >-# libde265 >-gst_libde265_LIB_DEPENDS= libde265.so:multimedia/libde265 >-gst_libde265_PLIST_FILES= ${GST_LIB_DIR}/libgstde265.so >- >-# librfb >-gst_librfb_USES= xorg >-gst_librfb_USE_XORG= x11 >- >-# liblv2 >-gst_lv2_USES= pkgconfig >-gst_lv2_BUILD_DEPENDS= lv2>=1.14.0:audio/lv2 >-gst_lv2_LIB_DEPENDS= libsord-0.so:devel/sord \ >- libserd-0.so:devel/serd \ >- libsratom-0.so:audio/sratom \ >- liblilv-0.so:audio/lilv >- >-# png >-gst_libpng_LIB_DEPENDS= libpng.so:graphics/png >-gst_libpng_PLIST_FILES= ${GST_LIB_DIR}/libgstpng.so >- >-# libvisual >-gst_libvisual_LIB_DEPENDS= libvisual-0.4.so:graphics/libvisual04 >- >-# modplug >-gst_modplug_LIB_DEPENDS= libmodplug.so:audio/libmodplug >- >-# mpeg2enc >-gst_mpeg2enc_LIB_DEPENDS= libmjpegutils.so:multimedia/mjpegtools >- >-# mpeg2dec >-gst_mpeg2dec_LIB_DEPENDS= libmpeg2.so:multimedia/libmpeg2 >- >-# mplex >-gst_mplex_LIB_DEPENDS= libmplex2.so:multimedia/mjpegtools >- >-# mpg123 >-gst_mpg123_LIB_DEPENDS= libmpg123.so:audio/mpg123 >- >-# msdk >-gst_msdk_LIB_DEPENDS= libgudev-1.0.so:devel/libgudev \ >- libmfx.so:multimedia/intel-media-sdk \ >- libva-drm.so:multimedia/libva >-gst_msdk_GST_PLUGIN_DIR= sys/msdk >- >-# musepack >-gst_musepack_LIB_DEPENDS=libmpcdec.so:audio/musepack >- >-# neon >-gst_neon_LIB_DEPENDS+= libneon.so:www/neon >-gst_neon_PLIST_FILES= ${GST_LIB_DIR}/libgstneonhttpsrc.so >- >-# ogg >-gst_ogg_LIB_DEPENDS= libogg.so:audio/libogg >- >-# opencv >-gst_opencv_LIB_DEPENDS= libopencv_highgui.so:graphics/opencv >-gst_opencv_GST_PLUGIN_DIR= gst-libs/gst/opencv ext/opencv >-gst_opencv_PLIST_FILES= # >-gst_opencv_USES= compiler:c++11-lib >- >-# openexr >-gst_openexr_LIB_DEPENDS= libOpenEXR.so:graphics/openexr >- >-# openjpeg >-gst_openjpeg_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg >- >-# openh264 >-gst_openh264_LIB_DEPENDS= libopenh264.so:multimedia/openh264 >- >-# openmpt >-gst_openmpt_LIB_DEPENDS= libopenmpt.so:audio/libopenmpt >- >-# opus >-gst_opus_LIB_DEPENDS= libopus.so:audio/opus >- >-# pango >-gst_pango_USE_GNOME= cairo pango >- >-# pulse >-gst_pulse_LIB_DEPENDS= libpulse.so:audio/pulseaudio >-gst_pulse_PLIST_FILES= ${GST_LIB_DIR}/libgstpulseaudio.so >- >-# qt >-gst_qt_USES= compiler:c++11-lang qt:5 >-gst_qt_USE_QT= core gui declarative buildtools:build network x11extras >-gst_qt_USE_GSTREAMER= gl >-gst_qt_PLIST_FILES= ${GST_LIB_DIR}/libgstqmlgl.so >- >-# resindvd >-gst_resindvd_BUILD_DEPENDS= libdvdnav>=4.1.2:multimedia/libdvdnav >-gst_resindvd_LIB_DEPENDS= libdvdread.so:multimedia/libdvdread >-gst_resindvd_RUN_DEPENDS= libdvdnav>=4.1.2:multimedia/libdvdnav >- >-# rtmp >-gst_rtmp_LIB_DEPENDS= librtmp.so:multimedia/librtmp >- >-# rsvg >-gst_rsvg_USE_GNOME= cairo librsvg2 >- >-# shout2 >-gst_shout2_LIB_DEPENDS= libshout.so:audio/libshout >- >-# sidplay >-gst_sidplay_LIB_DEPENDS= libsidplay.so:audio/libsidplay >-gst_sidplay_PLIST_FILES= ${GST_LIB_DIR}/libgstsid.so >- >-# smoothstreaming >-gst_smoothstreaming_USE_GNOME= libxml2 >- >-# sndfile >-gst_sndfile_LIB_DEPENDS= libsndfile.so:audio/libsndfile >- >-# soundtouch >-gst_soundtouch_LIB_DEPENDS= libSoundTouch.so:audio/soundtouch >- >-# souphttpsrc >-gst_soup_LIB_DEPENDS= libsoup-2.4.so:devel/libsoup >- >-# spandsp >-gst_spandsp_LIB_DEPENDS= libspandsp.so:comms/spandsp >- >-# speex >-gst_speex_LIB_DEPENDS= libspeex.so:audio/speex >- >-# srtp >-gst_srtp_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 >- >-# taglib >-gst_taglib_LIB_DEPENDS= libtag.so:audio/taglib >- >-# theora >-gst_theora_LIB_DEPENDS= libtheora.so:multimedia/libtheora \ >- libogg.so:audio/libogg >- >-# ttml >-gst_ttml_USE_GNOME= cairo libxml2 pango >-gst_ttml_PLIST_FILES= ${GST_LIB_DIR}/libgstttmlsubs.so >- >-# twolame >-gst_twolame_LIB_DEPENDS= libtwolame.so:audio/twolame >- >-# gst_v4l2 >-gst_gst_v4l2_BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat >-gst_gst_v4l2_LIB_DEPENDS= libv4l2.so:multimedia/libv4l >-gst_gst_v4l2_RUN_DEPENDS= webcamd:multimedia/webcamd >-gst_gst_v4l2_PLIST_FILES= ${GST_LIB_DIR}/libgstvideo4linux2.so >-gst_gst_v4l2_GST_PLUGIN_DIR= sys/v4l2 >- >-# vorbis >-gst_vorbis_USE_GSTREAMER= ogg >-gst_vorbis_LIB_DEPENDS= libvorbis.so:audio/libvorbis >- >-# vpx >-gst_vpx_LIB_DEPENDS= libvpx.so:multimedia/libvpx >-gst_vpx_PLIST_FILES= ${GST_LIB_DIR}/libgstvpx.so \ >- share/gstreamer-${VERSION}/presets/GstVP8Enc.prs >- >-# vdpau >-gst_vdpau_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau >-gst_vdpau_GST_PLUGIN_DIR= sys/vdpau >- >-# vulkan >-gst_vulkan_USE_GSTREAMER= gl >-gst_vulkan_BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto \ >- ${LOCALBASE}/include/libdrm/drm_fourcc.h:graphics/libdrm \ >- ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \ >- wayland-protocols>=0:graphics/wayland-protocols >-gst_vulkan_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader \ >- libwayland-client.so:graphics/wayland >-gst_vulkan_CONFIGURE_ARGS= --enable-wayland >- >-# webp >-gst_webp_LIB_DEPENDS= libwebp.so:graphics/webp >- >-# webrtcdsp >-gst_webrtcdsp_LIB_DEPENDS= libwebrtc_audio_processing.so:audio/webrtc-audio-processing0 >- >-# X ximage and xvimage sinks aka output >-.if ${DIST} == base >-gst_x_USES= xorg >-gst_x_USE_XORG= x11 xv xext >-gst_x_CONFIGURE_ARGS= --enable-xvideo --enable-xshm >-gst_x_GST_PLUGIN_DIR= sys/ximage sys/xvimage >-gst_x_PLIST_FILES= ${GST_LIB_DIR}/libgstximagesink.so \ >- ${GST_LIB_DIR}/libgstxvimagesink.so >-.endif >- >-.if ${DIST} == good >-# Ximagesrc >-gst_x_USES= xorg >-gst_x_USE_XORG= x11 xfixes xdamage xext >-gst_x_CONFIGURE_ARGS= --enable-x >-gst_x_GST_PLUGIN_DIR= sys/ximage >-gst_x_PLIST_FILES= ${GST_LIB_DIR}/libgstximagesrc.so >-.endif >- >-# x264 >-gst_x264_LIB_DEPENDS= libx264.so:multimedia/libx264 >-gst_x264_PLIST_FILES= ${GST_LIB_DIR}/libgstx264.so \ >- share/gstreamer-${VERSION}/presets/GstX264Enc.prs >- >-# x265 >-gst_x265_LIB_DEPENDS= libx265.so:multimedia/x265 >- >-# xvid >-gst_xvid_LIB_DEPENDS= libxvidcore.so:multimedia/xvid >- >-# wavpack >-gst_wavpack_LIB_DEPENDS= libwavpack.so:audio/wavpack >- >-# zbar >-gst_zbar_LIB_DEPENDS= libzbar.so:graphics/zbar >- > .endif # NO_GSTREAMER_COMMON > >-.if !defined(NO_GSTREAMER_COMMON) >-gst_${GST_PLUGIN}_BUILD_DEPENDS?= >-gst_${GST_PLUGIN}_LIB_DEPENDS?= >-gst_${GST_PLUGIN}_RUN_DEPENDS?= >-gst_${GST_PLUGIN}_USES?= >-gst_${GST_PLUGIN}_USE_QT?= >-gst_${GST_PLUGIN}_USE_XORG?= >-gst_${GST_PLUGIN}_PLIST_FILES?= \ >- ${GST_LIB_DIR}/libgst${GST_PLUGIN}${GST_PLIST_SUFFIX}.so >-gst_${GST_PLUGIN}_EXTRA_LIBS?= >-gst_${GST_PLUGIN}_PREBUILD_DIR?= >-gst_${GST_PLUGIN}_GST_PLUGIN_DIR?= ext/${GST_PLUGIN} >-gst_${GST_PLUGIN}_POSTBUILD_DIR?= >-gst_${GST_PLUGIN}_USE_XORG?= >-gst_${GST_PLUGIN}_USE_GNOME?= >-gst_${GST_PLUGIN}_CONFIGURE_ENV?= >-gst_${GST_PLUGIN}_USE_GL?= >-gst_${GST_PLUGIN}_GLIB_SCHEMAS?= >-gst_${GST_PLUGIN}_CONFIGURE_ARGS?= >-gst_${GST_PLUGIN}_USE_SDL?= >-gst_${GST_PLUGIN}_USE_GSTREAMER?= >- >-BUILD_DEPENDS+= ${gst_${GST_PLUGIN}_BUILD_DEPENDS} >-LIB_DEPENDS+= ${gst_${GST_PLUGIN}_LIB_DEPENDS} >-RUN_DEPENDS+= ${gst_${GST_PLUGIN}_RUN_DEPENDS} >-USES+= ${gst_${GST_PLUGIN}_USES} >-PLIST_FILES= ${gst_${GST_PLUGIN}_PLIST_FILES} >-EXTRA_LIBS+= ${gst_${GST_PLUGIN}_EXTRA_LIBS} >-.if ${gst_${GST_PLUGIN}_USE_XORG}!="" >-USE_XORG+= ${gst_${GST_PLUGIN}_USE_XORG} >-.endif >-.if ${gst_${GST_PLUGIN}_USE_GNOME}!="" >-USE_GNOME+= ${gst_${GST_PLUGIN}_USE_GNOME} >-.endif >-.if ${gst_${GST_PLUGIN}_USE_QT}!="" >-USE_QT+= ${gst_${GST_PLUGIN}_USE_QT} >-.endif >-CONFIGURE_ENV+= ${gst_${GST_PLUGIN}_CONFIGURE_ENV} >-.if ${gst_${GST_PLUGIN}_USE_GL}!="" >-USE_GL+= ${gst_${GST_PLUGIN}_USE_GL} >-.endif >- >-.if ${gst_${GST_PLUGIN}_GLIB_SCHEMAS}!="" >-GLIB_SCHEMAS= ${gst_${GST_PLUGIN}_GLIB_SCHEMAS} >-.endif >- >-CONFIGURE_ARGS+= ${gst_${GST_PLUGIN}_CONFIGURE_ARGS} >- >-.if ${gst_${GST_PLUGIN}_USE_SDL}!="" >-USE_SDL= ${gst_${GST_PLUGIN}_USE_SDL} >-.endif >- >-USE_GSTREAMER+= ${gst_${GST_PLUGIN}_USE_GSTREAMER} ${DIST:base=} >-GST_PREBUILD_DIR= ${gst_${GST_PLUGIN}_GST_PREBUILD_DIR} >-GST_PLUGIN_DIR= ${gst_${GST_PLUGIN}_GST_PLUGIN_DIR} >-GST_POSTBUILD_DIR= ${gst_${GST_PLUGIN}_GST_POSTBUILD_DIR} >- >-.if !target(do-build) >-do-build: >-.for dir in ${GST_PREBUILD_DIR} ${GST_PLUGIN_DIR} ${GST_POSTBUILD_DIR} >- @cd ${WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \ >- ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET} >-.endfor >-.endif >- >-.if !target(do-install) >-do-install: >-.for dir in ${GST_PLUGIN_DIR} >- @cd ${WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \ >- ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET} >-.endfor >-.endif >-.endif >diff --git a/multimedia/gstreamer1-plugins/distinfo b/multimedia/gstreamer1-plugins/distinfo >index ab0d6d3e0536..03026be96769 100644 >--- a/multimedia/gstreamer1-plugins/distinfo >+++ b/multimedia/gstreamer1-plugins/distinfo >@@ -1,9 +1,9 @@ >-TIMESTAMP = 1575818122 >-SHA256 (gst-plugins-base-1.16.2.tar.xz) = b13e73e2fe74a4166552f9577c3dcb24bed077021b9c7fa600d910ec6987816a >-SIZE (gst-plugins-base-1.16.2.tar.xz) = 3939868 >-SHA256 (gst-plugins-bad-1.16.2.tar.xz) = f1cb7aa2389569a5343661aae473f0a940a90b872001824bc47fa8072a041e74 >-SIZE (gst-plugins-bad-1.16.2.tar.xz) = 4887812 >-SHA256 (gst-plugins-ugly-1.16.2.tar.xz) = 5500415b865e8b62775d4742cbb9f37146a50caecfc0e7a6fc0160d3c560fbca >-SIZE (gst-plugins-ugly-1.16.2.tar.xz) = 893964 >-SHA256 (gst-plugins-good-1.16.2.tar.xz) = 40bb3bafda25c0b739c8fc36e48380fccf61c4d3f83747e97ac3f9b0171b1319 >-SIZE (gst-plugins-good-1.16.2.tar.xz) = 3897172 >+TIMESTAMP = 1662117432 >+SHA256 (gst-plugins-base-1.20.3.tar.xz) = 7e30b3dd81a70380ff7554f998471d6996ff76bbe6fc5447096f851e24473c9f >+SIZE (gst-plugins-base-1.20.3.tar.xz) = 3299976 >+SHA256 (gst-plugins-bad-1.20.3.tar.xz) = 7a11c13b55dd1d2386dd902219e41cbfcdda8e1e0aa3e738186c95074b35da4f >+SIZE (gst-plugins-bad-1.20.3.tar.xz) = 6222824 >+SHA256 (gst-plugins-ugly-1.20.3.tar.xz) = 8caa20789a09c304b49cf563d33cca9421b1875b84fcc187e4a385fa01d6aefd >+SIZE (gst-plugins-ugly-1.20.3.tar.xz) = 508272 >+SHA256 (gst-plugins-good-1.20.3.tar.xz) = f8f3c206bf5cdabc00953920b47b3575af0ef15e9f871c0b6966f6d0aa5868b7 >+SIZE (gst-plugins-good-1.20.3.tar.xz) = 3417252 >diff --git a/multimedia/gstreamer1-plugins/files/patch-Makefile.in b/multimedia/gstreamer1-plugins/files/patch-Makefile.in >deleted file mode 100644 >index b38631683480..000000000000 >--- a/multimedia/gstreamer1-plugins/files/patch-Makefile.in >+++ /dev/null >@@ -1,11 +0,0 @@ >---- Makefile.in.orig 2013-03-10 14:54:07.000000000 +0000 >-+++ Makefile.in 2013-03-10 14:55:01.000000000 +0000 >-@@ -483,8 +483,6 @@ >- gst-libs \ >- gst sys $(SUBDIRS_EXT) \ >- tools \ >-- tests \ >-- docs \ >- po \ >- common \ >- m4 >diff --git a/multimedia/gstreamer1-plugins/files/patch-configure b/multimedia/gstreamer1-plugins/files/patch-configure >deleted file mode 100644 >index 7250970c26b6..000000000000 >--- a/multimedia/gstreamer1-plugins/files/patch-configure >+++ /dev/null >@@ -1,109 +0,0 @@ >---- configure.orig 2019-03-02 18:59:35.242374000 +0100 >-+++ configure 2019-03-02 19:00:32.651461000 +0100 >-@@ -33987,54 +33987,9 @@ >- _ACEOF >- >- fi >-- if test "x$FOUND_CDPARANOIA" = "xyes"; >-- then >-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for paranoia_cachemodel_size in -lcdda_paranoia" >&5 >--$as_echo_n "checking for paranoia_cachemodel_size in -lcdda_paranoia... " >&6; } >--if ${ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size+:} false; then : >-- $as_echo_n "(cached) " >&6 >--else >-- ac_check_lib_save_LIBS=$LIBS >--LIBS="-lcdda_paranoia -lcdda_interface $LIBS" >--cat confdefs.h - <<_ACEOF >conftest.$ac_ext >--/* end confdefs.h. */ >- >--/* Override any GCC internal prototype to avoid an error. >-- Use char because int might match the return type of a GCC >-- builtin and then its argument prototype would still apply. */ >--#ifdef __cplusplus >--extern "C" >--#endif >--char paranoia_cachemodel_size (); >--int >--main () >--{ >--return paranoia_cachemodel_size (); >-- ; >-- return 0; >--} >--_ACEOF >--if ac_fn_c_try_link "$LINENO"; then : >-- ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=yes >--else >-- ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=no >--fi >--rm -f core conftest.err conftest.$ac_objext \ >-- conftest$ac_exeext conftest.$ac_ext >--LIBS=$ac_check_lib_save_LIBS >--fi >--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&5 >--$as_echo "$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&6; } >--if test "x$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" = xyes; then : >-- : >--else >-- HAVE_CDPARANOIA=no >--fi >- >-- fi >- >-- >-- >- elif test $pkg_failed = untried; then >- >- >-@@ -34176,51 +34131,6 @@ >- cat >>confdefs.h <<_ACEOF >- #define CDPARANOIA_HEADERS_IN_DIR /**/ >- _ACEOF >-- >-- fi >-- if test "x$FOUND_CDPARANOIA" = "xyes"; >-- then >-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for paranoia_cachemodel_size in -lcdda_paranoia" >&5 >--$as_echo_n "checking for paranoia_cachemodel_size in -lcdda_paranoia... " >&6; } >--if ${ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size+:} false; then : >-- $as_echo_n "(cached) " >&6 >--else >-- ac_check_lib_save_LIBS=$LIBS >--LIBS="-lcdda_paranoia -lcdda_interface $LIBS" >--cat confdefs.h - <<_ACEOF >conftest.$ac_ext >--/* end confdefs.h. */ >-- >--/* Override any GCC internal prototype to avoid an error. >-- Use char because int might match the return type of a GCC >-- builtin and then its argument prototype would still apply. */ >--#ifdef __cplusplus >--extern "C" >--#endif >--char paranoia_cachemodel_size (); >--int >--main () >--{ >--return paranoia_cachemodel_size (); >-- ; >-- return 0; >--} >--_ACEOF >--if ac_fn_c_try_link "$LINENO"; then : >-- ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=yes >--else >-- ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=no >--fi >--rm -f core conftest.err conftest.$ac_objext \ >-- conftest$ac_exeext conftest.$ac_ext >--LIBS=$ac_check_lib_save_LIBS >--fi >--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&5 >--$as_echo "$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&6; } >--if test "x$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" = xyes; then : >-- : >--else >-- HAVE_CDPARANOIA=no >--fi >- >- fi >- >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_cdparanoia_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_cdparanoia_meson.build >new file mode 100644 >index 000000000000..1cce2b171822 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_cdparanoia_meson.build >@@ -0,0 +1,11 @@ >+--- ext/cdparanoia/meson.build.orig 2022-09-08 19:40:48 UTC >++++ ext/cdparanoia/meson.build >+@@ -33,7 +33,7 @@ if cdparanoia_found >+ ['gstcdparanoiasrc.c'], >+ include_directories: [configinc, libsinc], >+ c_args : gst_plugins_base_args, >+- dependencies : cdparanoia_deps + glib_deps + [audio_dep, gst_dep, gst_base_dep], >++ dependencies : cdparanoia_deps + glib_deps + [dependency('gstreamer-audio-1.0'), gst_dep, gst_base_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_gl_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_gl_meson.build >new file mode 100644 >index 000000000000..87e324d065c1 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_gl_meson.build >@@ -0,0 +1,11 @@ >+--- ext/gl/meson.build.orig 2022-09-09 09:05:31 UTC >++++ ext/gl/meson.build >+@@ -146,7 +146,7 @@ gstopengl = library('gstopengl', >+ objc_args : gst_plugins_base_args + gl_objc_args + extra_c_args, >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+- dependencies : [gstgl_dep, video_dep, >++ dependencies : [gstgl_dep, dependency('gstreamer-video-1.0'), >+ gst_base_dep, gst_controller_dep, libm] + optional_deps, >+ install : true, >+ install_dir : plugins_install_dir) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_libvisual_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_libvisual_meson.build >new file mode 100644 >index 000000000000..0bfada231548 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_libvisual_meson.build >@@ -0,0 +1,12 @@ >+--- ext/libvisual/meson.build.orig 2022-09-12 14:49:46 UTC >++++ ext/libvisual/meson.build >+@@ -13,7 +13,8 @@ if libvisual_dep.found() >+ libvisual_sources, >+ c_args : gst_plugins_base_args, >+ include_directories: [configinc, libsinc], >+- dependencies : glib_deps + [libvisual_dep, audio_dep, video_dep, pbutils_dep, gst_dep, gst_base_dep], >++ dependencies : glib_deps + [libvisual_dep, dependency('gstreamer-audio-1.0'), >++ dependency('gstreamer-video-1.0'), dependency('gstreamer-pbutils-1.0'), gst_dep, gst_base_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_ogg_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_ogg_meson.build >new file mode 100644 >index 000000000000..b0c2baaff97b >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_ogg_meson.build >@@ -0,0 +1,13 @@ >+--- ext/ogg/meson.build.orig 2022-09-07 20:35:50 UTC >++++ ext/ogg/meson.build >+@@ -19,7 +19,9 @@ if ogg_dep.found() >+ c_args : gst_plugins_base_args, >+ link_args : noseh_link_args, >+ include_directories: [configinc, libsinc], >+- dependencies : glib_deps + [ogg_dep, audio_dep, pbutils_dep, tag_dep, riff_dep, gst_dep, gst_base_dep], >++ dependencies : glib_deps + [ogg_dep, dependency('gstreamer-audio-1.0'), >++ dependency('gstreamer-pbutils-1.0'), dependency('gstreamer-tag-1.0'), >++ dependency('gstreamer-riff-1.0'), gst_dep, gst_base_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_opus_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_opus_meson.build >new file mode 100644 >index 000000000000..607aefc2547c >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_opus_meson.build >@@ -0,0 +1,19 @@ >+--- ext/opus/meson.build.orig 2022-09-06 22:11:13 UTC >++++ ext/opus/meson.build >+@@ -11,12 +11,15 @@ opus_dep = dependency('opus', version: '>= 0.9.4', req >+ fallback: ['opus', 'opus_dep'], default_options: ['docs=disabled']) >+ >+ if opus_dep.found() >++ pbutils_dep2 = dependency('gstreamer-pbutils-@0@'.format(api_version)) >++ audio_dep2 = dependency('gstreamer-audio-@0@'.format(api_version)) >++ tag_dep2 = dependency('gstreamer-tag-@0@'.format(api_version)) >+ gstopus = library('gstopus', >+ opus_sources, >+ c_args : gst_plugins_base_args, >+ link_args : noseh_link_args, >+ include_directories: [configinc, libsinc], >+- dependencies : glib_deps + [pbutils_dep, tag_dep, audio_dep, gst_dep, gst_base_dep, opus_dep, libm], >++ dependencies : glib_deps + [pbutils_dep2, tag_dep2, audio_dep2, gst_dep, gst_base_dep, opus_dep, libm], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_pango_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_pango_meson.build >new file mode 100644 >index 000000000000..34495bf7ab0e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_pango_meson.build >@@ -0,0 +1,13 @@ >+--- ext/pango/meson.build.orig 2022-09-16 21:45:01 UTC >++++ ext/pango/meson.build >+@@ -18,7 +18,9 @@ if pango_dep.found() >+ c_args : gst_plugins_base_args, >+ link_args : noseh_link_args, >+ include_directories: [configinc, libsinc], >+- dependencies : glib_deps + [pango_dep, video_dep, gst_dep, gst_base_dep, libm], >++ dependencies : glib_deps + [pango_dep, >++ dependency('gstreamer-video-1.0', required : true), >++ gst_dep, gst_base_dep, libm], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_theora_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_theora_meson.build >new file mode 100644 >index 000000000000..472b2949e43e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_theora_meson.build >@@ -0,0 +1,12 @@ >+--- ext/theora/meson.build.orig 2022-09-13 20:18:31 UTC >++++ ext/theora/meson.build >+@@ -21,7 +21,8 @@ if theoradec_dep.found() or theoraenc_dep.found() >+ c_args : gst_plugins_base_args, >+ link_args : noseh_link_args, >+ include_directories: [configinc, libsinc], >+- dependencies : theora_deps + glib_deps + [video_dep, tag_dep, gst_dep, gst_base_dep], >++ dependencies : theora_deps + glib_deps + [dependency('gstreamer-video-1.0'), >++ dependency('gstreamer-tag-1.0'), gst_base_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-ext_vorbis_meson.build b/multimedia/gstreamer1-plugins/files/patch-ext_vorbis_meson.build >new file mode 100644 >index 000000000000..c55433797455 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-ext_vorbis_meson.build >@@ -0,0 +1,12 @@ >+--- ext/vorbis/meson.build.orig 2022-09-07 21:09:11 UTC >++++ ext/vorbis/meson.build >+@@ -31,7 +31,8 @@ if vorbis_dep.found() >+ c_args : gst_plugins_base_args, >+ link_args : noseh_link_args, >+ include_directories: [configinc, libsinc], >+- dependencies : vorbis_deps + glib_deps + [audio_dep, tag_dep, gst_dep, gst_base_dep], >++ dependencies : vorbis_deps + glib_deps + [dependency('gstreamer-audio-1.0'), >++ dependency('gstreamer-tag-1.0'), gst_dep, gst_base_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_allocators_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_allocators_meson.build >new file mode 100644 >index 000000000000..83363c686d6e >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_allocators_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/allocators/meson.build.orig 2022-09-06 20:56:00 UTC >++++ gst-libs/gst/allocators/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('allocators').enabled() >+ gst_allocators_headers = files([ >+ 'allocators.h', >+ 'allocators-prelude.h', >+@@ -58,3 +59,4 @@ allocators_dep = declare_dependency(link_with: gstallo >+ sources : allocators_gen_sources) >+ >+ meson.override_dependency('gstreamer-allocators-1.0', allocators_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_app_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_app_meson.build >new file mode 100644 >index 000000000000..16265f7ae6a4 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_app_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/app/meson.build.orig 2022-09-06 20:56:57 UTC >++++ gst-libs/gst/app/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('app').enabled() >+ app_sources = files(['gstappsrc.c', 'gstappsink.c']) >+ >+ app_mkenum_headers = files([ >+@@ -68,3 +69,4 @@ app_dep = declare_dependency(link_with: gstapp, >+ sources : app_gen_sources) >+ >+ meson.override_dependency(pkg_name, app_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_audio_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_audio_meson.build >new file mode 100644 >index 000000000000..8f0ce22916af >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_audio_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/audio/meson.build.orig 2022-09-06 20:57:46 UTC >++++ gst-libs/gst/audio/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('audio').enabled() >+ audio_src = files([ >+ 'audio.c', >+ 'audio-buffer.c', >+@@ -189,3 +190,4 @@ audio_dep = declare_dependency(link_with : gstaudio, >+ sources : audio_gen_sources) >+ >+ meson.override_dependency(pkg_name, audio_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_fft_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_fft_meson.build >new file mode 100644 >index 000000000000..47bce4ccd049 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_fft_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/fft/meson.build.orig 2022-09-06 20:58:23 UTC >++++ gst-libs/gst/fft/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('fft').enabled() >+ fft_sources = [ >+ 'gstfft.c', >+ 'gstffts16.c', >+@@ -50,3 +51,4 @@ fft_dep = declare_dependency(link_with: gstfft, >+ dependencies : [gst_dep]) >+ >+ meson.override_dependency(pkg_name, fft_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_gl_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_gl_meson.build >new file mode 100644 >index 000000000000..e784c477c858 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_gl_meson.build >@@ -0,0 +1,69 @@ >+--- gst-libs/gst/gl/meson.build.orig 2022-09-08 22:01:19 UTC >++++ gst-libs/gst/gl/meson.build >+@@ -1049,7 +1049,7 @@ if build_gstgl >+ soversion : soversion, >+ darwin_versions : osxversion, >+ install : true, >+- dependencies : [gst_base_dep, video_dep, allocators_dep, gmodule_dep, >++ dependencies : [gst_base_dep, dependency('gstreamer-video-1.0'), dependency('gstreamer-allocators-1.0'), gmodule_dep, >+ gl_lib_deps, gl_platform_deps, gl_winsys_deps, gl_misc_deps], >+ # don't confuse EGL/egl.h with gst-libs/gl/egl/egl.h on case-insensitive file systems >+ implicit_include_directories : false) >+@@ -1060,10 +1060,10 @@ if build_gstgl >+ 'gl_apis=' + ' '.join(enabled_gl_apis), >+ ] >+ >+- library_def = {'lib': pbutils} >++ library_def = {'lib': library('gstpbutils-@0@'.format(api_version))} >+ pkg_name = 'gstreamer-gl-1.0' >+ pkgconfig.generate(gstgl, >+- libraries : [gstvideo, gst_base_dep, gst_dep], >++ libraries : [library('gstvideo-@0@'.format(api_version)), gst_base_dep, gst_dep], >+ variables : pkgconfig_variables + pkgconfig_gl_variables, >+ uninstalled_variables : pkgconfig_gl_variables, >+ subdirs : pkgconfig_subdirs, >+@@ -1095,7 +1095,7 @@ if build_gstgl >+ 'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'], >+ 'install' : true, >+ 'extra_args' : gir_init_section + ['--c-include=gst/gl/gl.h'], >+- 'dependencies' : [video_dep, gst_dep, gst_base_dep], >++ 'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep], >+ } >+ library_def += {'gir': [gir]} >+ if not static_build >+@@ -1107,7 +1107,7 @@ if build_gstgl >+ gstgl_dep = declare_dependency(link_with : gstgl, >+ include_directories : [libsinc, compat_includes], >+ sources: gen_sources, >+- dependencies : [video_dep, gst_base_dep]) >++ dependencies : [dependency('gstreamer-video-1.0'), gst_base_dep]) >+ gstglproto_dep = declare_dependency(dependencies : [gstgl_dep] + gl_lib_deps) >+ meson.override_dependency('gstreamer-gl-1.0', gstgl_dep) >+ meson.override_dependency('gstreamer-gl-prototypes-1.0', gstglproto_dep) >+@@ -1134,7 +1134,7 @@ if build_gstgl >+ 'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'], >+ 'install' : true, >+ 'extra_args' : gir_init_section + ['--c-include=gst/gl/x11/x11.h'], >+- 'dependencies' : [video_dep, gst_dep, gst_base_dep] >++ 'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep] >+ } >+ gir_dict = gir + {'includes': gir['includes'] + ['GstGL-1.0']} >+ libraries += [[pkg_name, {'gir': gir_dict}]] >+@@ -1170,7 +1170,7 @@ if build_gstgl >+ 'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'], >+ 'install' : true, >+ 'extra_args' : gir_init_section + ['--c-include=gst/gl/wayland/wayland.h'], >+- 'dependencies' : [video_dep, gst_dep, gst_base_dep] >++ 'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep] >+ } >+ >+ gir_dict = gir + {'includes': gir['includes'] + ['GstGL-1.0']} >+@@ -1206,7 +1206,7 @@ if build_gstgl >+ 'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'], >+ 'install' : true, >+ 'extra_args' : gir_init_section + ['--c-include=gst/gl/egl/egl.h'], >+- 'dependencies' : [video_dep, gst_dep, gst_base_dep] >++ 'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep] >+ } >+ gir_dict = gir + {'includes': gir['includes'] + ['GstGL-1.0']} >+ libraries += [[pkg_name, {'gir': gir_dict}]] >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_pbutils_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_pbutils_meson.build >new file mode 100644 >index 000000000000..b44119ba0013 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_pbutils_meson.build >@@ -0,0 +1,15 @@ >+--- gst-libs/gst/pbutils/meson.build.orig 2022-09-06 20:58:54 UTC >++++ gst-libs/gst/pbutils/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('pbutils').enabled() >+ pbutils_sources = files([ >+ 'gstpluginsbaseversion.c', >+ 'pbutils.c', >+@@ -98,4 +99,5 @@ pbutils_dep = declare_dependency(link_with : pbutils, >+ dependencies : gstpbutils_deps, >+ sources : pbutils_gen_sources) >+ >+-meson.override_dependency(pkg_name, pbutils_dep) >+\ No newline at end of file >++meson.override_dependency(pkg_name, pbutils_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_riff_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_riff_meson.build >new file mode 100644 >index 000000000000..3f3137388e14 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_riff_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/riff/meson.build.orig 2022-09-06 21:07:15 UTC >++++ gst-libs/gst/riff/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('riff').enabled() >+ riff_sources = [ >+ 'riff.c', >+ 'riff-media.c', >+@@ -62,3 +63,4 @@ riff_dep = declare_dependency(link_with: gstriff, >+ sources : riff_gen_sources ) >+ >+ meson.override_dependency(pkg_name, riff_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtp_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtp_meson.build >new file mode 100644 >index 000000000000..4c7ffee35a97 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtp_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/rtp/meson.build.orig 2022-09-06 21:07:44 UTC >++++ gst-libs/gst/rtp/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('rtp').enabled() >+ rtp_sources = files([ >+ 'gstrtpbuffer.c', >+ 'gstrtcpbuffer.c', >+@@ -85,3 +86,4 @@ rtp_dep = declare_dependency(link_with : gst_rtp, >+ sources : rtp_gen_sources) >+ >+ meson.override_dependency(pkg_name, rtp_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtsp_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtsp_meson.build >new file mode 100644 >index 000000000000..87113a89c97d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtsp_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/rtsp/meson.build.orig 2022-09-06 21:08:11 UTC >++++ gst-libs/gst/rtsp/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('rtsp').enabled() >+ rtsp_sources = files([ >+ 'gstrtsptransport.c', >+ 'gstrtspurl.c', >+@@ -90,3 +91,4 @@ rtsp_dep = declare_dependency(link_with : gst_rtsp, >+ sources : rtsp_gen_sources) >+ >+ meson.override_dependency(pkg_name, rtsp_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_sdp_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_sdp_meson.build >new file mode 100644 >index 000000000000..8b452b9c5ce4 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_sdp_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/sdp/meson.build.orig 2022-09-06 21:08:38 UTC >++++ gst-libs/gst/sdp/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('sdp').enabled() >+ gst_sdp_headers = files([ >+ 'sdp.h', >+ 'sdp-prelude.h', >+@@ -60,3 +61,4 @@ sdp_dep = declare_dependency(link_with: gstsdp, >+ sources: sdp_gen_sources) >+ >+ meson.override_dependency(pkg_name, sdp_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_tag_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_tag_meson.build >new file mode 100644 >index 000000000000..25ca4ed6c521 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_tag_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/tag/meson.build.orig 2022-09-06 21:09:11 UTC >++++ gst-libs/gst/tag/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('tag').enabled() >+ tag_sources = files([ >+ 'gstvorbistag.c', >+ 'gstid3tag.c', >+@@ -142,3 +143,4 @@ executable('mklicensestables', 'mklicensestables.c', >+ install : false) >+ >+ gst_tag_dir = meson.current_source_dir() >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_video_meson.build b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_video_meson.build >new file mode 100644 >index 000000000000..5246d7c32697 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_video_meson.build >@@ -0,0 +1,12 @@ >+--- gst-libs/gst/video/meson.build.orig 2022-09-06 21:09:42 UTC >++++ gst-libs/gst/video/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('video').enabled() >+ video_sources = files([ >+ 'colorbalance.c', >+ 'colorbalancechannel.c', >+@@ -181,3 +182,4 @@ video_dep = declare_dependency(link_with : gstvideo, >+ sources : video_gen_sources) >+ >+ meson.override_dependency(pkg_name, video_dep) >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-meson.build b/multimedia/gstreamer1-plugins/files/patch-meson.build >new file mode 100644 >index 000000000000..8887e97b8496 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-meson.build >@@ -0,0 +1,39 @@ >+--- meson.build.orig 2022-09-03 05:39:18 UTC >++++ meson.build >+@@ -17,6 +17,8 @@ endif >+ gst_version_is_stable = gst_version_minor.is_even() >+ gst_version_is_dev = gst_version_minor % 2 == 1 and gst_version_micro < 90 >+ >++build_gstgl = false >++ >+ host_system = host_machine.system() >+ >+ have_cxx = add_languages('cpp', native: false, required: false) >+@@ -282,8 +284,10 @@ core_conf.set_quoted('GST_PACKAGE_ORIGIN', get_option( >+ >+ # FIXME: These should be configure options >+ core_conf.set_quoted('DEFAULT_VIDEOSINK', 'autovideosink') >+-core_conf.set_quoted('DEFAULT_AUDIOSINK', 'autoaudiosink') >+ >++core_conf.set_quoted('DEFAULT_AUDIOSINK', get_option('defaultaudiosink')) >++core_conf.set_quoted('DEFAULT_AUDIOSRC', get_option('defaultaudiosrc')) >++ >+ # Set whether the audioresampling method should be detected at runtime >+ core_conf.set('AUDIORESAMPLE_FORMAT_' + get_option('audioresample_format').to_upper(), true) >+ >+@@ -484,6 +488,7 @@ pkgconfig_plugins_base_libs_variables = [ >+ 'libraries=' + ' '.join(base_libraries), >+ ] >+ >++if get_option('pkgconfig').enabled() >+ pkgconfig.generate( >+ libraries : [gst_dep], >+ variables : pkgconfig_variables + pkgconfig_plugins_base_libs_variables, >+@@ -497,6 +502,7 @@ pkgconfig.generate( >+ run_command(meson_pkg_config_file_fixup_script, >+ 'gstreamer-plugins-base-1.0', 'libraries', >+ check: true) >++endif >+ >+ if have_orcc >+ update_orc_dist_files = find_program('scripts/update-orc-dist-files.py') >diff --git a/multimedia/gstreamer1-plugins/files/patch-meson__options.txt b/multimedia/gstreamer1-plugins/files/patch-meson__options.txt >new file mode 100644 >index 000000000000..c4925580603d >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-meson__options.txt >@@ -0,0 +1,30 @@ >+--- meson_options.txt.orig 2022-09-06 20:35:43 UTC >++++ meson_options.txt >+@@ -1,9 +1,27 @@ >++option('tag', type : 'feature', value : 'auto', description : 'tag integration library and tag plugin') >++option('pkgconfig', type : 'feature', value : 'auto', description : 'pkgconfig integration library and pkgconfig plugin') >++option('fft', type : 'feature', value : 'auto', description : 'fft integration library and fft plugin') >++option('video', type : 'feature', value : 'auto', description : 'video integration library and video plugin') >++option('audio', type : 'feature', value : 'auto', description : 'audio integration library and audio plugin') >++option('rtp', type : 'feature', value : 'auto', description : 'rtp integration library and rtp plugin') >++option('pbutils', type : 'feature', value : 'auto', description : 'pbutils integration library and pbutils plugin') >++option('sdp', type : 'feature', value : 'auto', description : 'sdp integration library and sdp plugin') >++option('rtsp', type : 'feature', value : 'auto', description : 'rtsp integration library and rtsp plugin') >++option('riff', type : 'feature', value : 'auto', description : 'riff integration library and riff plugin') >++option('ximage', type : 'feature', value : 'auto', description : 'ximage integration library and ximage plugin') >++option('app', type : 'feature', value : 'auto', description : 'app integration library and app plugin') >++option('allocators', type : 'feature', value : 'auto', description : 'allocators integration library and allocators plugin') >++ >+ option('audioresample_format', type : 'combo', >+ choices : ['int', 'float', 'auto'], value : 'auto') >+ option('install_plugins_helper', type: 'string', value: '', >+ description: 'Path of distro helper script to call to install missing plugins') >+ option('iso-codes', type : 'feature', value : 'auto', >+ description: 'Use iso-codes in libgsttag (for language names)') >++option('defaultaudiosink', type : 'string', value : 'autoaudiosink', >++ description: 'set default audio sink') >++option('defaultaudiosrc', type : 'string', value : 'autoaudiosrc', >++ description: 'set default audio src') >+ >+ # OpenGL integration library options >+ option('gl_api', type : 'array', choices : ['opengl', 'gles2', 'auto'], value : ['auto'], >diff --git a/multimedia/gstreamer1-plugins/files/patch-sys_ximage_meson.build b/multimedia/gstreamer1-plugins/files/patch-sys_ximage_meson.build >new file mode 100644 >index 000000000000..e71899dbfda9 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-sys_ximage_meson.build >@@ -0,0 +1,19 @@ >+--- sys/ximage/meson.build.orig 2022-09-09 09:10:02 UTC >++++ sys/ximage/meson.build >+@@ -1,3 +1,4 @@ >++if get_option('ximage').enabled() >+ no_warn_args = [] >+ # XKeycodeToKeysym is deprecated, but we use it when Xkb is unavailable >+ if cc.has_argument ('-Wno-deprecated-declarations') >+@@ -8,9 +9,10 @@ gstximage = library('gstximagesink', >+ 'ximagesink.c', 'ximage.c', 'ximagepool.c', >+ c_args : gst_plugins_base_args + no_warn_args, >+ include_directories: [configinc, libsinc], >+- dependencies : glib_deps + [video_dep, gst_base_dep, gst_dep, x11_dep, xshm_dep], >++ dependencies : glib_deps + [dependency('gstreamer-video-1.0'), gst_base_dep, gst_dep, x11_dep, xshm_dep], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >+ pkgconfig.generate(gstximage, install_dir : plugins_pkgconfig_install_dir) >+ plugins += [gstximage] >++endif >diff --git a/multimedia/gstreamer1-plugins/files/patch-sys_xvimage_meson.build b/multimedia/gstreamer1-plugins/files/patch-sys_xvimage_meson.build >new file mode 100644 >index 000000000000..865194abb762 >--- /dev/null >+++ b/multimedia/gstreamer1-plugins/files/patch-sys_xvimage_meson.build >@@ -0,0 +1,13 @@ >+--- sys/xvimage/meson.build.orig 2022-09-17 07:37:22 UTC >++++ sys/xvimage/meson.build >+@@ -19,7 +19,9 @@ if xvideo_dep.found() >+ xvimage_sources, >+ c_args : gst_plugins_base_args + no_warn_args, >+ include_directories: [configinc, libsinc], >+- dependencies : glib_deps + [video_dep, gst_base_dep, gst_dep, x11_dep, xshm_dep, xvideo_dep, libm], >++ dependencies : glib_deps + [ >++ dependency('gstreamer-video-1.0', required : true), >++ gst_base_dep, gst_dep, x11_dep, xshm_dep, xvideo_dep, libm], >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >diff --git a/multimedia/gstreamer1-plugins/pkg-plist b/multimedia/gstreamer1-plugins/pkg-plist >index adc1c77c5f39..55f438a1e635 100644 >--- a/multimedia/gstreamer1-plugins/pkg-plist >+++ b/multimedia/gstreamer1-plugins/pkg-plist >@@ -99,6 +99,7 @@ include/gstreamer-%%VERSION%%/gst/video/colorbalance.h > include/gstreamer-%%VERSION%%/gst/video/colorbalancechannel.h > include/gstreamer-%%VERSION%%/gst/video/gstvideoaffinetransformationmeta.h > include/gstreamer-%%VERSION%%/gst/video/gstvideoaggregator.h >+include/gstreamer-%%VERSION%%/gst/video/gstvideocodecalphameta.h > include/gstreamer-%%VERSION%%/gst/video/gstvideodecoder.h > include/gstreamer-%%VERSION%%/gst/video/gstvideoencoder.h > include/gstreamer-%%VERSION%%/gst/video/gstvideofilter.h >@@ -118,6 +119,7 @@ include/gstreamer-%%VERSION%%/gst/video/video-enumtypes.h > include/gstreamer-%%VERSION%%/gst/video/video-event.h > include/gstreamer-%%VERSION%%/gst/video/video-format.h > include/gstreamer-%%VERSION%%/gst/video/video-frame.h >+include/gstreamer-%%VERSION%%/gst/video/video-hdr.h > include/gstreamer-%%VERSION%%/gst/video/video-info.h > include/gstreamer-%%VERSION%%/gst/video/video-multiview.h > include/gstreamer-%%VERSION%%/gst/video/video-overlay-composition.h >@@ -129,15 +131,15 @@ include/gstreamer-%%VERSION%%/gst/video/video.h > include/gstreamer-%%VERSION%%/gst/video/videodirection.h > include/gstreamer-%%VERSION%%/gst/video/videoorientation.h > include/gstreamer-%%VERSION%%/gst/video/videooverlay.h >-lib/girepository-1.0/GstAllocators-%%VERSION%%.typelib >-lib/girepository-1.0/GstApp-%%VERSION%%.typelib >-lib/girepository-1.0/GstAudio-%%VERSION%%.typelib >-lib/girepository-1.0/GstPbutils-%%VERSION%%.typelib >-lib/girepository-1.0/GstRtp-%%VERSION%%.typelib >-lib/girepository-1.0/GstRtsp-%%VERSION%%.typelib >-lib/girepository-1.0/GstSdp-%%VERSION%%.typelib >-lib/girepository-1.0/GstTag-%%VERSION%%.typelib >-lib/girepository-1.0/GstVideo-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstAllocators-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstApp-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstAudio-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstPbutils-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstRtp-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstRtsp-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstSdp-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstTag-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstVideo-%%VERSION%%.typelib > lib/gstreamer-%%VERSION%%/libgstadder.so > lib/gstreamer-%%VERSION%%/libgstapp.so > lib/gstreamer-%%VERSION%%/libgstaudioconvert.so >@@ -208,15 +210,15 @@ libdata/pkgconfig/gstreamer-video-%%VERSION%%.pc > man/man1/gst-device-monitor-%%VERSION%%.1.gz > man/man1/gst-discoverer-%%VERSION%%.1.gz > man/man1/gst-play-%%VERSION%%.1.gz >-share/gir-1.0/GstAllocators-%%VERSION%%.gir >-share/gir-1.0/GstApp-%%VERSION%%.gir >-share/gir-1.0/GstAudio-%%VERSION%%.gir >-share/gir-1.0/GstPbutils-%%VERSION%%.gir >-share/gir-1.0/GstRtp-%%VERSION%%.gir >-share/gir-1.0/GstRtsp-%%VERSION%%.gir >-share/gir-1.0/GstSdp-%%VERSION%%.gir >-share/gir-1.0/GstTag-%%VERSION%%.gir >-share/gir-1.0/GstVideo-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstAllocators-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstApp-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstAudio-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstPbutils-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstRtp-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstRtsp-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstSdp-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstTag-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstVideo-%%VERSION%%.gir > share/gst-plugins-base/%%VERSION%%/license-translations.dict > share/locale/af/LC_MESSAGES/gst-plugins-base-%%VERSION%%.mo > share/locale/az/LC_MESSAGES/gst-plugins-base-%%VERSION%%.mo >diff --git a/multimedia/gstreamer1-rtsp-server/Makefile b/multimedia/gstreamer1-rtsp-server/Makefile >index a58acad0e07c..ff74121e3761 100644 >--- a/multimedia/gstreamer1-rtsp-server/Makefile >+++ b/multimedia/gstreamer1-rtsp-server/Makefile >@@ -1,7 +1,7 @@ > PORTNAME= gstreamer1-rtsp-server >-PORTVERSION= 1.16.2 >+PORTVERSION= 1.20.3 > CATEGORIES= multimedia >-MASTER_SITES= http://gstreamer.freedesktop.org/src/gst-rtsp-server/ >+MASTER_SITES= https://gstreamer.freedesktop.org/src/gst-rtsp-server/ > DISTNAME= gst-rtsp-server-${PORTVERSION} > > MAINTAINER= multimedia@FreeBSD.org >@@ -11,13 +11,13 @@ WWW= https://gstreamer.freedesktop.org/ > LICENSE= LGPL20+ > LICENSE_FILE= ${WRKSRC}/COPYING > >-USES= gmake gnome gstreamer libtool pathfix pkgconfig tar:xz >+USES= bison gnome gstreamer libtool meson ninja pathfix pkgconfig python:3.8+,build tar:xz > USE_LDCONFIG= yes >-GNU_CONFIGURE= yes > USE_GNOME= glib20 introspection:build > USE_GSTREAMER= good bad >-INSTALL_TARGET= install-strip > >-PLIST_SUB= VERSION=1.0 SOVERSION=0.1602.0 >+BINARY_ALIAS= python3=${PYTHON_VERSION} >+ >+PLIST_SUB= VERSION=1.0 SOVERSION=0.2003.0 > > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1-rtsp-server/distinfo b/multimedia/gstreamer1-rtsp-server/distinfo >index 24e972ed5ace..4e0dcfccc6a3 100644 >--- a/multimedia/gstreamer1-rtsp-server/distinfo >+++ b/multimedia/gstreamer1-rtsp-server/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1586566691 >-SHA256 (gst-rtsp-server-1.16.2.tar.xz) = de07a2837b3b04820ce68264a4909f70c221b85dbff0cede7926e9cdbb1dc26e >-SIZE (gst-rtsp-server-1.16.2.tar.xz) = 693368 >+TIMESTAMP = 1661966465 >+SHA256 (gst-rtsp-server-1.20.3.tar.xz) = ee402718be9b127f0e5e66ca4c1b4f42e4926ec93ba307b7ccca5dc6cc9794ca >+SIZE (gst-rtsp-server-1.20.3.tar.xz) = 362348 >diff --git a/multimedia/gstreamer1-transcoder/Makefile b/multimedia/gstreamer1-transcoder/Makefile >index 3157a961e877..fa55bda98835 100644 >--- a/multimedia/gstreamer1-transcoder/Makefile >+++ b/multimedia/gstreamer1-transcoder/Makefile >@@ -9,18 +9,19 @@ WWW= https://github.com/pitivi/gst-transcoder > LICENSE= LGPL21 > LICENSE_FILE= ${WRKSRC}/LICENSE > >-USES= compiler gnome gstreamer meson pkgconfig python:3.3+ #shebangfix >+USES= compiler gnome gstreamer meson pkgconfig python:3.3+ > USE_GNOME= introspection > USE_GSTREAMER= core > USE_LDCONFIG= yes > > BINARY_ALIAS= python3=${PYTHON_VERSION} >-#SHEBANG_FILES= configure > > USE_GITHUB= yes > GH_ACCOUNT= pitivi > GH_PROJECT= gst-transcoder > >+BINARY_ALIAS= python3=${PYTHON_VERSION} >+ > OPTIONS_DEFINE= DOCS > > DOCS_BUILD_DEPENDS= gtkdoc-check:textproc/gtk-doc >diff --git a/multimedia/gstreamer1-vaapi/Makefile b/multimedia/gstreamer1-vaapi/Makefile >index a2f8080101d4..a8d123208669 100644 >--- a/multimedia/gstreamer1-vaapi/Makefile >+++ b/multimedia/gstreamer1-vaapi/Makefile >@@ -1,6 +1,5 @@ > PORTNAME= gstreamer1-vaapi >-PORTVERSION= 1.16.2 >-PORTREVISION= 2 >+PORTVERSION= 1.20.3 > CATEGORIES= multimedia > MASTER_SITES= https://gstreamer.freedesktop.org/src/gstreamer-vaapi/ > DISTNAME= gstreamer-vaapi-${PORTVERSION} >@@ -13,26 +12,26 @@ LICENSE= LGPL21 > > LIB_DEPENDS= libva.so:multimedia/libva > >-GNU_CONFIGURE= yes >-INSTALL_TARGET= install-strip >-USES= compiler:c11 gettext-runtime gl gmake gnome gstreamer libtool \ >- pkgconfig tar:xz xorg >+USES= bison compiler:c11 gettext-runtime gl gnome gstreamer libtool \ >+ meson ninja pkgconfig python:3.8+,build tar:xz xorg > USE_LDCONFIG= yes > USE_GNOME= glib20 >-USE_GSTREAMER= bad gl >+USE_GSTREAMER= bad > USE_GL= gl > USE_XORG= x11 xrandr xrender xorgproto > >+BINARY_ALIAS= python3=${PYTHON_VERSION} >+ > OPTIONS_DEFINE= DRM WAYLAND > > DRM_DESC= Raw KMS/DRM backend > >-DRM_CONFIGURE_ENABLE= drm >-DRM_LIB_DEPENDS= libudev.so:devel/libudev-devd \ >- libdrm.so:graphics/libdrm >+DRM_MESON_OFF= -Dwith_drm=no >+DRM_LIB_DEPENDS=libudev.so:devel/libudev-devd \ >+ libdrm.so:graphics/libdrm > >-WAYLAND_CONFIGURE_ENABLE= wayland >+WAYLAND_MESON_OFF= -Dwith_wayland=no > WAYLAND_LIB_DEPENDS= libva-wayland.so:multimedia/libva \ >- libwayland-client.so:graphics/wayland >+ libwayland-client.so:graphics/wayland > > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1-vaapi/distinfo b/multimedia/gstreamer1-vaapi/distinfo >index 801a99e11d87..d6323e525288 100644 >--- a/multimedia/gstreamer1-vaapi/distinfo >+++ b/multimedia/gstreamer1-vaapi/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1575826374 >-SHA256 (gstreamer-vaapi-1.16.2.tar.xz) = 191de7b0ab64a85dd0875c990721e7be95518f60e2a9106beca162004ed7c601 >-SIZE (gstreamer-vaapi-1.16.2.tar.xz) = 1095012 >+TIMESTAMP = 1662144496 >+SHA256 (gstreamer-vaapi-1.20.3.tar.xz) = 6ee99eb316abdde9ad37002915bd8c3867918f6fdc74b7cf2ac4c1ae0d690b45 >+SIZE (gstreamer-vaapi-1.20.3.tar.xz) = 794840 >diff --git a/multimedia/gstreamer1-vaapi/pkg-plist b/multimedia/gstreamer1-vaapi/pkg-plist >index 7eef5458a3c1..4144bda81efa 100644 >--- a/multimedia/gstreamer1-vaapi/pkg-plist >+++ b/multimedia/gstreamer1-vaapi/pkg-plist >@@ -1,36 +1 @@ > lib/gstreamer-1.0/libgstvaapi.so >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/api-index-full.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/ch01.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/ch02.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/ch03.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-1.0.devhelp2 >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-plugin-vaapi.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapidecodebin.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih263dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih264dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih264enc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih265dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih265enc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapijpegdec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapijpegenc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapimpeg2dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapimpeg2enc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapimpeg4dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapipostproc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapisink.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivc1dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp8dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp8enc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp9dec.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp9enc.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-running.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/home.png >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/index.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/left-insensitive.png >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/left.png >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/object-tree.html >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/right-insensitive.png >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/right.png >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/style.css >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/up-insensitive.png >-share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/up.png >diff --git a/multimedia/gstreamer1-validate/Makefile b/multimedia/gstreamer1-validate/Makefile >index 8b081a97bc1c..eaa2c2c47c6b 100644 >--- a/multimedia/gstreamer1-validate/Makefile >+++ b/multimedia/gstreamer1-validate/Makefile >@@ -1,19 +1,20 @@ > PORTNAME= gstreamer1-validate >-PORTVERSION= 1.16.1 >+PORTVERSION= 1.16.3 > CATEGORIES= multimedia >-MASTER_SITES= http://gstreamer.freedesktop.org/src/gst-validate/ >+MASTER_SITES= https://gstreamer.freedesktop.org/src/gst-validate/ > DISTNAME= gst-validate-${PORTVERSION} > > MAINTAINER= multimedia@FreeBSD.org > COMMENT= Gstreamer element validation suite > WWW= https://gstreamer.freedesktop.org/ > >-LIB_DEPENDS= libjson-glib-1.0.so:devel/json-glib \ >- libgstrtspserver-1.0.so:multimedia/gstreamer1-rtsp-server >- > LICENSE= LGPL21+ > LICENSE_FILE= ${WRKSRC}/COPYING > >+LIB_DEPENDS= libjson-glib-1.0.so:devel/json-glib \ >+ libgstrtspserver-1.0.so:multimedia/gstreamer1-rtsp-server \ >+ libharfbuzz.so:print/harfbuzz >+ > USES= compiler:c11 gettext-runtime gmake gnome gstreamer libtool pathfix \ > pkgconfig python shebangfix tar:xz > SHEBANG_FILES= tools/gst-validate-launcher.in >@@ -23,6 +24,8 @@ USE_GNOME= cairo gdkpixbuf2 gtk30 introspection:build > INSTALL_TARGET= install-strip > USE_PYTHON= noflavors > >-PLIST_SUB= VERSION=1.0 SOVERSION=0.1601.0 >+BINARY_ALIAS= python3=${PYTHON_VERSION} >+ >+PLIST_SUB= VERSION=1.0 SOVERSION=0.1603.0 > > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1-validate/distinfo b/multimedia/gstreamer1-validate/distinfo >index 57cd04556d39..6e490e081c7e 100644 >--- a/multimedia/gstreamer1-validate/distinfo >+++ b/multimedia/gstreamer1-validate/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1575056805 >-SHA256 (gst-validate-1.16.1.tar.xz) = 7f079b9b2a127604b98e297037dc8847ef50f4ce2b508aa2df0cac5b77562899 >-SIZE (gst-validate-1.16.1.tar.xz) = 735364 >+TIMESTAMP = 1662141068 >+SHA256 (gst-validate-1.16.3.tar.xz) = c2064e887324af6aa476ca669234936711f253b29042f617f1d9f2597c4bf92b >+SIZE (gst-validate-1.16.3.tar.xz) = 742180 >diff --git a/multimedia/gstreamer1/Makefile b/multimedia/gstreamer1/Makefile >index 9d667728a576..691ccbb04a72 100644 >--- a/multimedia/gstreamer1/Makefile >+++ b/multimedia/gstreamer1/Makefile >@@ -1,8 +1,7 @@ > PORTNAME= gstreamer >-PORTVERSION= 1.16.2 >+PORTVERSION= 1.20.3 > CATEGORIES= multimedia >-MASTER_SITES= GNOME \ >- http://gstreamer.freedesktop.org/src/gstreamer/ >+MASTER_SITES= https://gstreamer.freedesktop.org/src/gstreamer/ > PKGNAMESUFFIX= 1 > > MAINTAINER= multimedia@FreeBSD.org >@@ -12,22 +11,15 @@ WWW= https://gstreamer.freedesktop.org/ > LICENSE= LGPL20+ > LICENSE_FILE= ${WRKSRC}/COPYING > >-USES= bison cpe gmake gnome libtool pathfix perl5 pkgconfig python tar:xz >-USE_PERL5= build >-USE_GNOME= glib20 introspection:build >+USES= bison libtool gnome meson ninja pkgconfig python:3.8+,build shebangfix tar:xz >+USE_GNOME= glib20 introspection:build > >-CPE_VENDOR= gstreamer_project >- >-GNU_CONFIGURE= yes >-CONFIGURE_ARGS= --disable-tests \ >- --disable-examples \ >- --disable-failing-tests \ >- --disable-fatal-warnings \ >- --disable-gtk-doc >-CONFIGURE_ENV= ac_cv_func_register_printf_function="no" >-INSTALL_TARGET= install-strip >+CONFIGURE_ARGS= -D tests=disabled \ >+ -D examples=disabled \ >+ -D dbghelp=disabled \ >+ -D doc=disabled > PLIST_SUB= VERSION=${GST10_VERSION} \ >- SOVERSION=0.1602.0 >+ SOVERSION=0.2003.0 > > USE_LDCONFIG= yes > GST10_VERSION= 1.0 >@@ -45,10 +37,16 @@ OPTIONS_DEFINE_i386= LIBUNWIND > OPTIONS_DEFFAULT_i386= LIBUNWIND > > NLS_USES= gettext >-NLS_CONFIGURE_ENABLE= nls >+NLS_MESON_ENABLED= nls > > LIBUNWIND_DESC= Libunwind is optionally used by the leaks tracer > LIBUNWIND_LIB_DEPENDS= libunwind.so:devel/libunwind >-LIBUNWIND_CONFIGURE_WITH= unwind >+LIBUNWIND_MESON_ENABLED= libunwind >+ >+SHEBANG_FILES= gst/parse/get_flex_version.py \ >+ scripts/extract-release-date-from-doap-file.py \ >+ docs/gst-plugins-doc-cache-generator.py >+python_OLD_CMD= "/usr/bin/env python3" >+python_CMD= ${SETENV} ${PYTHON_VERSION} > > .include <bsd.port.mk> >diff --git a/multimedia/gstreamer1/distinfo b/multimedia/gstreamer1/distinfo >index 368a9761e3b6..c2cf38f53bc0 100644 >--- a/multimedia/gstreamer1/distinfo >+++ b/multimedia/gstreamer1/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1575817893 >-SHA256 (gstreamer-1.16.2.tar.xz) = e3f044246783fd685439647373fa13ba14f7ab0b346eadd06437092f8419e94e >-SIZE (gstreamer-1.16.2.tar.xz) = 3328600 >+TIMESTAMP = 1661955042 >+SHA256 (gstreamer-1.20.3.tar.xz) = 607daf64bbbd5fb18af9d17e21c0d22c4d702fffe83b23cb22d1b1af2ca23a2a >+SIZE (gstreamer-1.20.3.tar.xz) = 2681088 >diff --git a/multimedia/gstreamer1/files/patch-Makefile.in b/multimedia/gstreamer1/files/patch-Makefile.in >deleted file mode 100644 >index c1cf546a8818..000000000000 >--- a/multimedia/gstreamer1/files/patch-Makefile.in >+++ /dev/null >@@ -1,11 +0,0 @@ >---- Makefile.in.orig 2018-09-16 12:03:27 UTC >-+++ Makefile.in >-@@ -569,7 +569,7 @@ top_srcdir = @top_srcdir@ >- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc >- aclocaldir = $(datadir)/aclocal >- aclocal_DATA = gst-element-check-1.0.m4 >--SUBDIRS = pkgconfig gst libs plugins tests docs po m4 common data \ >-+SUBDIRS = pkgconfig gst libs plugins tests po m4 common data \ >- $(am__append_1) >- >- # These are all the possible subdirs >diff --git a/multimedia/gstreamer1/files/patch-libs_gst_controller_Makefile.in b/multimedia/gstreamer1/files/patch-libs_gst_controller_Makefile.in >deleted file mode 100644 >index ee76c5cb2286..000000000000 >--- a/multimedia/gstreamer1/files/patch-libs_gst_controller_Makefile.in >+++ /dev/null >@@ -1,11 +0,0 @@ >---- libs/gst/controller/Makefile.in.orig 2019-12-03 10:52:27 UTC >-+++ libs/gst/controller/Makefile.in >-@@ -591,7 +591,7 @@ libgstcontroller_@GST_API_VERSION@_la_CFLAGS = $(GST_O >- libgstcontroller_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(LIBM) >- libgstcontroller_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) >- CLEANFILES = *.gcno *.gcda *.gcov $(BUILT_SOURCES) $(am__append_1) >--enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\") >-+enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\") >- @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstController-@GST_API_VERSION@.gir >- @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \ >- @HAVE_INTROSPECTION_TRUE@ $(libgstcontroller_@GST_API_VERSION@_include_HEADERS)) \ >diff --git a/multimedia/gstreamer1/pkg-plist b/multimedia/gstreamer1/pkg-plist >index beca08391fb4..fdb5d3b66402 100644 >--- a/multimedia/gstreamer1/pkg-plist >+++ b/multimedia/gstreamer1/pkg-plist >@@ -120,14 +120,15 @@ include/gstreamer-%%VERSION%%/gst/net/gstnetclientclock.h > include/gstreamer-%%VERSION%%/gst/net/gstnetcontrolmessagemeta.h > include/gstreamer-%%VERSION%%/gst/net/gstnettimepacket.h > include/gstreamer-%%VERSION%%/gst/net/gstnettimeprovider.h >+include/gstreamer-%%VERSION%%/gst/net/gstnetutils.h > include/gstreamer-%%VERSION%%/gst/net/gstptpclock.h > include/gstreamer-%%VERSION%%/gst/net/net-prelude.h > include/gstreamer-%%VERSION%%/gst/net/net.h >-lib/girepository-1.0/Gst-%%VERSION%%.typelib >-lib/girepository-1.0/GstBase-%%VERSION%%.typelib >-lib/girepository-1.0/GstCheck-%%VERSION%%.typelib >-lib/girepository-1.0/GstController-%%VERSION%%.typelib >-lib/girepository-1.0/GstNet-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/Gst-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstBase-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstCheck-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstController-%%VERSION%%.typelib >+lib/girepository-%%VERSION%%/GstNet-%%VERSION%%.typelib > lib/gstreamer-%%VERSION%%/libgstcoreelements.so > lib/gstreamer-%%VERSION%%/libgstcoretracers.so > lib/libgstbase-%%VERSION%%.so >@@ -150,63 +151,62 @@ libdata/pkgconfig/gstreamer-base-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-check-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-controller-%%VERSION%%.pc > libdata/pkgconfig/gstreamer-net-%%VERSION%%.pc >-libexec/gstreamer-%%VERSION%%/gst-completion-helper >+libexec/gstreamer-%%VERSION%%/gst-hotdoc-plugins-scanner > libexec/gstreamer-%%VERSION%%/gst-plugin-scanner >+libexec/gstreamer-%%VERSION%%/gst-plugins-doc-cache-generator > @(root,wheel,4755) libexec/gstreamer-%%VERSION%%/gst-ptp-helper > man/man1/gst-inspect-%%VERSION%%.1.gz > man/man1/gst-launch-%%VERSION%%.1.gz > man/man1/gst-stats-%%VERSION%%.1.gz > man/man1/gst-typefind-%%VERSION%%.1.gz > share/aclocal/gst-element-check-%%VERSION%%.m4 >-share/bash-completion/completions/gst-inspect-%%VERSION%% >-share/bash-completion/completions/gst-launch-%%VERSION%% >-share/bash-completion/helpers/gst >-share/gdb/auto-load%%RESETPREFIX%%/lib/libgstreamer-%%VERSION%%.so.%%SOVERSION%%-gdb.py >-share/gir-1.0/Gst-%%VERSION%%.gir >-share/gir-1.0/GstBase-%%VERSION%%.gir >-share/gir-1.0/GstCheck-%%VERSION%%.gir >-share/gir-1.0/GstController-%%VERSION%%.gir >-share/gir-1.0/GstNet-%%VERSION%%.gir >+share/gdb/auto-load/usr/local/lib/libgstreamer-%%VERSION%%.so.%%SOVERSION%%-gdb.py > %%DATADIR%%-%%VERSION%%/gdb/glib_gobject_helper.py > %%DATADIR%%-%%VERSION%%/gdb/gst_gdb.py >-%%NLS%%share/locale/af/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/ast/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/az/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/be/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/bg/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/ca/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/cs/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/da/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/de/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/el/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/en_GB/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/eo/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/es/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/eu/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/fi/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/fr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/fur/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/gl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/hr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/hu/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/id/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/it/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/ja/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/lt/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/nb/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/nl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/pl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/pt_BR/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/ro/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/ru/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/rw/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/sk/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/sl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/sq/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/sr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/sv/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/tr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/uk/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/vi/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/zh_CN/LC_MESSAGES/gstreamer-%%VERSION%%.mo >-%%NLS%%share/locale/zh_TW/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/gir-%%VERSION%%/Gst-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstBase-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstCheck-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstController-%%VERSION%%.gir >+share/gir-%%VERSION%%/GstNet-%%VERSION%%.gir >+share/locale/af/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/ast/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/az/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/be/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/bg/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/ca/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/cs/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/da/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/de/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/el/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/en_GB/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/eo/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/es/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/eu/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/fi/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/fr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/fur/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/gl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/hr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/hu/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/id/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/it/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/ja/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/ko/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/lt/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/nb/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/nl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/pl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/pt_BR/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/ro/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/ru/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/rw/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/sk/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/sl/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/sq/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/sr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/sv/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/tr/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/uk/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/vi/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/zh_CN/LC_MESSAGES/gstreamer-%%VERSION%%.mo >+share/locale/zh_TW/LC_MESSAGES/gstreamer-%%VERSION%%.mo >diff --git a/net/gstreamer1-plugins-srtp/Makefile b/net/gstreamer1-plugins-srtp/Makefile >index 64bea88595b9..a9cd226b6ba2 100644 >--- a/net/gstreamer1-plugins-srtp/Makefile >+++ b/net/gstreamer1-plugins-srtp/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= net > > COMMENT= GStreamer srtp plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libsrtp2.so:net/libsrtp2 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/net/gstreamer1-plugins-srtp/pkg-plist b/net/gstreamer1-plugins-srtp/pkg-plist >new file mode 100644 >index 000000000000..47c00550b2ea >--- /dev/null >+++ b/net/gstreamer1-plugins-srtp/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstsrtp.so >diff --git a/security/gstreamer1-plugins-dtls/Makefile b/security/gstreamer1-plugins-dtls/Makefile >index f51b21b9fed8..0ec8cb0d0367 100644 >--- a/security/gstreamer1-plugins-dtls/Makefile >+++ b/security/gstreamer1-plugins-dtls/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= security > > COMMENT= GStreamer Datagram TLS (dtls) plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USES= compiler:c11 ssl >+ > .include "${MASTERDIR}/Makefile" >diff --git a/security/gstreamer1-plugins-dtls/pkg-plist b/security/gstreamer1-plugins-dtls/pkg-plist >new file mode 100644 >index 000000000000..1e97fc53d7f0 >--- /dev/null >+++ b/security/gstreamer1-plugins-dtls/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstdtls.so >diff --git a/sysutils/gstreamer1-plugins-cdio/Makefile b/sysutils/gstreamer1-plugins-cdio/Makefile >index a05d79d364ec..e33b8a0e4f22 100644 >--- a/sysutils/gstreamer1-plugins-cdio/Makefile >+++ b/sysutils/gstreamer1-plugins-cdio/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= sysutils > > COMMENT= GStreamer compact disc input and control library >@@ -8,4 +7,10 @@ DIST= ugly > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS= libcdio.so:sysutils/libcdio >+ > .include "${MASTERDIR}/Makefile" >+ >+MESON_ARGS+= -Dgpl=enabled >diff --git a/sysutils/gstreamer1-plugins-cdio/pkg-plist b/sysutils/gstreamer1-plugins-cdio/pkg-plist >new file mode 100644 >index 000000000000..b57918435106 >--- /dev/null >+++ b/sysutils/gstreamer1-plugins-cdio/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstcdio.so >diff --git a/www/gstreamer1-plugins-neon/Makefile b/www/gstreamer1-plugins-neon/Makefile >index c2add9320e9b..bf9ea8157db4 100644 >--- a/www/gstreamer1-plugins-neon/Makefile >+++ b/www/gstreamer1-plugins-neon/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= www > > COMMENT= GStreamer neon http source plugin >@@ -8,4 +7,8 @@ DIST= bad > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+LIB_DEPENDS+= libneon.so:www/neon >+ > .include "${MASTERDIR}/Makefile" >diff --git a/www/gstreamer1-plugins-neon/pkg-plist b/www/gstreamer1-plugins-neon/pkg-plist >new file mode 100644 >index 000000000000..59af42c5743f >--- /dev/null >+++ b/www/gstreamer1-plugins-neon/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstneonhttpsrc.so >diff --git a/x11-toolkits/gstreamer1-plugins-gtk/Makefile b/x11-toolkits/gstreamer1-plugins-gtk/Makefile >index 3f4342c34867..b4a967a54cbf 100644 >--- a/x11-toolkits/gstreamer1-plugins-gtk/Makefile >+++ b/x11-toolkits/gstreamer1-plugins-gtk/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= x11-toolkits > GST_PLUGIN_SUFFIX= -gtk > >@@ -9,4 +8,10 @@ DIST= good > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USES= gnome >+USE_GSTREAMER= gl >+USE_GNOME= cairo gdkpixbuf2 gtk30 >+ > .include "${MASTERDIR}/Makefile" >diff --git a/x11-toolkits/gstreamer1-plugins-gtk/pkg-plist b/x11-toolkits/gstreamer1-plugins-gtk/pkg-plist >new file mode 100644 >index 000000000000..231af0e2f2e7 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstgtk.so >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/Makefile b/x11-toolkits/gstreamer1-plugins-gtk4/Makefile >index 5e48e8098028..a52aa30ee929 100644 >--- a/x11-toolkits/gstreamer1-plugins-gtk4/Makefile >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/Makefile >@@ -1,21 +1,21 @@ >-PORTNAME= gstreamer1-plugins-gtk4 >-DISTVERSION= 1.16.2 > CATEGORIES= x11-toolkits >-MASTER_SITES= GNOME/sources/${DISTNAME:S/-${DISTVERSION}/\/${DISTVERSION:R}/} \ >- https://gstreamer.freedesktop.org/src/${DISTNAME:S/-${DISTVERSION}//}/ >-DISTNAME= gst-plugins-good-${DISTVERSION} >+GST_PLUGIN_SUFFIX= -gtk4 > > MAINTAINER= jbeich@FreeBSD.org > COMMENT= GStreamer GTK4 video sink plugin > WWW= https://gstreamer.freedesktop.org/documentation/gtk/gtksink.html > >-LICENSE= LGPL21+ >-LICENSE_FILE= ${WRKSRC}/COPYING >+GST_PLUGIN= gtk4 >+DIST= good > >-USES= compiler:c11 gnome gstreamer meson pkgconfig tar:xz >+MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins >+USES= gnome > USE_GNOME= cairo gtk40 > USE_GSTREAMER= gl >-MESON_ARGS= --auto-features=disabled -Dgtk4=enabled >+MESON_ARGS+= --auto-features=disabled > PLIST_FILES= lib/gstreamer-1.0/libgstgtk4.so > >-.include <bsd.port.mk> >+EXTRA_PATCHES= ${.CURDIR}/files >+PLIST= ${.CURDIR}/pkg-plist >+ >+.include "${MASTERDIR}/Makefile" >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.c >new file mode 100644 >index 000000000000..6d2fc4b55fba >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.c >@@ -0,0 +1,196 @@ >+--- ext/gtk/gstgtkbasesink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkbasesink.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -80,7 +81,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_ >+ G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION, >+ gst_gtk_base_sink_navigation_interface_init); >+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink, >+- "gtkbasesink", 0, "Gtk Video Sink base class")); >++ "gtkbasesink", 0, "GTK Video Sink base class")); >+ >+ >+ static void >+@@ -100,7 +101,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >+ gobject_class->get_property = gst_gtk_base_sink_get_property; >+ >+ g_object_class_install_property (gobject_class, PROP_WIDGET, >+- g_param_spec_object ("widget", "Gtk Widget", >++ g_param_spec_object ("widget", "GTK Widget", >+ "The GtkWidget to place in the widget hierarchy " >+ "(must only be get from the GTK main thread)", >+ GTK_TYPE_WIDGET, >+@@ -135,10 +136,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >+ G_MAXINT, G_MAXINT, 1, DEFAULT_VIDEO_PAR_N, DEFAULT_VIDEO_PAR_D, >+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >++ /* Disabling alpha was removed in GTK4 */ >++#if !defined(BUILD_FOR_GTK4) >+ g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA, >+ g_param_spec_boolean ("ignore-alpha", "Ignore Alpha", >+ "When enabled, alpha will be ignored and converted to black", >+ DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >++#endif >+ >+ gobject_class->finalize = gst_gtk_base_sink_finalize; >+ >+@@ -169,6 +173,8 @@ gst_gtk_base_sink_finalize (GObject * object) >+ { >+ GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object); >+ >++ GST_DEBUG ("finalizing base sink"); >++ >+ GST_OBJECT_LOCK (gtk_sink); >+ if (gtk_sink->window && gtk_sink->window_destroy_id) >+ g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id); >+@@ -193,6 +199,14 @@ static void >+ window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink) >+ { >+ GST_OBJECT_LOCK (gtk_sink); >++ if (gtk_sink->widget) { >++ if (gtk_sink->widget_destroy_id) { >++ g_signal_handler_disconnect (gtk_sink->widget, >++ gtk_sink->widget_destroy_id); >++ gtk_sink->widget_destroy_id = 0; >++ } >++ g_clear_object (>k_sink->widget); >++ } >+ gtk_sink->window = NULL; >+ GST_OBJECT_UNLOCK (gtk_sink); >+ } >+@@ -205,7 +219,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >+ >+ /* Ensure GTK is initialized, this has no side effect if it was already >+ * initialized. Also, we do that lazily, so the application can be first */ >+- if (!gtk_init_check (NULL, NULL)) { >++ if (!gtk_init_check ( >++#if !defined(BUILD_FOR_GTK4) >++ NULL, NULL >++#endif >++ )) { >+ GST_INFO_OBJECT (gtk_sink, "Could not ensure GTK initialization."); >+ return NULL; >+ } >+@@ -224,13 +242,16 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >+ g_object_bind_property (gtk_sink, "video-aspect-ratio-override", >+ gtk_sink->widget, "video-aspect-ratio-override", >+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >++#if !defined(BUILD_FOR_GTK4) >+ gtk_sink->bind_ignore_alpha = >+ g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget, >+ "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >++#endif >+ >+ /* Take the floating ref, other wise the destruction of the container will >+ * make this widget disappear possibly before we are done. */ >+ gst_object_ref_sink (gtk_sink->widget); >++ >+ gtk_sink->widget_destroy_id = g_signal_connect (gtk_sink->widget, "destroy", >+ G_CALLBACK (widget_destroy_cb), gtk_sink); >+ >+@@ -372,6 +393,9 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >+ GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >+ GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink); >+ GtkWidget *toplevel; >++#if defined(BUILD_FOR_GTK4) >++ GtkRoot *root; >++#endif >+ >+ if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) { >+ GST_ERROR_OBJECT (bsink, "Could not ensure GTK initialization."); >+@@ -380,19 +404,46 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >+ >+ /* After this point, gtk_sink->widget will always be set */ >+ >++#if defined(BUILD_FOR_GTK4) >++ root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget)); >++ if (!GTK_IS_ROOT (root)) { >++ GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget)); >++ if (parent) { >++ GtkWidget *temp_parent; >++ while ((temp_parent = gtk_widget_get_parent (parent))) >++ parent = temp_parent; >++ } >++ toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget); >++#else >+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget)); >+ if (!gtk_widget_is_toplevel (toplevel)) { >++#endif >+ /* sanity check */ >+ g_assert (klass->window_title); >+ >+ /* User did not add widget its own UI, let's popup a new GtkWindow to >+ * make gst-launch-1.0 work. */ >+- gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); >++ gst_sink->window = gtk_window_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WINDOW_TOPLEVEL >++#endif >++ ); >+ gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480); >+ gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title); >+- gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel); >+- gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy", >+- G_CALLBACK (window_destroy_cb), gst_sink); >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_set_child (GTK_WINDOW ( >++#else >++ gtk_container_add (GTK_CONTAINER ( >++#endif >++ gst_sink->window), toplevel); >++ >++ gst_sink->window_destroy_id = g_signal_connect ( >++#if defined(BUILD_FOR_GTK4) >++ GTK_WINDOW (gst_sink->window), >++#else >++ gst_sink->window, >++#endif >++ "destroy", G_CALLBACK (window_destroy_cb), gst_sink); >+ } >+ >+ return TRUE; >+@@ -411,7 +462,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink) >+ GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >+ >+ if (gst_sink->window) { >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_destroy (GTK_WINDOW (gst_sink->window)); >++#else >+ gtk_widget_destroy (gst_sink->window); >++#endif >+ gst_sink->window = NULL; >+ gst_sink->widget = NULL; >+ } >+@@ -432,10 +487,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink) >+ } >+ >+ static void >+-gst_gtk_widget_show_all_and_unref (GtkWidget * widget) >++gst_gtk_window_show_all_and_unref (GtkWidget * window) >+ { >+- gtk_widget_show_all (widget); >+- g_object_unref (widget); >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_present (GTK_WINDOW (window)); >++#else >++ gtk_widget_show_all (window); >++#endif >++ g_object_unref (window); >+ } >+ >+ static GstStateChangeReturn >+@@ -463,7 +522,7 @@ gst_gtk_base_sink_change_state (GstElement * element, >+ GST_OBJECT_UNLOCK (gtk_sink); >+ >+ if (window) >+- gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref, >++ gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref, >+ window); >+ >+ break; >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.h b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.h >new file mode 100644 >index 000000000000..2c5047cb0c53 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.h >@@ -0,0 +1,31 @@ >+--- ext/gtk/gstgtkbasesink.h.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkbasesink.h >+@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void); >+ struct _GstGtkBaseSink >+ { >+ /* <private> */ >+- GstVideoSink parent; >++ GstVideoSink parent; >+ >+- GstVideoInfo v_info; >++ GstVideoInfo v_info; >+ >+ GtkGstBaseWidget *widget; >+ >+ /* properties */ >+- gboolean force_aspect_ratio; >++ gboolean force_aspect_ratio; >+ GBinding *bind_aspect_ratio; >+ >+ gint par_n; >+@@ -73,8 +73,8 @@ struct _GstGtkBaseSink >+ GBinding *bind_ignore_alpha; >+ >+ GtkWidget *window; >+- gulong widget_destroy_id; >+- gulong window_destroy_id; >++ gulong widget_destroy_id; >++ gulong window_destroy_id; >+ }; >+ >+ /** >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.c >new file mode 100644 >index 000000000000..b61a745588fd >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.c >@@ -0,0 +1,187 @@ >+--- ext/gtk/gstgtkglsink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkglsink.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -23,6 +24,12 @@ >+ * @title: gtkglsink >+ */ >+ >++/** >++ * SECTION:element-gtk4glsink >++ * @title: gtk4glsink >++ */ >++ >++ >+ #ifdef HAVE_CONFIG_H >+ #include "config.h" >+ #endif >+@@ -30,6 +37,7 @@ >+ #include <gst/gl/gstglfuncs.h> >+ #include <gst/video/gstvideoaffinetransformationmeta.h> >+ >++#include "gtkconfig.h" >+ #include "gstgtkglsink.h" >+ #include "gtkgstglwidget.h" >+ >+@@ -65,7 +73,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template = >+ #define gst_gtk_gl_sink_parent_class parent_class >+ G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink, >+ GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink, >+- "gtkglsink", 0, "Gtk GL Video Sink")); >++ GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink")); >+ GST_ELEMENT_REGISTER_DEFINE (gtkglsink, "gtkglsink", GST_RANK_NONE, >+ GST_TYPE_GTK_GL_SINK); >+ >+@@ -101,7 +109,7 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >+ gstbasesink_class->event = gst_gtk_gl_sink_event; >+ >+ gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new; >+- gstgtkbasesink_class->window_title = "Gtk+ GL renderer"; >++ gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer"; >+ >+ /** >+ * gtkglsink:rotate-method: >+@@ -117,9 +125,11 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >+ GST_TYPE_VIDEO_ORIENTATION_METHOD, GST_VIDEO_ORIENTATION_IDENTITY, >+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >+- gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink", >++ gst_element_class_set_metadata (gstelement_class, >++ GTKCONFIG_NAME " GL Video Sink", >+ "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL", >+- "Matthew Waters <matthew@centricular.com>"); >++ "Matthew Waters <matthew@centricular.com>, " >++ "RafaÅ DziÄgiel <rafostar.github@gmail.com>"); >+ >+ gst_element_class_add_static_pad_template (gstelement_class, >+ &gst_gtk_gl_sink_template); >+@@ -202,16 +212,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery * >+ } >+ >+ static void >+-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle, >+- GstGtkGLSink * gtk_sink) >++_size_changed_cb (GtkWidget * widget, gint width, >++ gint height, GstGtkGLSink * gtk_sink) >+ { >+- gint scale_factor, width, height; >+ gboolean reconfigure; >+ >+- scale_factor = gtk_widget_get_scale_factor (widget); >+- width = scale_factor * gtk_widget_get_allocated_width (widget); >+- height = scale_factor * gtk_widget_get_allocated_height (widget); >++ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ >++ /* Ignore size changes before widget is negotiated >++ * we are going to queue a resize after negotiation */ >++ if (!base_widget->negotiated) >++ return; >++ >+ GST_OBJECT_LOCK (gtk_sink); >+ reconfigure = >+ (width != gtk_sink->display_width || height != gtk_sink->display_height); >+@@ -220,7 +232,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >+ GST_OBJECT_UNLOCK (gtk_sink); >+ >+ if (reconfigure) { >+- GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad."); >++ GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad"); >+ gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad, >+ gst_event_new_reconfigure ()); >+ } >+@@ -229,9 +241,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >+ static void >+ destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink) >+ { >+- if (gtk_sink->size_allocate_sig_handler) { >+- g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler); >+- gtk_sink->size_allocate_sig_handler = 0; >++ if (gtk_sink->widget_resize_sig_handler) { >++ g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >+ } >+ >+ if (gtk_sink->widget_destroy_sig_handler) { >+@@ -254,29 +266,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink) >+ gst_widget = GTK_GST_GL_WIDGET (base_sink->widget); >+ >+ /* Track the allocation size */ >+- gtk_sink->size_allocate_sig_handler = >+- g_signal_connect (gst_widget, "size-allocate", >+- G_CALLBACK (_size_changed_cb), gtk_sink); >++ if (!gtk_sink->widget_resize_sig_handler) { >++ gtk_sink->widget_resize_sig_handler = >++ g_signal_connect (gst_widget, "resize", >++ G_CALLBACK (_size_changed_cb), gtk_sink); >++ } >+ >+- gtk_sink->widget_destroy_sig_handler = >+- g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >+- gtk_sink); >++ if (!gtk_sink->widget_destroy_sig_handler) { >++ gtk_sink->widget_destroy_sig_handler = >++ g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >++ gtk_sink); >++ } >+ >+- _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink); >+- >+ if (!gtk_gst_gl_widget_init_winsys (gst_widget)) { >+ GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >+- "Failed to initialize OpenGL with Gtk"), (NULL)); >++ "Failed to initialize OpenGL with GTK"), (NULL)); >+ return FALSE; >+ } >+ >+- gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >+- gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >+- gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >++ if (!gtk_sink->display) >++ gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >++ if (!gtk_sink->context) >++ gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >++ if (!gtk_sink->gtk_context) >++ gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >+ >+ if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) { >+ GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >+- "Failed to retrieve OpenGL context from Gtk"), (NULL)); >++ "Failed to retrieve OpenGL context from GTK"), (NULL)); >+ return FALSE; >+ } >+ >+@@ -290,7 +307,14 @@ static gboolean >+ gst_gtk_gl_sink_stop (GstBaseSink * bsink) >+ { >+ GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink); >++ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink); >+ >++ if (gtk_sink->widget_resize_sig_handler) { >++ g_signal_handler_disconnect (base_sink->widget, >++ gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >++ } >++ >+ if (gtk_sink->display) { >+ gst_object_unref (gtk_sink->display); >+ gtk_sink->display = NULL; >+@@ -432,10 +456,10 @@ gst_gtk_gl_sink_finalize (GObject * object) >+ GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object); >+ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object); >+ >+- if (gtk_sink->size_allocate_sig_handler) { >++ if (gtk_sink->widget_resize_sig_handler) { >+ g_signal_handler_disconnect (base_sink->widget, >+- gtk_sink->size_allocate_sig_handler); >+- gtk_sink->size_allocate_sig_handler = 0; >++ gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >+ } >+ >+ if (gtk_sink->widget_destroy_sig_handler) { >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.h b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.h >new file mode 100644 >index 000000000000..2f53c6ee4b09 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.h >@@ -0,0 +1,11 @@ >+--- ext/gtk/gstgtkglsink.h.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkglsink.h >+@@ -57,7 +57,7 @@ struct _GstGtkGLSink >+ gint display_width; >+ gint display_height; >+ >+- gulong size_allocate_sig_handler; >++ gulong widget_resize_sig_handler; >+ gulong widget_destroy_sig_handler; >+ }; >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtksink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtksink.c >new file mode 100644 >index 000000000000..78ef86fe25a1 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtksink.c >@@ -0,0 +1,51 @@ >+--- ext/gtk/gstgtksink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtksink.c >+@@ -19,15 +19,22 @@ >+ */ >+ >+ /** >+- * SECTION:element-gtkgstsink >+- * @title: gtkgstsink >++ * SECTION:element-gtksink >++ * @title: gtksink >+ * >+ */ >+ >++/** >++ * SECTION:element-gtk4sink >++ * @title: gtk4sink >++ * >++ */ >++ >+ #ifdef HAVE_CONFIG_H >+ #include "config.h" >+ #endif >+ >++#include "gtkconfig.h" >+ #include "gtkgstwidget.h" >+ #include "gstgtksink.h" >+ >+@@ -49,8 +56,8 @@ GST_STATIC_PAD_TEMPLATE ("sink", >+ >+ #define gst_gtk_sink_parent_class parent_class >+ G_DEFINE_TYPE_WITH_CODE (GstGtkSink, gst_gtk_sink, GST_TYPE_GTK_BASE_SINK, >+- GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, "gtksink", 0, >+- "Gtk Video Sink")); >++ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, GTKCONFIG_SINK, 0, >++ GTKCONFIG_NAME " Video Sink")); >+ GST_ELEMENT_REGISTER_DEFINE (gtksink, "gtksink", GST_RANK_NONE, >+ GST_TYPE_GTK_SINK); >+ >+@@ -64,9 +71,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass) >+ base_class = (GstGtkBaseSinkClass *) klass; >+ >+ base_class->create_widget = gtk_gst_widget_new; >+- base_class->window_title = "Gtk+ Cairo renderer"; >++ base_class->window_title = GTKCONFIG_NAME " Cairo Renderer"; >+ >+- gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink", >++ gst_element_class_set_metadata (gstelement_class, >++ GTKCONFIG_NAME " Video Sink", >+ "Sink/Video", "A video sink that renders to a GtkWidget", >+ "Matthew Waters <matthew@centricular.com>"); >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstplugin.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstplugin.c >new file mode 100644 >index 000000000000..52d2beba45c4 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstplugin.c >@@ -0,0 +1,52 @@ >+--- ext/gtk/gstplugin.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstplugin.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -22,28 +23,30 @@ >+ #include "config.h" >+ #endif >+ >++#include "gtkconfig.h" >+ #include "gstgtksink.h" >+-#if defined(HAVE_GTK3_GL) >++#if defined(HAVE_GTK_GL) >+ #include "gstgtkglsink.h" >+ #endif >+ >+ static gboolean >+ plugin_init (GstPlugin * plugin) >+ { >+- gboolean ret = FALSE; >+- >+- ret |= GST_ELEMENT_REGISTER (gtksink, plugin); >+- >+-#if defined(HAVE_GTK3_GL) >+- ret |= GST_ELEMENT_REGISTER (gtkglsink, plugin); >++ if (!gst_element_register (plugin, GTKCONFIG_SINK, >++ GST_RANK_NONE, GST_TYPE_GTK_SINK)) { >++ return FALSE; >++ } >++#if defined(HAVE_GTK_GL) >++ if (!gst_element_register (plugin, GTKCONFIG_GLSINK, >++ GST_RANK_NONE, GST_TYPE_GTK_GL_SINK)) { >++ return FALSE; >++ } >+ #endif >+- >+- return ret; >++ return TRUE; >+ } >+ >+ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, >+ GST_VERSION_MINOR, >+- gtk, >+- "Gtk+ sink", >++ GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink", >+ plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME, >+ GST_PACKAGE_ORIGIN) >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkconfig.h b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkconfig.h >new file mode 100644 >index 000000000000..fe0239675b55 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkconfig.h >@@ -0,0 +1,38 @@ >+--- ext/gtk/gtkconfig.h.orig 2022-09-18 22:21:54 UTC >++++ ext/gtk/gtkconfig.h >+@@ -0,0 +1,35 @@ >++/* >++ * GStreamer >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >++ * >++ * This library is free software; you can redistribute it and/or >++ * modify it under the terms of the GNU Library General Public >++ * License as published by the Free Software Foundation; either >++ * version 2 of the License, or (at your option) any later version. >++ * >++ * This library is distributed in the hope that it will be useful, >++ * but WITHOUT ANY WARRANTY; without even the implied warranty of >++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >++ * Library General Public License for more details. >++ * >++ * You should have received a copy of the GNU Library General Public >++ * License along with this library; if not, write to the >++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, >++ * Boston, MA 02110-1301, USA. >++ */ >++ >++#if defined(BUILD_FOR_GTK4) >++#define GTKCONFIG_PLUGIN gtk4 >++#define GTKCONFIG_NAME "GTK4" >++#define GTKCONFIG_SINK_N gtk4sink >++#define GTKCONFIG_GLSINK_N gtk4glsink >++#define GTKCONFIG_SINK "gtk4sink" >++#define GTKCONFIG_GLSINK "gtk4glsink" >++#else >++#define GTKCONFIG_PLUGIN gtk >++#define GTKCONFIG_NAME "GTK" >++#define GTKCONFIG_SINK_N gtksink >++#define GTKCONFIG_GLSINK_N gtkglsink >++#define GTKCONFIG_SINK "gtksink" >++#define GTKCONFIG_GLSINK "gtkglsink" >++#endif >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.c >new file mode 100644 >index 000000000000..bce9df236d95 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.c >@@ -0,0 +1,276 @@ >+--- ext/gtk/gtkgstbasewidget.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gtkgstbasewidget.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -208,7 +209,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * >+ *natural = video_height; >+ } >+ >++#if defined(BUILD_FOR_GTK4) >+ static void >++gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation, >++ gint for_size, gint * min, gint * natural, >++ gint * minimum_baseline, gint * natural_baseline) >++{ >++ if (orientation == GTK_ORIENTATION_HORIZONTAL) >++ gtk_gst_base_widget_get_preferred_width (widget, min, natural); >++ else >++ gtk_gst_base_widget_get_preferred_height (widget, min, natural); >++ >++ *minimum_baseline = -1; >++ *natural_baseline = -1; >++} >++#endif >++ >++static void >+ gtk_gst_base_widget_set_property (GObject * object, guint prop_id, >+ const GValue * value, GParamSpec * pspec) >+ { >+@@ -281,22 +298,46 @@ _gdk_key_to_navigation_string (guint keyval) >+ } >+ } >+ >++static GdkEvent * >++_get_current_event (GtkEventController * controller) >++{ >++#if defined(BUILD_FOR_GTK4) >++ return gtk_event_controller_get_current_event (controller); >++#else >++ return gtk_get_current_event (); >++#endif >++} >++ >++static void >++_gdk_event_free (GdkEvent * event) >++{ >++#if !defined(BUILD_FOR_GTK4) >++ if (event) >++ gdk_event_free (event); >++#endif >++} >++ >+ static gboolean >+-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event) >++gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller, >++ guint keyval, guint keycode, GdkModifierType state) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >+- const gchar *str = _gdk_key_to_navigation_string (event->keyval); >+- const gchar *key_type = >+- event->type == GDK_KEY_PRESS ? "key-press" : "key-release"; >++ GdkEvent *event = _get_current_event (controller); >++ const gchar *str = _gdk_key_to_navigation_string (keyval); >+ >+- if (!str) >+- str = event->string; >+- >+- gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >++ if (str) { >++ const gchar *key_type = >++ gdk_event_get_event_type (event) == >++ GDK_KEY_PRESS ? "key-press" : "key-release"; >++ gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >++ } >++ _gdk_event_free (event); >+ } >+ g_object_unref (element); >+ } >+@@ -371,18 +412,39 @@ gtk_gst_base_widget_display_size_to_stream_size (GtkGs >+ } >+ >+ static gboolean >+-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event) >++gtk_gst_base_widget_button_event ( >++#if defined(BUILD_FOR_GTK4) >++ GtkGestureClick * gesture, >++#else >++ GtkGestureMultiPress * gesture, >++#endif >++ gint n_press, gdouble x, gdouble y) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >++ GdkEvent *event = _get_current_event (controller); >+ const gchar *key_type = >+- event->type == >+- GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release"; >++ gdk_event_get_event_type (event) == GDK_BUTTON_PRESS >++ ? "mouse-button-press" : "mouse-button-release"; >++#if !defined(BUILD_FOR_GTK4) >++ guint button; >++ gdk_event_get_button (event, &button); >++#endif >+ gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type, >+- event->button, event->x, event->y); >++#if defined(BUILD_FOR_GTK4) >++ /* Gesture is set to ignore other buttons so we do not have to check */ >++ GDK_BUTTON_PRIMARY, >++#else >++ button, >++#endif >++ x, y); >++ >++ _gdk_event_free (event); >+ } >+ g_object_unref (element); >+ } >+@@ -391,15 +453,18 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, >+ } >+ >+ static gboolean >+-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event) >++gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller, >++ gdouble x, gdouble y) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >+ gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move", >+- 0, event->x, event->y); >++ 0, x, y); >+ } >+ g_object_unref (element); >+ } >+@@ -407,6 +472,7 @@ gtk_gst_base_widget_motion_event (GtkWidget * widget, >+ return FALSE; >+ } >+ >++#if !defined(BUILD_FOR_GTK4) >+ static gboolean >+ gtk_gst_base_widget_scroll_event (GtkWidget * widget, GdkEventScroll * event) >+ { >+@@ -450,8 +516,8 @@ gtk_gst_base_widget_scroll_event (GtkWidget * widget, >+ } >+ return FALSE; >+ } >++#endif >+ >+- >+ void >+ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass * klass) >+ { >+@@ -490,24 +556,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass >+ "When enabled, alpha will be ignored and converted to black", >+ DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >++#if defined(BUILD_FOR_GTK4) >++ widget_klass->measure = gtk_gst_base_widget_measure; >++#else >+ widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width; >+ widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height; >+- widget_klass->key_press_event = gtk_gst_base_widget_key_event; >+- widget_klass->key_release_event = gtk_gst_base_widget_key_event; >+- widget_klass->button_press_event = gtk_gst_base_widget_button_event; >+- widget_klass->button_release_event = gtk_gst_base_widget_button_event; >+- widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event; >+- widget_klass->scroll_event = gtk_gst_base_widget_scroll_event; >++#endif >+ >+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0, >+- "Gtk Video Base Widget"); >++ "GTK Video Base Widget"); >+ } >+ >+ void >+ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >+ { >+- int event_mask; >+- >+ widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO; >+ widget->par_n = DEFAULT_DISPLAY_PAR_N; >+ widget->par_d = DEFAULT_DISPLAY_PAR_D; >+@@ -521,20 +583,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >+ g_weak_ref_init (&widget->element, NULL); >+ g_mutex_init (&widget->lock); >+ >++ widget->key_controller = gtk_event_controller_key_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WIDGET (widget) >++#endif >++ ); >++ g_signal_connect (widget->key_controller, "key-pressed", >++ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >++ g_signal_connect (widget->key_controller, "key-released", >++ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >++ >++ widget->motion_controller = gtk_event_controller_motion_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WIDGET (widget) >++#endif >++ ); >++ g_signal_connect (widget->motion_controller, "motion", >++ G_CALLBACK (gtk_gst_base_widget_motion_event), NULL); >++ >++ widget->click_gesture = >++#if defined(BUILD_FOR_GTK4) >++ gtk_gesture_click_new (); >++#else >++ gtk_gesture_multi_press_new (GTK_WIDGET (widget)); >++#endif >++ g_signal_connect (widget->click_gesture, "pressed", >++ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >++ g_signal_connect (widget->click_gesture, "released", >++ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >++ >++#if defined(BUILD_FOR_GTK4) >++ /* Otherwise widget in grid will appear as a 1x1px >++ * video which might be misleading for users */ >++ gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE); >++ gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE); >++ >++ gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE); >++ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture), >++ GDK_BUTTON_PRIMARY); >++ >++ gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller); >++ gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller); >++ gtk_widget_add_controller (GTK_WIDGET (widget), >++ GTK_EVENT_CONTROLLER (widget->click_gesture)); >++#endif >++ >+ gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE); >+- event_mask = gtk_widget_get_events (GTK_WIDGET (widget)); >+- event_mask |= GDK_KEY_PRESS_MASK >+- | GDK_KEY_RELEASE_MASK >+- | GDK_BUTTON_PRESS_MASK >+- | GDK_BUTTON_RELEASE_MASK >+- | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_SCROLL_MASK; >+- gtk_widget_set_events (GTK_WIDGET (widget), event_mask); >+ } >+ >+ void >+ gtk_gst_base_widget_finalize (GObject * object) >+ { >+ GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object); >++ >++ /* GTK4 takes ownership of EventControllers >++ * while GTK3 still needs manual unref */ >++#if !defined(BUILD_FOR_GTK4) >++ g_object_unref (widget->key_controller); >++ g_object_unref (widget->motion_controller); >++ g_object_unref (widget->click_gesture); >++#endif >+ >+ gst_buffer_replace (&widget->pending_buffer, NULL); >+ gst_buffer_replace (&widget->buffer, NULL); >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.h b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.h >new file mode 100644 >index 000000000000..f5201625e0f3 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.h >@@ -0,0 +1,53 @@ >+--- ext/gtk/gtkgstbasewidget.h.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gtkgstbasewidget.h >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -25,6 +26,10 @@ >+ #include <gst/gst.h> >+ #include <gst/video/video.h> >+ >++#if !defined(BUILD_FOR_GTK4) >++#include <gdk/gdk.h> >++#endif >++ >+ #define GTK_GST_BASE_WIDGET(w) ((GtkGstBaseWidget *)(w)) >+ #define GTK_GST_BASE_WIDGET_CLASS(k) ((GtkGstBaseWidgetClass *)(k)) >+ #define GTK_GST_BASE_WIDGET_LOCK(w) g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock) >+@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget >+ { >+ union { >+ GtkDrawingArea drawing_area; >+-#if GTK_CHECK_VERSION(3, 15, 0) >+ GtkGLArea gl_area; >+-#endif >+ } parent; >+ >+ /* properties */ >+@@ -68,6 +71,11 @@ struct _GtkGstBaseWidget >+ GMutex lock; >+ GWeakRef element; >+ >++ /* event controllers */ >++ GtkEventController *key_controller; >++ GtkEventController *motion_controller; >++ GtkGesture *click_gesture; >++ >+ /* Pending draw idles callback */ >+ guint draw_id; >+ }; >+@@ -76,9 +84,7 @@ struct _GtkGstBaseWidgetClass >+ { >+ union { >+ GtkDrawingAreaClass drawing_area_class; >+-#if GTK_CHECK_VERSION(3, 15, 0) >+ GtkGLAreaClass gl_area_class; >+-#endif >+ } parent_class; >+ }; >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstglwidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstglwidget.c >new file mode 100644 >index 000000000000..549d1689b951 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstglwidget.c >@@ -0,0 +1,53 @@ >+--- ext/gtk/gtkgstglwidget.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gtkgstglwidget.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -30,12 +31,20 @@ >+ #include <gst/video/video.h> >+ >+ #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11) >++#if defined(BUILD_FOR_GTK4) >++#include <gdk/x11/gdkx.h> >++#else >+ #include <gdk/gdkx.h> >++#endif >+ #include <gst/gl/x11/gstgldisplay_x11.h> >+ #endif >+ >+ #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND) >++#if defined(BUILD_FOR_GTK4) >++#include <gdk/wayland/gdkwayland.h> >++#else >+ #include <gdk/gdkwayland.h> >++#endif >+ #include <gst/gl/wayland/gstgldisplay_wayland.h> >+ #endif >+ >+@@ -81,8 +90,7 @@ static const GLfloat vertices[] = { >+ G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA, >+ G_ADD_PRIVATE (GtkGstGLWidget) >+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0, >+- "Gtk Gst GL Widget"); >+- ); >++ "GTK Gst GL Widget")); >+ >+ static void >+ gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget) >+@@ -510,8 +518,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget) >+ >+ GST_INFO ("Created %" GST_PTR_FORMAT, priv->display); >+ >++ /* GTK4 always has alpha */ >++#if !defined(BUILD_FOR_GTK4) >+ gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget), >+ !base_widget->ignore_alpha); >++#endif >+ } >+ >+ static void >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstwidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstwidget.c >new file mode 100644 >index 000000000000..3a6890cfbcb3 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstwidget.c >@@ -0,0 +1,83 @@ >+--- ext/gtk/gtkgstwidget.c.orig 2019-12-03 11:06:37 UTC >++++ ext/gtk/gtkgstwidget.c >+@@ -38,17 +38,15 @@ >+ >+ G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA); >+ >+-static gboolean >+-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >++static void >++_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr, >++ gint widget_width, gint widget_height, gpointer data) >+ { >++ GtkWidget *widget = GTK_WIDGET (da); >+ GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget; >+- guint widget_width, widget_height; >+ cairo_surface_t *surface; >+ GstVideoFrame frame; >+ >+- widget_width = gtk_widget_get_allocated_width (widget); >+- widget_height = gtk_widget_get_allocated_height (widget); >+- >+ GTK_GST_BASE_WIDGET_LOCK (gst_widget); >+ >+ /* There is not much to optimize in term of redisplay, so simply swap the >+@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >+ color.alpha = 1.0; >+ } else { >+ gtk_style_context_get_color (gtk_widget_get_style_context (widget), >+- GTK_STATE_FLAG_NORMAL, &color); >++#if !defined(BUILD_FOR_GTK4) >++ GTK_STATE_FLAG_NORMAL, >++#endif >++ &color); >+ } >+ gdk_cairo_set_source_rgba (cr, &color); >+ cairo_rectangle (cr, 0, 0, widget_width, widget_height); >+@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >+ } >+ >+ GTK_GST_BASE_WIDGET_UNLOCK (gst_widget); >++} >++ >++#if !defined(BUILD_FOR_GTK4) >++static gboolean >++gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >++{ >++ gint width = gtk_widget_get_allocated_width (widget); >++ gint height = gtk_widget_get_allocated_height (widget); >++ >++ _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL); >++ >+ return FALSE; >+ } >++#endif >+ >+ static void >+ gtk_gst_widget_finalize (GObject * object) >+@@ -171,17 +184,25 @@ static void >+ gtk_gst_widget_class_init (GtkGstWidgetClass * klass) >+ { >+ GObjectClass *gobject_klass = (GObjectClass *) klass; >++#if !defined(BUILD_FOR_GTK4) >+ GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass; >++#endif >+ >+ gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass)); >+ gobject_klass->finalize = gtk_gst_widget_finalize; >++#if !defined(BUILD_FOR_GTK4) >+ widget_klass->draw = gtk_gst_widget_draw; >++#endif >+ } >+ >+ static void >+ gtk_gst_widget_init (GtkGstWidget * widget) >+ { >+ gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget)); >++#if defined(BUILD_FOR_GTK4) >++ gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget), >++ _drawing_area_draw, NULL, NULL); >++#endif >+ } >+ >+ GtkWidget * >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_meson.build b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_meson.build >new file mode 100644 >index 000000000000..2702ff8d9125 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_meson.build >@@ -0,0 +1,119 @@ >+--- ext/gtk/meson.build.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/meson.build >+@@ -1,3 +1,4 @@ >++gtk_versions = [3, 4] >+ gtk_sources = [ >+ 'gstgtkbasesink.c', >+ 'gstgtksink.c', >+@@ -6,54 +7,88 @@ gtk_sources = [ >+ 'gtkgstbasewidget.c', >+ 'gtkgstwidget.c', >+ ] >++gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >++gtk_optional_deps = [] >+ >+-gtk_defines = [] >+-optional_deps = [] >++gtk4_dep = dependency('gtk4', required : get_option('gtk4')) >++gtk4_optional_deps = [] >+ >+-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >+-if gtk_dep.found() >+- # FIXME: automagic >+- if have_gstgl and gtk_dep.version().version_compare('>=3.15.0') >+- have_gtk3_gl_windowing = false >++foreach gtk_ver : gtk_versions >++ gtkv = 'gtk' + gtk_ver.to_string() >+ >++ gtk_state = get_option(gtkv) >++ if gtk_state.disabled() >++ continue >++ endif >++ >++ min_ver = gtk_ver >= 4 ? '3.99.2' : '3.24.0' >++ x11_str = gtk_ver >= 4 ? gtkv + '-x11' : 'gtk+-x11-3.0' >++ way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0' >++ lib_dep = gtk_ver >= 4 ? gtk4_dep : gtk_dep >++ >++ if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver) >++ continue >++ endif >++ >++ lib_sources = [] >++ gtk_defines = [] >++ optional_deps = [] >++ have_gtk_gl_windowing = false >++ >++ lib_sources += gtk_sources >++ >++ if have_gstgl >+ if gst_gl_have_window_x11 and gst_gl_have_platform_glx >+ # FIXME: automagic >+- gtk_x11_dep = dependency('gtk+-x11-3.0', required : false) >++ gtk_x11_dep = dependency(x11_str, required : false) >+ if gtk_x11_dep.found() >+ optional_deps += [gtk_x11_dep, gstglx11_dep] >+- have_gtk3_gl_windowing = true >++ have_gtk_gl_windowing = true >+ endif >+ endif >+ >+ if gst_gl_have_window_wayland and gst_gl_have_platform_egl >+ # FIXME: automagic >+- gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false) >++ gtk_wayland_dep = dependency(way_str, required : false) >+ if gtk_wayland_dep.found() >+ optional_deps += [gtk_wayland_dep, gstglegl_dep, gstglwayland_dep] >+- have_gtk3_gl_windowing = true >++ have_gtk_gl_windowing = true >+ endif >+ endif >++ endif >+ >+- if have_gtk3_gl_windowing >+- gtk_sources += [ >+- 'gstgtkglsink.c', >+- 'gtkgstglwidget.c', >+- ] >+- optional_deps += [gstgl_dep, gstglproto_dep] >+- gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL'] >+- endif >++ if have_gtk_gl_windowing >++ lib_sources += [ >++ 'gstgtkglsink.c', >++ 'gtkgstglwidget.c', >++ ] >++ optional_deps += gstgl_dep >++ optional_deps += gstglproto_dep >++ gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL'] >+ endif >+ >+- gstgtk = library('gstgtk', >+- gtk_sources, >++ if gtk_ver == 3 >++ gtk_optional_deps = optional_deps >++ elif gtk_ver == 4 >++ gtk4_optional_deps = optional_deps >++ gtk_defines += '-DBUILD_FOR_GTK4' >++ endif >++ >++ lib_name = 'gstgtk' >++ if gtk_ver > 3 >++ lib_name += gtk_ver.to_string() >++ endif >++ >++ gstgtk = library(lib_name, >++ lib_sources, >+ c_args : gst_plugins_good_args + gtk_defines, >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+- dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >++ dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >+ pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir) >+ plugins += [gstgtk] >+-endif >++endforeach >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-gtk4 b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-gtk4 >deleted file mode 100644 >index 8b1fe8e0a512..000000000000 >--- a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-gtk4 >+++ /dev/null >@@ -1,1145 +0,0 @@ >-https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/767 >- >---- ext/gtk/gstgtkbasesink.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gstgtkbasesink.c >-@@ -1,6 +1,7 @@ >- /* >- * GStreamer >- * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >- * >- * This library is free software; you can redistribute it and/or >- * modify it under the terms of the GNU Library General Public >-@@ -77,7 +78,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_ >- G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION, >- gst_gtk_base_sink_navigation_interface_init); >- GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink, >-- "gtkbasesink", 0, "Gtk Video Sink base class")); >-+ "gtkbasesink", 0, "GTK Video Sink base class")); >- >- >- static void >-@@ -97,7 +98,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >- gobject_class->get_property = gst_gtk_base_sink_get_property; >- >- g_object_class_install_property (gobject_class, PROP_WIDGET, >-- g_param_spec_object ("widget", "Gtk Widget", >-+ g_param_spec_object ("widget", "GTK Widget", >- "The GtkWidget to place in the widget hierarchy " >- "(must only be get from the GTK main thread)", >- GTK_TYPE_WIDGET, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); >-@@ -114,10 +115,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >- "The pixel aspect ratio of the device", DEFAULT_PAR_N, DEFAULT_PAR_D, >- G_MAXINT, 1, 1, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >- >-+ /* Disabling alpha was removed in GTK4 */ >-+#if !defined(BUILD_FOR_GTK4) >- g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA, >- g_param_spec_boolean ("ignore-alpha", "Ignore Alpha", >- "When enabled, alpha will be ignored and converted to black", >- DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >-+#endif >- >- gobject_class->finalize = gst_gtk_base_sink_finalize; >- >-@@ -144,6 +148,8 @@ gst_gtk_base_sink_finalize (GObject * object) >- { >- GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object); >- >-+ GST_DEBUG ("finalizing base sink"); >-+ >- GST_OBJECT_LOCK (gtk_sink); >- if (gtk_sink->window && gtk_sink->window_destroy_id) >- g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id); >-@@ -168,6 +174,14 @@ static void >- window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink) >- { >- GST_OBJECT_LOCK (gtk_sink); >-+ if (gtk_sink->widget) { >-+ if (gtk_sink->widget_destroy_id) { >-+ g_signal_handler_disconnect (gtk_sink->widget, >-+ gtk_sink->widget_destroy_id); >-+ gtk_sink->widget_destroy_id = 0; >-+ } >-+ g_clear_object (>k_sink->widget); >-+ } >- gtk_sink->window = NULL; >- GST_OBJECT_UNLOCK (gtk_sink); >- } >-@@ -180,7 +194,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >- >- /* Ensure GTK is initialized, this has no side effect if it was already >- * initialized. Also, we do that lazily, so the application can be first */ >-- if (!gtk_init_check (NULL, NULL)) { >-+ if (!gtk_init_check ( >-+#if !defined(BUILD_FOR_GTK4) >-+ NULL, NULL >-+#endif >-+ )) { >- GST_ERROR_OBJECT (gtk_sink, "Could not ensure GTK initialization."); >- return NULL; >- } >-@@ -195,13 +213,16 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >- gtk_sink->bind_pixel_aspect_ratio = >- g_object_bind_property (gtk_sink, "pixel-aspect-ratio", gtk_sink->widget, >- "pixel-aspect-ratio", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >-+#if !defined(BUILD_FOR_GTK4) >- gtk_sink->bind_ignore_alpha = >- g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget, >- "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >-+#endif >- >- /* Take the floating ref, other wise the destruction of the container will >- * make this widget disapear possibly before we are done. */ >- gst_object_ref_sink (gtk_sink->widget); >-+ >- gtk_sink->widget_destroy_id = g_signal_connect (gtk_sink->widget, "destroy", >- G_CALLBACK (widget_destroy_cb), gtk_sink); >- >-@@ -311,25 +332,55 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >- GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >- GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink); >- GtkWidget *toplevel; >-+#if defined(BUILD_FOR_GTK4) >-+ GtkRoot *root; >-+#endif >- >- if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) >- return FALSE; >- >- /* After this point, gtk_sink->widget will always be set */ >- >-+#if defined(BUILD_FOR_GTK4) >-+ root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget)); >-+ if (!GTK_IS_ROOT (root)) { >-+ GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget)); >-+ if (parent) { >-+ GtkWidget *temp_parent; >-+ while ((temp_parent = gtk_widget_get_parent (parent))) >-+ parent = temp_parent; >-+ } >-+ toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget); >-+#else >- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget)); >- if (!gtk_widget_is_toplevel (toplevel)) { >-+#endif >- /* sanity check */ >- g_assert (klass->window_title); >- >- /* User did not add widget its own UI, let's popup a new GtkWindow to >- * make gst-launch-1.0 work. */ >-- gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); >-+ gst_sink->window = gtk_window_new ( >-+#if !defined(BUILD_FOR_GTK4) >-+ GTK_WINDOW_TOPLEVEL >-+#endif >-+ ); >- gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480); >- gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title); >-- gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel); >-- gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy", >-- G_CALLBACK (window_destroy_cb), gst_sink); >-+#if defined(BUILD_FOR_GTK4) >-+ gtk_window_set_child (GTK_WINDOW ( >-+#else >-+ gtk_container_add (GTK_CONTAINER ( >-+#endif >-+ gst_sink->window), toplevel); >-+ >-+ gst_sink->window_destroy_id = g_signal_connect ( >-+#if defined(BUILD_FOR_GTK4) >-+ GTK_WINDOW (gst_sink->window), >-+#else >-+ gst_sink->window, >-+#endif >-+ "destroy", G_CALLBACK (window_destroy_cb), gst_sink); >- } >- >- return TRUE; >-@@ -348,7 +399,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink) >- GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >- >- if (gst_sink->window) { >-+#if defined(BUILD_FOR_GTK4) >-+ gtk_window_destroy (GTK_WINDOW (gst_sink->window)); >-+#else >- gtk_widget_destroy (gst_sink->window); >-+#endif >- gst_sink->window = NULL; >- gst_sink->widget = NULL; >- } >-@@ -369,10 +424,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink) >- } >- >- static void >--gst_gtk_widget_show_all_and_unref (GtkWidget * widget) >-+gst_gtk_window_show_all_and_unref (GtkWidget * window) >- { >-- gtk_widget_show_all (widget); >-- g_object_unref (widget); >-+#if defined(BUILD_FOR_GTK4) >-+ gtk_window_present (GTK_WINDOW (window)); >-+#else >-+ gtk_widget_show_all (window); >-+#endif >-+ g_object_unref (window); >- } >- >- static GstStateChangeReturn >-@@ -400,7 +459,7 @@ gst_gtk_base_sink_change_state (GstElement * element, >- GST_OBJECT_UNLOCK (gtk_sink); >- >- if (window) >-- gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref, >-+ gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref, >- window); >- >- break; >---- ext/gtk/gstgtkbasesink.h.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gstgtkbasesink.h >-@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void); >- struct _GstGtkBaseSink >- { >- /* <private> */ >-- GstVideoSink parent; >-+ GstVideoSink parent; >- >-- GstVideoInfo v_info; >-+ GstVideoInfo v_info; >- >- GtkGstBaseWidget *widget; >- >- /* properties */ >-- gboolean force_aspect_ratio; >-+ gboolean force_aspect_ratio; >- GBinding *bind_aspect_ratio; >- >- gint par_n; >-@@ -69,8 +69,8 @@ struct _GstGtkBaseSink >- GBinding *bind_ignore_alpha; >- >- GtkWidget *window; >-- gulong widget_destroy_id; >-- gulong window_destroy_id; >-+ gulong widget_destroy_id; >-+ gulong window_destroy_id; >- }; >- >- /** >---- ext/gtk/gstgtkglsink.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gstgtkglsink.c >-@@ -1,6 +1,7 @@ >- /* >- * GStreamer >- * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >- * >- * This library is free software; you can redistribute it and/or >- * modify it under the terms of the GNU Library General Public >-@@ -23,12 +24,18 @@ >- * @title: gtkglsink >- */ >- >-+/** >-+ * SECTION:element-gtk4glsink >-+ * @title: gtk4glsink >-+ */ >-+ >- #ifdef HAVE_CONFIG_H >- #include "config.h" >- #endif >- >- #include <gst/gl/gstglfuncs.h> >- >-+#include "gtkconfig.h" >- #include "gstgtkglsink.h" >- #include "gtkgstglwidget.h" >- >-@@ -58,7 +65,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template = >- #define gst_gtk_gl_sink_parent_class parent_class >- G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink, >- GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink, >-- "gtkglsink", 0, "Gtk GL Video Sink")); >-+ GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink")); >- >- static void >- gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >-@@ -82,11 +89,13 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >- gstbasesink_class->get_caps = gst_gtk_gl_sink_get_caps; >- >- gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new; >-- gstgtkbasesink_class->window_title = "Gtk+ GL renderer"; >-+ gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer"; >- >-- gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink", >-+ gst_element_class_set_metadata (gstelement_class, >-+ GTKCONFIG_NAME " GL Video Sink", >- "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL", >-- "Matthew Waters <matthew@centricular.com>"); >-+ "Matthew Waters <matthew@centricular.com>, " >-+ "RafaÅ DziÄgiel <rafostar.github@gmail.com>"); >- >- gst_element_class_add_static_pad_template (gstelement_class, >- &gst_gtk_gl_sink_template); >-@@ -120,16 +129,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery * >- } >- >- static void >--_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle, >-- GstGtkGLSink * gtk_sink) >-+_size_changed_cb (GtkWidget * widget, gint width, >-+ gint height, GstGtkGLSink * gtk_sink) >- { >-- gint scale_factor, width, height; >- gboolean reconfigure; >- >-- scale_factor = gtk_widget_get_scale_factor (widget); >-- width = scale_factor * gtk_widget_get_allocated_width (widget); >-- height = scale_factor * gtk_widget_get_allocated_height (widget); >-+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >- >-+ /* Ignore size changes before widget is negotiated >-+ * we are going to queue a resize after negotiation */ >-+ if (!base_widget->negotiated) >-+ return; >-+ >- GST_OBJECT_LOCK (gtk_sink); >- reconfigure = >- (width != gtk_sink->display_width || height != gtk_sink->display_height); >-@@ -138,7 +149,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >- GST_OBJECT_UNLOCK (gtk_sink); >- >- if (reconfigure) { >-- GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad."); >-+ GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad"); >- gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad, >- gst_event_new_reconfigure ()); >- } >-@@ -147,9 +158,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >- static void >- destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink) >- { >-- if (gtk_sink->size_allocate_sig_handler) { >-- g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler); >-- gtk_sink->size_allocate_sig_handler = 0; >-+ if (gtk_sink->widget_resize_sig_handler) { >-+ g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler); >-+ gtk_sink->widget_resize_sig_handler = 0; >- } >- >- if (gtk_sink->widget_destroy_sig_handler) { >-@@ -172,29 +183,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink) >- gst_widget = GTK_GST_GL_WIDGET (base_sink->widget); >- >- /* Track the allocation size */ >-- gtk_sink->size_allocate_sig_handler = >-- g_signal_connect (gst_widget, "size-allocate", >-- G_CALLBACK (_size_changed_cb), gtk_sink); >-+ if (!gtk_sink->widget_resize_sig_handler) { >-+ gtk_sink->widget_resize_sig_handler = >-+ g_signal_connect (gst_widget, "resize", >-+ G_CALLBACK (_size_changed_cb), gtk_sink); >-+ } >- >-- gtk_sink->widget_destroy_sig_handler = >-- g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >-- gtk_sink); >-+ if (!gtk_sink->widget_destroy_sig_handler) { >-+ gtk_sink->widget_destroy_sig_handler = >-+ g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >-+ gtk_sink); >-+ } >- >-- _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink); >-- >- if (!gtk_gst_gl_widget_init_winsys (gst_widget)) { >- GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >-- "Failed to initialize OpenGL with Gtk"), (NULL)); >-+ "Failed to initialize OpenGL with GTK"), (NULL)); >- return FALSE; >- } >- >-- gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >-- gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >-- gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >-+ if (!gtk_sink->display) >-+ gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >-+ if (!gtk_sink->context) >-+ gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >-+ if (!gtk_sink->gtk_context) >-+ gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >- >- if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) { >- GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >-- "Failed to retrieve OpenGL context from Gtk"), (NULL)); >-+ "Failed to retrieve OpenGL context from GTK"), (NULL)); >- return FALSE; >- } >- >-@@ -208,7 +224,14 @@ static gboolean >- gst_gtk_gl_sink_stop (GstBaseSink * bsink) >- { >- GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink); >-+ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink); >- >-+ if (gtk_sink->widget_resize_sig_handler) { >-+ g_signal_handler_disconnect (base_sink->widget, >-+ gtk_sink->widget_resize_sig_handler); >-+ gtk_sink->widget_resize_sig_handler = 0; >-+ } >-+ >- if (gtk_sink->display) { >- gst_object_unref (gtk_sink->display); >- gtk_sink->display = NULL; >-@@ -348,10 +371,10 @@ gst_gtk_gl_sink_finalize (GObject * object) >- GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object); >- GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object); >- >-- if (gtk_sink->size_allocate_sig_handler) { >-+ if (gtk_sink->widget_resize_sig_handler) { >- g_signal_handler_disconnect (base_sink->widget, >-- gtk_sink->size_allocate_sig_handler); >-- gtk_sink->size_allocate_sig_handler = 0; >-+ gtk_sink->widget_resize_sig_handler); >-+ gtk_sink->widget_resize_sig_handler = 0; >- } >- >- if (gtk_sink->widget_destroy_sig_handler) { >---- ext/gtk/gstgtkglsink.h.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gstgtkglsink.h >-@@ -65,7 +65,7 @@ struct _GstGtkGLSink >- gint display_width; >- gint display_height; >- >-- gulong size_allocate_sig_handler; >-+ gulong widget_resize_sig_handler; >- gulong widget_destroy_sig_handler; >- }; >- >---- ext/gtk/gstgtksink.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gstgtksink.c >-@@ -19,15 +19,22 @@ >- */ >- >- /** >-- * SECTION:element-gtkgstsink >-- * @title: gtkgstsink >-+ * SECTION:element-gtksink >-+ * @title: gtksink >- * >- */ >- >-+/** >-+ * SECTION:element-gtk4sink >-+ * @title: gtk4sink >-+ * >-+ */ >-+ >- #ifdef HAVE_CONFIG_H >- #include "config.h" >- #endif >- >-+#include "gtkconfig.h" >- #include "gtkgstwidget.h" >- #include "gstgtksink.h" >- >-@@ -49,8 +56,8 @@ GST_STATIC_PAD_TEMPLATE ("sink", >- >- #define gst_gtk_sink_parent_class parent_class >- G_DEFINE_TYPE_WITH_CODE (GstGtkSink, gst_gtk_sink, GST_TYPE_GTK_BASE_SINK, >-- GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, "gtksink", 0, >-- "Gtk Video Sink")); >-+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, GTKCONFIG_SINK, 0, >-+ GTKCONFIG_NAME " Video Sink")); >- >- static void >- gst_gtk_sink_class_init (GstGtkSinkClass * klass) >-@@ -62,9 +69,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass) >- base_class = (GstGtkBaseSinkClass *) klass; >- >- base_class->create_widget = gtk_gst_widget_new; >-- base_class->window_title = "Gtk+ Cairo renderer"; >-+ base_class->window_title = GTKCONFIG_NAME " Cairo Renderer"; >- >-- gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink", >-+ gst_element_class_set_metadata (gstelement_class, >-+ GTKCONFIG_NAME " Video Sink", >- "Sink/Video", "A video sink that renders to a GtkWidget", >- "Matthew Waters <matthew@centricular.com>"); >- >---- ext/gtk/gstplugin.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gstplugin.c >-@@ -1,6 +1,7 @@ >- /* >- * GStreamer >- * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >- * >- * This library is free software; you can redistribute it and/or >- * modify it under the terms of the GNU Library General Public >-@@ -22,31 +23,31 @@ >- #include "config.h" >- #endif >- >-+#include "gtkconfig.h" >- #include "gstgtksink.h" >--#if defined(HAVE_GTK3_GL) >-+ >-+#if defined(HAVE_GTK_GL) >- #include "gstgtkglsink.h" >- #endif >- >- static gboolean >- plugin_init (GstPlugin * plugin) >- { >-- if (!gst_element_register (plugin, "gtksink", >-+ if (!gst_element_register (plugin, GTKCONFIG_SINK, >- GST_RANK_NONE, GST_TYPE_GTK_SINK)) { >- return FALSE; >- } >--#if defined(HAVE_GTK3_GL) >-- if (!gst_element_register (plugin, "gtkglsink", >-+#if defined(HAVE_GTK_GL) >-+ if (!gst_element_register (plugin, GTKCONFIG_GLSINK, >- GST_RANK_NONE, GST_TYPE_GTK_GL_SINK)) { >- return FALSE; >- } >- #endif >-- >- return TRUE; >- } >- >- GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, >- GST_VERSION_MINOR, >-- gtk, >-- "Gtk+ sink", >-+ GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink", >- plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME, >- GST_PACKAGE_ORIGIN) >---- ext/gtk/gtkconfig.h.orig 2021-08-23 11:11:05 UTC >-+++ ext/gtk/gtkconfig.h >-@@ -0,0 +1,31 @@ >-+/* >-+ * GStreamer >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >-+ * >-+ * This library is free software; you can redistribute it and/or >-+ * modify it under the terms of the GNU Library General Public >-+ * License as published by the Free Software Foundation; either >-+ * version 2 of the License, or (at your option) any later version. >-+ * >-+ * This library is distributed in the hope that it will be useful, >-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >-+ * Library General Public License for more details. >-+ * >-+ * You should have received a copy of the GNU Library General Public >-+ * License along with this library; if not, write to the >-+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, >-+ * Boston, MA 02110-1301, USA. >-+ */ >-+ >-+#if defined(BUILD_FOR_GTK4) >-+#define GTKCONFIG_PLUGIN gtk4 >-+#define GTKCONFIG_NAME "GTK4" >-+#define GTKCONFIG_SINK "gtk4sink" >-+#define GTKCONFIG_GLSINK "gtk4glsink" >-+#else >-+#define GTKCONFIG_PLUGIN gtk >-+#define GTKCONFIG_NAME "GTK" >-+#define GTKCONFIG_SINK "gtksink" >-+#define GTKCONFIG_GLSINK "gtkglsink" >-+#endif >---- ext/gtk/gtkgstbasewidget.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gtkgstbasewidget.c >-@@ -1,6 +1,7 @@ >- /* >- * GStreamer >- * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >- * >- * This library is free software; you can redistribute it and/or >- * modify it under the terms of the GNU Library General Public >-@@ -74,7 +75,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * >- *natural = video_height; >- } >- >-+#if defined(BUILD_FOR_GTK4) >- static void >-+gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation, >-+ gint for_size, gint * min, gint * natural, >-+ gint * minimum_baseline, gint * natural_baseline) >-+{ >-+ if (orientation == GTK_ORIENTATION_HORIZONTAL) >-+ gtk_gst_base_widget_get_preferred_width (widget, min, natural); >-+ else >-+ gtk_gst_base_widget_get_preferred_height (widget, min, natural); >-+ >-+ *minimum_baseline = -1; >-+ *natural_baseline = -1; >-+} >-+#endif >-+ >-+static void >- gtk_gst_base_widget_set_property (GObject * object, guint prop_id, >- const GValue * value, GParamSpec * pspec) >- { >-@@ -235,22 +252,46 @@ _gdk_key_to_navigation_string (guint keyval) >- } >- } >- >-+static GdkEvent * >-+_get_current_event (GtkEventController * controller) >-+{ >-+#if defined(BUILD_FOR_GTK4) >-+ return gtk_event_controller_get_current_event (controller); >-+#else >-+ return gtk_get_current_event (); >-+#endif >-+} >-+ >-+static void >-+_gdk_event_free (GdkEvent * event) >-+{ >-+#if !defined(BUILD_FOR_GTK4) >-+ if (event) >-+ gdk_event_free (event); >-+#endif >-+} >-+ >- static gboolean >--gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event) >-+gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller, >-+ guint keyval, guint keycode, GdkModifierType state) >- { >-+ GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller); >-+ GtkWidget *widget = gtk_event_controller_get_widget (controller); >- GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >- GstElement *element; >- >- if ((element = g_weak_ref_get (&base_widget->element))) { >- if (GST_IS_NAVIGATION (element)) { >-- const gchar *str = _gdk_key_to_navigation_string (event->keyval); >-- const gchar *key_type = >-- event->type == GDK_KEY_PRESS ? "key-press" : "key-release"; >-+ GdkEvent *event = _get_current_event (controller); >-+ const gchar *str = _gdk_key_to_navigation_string (keyval); >- >-- if (!str) >-- str = event->string; >-- >-- gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >-+ if (str) { >-+ const gchar *key_type = >-+ gdk_event_get_event_type (event) == >-+ GDK_KEY_PRESS ? "key-press" : "key-release"; >-+ gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >-+ } >-+ _gdk_event_free (event); >- } >- g_object_unref (element); >- } >-@@ -325,22 +366,43 @@ _display_size_to_stream_size (GtkGstBaseWidget * base_ >- } >- >- static gboolean >--gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event) >-+gtk_gst_base_widget_button_event ( >-+#if defined(BUILD_FOR_GTK4) >-+ GtkGestureClick * gesture, >-+#else >-+ GtkGestureMultiPress * gesture, >-+#endif >-+ gint n_press, gdouble x, gdouble y) >- { >-+ GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture); >-+ GtkWidget *widget = gtk_event_controller_get_widget (controller); >- GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >- GstElement *element; >- >- if ((element = g_weak_ref_get (&base_widget->element))) { >- if (GST_IS_NAVIGATION (element)) { >-+ GdkEvent *event = _get_current_event (controller); >- const gchar *key_type = >-- event->type == >-- GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release"; >-- gdouble x, y; >-+ gdk_event_get_event_type (event) == GDK_BUTTON_PRESS >-+ ? "mouse-button-press" : "mouse-button-release"; >-+ gdouble stream_x, stream_y; >-+#if !defined(BUILD_FOR_GTK4) >-+ guint button; >-+ gdk_event_get_button (event, &button); >-+#endif >- >-- _display_size_to_stream_size (base_widget, event->x, event->y, &x, &y); >-+ _display_size_to_stream_size (base_widget, x, y, &stream_x, &stream_y); >- >- gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type, >-- event->button, x, y); >-+#if defined(BUILD_FOR_GTK4) >-+ /* Gesture is set to ignore other buttons so we do not have to check */ >-+ GDK_BUTTON_PRIMARY, >-+#else >-+ button, >-+#endif >-+ stream_x, stream_y); >-+ >-+ _gdk_event_free (event); >- } >- g_object_unref (element); >- } >-@@ -349,19 +411,22 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, >- } >- >- static gboolean >--gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event) >-+gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller, >-+ gdouble x, gdouble y) >- { >-+ GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller); >-+ GtkWidget *widget = gtk_event_controller_get_widget (controller); >- GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >- GstElement *element; >- >- if ((element = g_weak_ref_get (&base_widget->element))) { >- if (GST_IS_NAVIGATION (element)) { >-- gdouble x, y; >-+ gdouble stream_x, stream_y; >- >-- _display_size_to_stream_size (base_widget, event->x, event->y, &x, &y); >-+ _display_size_to_stream_size (base_widget, x, y, &stream_x, &stream_y); >- >- gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move", >-- 0, x, y); >-+ 0, stream_x, stream_y); >- } >- g_object_unref (element); >- } >-@@ -395,23 +460,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass >- "When enabled, alpha will be ignored and converted to black", >- DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >- >-+#if defined(BUILD_FOR_GTK4) >-+ widget_klass->measure = gtk_gst_base_widget_measure; >-+#else >- widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width; >- widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height; >-- widget_klass->key_press_event = gtk_gst_base_widget_key_event; >-- widget_klass->key_release_event = gtk_gst_base_widget_key_event; >-- widget_klass->button_press_event = gtk_gst_base_widget_button_event; >-- widget_klass->button_release_event = gtk_gst_base_widget_button_event; >-- widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event; >-+#endif >- >- GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0, >-- "Gtk Video Base Widget"); >-+ "GTK Video Base Widget"); >- } >- >- void >- gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >- { >-- int event_mask; >-- >- widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO; >- widget->par_n = DEFAULT_PAR_N; >- widget->par_d = DEFAULT_PAR_D; >-@@ -423,20 +485,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >- g_weak_ref_init (&widget->element, NULL); >- g_mutex_init (&widget->lock); >- >-+ widget->key_controller = gtk_event_controller_key_new ( >-+#if !defined(BUILD_FOR_GTK4) >-+ GTK_WIDGET (widget) >-+#endif >-+ ); >-+ g_signal_connect (widget->key_controller, "key-pressed", >-+ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >-+ g_signal_connect (widget->key_controller, "key-released", >-+ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >-+ >-+ widget->motion_controller = gtk_event_controller_motion_new ( >-+#if !defined(BUILD_FOR_GTK4) >-+ GTK_WIDGET (widget) >-+#endif >-+ ); >-+ g_signal_connect (widget->motion_controller, "motion", >-+ G_CALLBACK (gtk_gst_base_widget_motion_event), NULL); >-+ >-+ widget->click_gesture = >-+#if defined(BUILD_FOR_GTK4) >-+ gtk_gesture_click_new (); >-+#else >-+ gtk_gesture_multi_press_new (GTK_WIDGET (widget)); >-+#endif >-+ g_signal_connect (widget->click_gesture, "pressed", >-+ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >-+ g_signal_connect (widget->click_gesture, "released", >-+ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >-+ >-+#if defined(BUILD_FOR_GTK4) >-+ /* Otherwise widget in grid will appear as a 1x1px >-+ * video which might be misleading for users */ >-+ gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE); >-+ gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE); >-+ >-+ gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE); >-+ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture), >-+ GDK_BUTTON_PRIMARY); >-+ >-+ gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller); >-+ gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller); >-+ gtk_widget_add_controller (GTK_WIDGET (widget), >-+ GTK_EVENT_CONTROLLER (widget->click_gesture)); >-+#endif >-+ >- gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE); >-- event_mask = gtk_widget_get_events (GTK_WIDGET (widget)); >-- event_mask |= GDK_KEY_PRESS_MASK >-- | GDK_KEY_RELEASE_MASK >-- | GDK_BUTTON_PRESS_MASK >-- | GDK_BUTTON_RELEASE_MASK >-- | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK; >-- gtk_widget_set_events (GTK_WIDGET (widget), event_mask); >- } >- >- void >- gtk_gst_base_widget_finalize (GObject * object) >- { >- GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object); >-+ >-+ /* GTK4 takes ownership of EventControllers >-+ * while GTK3 still needs manual unref */ >-+#if !defined(BUILD_FOR_GTK4) >-+ g_object_unref (widget->key_controller); >-+ g_object_unref (widget->motion_controller); >-+ g_object_unref (widget->click_gesture); >-+#endif >- >- gst_buffer_replace (&widget->pending_buffer, NULL); >- gst_buffer_replace (&widget->buffer, NULL); >---- ext/gtk/gtkgstbasewidget.h.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gtkgstbasewidget.h >-@@ -1,6 +1,7 @@ >- /* >- * GStreamer >- * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >- * >- * This library is free software; you can redistribute it and/or >- * modify it under the terms of the GNU Library General Public >-@@ -25,6 +26,10 @@ >- #include <gst/gst.h> >- #include <gst/video/video.h> >- >-+#if !defined(BUILD_FOR_GTK4) >-+#include <gdk/gdk.h> >-+#endif >-+ >- #define GTK_GST_BASE_WIDGET(w) ((GtkGstBaseWidget *)(w)) >- #define GTK_GST_BASE_WIDGET_CLASS(k) ((GtkGstBaseWidgetClass *)(k)) >- #define GTK_GST_BASE_WIDGET_LOCK(w) g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock) >-@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget >- { >- union { >- GtkDrawingArea drawing_area; >--#if GTK_CHECK_VERSION(3, 15, 0) >- GtkGLArea gl_area; >--#endif >- } parent; >- >- /* properties */ >-@@ -67,6 +70,11 @@ struct _GtkGstBaseWidget >- GMutex lock; >- GWeakRef element; >- >-+ /* event controllers */ >-+ GtkEventController *key_controller; >-+ GtkEventController *motion_controller; >-+ GtkGesture *click_gesture; >-+ >- /* Pending draw idles callback */ >- guint draw_id; >- }; >-@@ -75,9 +83,7 @@ struct _GtkGstBaseWidgetClass >- { >- union { >- GtkDrawingAreaClass drawing_area_class; >--#if GTK_CHECK_VERSION(3, 15, 0) >- GtkGLAreaClass gl_area_class; >--#endif >- } parent_class; >- }; >- >---- ext/gtk/gtkgstglwidget.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gtkgstglwidget.c >-@@ -1,6 +1,7 @@ >- /* >- * GStreamer >- * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >-+ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >- * >- * This library is free software; you can redistribute it and/or >- * modify it under the terms of the GNU Library General Public >-@@ -30,12 +31,20 @@ >- #include <gst/video/video.h> >- >- #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11) >-+#if defined(BUILD_FOR_GTK4) >-+#include <gdk/x11/gdkx.h> >-+#else >- #include <gdk/gdkx.h> >-+#endif >- #include <gst/gl/x11/gstgldisplay_x11.h> >- #endif >- >- #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND) >-+#if defined(BUILD_FOR_GTK4) >-+#include <gdk/wayland/gdkwayland.h> >-+#else >- #include <gdk/gdkwayland.h> >-+#endif >- #include <gst/gl/wayland/gstgldisplay_wayland.h> >- #endif >- >-@@ -78,8 +87,7 @@ static const GLfloat vertices[] = { >- G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA, >- G_ADD_PRIVATE (GtkGstGLWidget) >- GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0, >-- "Gtk Gst GL Widget"); >-- ); >-+ "GTK Gst GL Widget")); >- >- static void >- gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget) >-@@ -407,8 +415,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget) >- >- GST_INFO ("Created %" GST_PTR_FORMAT, priv->display); >- >-+ /* GTK4 always has alpha */ >-+#if !defined(BUILD_FOR_GTK4) >- gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget), >- !base_widget->ignore_alpha); >-+#endif >- } >- >- static void >---- ext/gtk/gtkgstwidget.c.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/gtkgstwidget.c >-@@ -38,17 +38,15 @@ >- >- G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA); >- >--static gboolean >--gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >-+static void >-+_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr, >-+ gint widget_width, gint widget_height, gpointer data) >- { >-+ GtkWidget *widget = GTK_WIDGET (da); >- GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget; >-- guint widget_width, widget_height; >- cairo_surface_t *surface; >- GstVideoFrame frame; >- >-- widget_width = gtk_widget_get_allocated_width (widget); >-- widget_height = gtk_widget_get_allocated_height (widget); >-- >- GTK_GST_BASE_WIDGET_LOCK (gst_widget); >- >- /* There is not much to optimize in term of redisplay, so simply swap the >-@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >- color.alpha = 1.0; >- } else { >- gtk_style_context_get_color (gtk_widget_get_style_context (widget), >-- GTK_STATE_FLAG_NORMAL, &color); >-+#if !defined(BUILD_FOR_GTK4) >-+ GTK_STATE_FLAG_NORMAL, >-+#endif >-+ &color); >- } >- gdk_cairo_set_source_rgba (cr, &color); >- cairo_rectangle (cr, 0, 0, widget_width, widget_height); >-@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >- } >- >- GTK_GST_BASE_WIDGET_UNLOCK (gst_widget); >-+} >-+ >-+#if !defined(BUILD_FOR_GTK4) >-+static gboolean >-+gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >-+{ >-+ gint width = gtk_widget_get_allocated_width (widget); >-+ gint height = gtk_widget_get_allocated_height (widget); >-+ >-+ _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL); >-+ >- return FALSE; >- } >-+#endif >- >- static void >- gtk_gst_widget_finalize (GObject * object) >-@@ -171,17 +184,25 @@ static void >- gtk_gst_widget_class_init (GtkGstWidgetClass * klass) >- { >- GObjectClass *gobject_klass = (GObjectClass *) klass; >-+#if !defined(BUILD_FOR_GTK4) >- GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass; >-+#endif >- >- gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass)); >- gobject_klass->finalize = gtk_gst_widget_finalize; >-+#if !defined(BUILD_FOR_GTK4) >- widget_klass->draw = gtk_gst_widget_draw; >-+#endif >- } >- >- static void >- gtk_gst_widget_init (GtkGstWidget * widget) >- { >- gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget)); >-+#if defined(BUILD_FOR_GTK4) >-+ gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget), >-+ _drawing_area_draw, NULL, NULL); >-+#endif >- } >- >- GtkWidget * >---- ext/gtk/meson.build.orig 2019-12-03 11:06:37 UTC >-+++ ext/gtk/meson.build >-@@ -1,3 +1,4 @@ >-+gtk_versions = [3, 4] >- gtk_sources = [ >- 'gstgtkbasesink.c', >- 'gstgtksink.c', >-@@ -6,52 +7,86 @@ gtk_sources = [ >- 'gtkgstbasewidget.c', >- 'gtkgstwidget.c', >- ] >-+gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >-+gtk_optional_deps = [] >- >--gtk_defines = [] >--optional_deps = [] >-+gtk4_dep = dependency('gtk4', required : get_option('gtk4')) >-+gtk4_optional_deps = [] >- >--gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >--if gtk_dep.found() >-- if build_gstgl and gstgl_dep.found() and gtk_dep.version().version_compare('>=3.15.0') >-- have_gtk3_gl_windowing = false >-+foreach gtk_ver : gtk_versions >-+ gtkv = 'gtk' + gtk_ver.to_string() >- >-+ gtk_state = get_option(gtkv) >-+ if gtk_state.disabled() >-+ continue >-+ endif >-+ >-+ min_ver = gtk_ver >= 4 ? '3.99.2' : '3.24.0' >-+ x11_str = gtk_ver >= 4 ? gtkv + '-x11' : 'gtk+-x11-3.0' >-+ way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0' >-+ lib_dep = gtk_ver >= 4 ? gtk4_dep : gtk_dep >-+ >-+ if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver) >-+ continue >-+ endif >-+ >-+ lib_sources = [] >-+ gtk_defines = [] >-+ optional_deps = [] >-+ have_gtk_gl_windowing = false >-+ >-+ lib_sources += gtk_sources >-+ >-+ if build_gstgl >- if gst_gl_have_window_x11 and gst_gl_have_platform_glx >- # FIXME: automagic >-- gtk_x11_dep = dependency('gtk+-x11-3.0', required : false) >-+ gtk_x11_dep = dependency(x11_str, required : false) >- if gtk_x11_dep.found() >- optional_deps += gtk_x11_dep >-- have_gtk3_gl_windowing = true >-+ have_gtk_gl_windowing = true >- endif >- endif >- >- if gst_gl_have_window_wayland and gst_gl_have_platform_egl >- # FIXME: automagic >-- gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false) >-+ gtk_wayland_dep = dependency(way_str, required : false) >- if gtk_wayland_dep.found() >- optional_deps += gtk_wayland_dep >-- have_gtk3_gl_windowing = true >-+ have_gtk_gl_windowing = true >- endif >- endif >-+ endif >- >-- if have_gtk3_gl_windowing >-- gtk_sources += [ >-- 'gstgtkglsink.c', >-- 'gtkgstglwidget.c', >-- ] >-- optional_deps += gstgl_dep >-- gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL'] >-- endif >-+ if have_gtk_gl_windowing >-+ lib_sources += [ >-+ 'gstgtkglsink.c', >-+ 'gtkgstglwidget.c', >-+ ] >-+ optional_deps += gstgl_dep >-+ gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL'] >- endif >- >-- gstgtk = library('gstgtk', >-- gtk_sources, >-+ if gtk_ver == 3 >-+ gtk_optional_deps = optional_deps >-+ elif gtk_ver == 4 >-+ gtk4_optional_deps = optional_deps >-+ gtk_defines += '-DBUILD_FOR_GTK4' >-+ endif >-+ >-+ lib_name = 'gstgtk' >-+ if gtk_ver > 3 >-+ lib_name += gtk_ver.to_string() >-+ endif >-+ >-+ gstgtk = library(lib_name, >-+ lib_sources, >- c_args : gst_plugins_good_args + gtk_defines, >- link_args : noseh_link_args, >- include_directories : [configinc], >-- dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >-+ dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >- install : true, >- install_dir : plugins_install_dir, >- ) >- pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir) >--endif >-+endforeach >- >---- meson_options.txt.orig 2019-12-03 11:06:37 UTC >-+++ meson_options.txt >-@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', des >- option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin') >- option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin') >- option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin') >-+option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin') >- option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin') >- option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin') >- option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin') >---- tests/examples/gtk/meson.build.orig 2019-12-03 11:06:37 UTC >-+++ tests/examples/gtk/meson.build >-@@ -1,5 +1,5 @@ >- executable('gtksink', 'gtksink.c', >-- dependencies: [gst_dep, gtk_dep, optional_deps], >-+ dependencies: [gst_dep, gtk_dep, gtk_optional_deps], >- c_args: gst_plugins_good_args, >- include_directories: [configinc], >- install: false) >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-meson__options.txt b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-meson__options.txt >new file mode 100644 >index 000000000000..f574fd83887d >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-meson__options.txt >@@ -0,0 +1,10 @@ >+--- meson_options.txt.orig 2019-12-03 11:06:37 UTC >++++ meson_options.txt >+@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', des >+ option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin') >+ option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin') >+ option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin') >++option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin') >+ option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin') >+ option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin') >+ option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin') >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-tests_examples_gtk_meson.build b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-tests_examples_gtk_meson.build >new file mode 100644 >index 000000000000..4c13703c0b8b >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-tests_examples_gtk_meson.build >@@ -0,0 +1,9 @@ >+--- tests/examples/gtk/meson.build.orig 2019-12-03 11:06:37 UTC >++++ tests/examples/gtk/meson.build >+@@ -1,5 +1,5 @@ >+ executable('gtksink', 'gtksink.c', >+- dependencies: [gst_dep, gtk_dep, optional_deps], >++ dependencies: [gst_dep, gtk_dep, gtk_optional_deps], >+ c_args: gst_plugins_good_args, >+ include_directories: [configinc], >+ install: false) >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-docs_gst__plugins__cache.json b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-docs_gst__plugins__cache.json >new file mode 100644 >index 000000000000..9e0e65f51045 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-docs_gst__plugins__cache.json >@@ -0,0 +1,161 @@ >+--- docs/gst_plugins_cache.json.orig 2022-06-15 22:36:22 UTC >++++ docs/gst_plugins_cache.json >+@@ -7087,10 +7087,10 @@ >+ "url": "Unknown package origin" >+ }, >+ "gtk": { >+- "description": "Gtk+ sink", >++ "description": "GTK sink", >+ "elements": { >+ "gtkglsink": { >+- "author": "Matthew Waters <matthew@centricular.com>", >++ "author": "Matthew Waters <matthew@centricular.com>, RafaÅ DziÄgiel <rafostar.github@gmail.com>", >+ "description": "A video sink that renders to a GtkWidget using OpenGL", >+ "hierarchy": [ >+ "GstGtkGLSink", >+@@ -7106,7 +7106,7 @@ >+ "GstNavigation" >+ ], >+ "klass": "Sink/Video", >+- "long-name": "Gtk GL Video Sink", >++ "long-name": "GTK GL Video Sink", >+ "pad-templates": { >+ "sink": { >+ "caps": "video/x-raw(memory:GLMemory):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >+@@ -7147,7 +7147,7 @@ >+ "GstNavigation" >+ ], >+ "klass": "Sink/Video", >+- "long-name": "Gtk Video Sink", >++ "long-name": "GTK Video Sink", >+ "pad-templates": { >+ "sink": { >+ "caps": "video/x-raw:\n format: { BGRx, BGRA }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >+@@ -7224,6 +7224,127 @@ >+ "default": "0/1", >+ "max": "2147483647/1", >+ "min": "0/2147483647", >++ "mutable": "null", >++ "readable": true, >++ "type": "GstFraction", >++ "writable": true >++ }, >++ "widget": { >++ "blurb": "The GtkWidget to place in the widget hierarchy (must only be get from the GTK main thread)", >++ "conditionally-available": false, >++ "construct": false, >++ "construct-only": false, >++ "controllable": false, >++ "mutable": "null", >++ "readable": true, >++ "type": "GtkWidget", >++ "writable": false >++ } >++ } >++ } >++ }, >++ "package": "GStreamer Good Plug-ins", >++ "source": "gst-plugins-good", >++ "tracers": {}, >++ "url": "Unknown package origin" >++ }, >++ "gtk4": { >++ "description": "GTK4 sink", >++ "elements": { >++ "gtk4glsink": { >++ "author": "Matthew Waters <matthew@centricular.com>, RafaÅ DziÄgiel <rafostar.github@gmail.com>", >++ "description": "A video sink that renders to a GtkWidget using OpenGL", >++ "hierarchy": [ >++ "GstGtkGLSink", >++ "GstGtkBaseSink", >++ "GstVideoSink", >++ "GstBaseSink", >++ "GstElement", >++ "GstObject", >++ "GInitiallyUnowned", >++ "GObject" >++ ], >++ "interfaces": [ >++ "GstNavigation" >++ ], >++ "klass": "Sink/Video", >++ "long-name": "GTK4 GL Video Sink", >++ "pad-templates": { >++ "sink": { >++ "caps": "video/x-raw(memory:GLMemory):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >++ "direction": "sink", >++ "presence": "always" >++ } >++ }, >++ "rank": "none" >++ }, >++ "gtk4sink": { >++ "author": "Matthew Waters <matthew@centricular.com>", >++ "description": "A video sink that renders to a GtkWidget", >++ "hierarchy": [ >++ "GstGtkSink", >++ "GstGtkBaseSink", >++ "GstVideoSink", >++ "GstBaseSink", >++ "GstElement", >++ "GstObject", >++ "GInitiallyUnowned", >++ "GObject" >++ ], >++ "interfaces": [ >++ "GstNavigation" >++ ], >++ "klass": "Sink/Video", >++ "long-name": "GTK4 Video Sink", >++ "pad-templates": { >++ "sink": { >++ "caps": "video/x-raw:\n format: { BGRx, BGRA }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >++ "direction": "sink", >++ "presence": "always" >++ } >++ }, >++ "rank": "none" >++ } >++ }, >++ "filename": "gstgtk4", >++ "license": "LGPL", >++ "other-types": { >++ "GstGtkBaseSink": { >++ "hierarchy": [ >++ "GstGtkBaseSink", >++ "GstVideoSink", >++ "GstBaseSink", >++ "GstElement", >++ "GstObject", >++ "GInitiallyUnowned", >++ "GObject" >++ ], >++ "interfaces": [ >++ "GstNavigation" >++ ], >++ "kind": "object", >++ "properties": { >++ "force-aspect-ratio": { >++ "blurb": "When enabled, scaling will respect original aspect ratio", >++ "conditionally-available": false, >++ "construct": false, >++ "construct-only": false, >++ "controllable": false, >++ "default": "true", >++ "mutable": "null", >++ "readable": true, >++ "type": "gboolean", >++ "writable": true >++ }, >++ "pixel-aspect-ratio": { >++ "blurb": "The pixel aspect ratio of the device", >++ "conditionally-available": false, >++ "construct": false, >++ "construct-only": false, >++ "controllable": false, >++ "default": "0/1", >++ "max": "2147483647/1", >++ "min": "0/1", >+ "mutable": "null", >+ "readable": true, >+ "type": "GstFraction", >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.c >new file mode 100644 >index 000000000000..425d2b54ffbf >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.c >@@ -0,0 +1,192 @@ >+--- ext/gtk/gstgtkbasesink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkbasesink.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -80,7 +81,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_ >+ G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION, >+ gst_gtk_base_sink_navigation_interface_init); >+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink, >+- "gtkbasesink", 0, "Gtk Video Sink base class")); >++ "gtkbasesink", 0, "GTK Video Sink base class")); >+ >+ >+ static void >+@@ -100,7 +101,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >+ gobject_class->get_property = gst_gtk_base_sink_get_property; >+ >+ g_object_class_install_property (gobject_class, PROP_WIDGET, >+- g_param_spec_object ("widget", "Gtk Widget", >++ g_param_spec_object ("widget", "GTK Widget", >+ "The GtkWidget to place in the widget hierarchy " >+ "(must only be get from the GTK main thread)", >+ GTK_TYPE_WIDGET, >+@@ -135,10 +136,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >+ G_MAXINT, G_MAXINT, 1, DEFAULT_VIDEO_PAR_N, DEFAULT_VIDEO_PAR_D, >+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >++ /* Disabling alpha was removed in GTK4 */ >++#if !defined(BUILD_FOR_GTK4) >+ g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA, >+ g_param_spec_boolean ("ignore-alpha", "Ignore Alpha", >+ "When enabled, alpha will be ignored and converted to black", >+ DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >++#endif >+ >+ gobject_class->finalize = gst_gtk_base_sink_finalize; >+ >+@@ -169,6 +173,8 @@ gst_gtk_base_sink_finalize (GObject * object) >+ { >+ GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object); >+ >++ GST_DEBUG ("finalizing base sink"); >++ >+ GST_OBJECT_LOCK (gtk_sink); >+ if (gtk_sink->window && gtk_sink->window_destroy_id) >+ g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id); >+@@ -193,6 +199,14 @@ static void >+ window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink) >+ { >+ GST_OBJECT_LOCK (gtk_sink); >++ if (gtk_sink->widget) { >++ if (gtk_sink->widget_destroy_id) { >++ g_signal_handler_disconnect (gtk_sink->widget, >++ gtk_sink->widget_destroy_id); >++ gtk_sink->widget_destroy_id = 0; >++ } >++ g_clear_object (>k_sink->widget); >++ } >+ gtk_sink->window = NULL; >+ GST_OBJECT_UNLOCK (gtk_sink); >+ } >+@@ -205,7 +219,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >+ >+ /* Ensure GTK is initialized, this has no side effect if it was already >+ * initialized. Also, we do that lazily, so the application can be first */ >+- if (!gtk_init_check (NULL, NULL)) { >++ if (!gtk_init_check ( >++#if !defined(BUILD_FOR_GTK4) >++ NULL, NULL >++#endif >++ )) { >+ GST_INFO_OBJECT (gtk_sink, "Could not ensure GTK initialization."); >+ return NULL; >+ } >+@@ -224,9 +242,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >+ g_object_bind_property (gtk_sink, "video-aspect-ratio-override", >+ gtk_sink->widget, "video-aspect-ratio-override", >+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >++#if !defined(BUILD_FOR_GTK4) >+ gtk_sink->bind_ignore_alpha = >+ g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget, >+ "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >++#endif >+ >+ /* Take the floating ref, other wise the destruction of the container will >+ * make this widget disappear possibly before we are done. */ >+@@ -372,6 +392,9 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >+ GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >+ GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink); >+ GtkWidget *toplevel; >++#if defined(BUILD_FOR_GTK4) >++ GtkRoot *root; >++#endif >+ >+ if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) { >+ GST_ERROR_OBJECT (bsink, "Could not ensure GTK initialization."); >+@@ -380,19 +403,47 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >+ >+ /* After this point, gtk_sink->widget will always be set */ >+ >++#if defined(BUILD_FOR_GTK4) >++ root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget)); >++ if (!GTK_IS_ROOT (root)) { >++ GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget)); >++ if (parent) { >++ GtkWidget *temp_parent; >++ while ((temp_parent = gtk_widget_get_parent (parent))) >++ parent = temp_parent; >++ } >++ toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget); >++#else >+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget)); >+ if (!gtk_widget_is_toplevel (toplevel)) { >++#endif >+ /* sanity check */ >+ g_assert (klass->window_title); >+ >+ /* User did not add widget its own UI, let's popup a new GtkWindow to >+ * make gst-launch-1.0 work. */ >+- gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); >++ gst_sink->window = gtk_window_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WINDOW_TOPLEVEL >++#endif >++ ); >+ gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480); >+ gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title); >+- gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel); >+- gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy", >+- G_CALLBACK (window_destroy_cb), gst_sink); >++ >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_set_child (GTK_WINDOW ( >++#else >++ gtk_container_add (GTK_CONTAINER ( >++#endif >++ gst_sink->window), toplevel); >++ >++ gst_sink->window_destroy_id = g_signal_connect ( >++#if defined(BUILD_FOR_GTK4) >++ GTK_WINDOW (gst_sink->window), >++#else >++ gst_sink->window, >++#endif >++ "destroy", G_CALLBACK (window_destroy_cb), gst_sink); >+ } >+ >+ return TRUE; >+@@ -411,7 +462,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink) >+ GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >+ >+ if (gst_sink->window) { >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_destroy (GTK_WINDOW (gst_sink->window)); >++#else >+ gtk_widget_destroy (gst_sink->window); >++#endif >+ gst_sink->window = NULL; >+ gst_sink->widget = NULL; >+ } >+@@ -432,10 +487,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink) >+ } >+ >+ static void >+-gst_gtk_widget_show_all_and_unref (GtkWidget * widget) >++gst_gtk_window_show_all_and_unref (GtkWidget * window) >+ { >+- gtk_widget_show_all (widget); >+- g_object_unref (widget); >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_present (GTK_WINDOW (window)); >++#else >++ gtk_widget_show_all (window); >++#endif >++ g_object_unref (window); >+ } >+ >+ static GstStateChangeReturn >+@@ -463,7 +522,7 @@ gst_gtk_base_sink_change_state (GstElement * element, >+ GST_OBJECT_UNLOCK (gtk_sink); >+ >+ if (window) >+- gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref, >++ gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref, >+ window); >+ >+ break; >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.h b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.h >new file mode 100644 >index 000000000000..2c5047cb0c53 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.h >@@ -0,0 +1,31 @@ >+--- ext/gtk/gstgtkbasesink.h.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkbasesink.h >+@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void); >+ struct _GstGtkBaseSink >+ { >+ /* <private> */ >+- GstVideoSink parent; >++ GstVideoSink parent; >+ >+- GstVideoInfo v_info; >++ GstVideoInfo v_info; >+ >+ GtkGstBaseWidget *widget; >+ >+ /* properties */ >+- gboolean force_aspect_ratio; >++ gboolean force_aspect_ratio; >+ GBinding *bind_aspect_ratio; >+ >+ gint par_n; >+@@ -73,8 +73,8 @@ struct _GstGtkBaseSink >+ GBinding *bind_ignore_alpha; >+ >+ GtkWidget *window; >+- gulong widget_destroy_id; >+- gulong window_destroy_id; >++ gulong widget_destroy_id; >++ gulong window_destroy_id; >+ }; >+ >+ /** >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.c >new file mode 100644 >index 000000000000..3d46c1cc9021 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.c >@@ -0,0 +1,179 @@ >+--- ext/gtk/gstgtkglsink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkglsink.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -23,6 +24,12 @@ >+ * @title: gtkglsink >+ */ >+ >++/** >++ * SECTION:element-gtk4glsink >++ * @title: gtk4glsink >++ */ >++ >++ >+ #ifdef HAVE_CONFIG_H >+ #include "config.h" >+ #endif >+@@ -65,7 +72,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template = >+ #define gst_gtk_gl_sink_parent_class parent_class >+ G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink, >+ GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink, >+- "gtkglsink", 0, "Gtk GL Video Sink")); >++ GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink")); >+ GST_ELEMENT_REGISTER_DEFINE (gtkglsink, "gtkglsink", GST_RANK_NONE, >+ GST_TYPE_GTK_GL_SINK); >+ >+@@ -101,7 +108,7 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >+ gstbasesink_class->event = gst_gtk_gl_sink_event; >+ >+ gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new; >+- gstgtkbasesink_class->window_title = "Gtk+ GL renderer"; >++ gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer"; >+ >+ /** >+ * gtkglsink:rotate-method: >+@@ -117,9 +124,11 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >+ GST_TYPE_VIDEO_ORIENTATION_METHOD, GST_VIDEO_ORIENTATION_IDENTITY, >+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >+- gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink", >++ gst_element_class_set_metadata (gstelement_class, >++ GTKCONFIG_NAME " GL Video Sink", >+ "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL", >+- "Matthew Waters <matthew@centricular.com>"); >++ "Matthew Waters <matthew@centricular.com>, " >++ "RafaÅ DziÄgiel <rafostar.github@gmail.com>"); >+ >+ gst_element_class_add_static_pad_template (gstelement_class, >+ &gst_gtk_gl_sink_template); >+@@ -202,16 +211,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery * >+ } >+ >+ static void >+-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle, >+- GstGtkGLSink * gtk_sink) >++_size_changed_cb (GtkWidget * widget, gint width, >++ gint height, GstGtkGLSink * gtk_sink) >+ { >+- gint scale_factor, width, height; >+ gboolean reconfigure; >+ >+- scale_factor = gtk_widget_get_scale_factor (widget); >+- width = scale_factor * gtk_widget_get_allocated_width (widget); >+- height = scale_factor * gtk_widget_get_allocated_height (widget); >++ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ >++ /* Ignore size changes before widget is negotiated >++ * we are going to queue a resize after negotiation */ >++ if (!base_widget->negotiated) >++ return; >++ >+ GST_OBJECT_LOCK (gtk_sink); >+ reconfigure = >+ (width != gtk_sink->display_width || height != gtk_sink->display_height); >+@@ -220,7 +231,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >+ GST_OBJECT_UNLOCK (gtk_sink); >+ >+ if (reconfigure) { >+- GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad."); >++ GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad"); >+ gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad, >+ gst_event_new_reconfigure ()); >+ } >+@@ -229,9 +240,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >+ static void >+ destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink) >+ { >+- if (gtk_sink->size_allocate_sig_handler) { >+- g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler); >+- gtk_sink->size_allocate_sig_handler = 0; >++ if (gtk_sink->widget_resize_sig_handler) { >++ g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >+ } >+ >+ if (gtk_sink->widget_destroy_sig_handler) { >+@@ -254,29 +265,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink) >+ gst_widget = GTK_GST_GL_WIDGET (base_sink->widget); >+ >+ /* Track the allocation size */ >+- gtk_sink->size_allocate_sig_handler = >+- g_signal_connect (gst_widget, "size-allocate", >+- G_CALLBACK (_size_changed_cb), gtk_sink); >++ if (!gtk_sink->widget_resize_sig_handler) { >++ gtk_sink->widget_resize_sig_handler = >++ g_signal_connect (gst_widget, "resize", >++ G_CALLBACK (_size_changed_cb), gtk_sink); >++ } >+ >+- gtk_sink->widget_destroy_sig_handler = >+- g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >+- gtk_sink); >++ if (!gtk_sink->widget_destroy_sig_handler) { >++ gtk_sink->widget_destroy_sig_handler = >++ g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >++ gtk_sink); >++ } >+ >+- _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink); >+- >+ if (!gtk_gst_gl_widget_init_winsys (gst_widget)) { >+ GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >+- "Failed to initialize OpenGL with Gtk"), (NULL)); >++ "Failed to initialize OpenGL with GTK"), (NULL)); >+ return FALSE; >+ } >+ >+- gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >+- gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >+- gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >++ if (!gtk_sink->display) >++ gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >++ if (!gtk_sink->context) >++ gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >++ if (!gtk_sink->gtk_context) >++ gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >+ >+ if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) { >+ GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >+- "Failed to retrieve OpenGL context from Gtk"), (NULL)); >++ "Failed to retrieve OpenGL context from GTK"), (NULL)); >+ return FALSE; >+ } >+ >+@@ -290,7 +306,14 @@ static gboolean >+ gst_gtk_gl_sink_stop (GstBaseSink * bsink) >+ { >+ GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink); >++ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink); >+ >++ if (gtk_sink->widget_resize_sig_handler) { >++ g_signal_handler_disconnect (base_sink->widget, >++ gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >++ } >++ >+ if (gtk_sink->display) { >+ gst_object_unref (gtk_sink->display); >+ gtk_sink->display = NULL; >+@@ -432,10 +455,10 @@ gst_gtk_gl_sink_finalize (GObject * object) >+ GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object); >+ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object); >+ >+- if (gtk_sink->size_allocate_sig_handler) { >++ if (gtk_sink->widget_resize_sig_handler) { >+ g_signal_handler_disconnect (base_sink->widget, >+- gtk_sink->size_allocate_sig_handler); >+- gtk_sink->size_allocate_sig_handler = 0; >++ gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >+ } >+ >+ if (gtk_sink->widget_destroy_sig_handler) { >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.h b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.h >new file mode 100644 >index 000000000000..2f53c6ee4b09 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.h >@@ -0,0 +1,11 @@ >+--- ext/gtk/gstgtkglsink.h.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkglsink.h >+@@ -57,7 +57,7 @@ struct _GstGtkGLSink >+ gint display_width; >+ gint display_height; >+ >+- gulong size_allocate_sig_handler; >++ gulong widget_resize_sig_handler; >+ gulong widget_destroy_sig_handler; >+ }; >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtksink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtksink.c >new file mode 100644 >index 000000000000..851a5767e04f >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtksink.c >@@ -0,0 +1,40 @@ >+--- ext/gtk/gstgtksink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtksink.c >+@@ -19,15 +19,22 @@ >+ */ >+ >+ /** >+- * SECTION:element-gtkgstsink >+- * @title: gtkgstsink >++ * SECTION:element-gtksink >++ * @title: gtksink >+ * >+ */ >+ >++/** >++ * SECTION:element-gtk4sink >++ * @title: gtk4sink >++ * >++ */ >++ >+ #ifdef HAVE_CONFIG_H >+ #include "config.h" >+ #endif >+ >++#include "gtkconfig.h" >+ #include "gtkgstwidget.h" >+ #include "gstgtksink.h" >+ >+@@ -64,9 +71,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass) >+ base_class = (GstGtkBaseSinkClass *) klass; >+ >+ base_class->create_widget = gtk_gst_widget_new; >+- base_class->window_title = "Gtk+ Cairo renderer"; >++ base_class->window_title = GTKCONFIG_NAME " Cairo Renderer"; >+ >+- gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink", >++ gst_element_class_set_metadata (gstelement_class, >++ GTKCONFIG_NAME " Video Sink", >+ "Sink/Video", "A video sink that renders to a GtkWidget", >+ "Matthew Waters <matthew@centricular.com>"); >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstplugin.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstplugin.c >new file mode 100644 >index 000000000000..0e187942b8ae >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstplugin.c >@@ -0,0 +1,45 @@ >+--- ext/gtk/gstplugin.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstplugin.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -22,8 +23,10 @@ >+ #include "config.h" >+ #endif >+ >++#include "gtkconfig.h" >+ #include "gstgtksink.h" >+-#if defined(HAVE_GTK3_GL) >++ >++#if defined(HAVE_GTK_GL) >+ #include "gstgtkglsink.h" >+ #endif >+ >+@@ -32,10 +35,10 @@ plugin_init (GstPlugin * plugin) >+ { >+ gboolean ret = FALSE; >+ >+- ret |= GST_ELEMENT_REGISTER (gtksink, plugin); >++ ret |= GST_ELEMENT_REGISTER (GTKCONFIG_SINK, plugin); >+ >+-#if defined(HAVE_GTK3_GL) >+- ret |= GST_ELEMENT_REGISTER (gtkglsink, plugin); >++#if defined(HAVE_GTK_GL) >++ ret |= GST_ELEMENT_REGISTER (GTKCONFIG_GLSINK, plugin); >+ #endif >+ >+ return ret; >+@@ -43,7 +46,6 @@ plugin_init (GstPlugin * plugin) >+ >+ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, >+ GST_VERSION_MINOR, >+- gtk, >+- "Gtk+ sink", >++ GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink", >+ plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME, >+ GST_PACKAGE_ORIGIN) >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkconfig.h b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkconfig.h >new file mode 100644 >index 000000000000..47b6a848321d >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkconfig.h >@@ -0,0 +1,34 @@ >+--- ext/gtk/gtkconfig.h.orig 2022-09-18 19:39:45 UTC >++++ ext/gtk/gtkconfig.h >+@@ -0,0 +1,31 @@ >++/* >++ * GStreamer >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >++ * >++ * This library is free software; you can redistribute it and/or >++ * modify it under the terms of the GNU Library General Public >++ * License as published by the Free Software Foundation; either >++ * version 2 of the License, or (at your option) any later version. >++ * >++ * This library is distributed in the hope that it will be useful, >++ * but WITHOUT ANY WARRANTY; without even the implied warranty of >++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >++ * Library General Public License for more details. >++ * >++ * You should have received a copy of the GNU Library General Public >++ * License along with this library; if not, write to the >++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, >++ * Boston, MA 02110-1301, USA. >++ */ >++ >++#if defined(BUILD_FOR_GTK4) >++#define GTKCONFIG_PLUGIN gtk4 >++#define GTKCONFIG_NAME "GTK4" >++#define GTKCONFIG_SINK "gtk4sink" >++#define GTKCONFIG_GLSINK "gtk4glsink" >++#else >++#define GTKCONFIG_PLUGIN gtk >++#define GTKCONFIG_NAME "GTK" >++#define GTKCONFIG_SINK "gtksink" >++#define GTKCONFIG_GLSINK "gtkglsink" >++#endif >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.c >new file mode 100644 >index 000000000000..2ed2bae44ecf >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.c >@@ -0,0 +1,257 @@ >+--- ext/gtk/gtkgstbasewidget.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gtkgstbasewidget.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -208,7 +209,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * >+ *natural = video_height; >+ } >+ >++#if defined(BUILD_FOR_GTK4) >+ static void >++gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation, >++ gint for_size, gint * min, gint * natural, >++ gint * minimum_baseline, gint * natural_baseline) >++{ >++ if (orientation == GTK_ORIENTATION_HORIZONTAL) >++ gtk_gst_base_widget_get_preferred_width (widget, min, natural); >++ else >++ gtk_gst_base_widget_get_preferred_height (widget, min, natural); >++ >++ *minimum_baseline = -1; >++ *natural_baseline = -1; >++} >++#endif >++ >++static void >+ gtk_gst_base_widget_set_property (GObject * object, guint prop_id, >+ const GValue * value, GParamSpec * pspec) >+ { >+@@ -281,22 +298,46 @@ _gdk_key_to_navigation_string (guint keyval) >+ } >+ } >+ >++static GdkEvent * >++_get_current_event (GtkEventController * controller) >++{ >++#if defined(BUILD_FOR_GTK4) >++ return gtk_event_controller_get_current_event (controller); >++#else >++ return gtk_get_current_event (); >++#endif >++} >++ >++static void >++_gdk_event_free (GdkEvent * event) >++{ >++#if !defined(BUILD_FOR_GTK4) >++ if (event) >++ gdk_event_free (event); >++#endif >++} >++ >+ static gboolean >+-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event) >++gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller, >++ guint keyval, guint keycode, GdkModifierType state) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >+- const gchar *str = _gdk_key_to_navigation_string (event->keyval); >+- const gchar *key_type = >+- event->type == GDK_KEY_PRESS ? "key-press" : "key-release"; >++ GdkEvent *event = _get_current_event (controller); >++ const gchar *str = _gdk_key_to_navigation_string (keyval); >+ >+- if (!str) >+- str = event->string; >+- >+- gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >++ if (str) { >++ const gchar *key_type = >++ gdk_event_get_event_type (event) == >++ GDK_KEY_PRESS ? "key-press" : "key-release"; >++ gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >++ } >++ _gdk_event_free (event); >+ } >+ g_object_unref (element); >+ } >+@@ -371,18 +412,38 @@ gtk_gst_base_widget_display_size_to_stream_size (GtkGs >+ } >+ >+ static gboolean >+-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event) >++gtk_gst_base_widget_button_event ( >++#if defined(BUILD_FOR_GTK4) >++ GtkGestureClick * gesture, >++#else >++ GtkGestureMultiPress * gesture, >++#endif >++ gint n_press, gdouble x, gdouble y) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >++ GdkEvent *event = _get_current_event (controller); >+ const gchar *key_type = >+- event->type == >+- GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release"; >++ gdk_event_get_event_type (event) == GDK_BUTTON_PRESS >++ ? "mouse-button-press" : "mouse-button-release"; >++#if !defined(BUILD_FOR_GTK4) >++ guint button; >++ gdk_event_get_button (event, &button); >++#endif >+ gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type, >+- event->button, event->x, event->y); >++#if defined(BUILD_FOR_GTK4) >++ /* Gesture is set to ignore other buttons so we do not have to check */ >++ GDK_BUTTON_PRIMARY, >++#else >++ button, >++#endif >++ event->x, event->y); >++ _gdk_event_free (event); >+ } >+ g_object_unref (element); >+ } >+@@ -391,15 +452,18 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, >+ } >+ >+ static gboolean >+-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event) >++gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller, >++ gdouble x, gdouble y) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >+ gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move", >+- 0, event->x, event->y); >++ 0, x, y); >+ } >+ g_object_unref (element); >+ } >+@@ -490,24 +554,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass >+ "When enabled, alpha will be ignored and converted to black", >+ DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >++#if defined(BUILD_FOR_GTK4) >++ widget_klass->measure = gtk_gst_base_widget_measure; >++#else >+ widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width; >+ widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height; >+- widget_klass->key_press_event = gtk_gst_base_widget_key_event; >+- widget_klass->key_release_event = gtk_gst_base_widget_key_event; >+- widget_klass->button_press_event = gtk_gst_base_widget_button_event; >+- widget_klass->button_release_event = gtk_gst_base_widget_button_event; >+- widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event; >+- widget_klass->scroll_event = gtk_gst_base_widget_scroll_event; >++#endif >+ >+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0, >+- "Gtk Video Base Widget"); >++ "GTK Video Base Widget"); >+ } >+ >+ void >+ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >+ { >+- int event_mask; >+- >+ widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO; >+ widget->par_n = DEFAULT_DISPLAY_PAR_N; >+ widget->par_d = DEFAULT_DISPLAY_PAR_D; >+@@ -521,20 +581,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >+ g_weak_ref_init (&widget->element, NULL); >+ g_mutex_init (&widget->lock); >+ >++ widget->key_controller = gtk_event_controller_key_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WIDGET (widget) >++#endif >++ ); >++ g_signal_connect (widget->key_controller, "key-pressed", >++ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >++ g_signal_connect (widget->key_controller, "key-released", >++ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >++ >++ widget->motion_controller = gtk_event_controller_motion_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WIDGET (widget) >++#endif >++ ); >++ g_signal_connect (widget->motion_controller, "motion", >++ G_CALLBACK (gtk_gst_base_widget_motion_event), NULL); >++ >++ widget->click_gesture = >++#if defined(BUILD_FOR_GTK4) >++ gtk_gesture_click_new (); >++#else >++ gtk_gesture_multi_press_new (GTK_WIDGET (widget)); >++#endif >++ g_signal_connect (widget->click_gesture, "pressed", >++ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >++ g_signal_connect (widget->click_gesture, "released", >++ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >++ >++#if defined(BUILD_FOR_GTK4) >++ /* Otherwise widget in grid will appear as a 1x1px >++ * video which might be misleading for users */ >++ gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE); >++ gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE); >++ >++ gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE); >++ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture), >++ GDK_BUTTON_PRIMARY); >++ >++ gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller); >++ gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller); >++ gtk_widget_add_controller (GTK_WIDGET (widget), >++ GTK_EVENT_CONTROLLER (widget->click_gesture)); >++#endif >++ >+ gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE); >+- event_mask = gtk_widget_get_events (GTK_WIDGET (widget)); >+- event_mask |= GDK_KEY_PRESS_MASK >+- | GDK_KEY_RELEASE_MASK >+- | GDK_BUTTON_PRESS_MASK >+- | GDK_BUTTON_RELEASE_MASK >+- | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_SCROLL_MASK; >+- gtk_widget_set_events (GTK_WIDGET (widget), event_mask); >+ } >+ >+ void >+ gtk_gst_base_widget_finalize (GObject * object) >+ { >+ GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object); >++ >++ /* GTK4 takes ownership of EventControllers >++ * while GTK3 still needs manual unref */ >++#if !defined(BUILD_FOR_GTK4) >++ g_object_unref (widget->key_controller); >++ g_object_unref (widget->motion_controller); >++ g_object_unref (widget->click_gesture); >++#endif >+ >+ gst_buffer_replace (&widget->pending_buffer, NULL); >+ gst_buffer_replace (&widget->buffer, NULL); >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.h b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.h >new file mode 100644 >index 000000000000..f80d93a988a5 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.h >@@ -0,0 +1,53 @@ >+--- ext/gtk/gtkgstbasewidget.h >++++ ext/gtk/gtkgstbasewidget.h >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -25,6 +26,10 @@ >+ #include <gst/gst.h> >+ #include <gst/video/video.h> >+ >++#if !defined(BUILD_FOR_GTK4) >++#include <gdk/gdk.h> >++#endif >++ >+ #define GTK_GST_BASE_WIDGET(w) ((GtkGstBaseWidget *)(w)) >+ #define GTK_GST_BASE_WIDGET_CLASS(k) ((GtkGstBaseWidgetClass *)(k)) >+ #define GTK_GST_BASE_WIDGET_LOCK(w) g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock) >+@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget >+ { >+ union { >+ GtkDrawingArea drawing_area; >+-#if GTK_CHECK_VERSION(3, 15, 0) >+ GtkGLArea gl_area; >+-#endif >+ } parent; >+ >+ /* properties */ >+@@ -67,6 +70,11 @@ struct _GtkGstBaseWidget >+ GMutex lock; >+ GWeakRef element; >+ >++ /* event controllers */ >++ GtkEventController *key_controller; >++ GtkEventController *motion_controller; >++ GtkGesture *click_gesture; >++ >+ /* Pending draw idles callback */ >+ guint draw_id; >+ }; >+@@ -75,9 +83,7 @@ struct _GtkGstBaseWidgetClass >+ { >+ union { >+ GtkDrawingAreaClass drawing_area_class; >+-#if GTK_CHECK_VERSION(3, 15, 0) >+ GtkGLAreaClass gl_area_class; >+-#endif >+ } parent_class; >+ }; >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstglwidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstglwidget.c >new file mode 100644 >index 000000000000..4d31d2edbb67 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstglwidget.c >@@ -0,0 +1,53 @@ >+--- ext/gtk/gtkgstglwidget.c >++++ ext/gtk/gtkgstglwidget.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -30,12 +31,20 @@ >+ #include <gst/video/video.h> >+ >+ #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11) >++#if defined(BUILD_FOR_GTK4) >++#include <gdk/x11/gdkx.h> >++#else >+ #include <gdk/gdkx.h> >++#endif >+ #include <gst/gl/x11/gstgldisplay_x11.h> >+ #endif >+ >+ #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND) >++#if defined(BUILD_FOR_GTK4) >++#include <gdk/wayland/gdkwayland.h> >++#else >+ #include <gdk/gdkwayland.h> >++#endif >+ #include <gst/gl/wayland/gstgldisplay_wayland.h> >+ #endif >+ >+@@ -78,8 +87,7 @@ static const GLfloat vertices[] = { >+ G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA, >+ G_ADD_PRIVATE (GtkGstGLWidget) >+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0, >+- "Gtk Gst GL Widget"); >+- ); >++ "GTK Gst GL Widget")); >+ >+ static void >+ gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget) >+@@ -407,8 +415,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget) >+ >+ GST_INFO ("Created %" GST_PTR_FORMAT, priv->display); >+ >++ /* GTK4 always has alpha */ >++#if !defined(BUILD_FOR_GTK4) >+ gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget), >+ !base_widget->ignore_alpha); >++#endif >+ } >+ >+ static void >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstwidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstwidget.c >new file mode 100644 >index 000000000000..ffbddce44ff0 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstwidget.c >@@ -0,0 +1,83 @@ >+--- ext/gtk/gtkgstwidget.c >++++ ext/gtk/gtkgstwidget.c >+@@ -38,17 +38,15 @@ >+ >+ G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA); >+ >+-static gboolean >+-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >++static void >++_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr, >++ gint widget_width, gint widget_height, gpointer data) >+ { >++ GtkWidget *widget = GTK_WIDGET (da); >+ GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget; >+- guint widget_width, widget_height; >+ cairo_surface_t *surface; >+ GstVideoFrame frame; >+ >+- widget_width = gtk_widget_get_allocated_width (widget); >+- widget_height = gtk_widget_get_allocated_height (widget); >+- >+ GTK_GST_BASE_WIDGET_LOCK (gst_widget); >+ >+ /* There is not much to optimize in term of redisplay, so simply swap the >+@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >+ color.alpha = 1.0; >+ } else { >+ gtk_style_context_get_color (gtk_widget_get_style_context (widget), >+- GTK_STATE_FLAG_NORMAL, &color); >++#if !defined(BUILD_FOR_GTK4) >++ GTK_STATE_FLAG_NORMAL, >++#endif >++ &color); >+ } >+ gdk_cairo_set_source_rgba (cr, &color); >+ cairo_rectangle (cr, 0, 0, widget_width, widget_height); >+@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >+ } >+ >+ GTK_GST_BASE_WIDGET_UNLOCK (gst_widget); >++} >++ >++#if !defined(BUILD_FOR_GTK4) >++static gboolean >++gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >++{ >++ gint width = gtk_widget_get_allocated_width (widget); >++ gint height = gtk_widget_get_allocated_height (widget); >++ >++ _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL); >++ >+ return FALSE; >+ } >++#endif >+ >+ static void >+ gtk_gst_widget_finalize (GObject * object) >+@@ -171,17 +184,25 @@ static void >+ gtk_gst_widget_class_init (GtkGstWidgetClass * klass) >+ { >+ GObjectClass *gobject_klass = (GObjectClass *) klass; >++#if !defined(BUILD_FOR_GTK4) >+ GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass; >++#endif >+ >+ gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass)); >+ gobject_klass->finalize = gtk_gst_widget_finalize; >++#if !defined(BUILD_FOR_GTK4) >+ widget_klass->draw = gtk_gst_widget_draw; >++#endif >+ } >+ >+ static void >+ gtk_gst_widget_init (GtkGstWidget * widget) >+ { >+ gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget)); >++#if defined(BUILD_FOR_GTK4) >++ gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget), >++ _drawing_area_draw, NULL, NULL); >++#endif >+ } >+ >+ GtkWidget * >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_meson.build b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_meson.build >new file mode 100644 >index 000000000000..bd26b7a4eb92 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_meson.build >@@ -0,0 +1,118 @@ >+--- ext/gtk/meson.build >++++ ext/gtk/meson.build >+@@ -1,3 +1,4 @@ >++gtk_versions = [3, 4] >+ gtk_sources = [ >+ 'gstgtkbasesink.c', >+ 'gstgtksink.c', >+@@ -6,54 +7,86 @@ gtk_sources = [ >+ 'gtkgstbasewidget.c', >+ 'gtkgstwidget.c', >+ ] >++gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >++gtk_optional_deps = [] >+ >+-gtk_defines = [] >+-optional_deps = [] >++gtk4_dep = dependency('gtk4', required : get_option('gtk4')) >++gtk4_optional_deps = [] >+ >+-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >+-if gtk_dep.found() >+- # FIXME: automagic >+- if have_gstgl and gtk_dep.version().version_compare('>=3.15.0') >+- have_gtk3_gl_windowing = false >++foreach gtk_ver : gtk_versions >++ gtkv = 'gtk' + gtk_ver.to_string() >++ >++ gtk_state = get_option(gtkv) >++ if gtk_state.disabled() >++ continue >++ endif >++ >++ min_ver = gtk_ver >= 4 ? '3.99.2' : '3.24.0' >++ x11_str = gtk_ver >= 4 ? gtkv + '-x11' : 'gtk+-x11-3.0' >++ way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0' >++ lib_dep = gtk_ver >= 4 ? gtk4_dep : gtk_dep >++ >++ if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver) >++ continue >++ endif >++ >++ lib_sources = [] >++ gtk_defines = [] >++ optional_deps = [] >++ have_gtk_gl_windowing = false >+ >++ lib_sources += gtk_sources >++ >++ if have_gstgl >+ if gst_gl_have_window_x11 and gst_gl_have_platform_glx >+ # FIXME: automagic >+- gtk_x11_dep = dependency('gtk+-x11-3.0', required : false) >++ gtk_x11_dep = dependency(x11_str, required : false) >+ if gtk_x11_dep.found() >+ optional_deps += [gtk_x11_dep, gstglx11_dep] >+- have_gtk3_gl_windowing = true >++ have_gtk_gl_windowing = true >+ endif >+ endif >+ >+ if gst_gl_have_window_wayland and gst_gl_have_platform_egl >+ # FIXME: automagic >+- gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false) >++ gtk_wayland_dep = dependency(way_str, required : false) >+ if gtk_wayland_dep.found() >+ optional_deps += [gtk_wayland_dep, gstglegl_dep, gstglwayland_dep] >+- have_gtk3_gl_windowing = true >++ have_gtk_gl_windowing = true >+ endif >+ endif >++ endif >+ >+- if have_gtk3_gl_windowing >+- gtk_sources += [ >+- 'gstgtkglsink.c', >+- 'gtkgstglwidget.c', >+- ] >+- optional_deps += [gstgl_dep, gstglproto_dep] >+- gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL'] >+- endif >++ if have_gtk_gl_windowing >++ lib_sources += [ >++ 'gstgtkglsink.c', >++ 'gtkgstglwidget.c', >++ ] >++ optional_deps += [gstgl_dep, gstglproto_dep] >++ gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL'] >++ endif >++ >++ if gtk_ver == 3 >++ gtk_optional_deps = optional_deps >++ elif gtk_ver == 4 >++ gtk4_optional_deps = optional_deps >++ gtk_defines += '-DBUILD_FOR_GTK4' >++ endif >++ >++ lib_name = 'gstgtk' >++ if gtk_ver > 3 >++ lib_name += gtk_ver.to_string() >+ endif >+ >+- gstgtk = library('gstgtk', >+- gtk_sources, >++ gstgtk = library(lib_name, >++ lib_sources, >+ c_args : gst_plugins_good_args + gtk_defines, >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+- dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >++ dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >+ pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir) >+ plugins += [gstgtk] >+-endif >+- >++endforeach >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-meson__options.txt b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-meson__options.txt >new file mode 100644 >index 000000000000..8f38b59c39ae >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-meson__options.txt >@@ -0,0 +1,10 @@ >+--- meson_options.txt >++++ meson_options.txt >+@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', description : 'Digital IEEE13 >+ option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin') >+ option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin') >+ option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin') >++option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin') >+ option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin') >+ option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin') >+ option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin') >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-tests_examples_gtk_meson.build b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-tests_examples_gtk_meson.build >new file mode 100644 >index 000000000000..77215c379fa6 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-tests_examples_gtk_meson.build >@@ -0,0 +1,9 @@ >+--- tests/examples/gtk/meson.build >++++ tests/examples/gtk/meson.build >+@@ -1,5 +1,5 @@ >+ executable('gtksink', 'gtksink.c', >+- dependencies: [gst_dep, gtk_dep, optional_deps], >++ dependencies: [gst_dep, gtk_dep, gtk_optional_deps], >+ c_args: gst_plugins_good_args, >+ include_directories: [configinc], >+ install: false) >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-docs_gst__plugins__cache.json b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-docs_gst__plugins__cache.json >new file mode 100644 >index 000000000000..9e0e65f51045 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-docs_gst__plugins__cache.json >@@ -0,0 +1,161 @@ >+--- docs/gst_plugins_cache.json.orig 2022-06-15 22:36:22 UTC >++++ docs/gst_plugins_cache.json >+@@ -7087,10 +7087,10 @@ >+ "url": "Unknown package origin" >+ }, >+ "gtk": { >+- "description": "Gtk+ sink", >++ "description": "GTK sink", >+ "elements": { >+ "gtkglsink": { >+- "author": "Matthew Waters <matthew@centricular.com>", >++ "author": "Matthew Waters <matthew@centricular.com>, RafaÅ DziÄgiel <rafostar.github@gmail.com>", >+ "description": "A video sink that renders to a GtkWidget using OpenGL", >+ "hierarchy": [ >+ "GstGtkGLSink", >+@@ -7106,7 +7106,7 @@ >+ "GstNavigation" >+ ], >+ "klass": "Sink/Video", >+- "long-name": "Gtk GL Video Sink", >++ "long-name": "GTK GL Video Sink", >+ "pad-templates": { >+ "sink": { >+ "caps": "video/x-raw(memory:GLMemory):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >+@@ -7147,7 +7147,7 @@ >+ "GstNavigation" >+ ], >+ "klass": "Sink/Video", >+- "long-name": "Gtk Video Sink", >++ "long-name": "GTK Video Sink", >+ "pad-templates": { >+ "sink": { >+ "caps": "video/x-raw:\n format: { BGRx, BGRA }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >+@@ -7224,6 +7224,127 @@ >+ "default": "0/1", >+ "max": "2147483647/1", >+ "min": "0/2147483647", >++ "mutable": "null", >++ "readable": true, >++ "type": "GstFraction", >++ "writable": true >++ }, >++ "widget": { >++ "blurb": "The GtkWidget to place in the widget hierarchy (must only be get from the GTK main thread)", >++ "conditionally-available": false, >++ "construct": false, >++ "construct-only": false, >++ "controllable": false, >++ "mutable": "null", >++ "readable": true, >++ "type": "GtkWidget", >++ "writable": false >++ } >++ } >++ } >++ }, >++ "package": "GStreamer Good Plug-ins", >++ "source": "gst-plugins-good", >++ "tracers": {}, >++ "url": "Unknown package origin" >++ }, >++ "gtk4": { >++ "description": "GTK4 sink", >++ "elements": { >++ "gtk4glsink": { >++ "author": "Matthew Waters <matthew@centricular.com>, RafaÅ DziÄgiel <rafostar.github@gmail.com>", >++ "description": "A video sink that renders to a GtkWidget using OpenGL", >++ "hierarchy": [ >++ "GstGtkGLSink", >++ "GstGtkBaseSink", >++ "GstVideoSink", >++ "GstBaseSink", >++ "GstElement", >++ "GstObject", >++ "GInitiallyUnowned", >++ "GObject" >++ ], >++ "interfaces": [ >++ "GstNavigation" >++ ], >++ "klass": "Sink/Video", >++ "long-name": "GTK4 GL Video Sink", >++ "pad-templates": { >++ "sink": { >++ "caps": "video/x-raw(memory:GLMemory):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition):\n format: RGBA\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >++ "direction": "sink", >++ "presence": "always" >++ } >++ }, >++ "rank": "none" >++ }, >++ "gtk4sink": { >++ "author": "Matthew Waters <matthew@centricular.com>", >++ "description": "A video sink that renders to a GtkWidget", >++ "hierarchy": [ >++ "GstGtkSink", >++ "GstGtkBaseSink", >++ "GstVideoSink", >++ "GstBaseSink", >++ "GstElement", >++ "GstObject", >++ "GInitiallyUnowned", >++ "GObject" >++ ], >++ "interfaces": [ >++ "GstNavigation" >++ ], >++ "klass": "Sink/Video", >++ "long-name": "GTK4 Video Sink", >++ "pad-templates": { >++ "sink": { >++ "caps": "video/x-raw:\n format: { BGRx, BGRA }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", >++ "direction": "sink", >++ "presence": "always" >++ } >++ }, >++ "rank": "none" >++ } >++ }, >++ "filename": "gstgtk4", >++ "license": "LGPL", >++ "other-types": { >++ "GstGtkBaseSink": { >++ "hierarchy": [ >++ "GstGtkBaseSink", >++ "GstVideoSink", >++ "GstBaseSink", >++ "GstElement", >++ "GstObject", >++ "GInitiallyUnowned", >++ "GObject" >++ ], >++ "interfaces": [ >++ "GstNavigation" >++ ], >++ "kind": "object", >++ "properties": { >++ "force-aspect-ratio": { >++ "blurb": "When enabled, scaling will respect original aspect ratio", >++ "conditionally-available": false, >++ "construct": false, >++ "construct-only": false, >++ "controllable": false, >++ "default": "true", >++ "mutable": "null", >++ "readable": true, >++ "type": "gboolean", >++ "writable": true >++ }, >++ "pixel-aspect-ratio": { >++ "blurb": "The pixel aspect ratio of the device", >++ "conditionally-available": false, >++ "construct": false, >++ "construct-only": false, >++ "controllable": false, >++ "default": "0/1", >++ "max": "2147483647/1", >++ "min": "0/1", >+ "mutable": "null", >+ "readable": true, >+ "type": "GstFraction", >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.c >new file mode 100644 >index 000000000000..425d2b54ffbf >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.c >@@ -0,0 +1,192 @@ >+--- ext/gtk/gstgtkbasesink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkbasesink.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -80,7 +81,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_ >+ G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION, >+ gst_gtk_base_sink_navigation_interface_init); >+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink, >+- "gtkbasesink", 0, "Gtk Video Sink base class")); >++ "gtkbasesink", 0, "GTK Video Sink base class")); >+ >+ >+ static void >+@@ -100,7 +101,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >+ gobject_class->get_property = gst_gtk_base_sink_get_property; >+ >+ g_object_class_install_property (gobject_class, PROP_WIDGET, >+- g_param_spec_object ("widget", "Gtk Widget", >++ g_param_spec_object ("widget", "GTK Widget", >+ "The GtkWidget to place in the widget hierarchy " >+ "(must only be get from the GTK main thread)", >+ GTK_TYPE_WIDGET, >+@@ -135,10 +136,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl >+ G_MAXINT, G_MAXINT, 1, DEFAULT_VIDEO_PAR_N, DEFAULT_VIDEO_PAR_D, >+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >++ /* Disabling alpha was removed in GTK4 */ >++#if !defined(BUILD_FOR_GTK4) >+ g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA, >+ g_param_spec_boolean ("ignore-alpha", "Ignore Alpha", >+ "When enabled, alpha will be ignored and converted to black", >+ DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >++#endif >+ >+ gobject_class->finalize = gst_gtk_base_sink_finalize; >+ >+@@ -169,6 +173,8 @@ gst_gtk_base_sink_finalize (GObject * object) >+ { >+ GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object); >+ >++ GST_DEBUG ("finalizing base sink"); >++ >+ GST_OBJECT_LOCK (gtk_sink); >+ if (gtk_sink->window && gtk_sink->window_destroy_id) >+ g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id); >+@@ -193,6 +199,14 @@ static void >+ window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink) >+ { >+ GST_OBJECT_LOCK (gtk_sink); >++ if (gtk_sink->widget) { >++ if (gtk_sink->widget_destroy_id) { >++ g_signal_handler_disconnect (gtk_sink->widget, >++ gtk_sink->widget_destroy_id); >++ gtk_sink->widget_destroy_id = 0; >++ } >++ g_clear_object (>k_sink->widget); >++ } >+ gtk_sink->window = NULL; >+ GST_OBJECT_UNLOCK (gtk_sink); >+ } >+@@ -205,7 +219,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >+ >+ /* Ensure GTK is initialized, this has no side effect if it was already >+ * initialized. Also, we do that lazily, so the application can be first */ >+- if (!gtk_init_check (NULL, NULL)) { >++ if (!gtk_init_check ( >++#if !defined(BUILD_FOR_GTK4) >++ NULL, NULL >++#endif >++ )) { >+ GST_INFO_OBJECT (gtk_sink, "Could not ensure GTK initialization."); >+ return NULL; >+ } >+@@ -224,9 +242,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin >+ g_object_bind_property (gtk_sink, "video-aspect-ratio-override", >+ gtk_sink->widget, "video-aspect-ratio-override", >+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >++#if !defined(BUILD_FOR_GTK4) >+ gtk_sink->bind_ignore_alpha = >+ g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget, >+ "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); >++#endif >+ >+ /* Take the floating ref, other wise the destruction of the container will >+ * make this widget disappear possibly before we are done. */ >+@@ -372,6 +392,9 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >+ GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >+ GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink); >+ GtkWidget *toplevel; >++#if defined(BUILD_FOR_GTK4) >++ GtkRoot *root; >++#endif >+ >+ if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) { >+ GST_ERROR_OBJECT (bsink, "Could not ensure GTK initialization."); >+@@ -380,19 +403,47 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink) >+ >+ /* After this point, gtk_sink->widget will always be set */ >+ >++#if defined(BUILD_FOR_GTK4) >++ root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget)); >++ if (!GTK_IS_ROOT (root)) { >++ GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget)); >++ if (parent) { >++ GtkWidget *temp_parent; >++ while ((temp_parent = gtk_widget_get_parent (parent))) >++ parent = temp_parent; >++ } >++ toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget); >++#else >+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget)); >+ if (!gtk_widget_is_toplevel (toplevel)) { >++#endif >+ /* sanity check */ >+ g_assert (klass->window_title); >+ >+ /* User did not add widget its own UI, let's popup a new GtkWindow to >+ * make gst-launch-1.0 work. */ >+- gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); >++ gst_sink->window = gtk_window_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WINDOW_TOPLEVEL >++#endif >++ ); >+ gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480); >+ gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title); >+- gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel); >+- gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy", >+- G_CALLBACK (window_destroy_cb), gst_sink); >++ >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_set_child (GTK_WINDOW ( >++#else >++ gtk_container_add (GTK_CONTAINER ( >++#endif >++ gst_sink->window), toplevel); >++ >++ gst_sink->window_destroy_id = g_signal_connect ( >++#if defined(BUILD_FOR_GTK4) >++ GTK_WINDOW (gst_sink->window), >++#else >++ gst_sink->window, >++#endif >++ "destroy", G_CALLBACK (window_destroy_cb), gst_sink); >+ } >+ >+ return TRUE; >+@@ -411,7 +462,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink) >+ GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink); >+ >+ if (gst_sink->window) { >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_destroy (GTK_WINDOW (gst_sink->window)); >++#else >+ gtk_widget_destroy (gst_sink->window); >++#endif >+ gst_sink->window = NULL; >+ gst_sink->widget = NULL; >+ } >+@@ -432,10 +487,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink) >+ } >+ >+ static void >+-gst_gtk_widget_show_all_and_unref (GtkWidget * widget) >++gst_gtk_window_show_all_and_unref (GtkWidget * window) >+ { >+- gtk_widget_show_all (widget); >+- g_object_unref (widget); >++#if defined(BUILD_FOR_GTK4) >++ gtk_window_present (GTK_WINDOW (window)); >++#else >++ gtk_widget_show_all (window); >++#endif >++ g_object_unref (window); >+ } >+ >+ static GstStateChangeReturn >+@@ -463,7 +522,7 @@ gst_gtk_base_sink_change_state (GstElement * element, >+ GST_OBJECT_UNLOCK (gtk_sink); >+ >+ if (window) >+- gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref, >++ gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref, >+ window); >+ >+ break; >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.h b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.h >new file mode 100644 >index 000000000000..2c5047cb0c53 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.h >@@ -0,0 +1,31 @@ >+--- ext/gtk/gstgtkbasesink.h.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkbasesink.h >+@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void); >+ struct _GstGtkBaseSink >+ { >+ /* <private> */ >+- GstVideoSink parent; >++ GstVideoSink parent; >+ >+- GstVideoInfo v_info; >++ GstVideoInfo v_info; >+ >+ GtkGstBaseWidget *widget; >+ >+ /* properties */ >+- gboolean force_aspect_ratio; >++ gboolean force_aspect_ratio; >+ GBinding *bind_aspect_ratio; >+ >+ gint par_n; >+@@ -73,8 +73,8 @@ struct _GstGtkBaseSink >+ GBinding *bind_ignore_alpha; >+ >+ GtkWidget *window; >+- gulong widget_destroy_id; >+- gulong window_destroy_id; >++ gulong widget_destroy_id; >++ gulong window_destroy_id; >+ }; >+ >+ /** >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.c >new file mode 100644 >index 000000000000..457f6e8e553e >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.c >@@ -0,0 +1,186 @@ >+--- ext/gtk/gstgtkglsink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtkglsink.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -23,6 +24,11 @@ >+ * @title: gtkglsink >+ */ >+ >++/** >++ * SECTION:element-gtk4glsink >++ * @title: gtk4glsink >++ */ >++ >+ #ifdef HAVE_CONFIG_H >+ #include "config.h" >+ #endif >+@@ -30,6 +36,7 @@ >+ #include <gst/gl/gstglfuncs.h> >+ #include <gst/video/gstvideoaffinetransformationmeta.h> >+ >++#include "gtkconfig.h" >+ #include "gstgtkglsink.h" >+ #include "gtkgstglwidget.h" >+ >+@@ -65,7 +72,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template = >+ #define gst_gtk_gl_sink_parent_class parent_class >+ G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink, >+ GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink, >+- "gtkglsink", 0, "Gtk GL Video Sink")); >++ GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink")); >+ GST_ELEMENT_REGISTER_DEFINE (gtkglsink, "gtkglsink", GST_RANK_NONE, >+ GST_TYPE_GTK_GL_SINK); >+ >+@@ -101,7 +108,7 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >+ gstbasesink_class->event = gst_gtk_gl_sink_event; >+ >+ gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new; >+- gstgtkbasesink_class->window_title = "Gtk+ GL renderer"; >++ gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer"; >+ >+ /** >+ * gtkglsink:rotate-method: >+@@ -117,9 +124,11 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass) >+ GST_TYPE_VIDEO_ORIENTATION_METHOD, GST_VIDEO_ORIENTATION_IDENTITY, >+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >+- gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink", >++ gst_element_class_set_metadata (gstelement_class, >++ GTKCONFIG_NAME " GL Video Sink", >+ "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL", >+- "Matthew Waters <matthew@centricular.com>"); >++ "Matthew Waters <matthew@centricular.com>, " >++ "RafaÅ DziÄgiel <rafostar.github@gmail.com>"); >+ >+ gst_element_class_add_static_pad_template (gstelement_class, >+ &gst_gtk_gl_sink_template); >+@@ -202,16 +211,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery * >+ } >+ >+ static void >+-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle, >+- GstGtkGLSink * gtk_sink) >++_size_changed_cb (GtkWidget * widget, gint width, >++ gint height, GstGtkGLSink * gtk_sink) >+ { >+- gint scale_factor, width, height; >+ gboolean reconfigure; >+ >+- scale_factor = gtk_widget_get_scale_factor (widget); >+- width = scale_factor * gtk_widget_get_allocated_width (widget); >+- height = scale_factor * gtk_widget_get_allocated_height (widget); >++ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ >++ /* Ignore size changes before widget is negotiated >++ * we are going to queue a resize after negotiation */ >++ if (!base_widget->negotiated) >++ return; >++ >+ GST_OBJECT_LOCK (gtk_sink); >+ reconfigure = >+ (width != gtk_sink->display_width || height != gtk_sink->display_height); >+@@ -220,7 +231,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >+ GST_OBJECT_UNLOCK (gtk_sink); >+ >+ if (reconfigure) { >+- GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad."); >++ GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad"); >+ gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad, >+ gst_event_new_reconfigure ()); >+ } >+@@ -229,9 +240,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r >+ static void >+ destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink) >+ { >+- if (gtk_sink->size_allocate_sig_handler) { >+- g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler); >+- gtk_sink->size_allocate_sig_handler = 0; >++ if (gtk_sink->widget_resize_sig_handler) { >++ g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >+ } >+ >+ if (gtk_sink->widget_destroy_sig_handler) { >+@@ -254,29 +265,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink) >+ gst_widget = GTK_GST_GL_WIDGET (base_sink->widget); >+ >+ /* Track the allocation size */ >+- gtk_sink->size_allocate_sig_handler = >+- g_signal_connect (gst_widget, "size-allocate", >+- G_CALLBACK (_size_changed_cb), gtk_sink); >++ if (!gtk_sink->widget_resize_sig_handler) { >++ gtk_sink->widget_resize_sig_handler = >++ g_signal_connect (gst_widget, "resize", >++ G_CALLBACK (_size_changed_cb), gtk_sink); >++ } >+ >+- gtk_sink->widget_destroy_sig_handler = >+- g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >+- gtk_sink); >++ if (!gtk_sink->widget_destroy_sig_handler) { >++ gtk_sink->widget_destroy_sig_handler = >++ g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb), >++ gtk_sink); >++ } >+ >+- _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink); >+- >+ if (!gtk_gst_gl_widget_init_winsys (gst_widget)) { >+ GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >+- "Failed to initialize OpenGL with Gtk"), (NULL)); >++ "Failed to initialize OpenGL with GTK"), (NULL)); >+ return FALSE; >+ } >+ >+- gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >+- gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >+- gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >++ if (!gtk_sink->display) >++ gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget); >++ if (!gtk_sink->context) >++ gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget); >++ if (!gtk_sink->gtk_context) >++ gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget); >+ >+ if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) { >+ GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", >+- "Failed to retrieve OpenGL context from Gtk"), (NULL)); >++ "Failed to retrieve OpenGL context from GTK"), (NULL)); >+ return FALSE; >+ } >+ >+@@ -290,7 +306,14 @@ static gboolean >+ gst_gtk_gl_sink_stop (GstBaseSink * bsink) >+ { >+ GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink); >++ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink); >+ >++ if (gtk_sink->widget_resize_sig_handler) { >++ g_signal_handler_disconnect (base_sink->widget, >++ gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >++ } >++ >+ if (gtk_sink->display) { >+ gst_object_unref (gtk_sink->display); >+ gtk_sink->display = NULL; >+@@ -432,10 +455,10 @@ gst_gtk_gl_sink_finalize (GObject * object) >+ GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object); >+ GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object); >+ >+- if (gtk_sink->size_allocate_sig_handler) { >++ if (gtk_sink->widget_resize_sig_handler) { >+ g_signal_handler_disconnect (base_sink->widget, >+- gtk_sink->size_allocate_sig_handler); >+- gtk_sink->size_allocate_sig_handler = 0; >++ gtk_sink->widget_resize_sig_handler); >++ gtk_sink->widget_resize_sig_handler = 0; >+ } >+ >+ if (gtk_sink->widget_destroy_sig_handler) { >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.h b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.h >new file mode 100644 >index 000000000000..9ab854d71904 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.h >@@ -0,0 +1,11 @@ >+--- ext/gtk/gstgtkglsink.h >++++ ext/gtk/gstgtkglsink.h >+@@ -57,7 +57,7 @@ struct _GstGtkGLSink >+ gint display_width; >+ gint display_height; >+ >+- gulong size_allocate_sig_handler; >++ gulong widget_resize_sig_handler; >+ gulong widget_destroy_sig_handler; >+ }; >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtksink.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtksink.c >new file mode 100644 >index 000000000000..851a5767e04f >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtksink.c >@@ -0,0 +1,40 @@ >+--- ext/gtk/gstgtksink.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstgtksink.c >+@@ -19,15 +19,22 @@ >+ */ >+ >+ /** >+- * SECTION:element-gtkgstsink >+- * @title: gtkgstsink >++ * SECTION:element-gtksink >++ * @title: gtksink >+ * >+ */ >+ >++/** >++ * SECTION:element-gtk4sink >++ * @title: gtk4sink >++ * >++ */ >++ >+ #ifdef HAVE_CONFIG_H >+ #include "config.h" >+ #endif >+ >++#include "gtkconfig.h" >+ #include "gtkgstwidget.h" >+ #include "gstgtksink.h" >+ >+@@ -64,9 +71,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass) >+ base_class = (GstGtkBaseSinkClass *) klass; >+ >+ base_class->create_widget = gtk_gst_widget_new; >+- base_class->window_title = "Gtk+ Cairo renderer"; >++ base_class->window_title = GTKCONFIG_NAME " Cairo Renderer"; >+ >+- gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink", >++ gst_element_class_set_metadata (gstelement_class, >++ GTKCONFIG_NAME " Video Sink", >+ "Sink/Video", "A video sink that renders to a GtkWidget", >+ "Matthew Waters <matthew@centricular.com>"); >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstplugin.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstplugin.c >new file mode 100644 >index 000000000000..0e187942b8ae >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstplugin.c >@@ -0,0 +1,45 @@ >+--- ext/gtk/gstplugin.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gstplugin.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -22,8 +23,10 @@ >+ #include "config.h" >+ #endif >+ >++#include "gtkconfig.h" >+ #include "gstgtksink.h" >+-#if defined(HAVE_GTK3_GL) >++ >++#if defined(HAVE_GTK_GL) >+ #include "gstgtkglsink.h" >+ #endif >+ >+@@ -32,10 +35,10 @@ plugin_init (GstPlugin * plugin) >+ { >+ gboolean ret = FALSE; >+ >+- ret |= GST_ELEMENT_REGISTER (gtksink, plugin); >++ ret |= GST_ELEMENT_REGISTER (GTKCONFIG_SINK, plugin); >+ >+-#if defined(HAVE_GTK3_GL) >+- ret |= GST_ELEMENT_REGISTER (gtkglsink, plugin); >++#if defined(HAVE_GTK_GL) >++ ret |= GST_ELEMENT_REGISTER (GTKCONFIG_GLSINK, plugin); >+ #endif >+ >+ return ret; >+@@ -43,7 +46,6 @@ plugin_init (GstPlugin * plugin) >+ >+ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, >+ GST_VERSION_MINOR, >+- gtk, >+- "Gtk+ sink", >++ GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink", >+ plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME, >+ GST_PACKAGE_ORIGIN) >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkconfig.h b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkconfig.h >new file mode 100644 >index 000000000000..315feb14f7ff >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkconfig.h >@@ -0,0 +1,34 @@ >+--- /dev/null >++++ ext/gtk/gtkconfig.h >+@@ -0,0 +1,31 @@ >++/* >++ * GStreamer >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >++ * >++ * This library is free software; you can redistribute it and/or >++ * modify it under the terms of the GNU Library General Public >++ * License as published by the Free Software Foundation; either >++ * version 2 of the License, or (at your option) any later version. >++ * >++ * This library is distributed in the hope that it will be useful, >++ * but WITHOUT ANY WARRANTY; without even the implied warranty of >++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >++ * Library General Public License for more details. >++ * >++ * You should have received a copy of the GNU Library General Public >++ * License along with this library; if not, write to the >++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, >++ * Boston, MA 02110-1301, USA. >++ */ >++ >++#if defined(BUILD_FOR_GTK4) >++#define GTKCONFIG_PLUGIN gtk4 >++#define GTKCONFIG_NAME "GTK4" >++#define GTKCONFIG_SINK "gtk4sink" >++#define GTKCONFIG_GLSINK "gtk4glsink" >++#else >++#define GTKCONFIG_PLUGIN gtk >++#define GTKCONFIG_NAME "GTK" >++#define GTKCONFIG_SINK "gtksink" >++#define GTKCONFIG_GLSINK "gtkglsink" >++#endif >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.c >new file mode 100644 >index 000000000000..2ed2bae44ecf >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.c >@@ -0,0 +1,257 @@ >+--- ext/gtk/gtkgstbasewidget.c.orig 2022-06-15 22:36:22 UTC >++++ ext/gtk/gtkgstbasewidget.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -208,7 +209,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * >+ *natural = video_height; >+ } >+ >++#if defined(BUILD_FOR_GTK4) >+ static void >++gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation, >++ gint for_size, gint * min, gint * natural, >++ gint * minimum_baseline, gint * natural_baseline) >++{ >++ if (orientation == GTK_ORIENTATION_HORIZONTAL) >++ gtk_gst_base_widget_get_preferred_width (widget, min, natural); >++ else >++ gtk_gst_base_widget_get_preferred_height (widget, min, natural); >++ >++ *minimum_baseline = -1; >++ *natural_baseline = -1; >++} >++#endif >++ >++static void >+ gtk_gst_base_widget_set_property (GObject * object, guint prop_id, >+ const GValue * value, GParamSpec * pspec) >+ { >+@@ -281,22 +298,46 @@ _gdk_key_to_navigation_string (guint keyval) >+ } >+ } >+ >++static GdkEvent * >++_get_current_event (GtkEventController * controller) >++{ >++#if defined(BUILD_FOR_GTK4) >++ return gtk_event_controller_get_current_event (controller); >++#else >++ return gtk_get_current_event (); >++#endif >++} >++ >++static void >++_gdk_event_free (GdkEvent * event) >++{ >++#if !defined(BUILD_FOR_GTK4) >++ if (event) >++ gdk_event_free (event); >++#endif >++} >++ >+ static gboolean >+-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event) >++gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller, >++ guint keyval, guint keycode, GdkModifierType state) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >+- const gchar *str = _gdk_key_to_navigation_string (event->keyval); >+- const gchar *key_type = >+- event->type == GDK_KEY_PRESS ? "key-press" : "key-release"; >++ GdkEvent *event = _get_current_event (controller); >++ const gchar *str = _gdk_key_to_navigation_string (keyval); >+ >+- if (!str) >+- str = event->string; >+- >+- gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >++ if (str) { >++ const gchar *key_type = >++ gdk_event_get_event_type (event) == >++ GDK_KEY_PRESS ? "key-press" : "key-release"; >++ gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str); >++ } >++ _gdk_event_free (event); >+ } >+ g_object_unref (element); >+ } >+@@ -371,18 +412,38 @@ gtk_gst_base_widget_display_size_to_stream_size (GtkGs >+ } >+ >+ static gboolean >+-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event) >++gtk_gst_base_widget_button_event ( >++#if defined(BUILD_FOR_GTK4) >++ GtkGestureClick * gesture, >++#else >++ GtkGestureMultiPress * gesture, >++#endif >++ gint n_press, gdouble x, gdouble y) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >++ GdkEvent *event = _get_current_event (controller); >+ const gchar *key_type = >+- event->type == >+- GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release"; >++ gdk_event_get_event_type (event) == GDK_BUTTON_PRESS >++ ? "mouse-button-press" : "mouse-button-release"; >++#if !defined(BUILD_FOR_GTK4) >++ guint button; >++ gdk_event_get_button (event, &button); >++#endif >+ gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type, >+- event->button, event->x, event->y); >++#if defined(BUILD_FOR_GTK4) >++ /* Gesture is set to ignore other buttons so we do not have to check */ >++ GDK_BUTTON_PRIMARY, >++#else >++ button, >++#endif >++ event->x, event->y); >++ _gdk_event_free (event); >+ } >+ g_object_unref (element); >+ } >+@@ -391,15 +452,18 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, >+ } >+ >+ static gboolean >+-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event) >++gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller, >++ gdouble x, gdouble y) >+ { >++ GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller); >++ GtkWidget *widget = gtk_event_controller_get_widget (controller); >+ GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget); >+ GstElement *element; >+ >+ if ((element = g_weak_ref_get (&base_widget->element))) { >+ if (GST_IS_NAVIGATION (element)) { >+ gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move", >+- 0, event->x, event->y); >++ 0, x, y); >+ } >+ g_object_unref (element); >+ } >+@@ -490,24 +554,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass >+ "When enabled, alpha will be ignored and converted to black", >+ DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); >+ >++#if defined(BUILD_FOR_GTK4) >++ widget_klass->measure = gtk_gst_base_widget_measure; >++#else >+ widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width; >+ widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height; >+- widget_klass->key_press_event = gtk_gst_base_widget_key_event; >+- widget_klass->key_release_event = gtk_gst_base_widget_key_event; >+- widget_klass->button_press_event = gtk_gst_base_widget_button_event; >+- widget_klass->button_release_event = gtk_gst_base_widget_button_event; >+- widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event; >+- widget_klass->scroll_event = gtk_gst_base_widget_scroll_event; >++#endif >+ >+ GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0, >+- "Gtk Video Base Widget"); >++ "GTK Video Base Widget"); >+ } >+ >+ void >+ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >+ { >+- int event_mask; >+- >+ widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO; >+ widget->par_n = DEFAULT_DISPLAY_PAR_N; >+ widget->par_d = DEFAULT_DISPLAY_PAR_D; >+@@ -521,20 +581,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget) >+ g_weak_ref_init (&widget->element, NULL); >+ g_mutex_init (&widget->lock); >+ >++ widget->key_controller = gtk_event_controller_key_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WIDGET (widget) >++#endif >++ ); >++ g_signal_connect (widget->key_controller, "key-pressed", >++ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >++ g_signal_connect (widget->key_controller, "key-released", >++ G_CALLBACK (gtk_gst_base_widget_key_event), NULL); >++ >++ widget->motion_controller = gtk_event_controller_motion_new ( >++#if !defined(BUILD_FOR_GTK4) >++ GTK_WIDGET (widget) >++#endif >++ ); >++ g_signal_connect (widget->motion_controller, "motion", >++ G_CALLBACK (gtk_gst_base_widget_motion_event), NULL); >++ >++ widget->click_gesture = >++#if defined(BUILD_FOR_GTK4) >++ gtk_gesture_click_new (); >++#else >++ gtk_gesture_multi_press_new (GTK_WIDGET (widget)); >++#endif >++ g_signal_connect (widget->click_gesture, "pressed", >++ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >++ g_signal_connect (widget->click_gesture, "released", >++ G_CALLBACK (gtk_gst_base_widget_button_event), NULL); >++ >++#if defined(BUILD_FOR_GTK4) >++ /* Otherwise widget in grid will appear as a 1x1px >++ * video which might be misleading for users */ >++ gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE); >++ gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE); >++ >++ gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE); >++ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture), >++ GDK_BUTTON_PRIMARY); >++ >++ gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller); >++ gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller); >++ gtk_widget_add_controller (GTK_WIDGET (widget), >++ GTK_EVENT_CONTROLLER (widget->click_gesture)); >++#endif >++ >+ gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE); >+- event_mask = gtk_widget_get_events (GTK_WIDGET (widget)); >+- event_mask |= GDK_KEY_PRESS_MASK >+- | GDK_KEY_RELEASE_MASK >+- | GDK_BUTTON_PRESS_MASK >+- | GDK_BUTTON_RELEASE_MASK >+- | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_SCROLL_MASK; >+- gtk_widget_set_events (GTK_WIDGET (widget), event_mask); >+ } >+ >+ void >+ gtk_gst_base_widget_finalize (GObject * object) >+ { >+ GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object); >++ >++ /* GTK4 takes ownership of EventControllers >++ * while GTK3 still needs manual unref */ >++#if !defined(BUILD_FOR_GTK4) >++ g_object_unref (widget->key_controller); >++ g_object_unref (widget->motion_controller); >++ g_object_unref (widget->click_gesture); >++#endif >+ >+ gst_buffer_replace (&widget->pending_buffer, NULL); >+ gst_buffer_replace (&widget->buffer, NULL); >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.h b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.h >new file mode 100644 >index 000000000000..f80d93a988a5 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.h >@@ -0,0 +1,53 @@ >+--- ext/gtk/gtkgstbasewidget.h >++++ ext/gtk/gtkgstbasewidget.h >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -25,6 +26,10 @@ >+ #include <gst/gst.h> >+ #include <gst/video/video.h> >+ >++#if !defined(BUILD_FOR_GTK4) >++#include <gdk/gdk.h> >++#endif >++ >+ #define GTK_GST_BASE_WIDGET(w) ((GtkGstBaseWidget *)(w)) >+ #define GTK_GST_BASE_WIDGET_CLASS(k) ((GtkGstBaseWidgetClass *)(k)) >+ #define GTK_GST_BASE_WIDGET_LOCK(w) g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock) >+@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget >+ { >+ union { >+ GtkDrawingArea drawing_area; >+-#if GTK_CHECK_VERSION(3, 15, 0) >+ GtkGLArea gl_area; >+-#endif >+ } parent; >+ >+ /* properties */ >+@@ -67,6 +70,11 @@ struct _GtkGstBaseWidget >+ GMutex lock; >+ GWeakRef element; >+ >++ /* event controllers */ >++ GtkEventController *key_controller; >++ GtkEventController *motion_controller; >++ GtkGesture *click_gesture; >++ >+ /* Pending draw idles callback */ >+ guint draw_id; >+ }; >+@@ -75,9 +83,7 @@ struct _GtkGstBaseWidgetClass >+ { >+ union { >+ GtkDrawingAreaClass drawing_area_class; >+-#if GTK_CHECK_VERSION(3, 15, 0) >+ GtkGLAreaClass gl_area_class; >+-#endif >+ } parent_class; >+ }; >+ >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstglwidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstglwidget.c >new file mode 100644 >index 000000000000..4d31d2edbb67 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstglwidget.c >@@ -0,0 +1,53 @@ >+--- ext/gtk/gtkgstglwidget.c >++++ ext/gtk/gtkgstglwidget.c >+@@ -1,6 +1,7 @@ >+ /* >+ * GStreamer >+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> >++ * Copyright (C) 2020 RafaÅ DziÄgiel <rafostar.github@gmail.com> >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+@@ -30,12 +31,20 @@ >+ #include <gst/video/video.h> >+ >+ #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11) >++#if defined(BUILD_FOR_GTK4) >++#include <gdk/x11/gdkx.h> >++#else >+ #include <gdk/gdkx.h> >++#endif >+ #include <gst/gl/x11/gstgldisplay_x11.h> >+ #endif >+ >+ #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND) >++#if defined(BUILD_FOR_GTK4) >++#include <gdk/wayland/gdkwayland.h> >++#else >+ #include <gdk/gdkwayland.h> >++#endif >+ #include <gst/gl/wayland/gstgldisplay_wayland.h> >+ #endif >+ >+@@ -78,8 +87,7 @@ static const GLfloat vertices[] = { >+ G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA, >+ G_ADD_PRIVATE (GtkGstGLWidget) >+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0, >+- "Gtk Gst GL Widget"); >+- ); >++ "GTK Gst GL Widget")); >+ >+ static void >+ gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget) >+@@ -407,8 +415,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget) >+ >+ GST_INFO ("Created %" GST_PTR_FORMAT, priv->display); >+ >++ /* GTK4 always has alpha */ >++#if !defined(BUILD_FOR_GTK4) >+ gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget), >+ !base_widget->ignore_alpha); >++#endif >+ } >+ >+ static void >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstwidget.c b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstwidget.c >new file mode 100644 >index 000000000000..ffbddce44ff0 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstwidget.c >@@ -0,0 +1,83 @@ >+--- ext/gtk/gtkgstwidget.c >++++ ext/gtk/gtkgstwidget.c >+@@ -38,17 +38,15 @@ >+ >+ G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA); >+ >+-static gboolean >+-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >++static void >++_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr, >++ gint widget_width, gint widget_height, gpointer data) >+ { >++ GtkWidget *widget = GTK_WIDGET (da); >+ GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget; >+- guint widget_width, widget_height; >+ cairo_surface_t *surface; >+ GstVideoFrame frame; >+ >+- widget_width = gtk_widget_get_allocated_width (widget); >+- widget_height = gtk_widget_get_allocated_height (widget); >+- >+ GTK_GST_BASE_WIDGET_LOCK (gst_widget); >+ >+ /* There is not much to optimize in term of redisplay, so simply swap the >+@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >+ color.alpha = 1.0; >+ } else { >+ gtk_style_context_get_color (gtk_widget_get_style_context (widget), >+- GTK_STATE_FLAG_NORMAL, &color); >++#if !defined(BUILD_FOR_GTK4) >++ GTK_STATE_FLAG_NORMAL, >++#endif >++ &color); >+ } >+ gdk_cairo_set_source_rgba (cr, &color); >+ cairo_rectangle (cr, 0, 0, widget_width, widget_height); >+@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >+ } >+ >+ GTK_GST_BASE_WIDGET_UNLOCK (gst_widget); >++} >++ >++#if !defined(BUILD_FOR_GTK4) >++static gboolean >++gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr) >++{ >++ gint width = gtk_widget_get_allocated_width (widget); >++ gint height = gtk_widget_get_allocated_height (widget); >++ >++ _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL); >++ >+ return FALSE; >+ } >++#endif >+ >+ static void >+ gtk_gst_widget_finalize (GObject * object) >+@@ -171,17 +184,25 @@ static void >+ gtk_gst_widget_class_init (GtkGstWidgetClass * klass) >+ { >+ GObjectClass *gobject_klass = (GObjectClass *) klass; >++#if !defined(BUILD_FOR_GTK4) >+ GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass; >++#endif >+ >+ gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass)); >+ gobject_klass->finalize = gtk_gst_widget_finalize; >++#if !defined(BUILD_FOR_GTK4) >+ widget_klass->draw = gtk_gst_widget_draw; >++#endif >+ } >+ >+ static void >+ gtk_gst_widget_init (GtkGstWidget * widget) >+ { >+ gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget)); >++#if defined(BUILD_FOR_GTK4) >++ gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget), >++ _drawing_area_draw, NULL, NULL); >++#endif >+ } >+ >+ GtkWidget * >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_meson.build b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_meson.build >new file mode 100644 >index 000000000000..bd26b7a4eb92 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_meson.build >@@ -0,0 +1,118 @@ >+--- ext/gtk/meson.build >++++ ext/gtk/meson.build >+@@ -1,3 +1,4 @@ >++gtk_versions = [3, 4] >+ gtk_sources = [ >+ 'gstgtkbasesink.c', >+ 'gstgtksink.c', >+@@ -6,54 +7,86 @@ gtk_sources = [ >+ 'gtkgstbasewidget.c', >+ 'gtkgstwidget.c', >+ ] >++gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >++gtk_optional_deps = [] >+ >+-gtk_defines = [] >+-optional_deps = [] >++gtk4_dep = dependency('gtk4', required : get_option('gtk4')) >++gtk4_optional_deps = [] >+ >+-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) >+-if gtk_dep.found() >+- # FIXME: automagic >+- if have_gstgl and gtk_dep.version().version_compare('>=3.15.0') >+- have_gtk3_gl_windowing = false >++foreach gtk_ver : gtk_versions >++ gtkv = 'gtk' + gtk_ver.to_string() >++ >++ gtk_state = get_option(gtkv) >++ if gtk_state.disabled() >++ continue >++ endif >++ >++ min_ver = gtk_ver >= 4 ? '3.99.2' : '3.24.0' >++ x11_str = gtk_ver >= 4 ? gtkv + '-x11' : 'gtk+-x11-3.0' >++ way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0' >++ lib_dep = gtk_ver >= 4 ? gtk4_dep : gtk_dep >++ >++ if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver) >++ continue >++ endif >++ >++ lib_sources = [] >++ gtk_defines = [] >++ optional_deps = [] >++ have_gtk_gl_windowing = false >+ >++ lib_sources += gtk_sources >++ >++ if have_gstgl >+ if gst_gl_have_window_x11 and gst_gl_have_platform_glx >+ # FIXME: automagic >+- gtk_x11_dep = dependency('gtk+-x11-3.0', required : false) >++ gtk_x11_dep = dependency(x11_str, required : false) >+ if gtk_x11_dep.found() >+ optional_deps += [gtk_x11_dep, gstglx11_dep] >+- have_gtk3_gl_windowing = true >++ have_gtk_gl_windowing = true >+ endif >+ endif >+ >+ if gst_gl_have_window_wayland and gst_gl_have_platform_egl >+ # FIXME: automagic >+- gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false) >++ gtk_wayland_dep = dependency(way_str, required : false) >+ if gtk_wayland_dep.found() >+ optional_deps += [gtk_wayland_dep, gstglegl_dep, gstglwayland_dep] >+- have_gtk3_gl_windowing = true >++ have_gtk_gl_windowing = true >+ endif >+ endif >++ endif >+ >+- if have_gtk3_gl_windowing >+- gtk_sources += [ >+- 'gstgtkglsink.c', >+- 'gtkgstglwidget.c', >+- ] >+- optional_deps += [gstgl_dep, gstglproto_dep] >+- gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL'] >+- endif >++ if have_gtk_gl_windowing >++ lib_sources += [ >++ 'gstgtkglsink.c', >++ 'gtkgstglwidget.c', >++ ] >++ optional_deps += [gstgl_dep, gstglproto_dep] >++ gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL'] >++ endif >++ >++ if gtk_ver == 3 >++ gtk_optional_deps = optional_deps >++ elif gtk_ver == 4 >++ gtk4_optional_deps = optional_deps >++ gtk_defines += '-DBUILD_FOR_GTK4' >++ endif >++ >++ lib_name = 'gstgtk' >++ if gtk_ver > 3 >++ lib_name += gtk_ver.to_string() >+ endif >+ >+- gstgtk = library('gstgtk', >+- gtk_sources, >++ gstgtk = library(lib_name, >++ lib_sources, >+ c_args : gst_plugins_good_args + gtk_defines, >+ link_args : noseh_link_args, >+ include_directories : [configinc], >+- dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >++ dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps, >+ install : true, >+ install_dir : plugins_install_dir, >+ ) >+ pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir) >+ plugins += [gstgtk] >+-endif >+- >++endforeach >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-meson__options.txt b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-meson__options.txt >new file mode 100644 >index 000000000000..8f38b59c39ae >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-meson__options.txt >@@ -0,0 +1,10 @@ >+--- meson_options.txt >++++ meson_options.txt >+@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', description : 'Digital IEEE13 >+ option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin') >+ option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin') >+ option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin') >++option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin') >+ option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin') >+ option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin') >+ option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin') >diff --git a/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-tests_examples_gtk_meson.build b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-tests_examples_gtk_meson.build >new file mode 100644 >index 000000000000..77215c379fa6 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-tests_examples_gtk_meson.build >@@ -0,0 +1,9 @@ >+--- tests/examples/gtk/meson.build >++++ tests/examples/gtk/meson.build >+@@ -1,5 +1,5 @@ >+ executable('gtksink', 'gtksink.c', >+- dependencies: [gst_dep, gtk_dep, optional_deps], >++ dependencies: [gst_dep, gtk_dep, gtk_optional_deps], >+ c_args: gst_plugins_good_args, >+ include_directories: [configinc], >+ install: false) >diff --git a/x11-toolkits/gstreamer1-plugins-pango/Makefile b/x11-toolkits/gstreamer1-plugins-pango/Makefile >index 546220a3643b..3e98c8addea9 100644 >--- a/x11-toolkits/gstreamer1-plugins-pango/Makefile >+++ b/x11-toolkits/gstreamer1-plugins-pango/Makefile >@@ -1,4 +1,3 @@ >-PORTREVISION= 2 > CATEGORIES= x11-toolkits > > COMMENT= GStreamer pango textoverlay plugin >@@ -8,4 +7,10 @@ DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USE_GNOME= cairo pango >+USES= xorg >+USE_XORG= x11 xext >+ > .include "${MASTERDIR}/Makefile" >diff --git a/x11-toolkits/gstreamer1-plugins-pango/pkg-plist b/x11-toolkits/gstreamer1-plugins-pango/pkg-plist >new file mode 100644 >index 000000000000..940e48c920a6 >--- /dev/null >+++ b/x11-toolkits/gstreamer1-plugins-pango/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstpango.so >diff --git a/x11/gstreamer1-plugins-x/Makefile b/x11/gstreamer1-plugins-x/Makefile >index 04ec37c9c09b..0cf58c5854ce 100644 >--- a/x11/gstreamer1-plugins-x/Makefile >+++ b/x11/gstreamer1-plugins-x/Makefile >@@ -1,11 +1,19 @@ >-PORTREVISION= 2 > CATEGORIES= x11 > > COMMENT= GStreamer X and Xvideo output plugins > > GST_PLUGIN= x >+ >+BASE_GST_ENABLED_PLUGINS= ximage \ >+ xvideo > DIST= base > > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USES= xorg >+USE_XORG= x11 xv xext >+CONFIGURE_ARGS= -Dxvideo=enabled -Dxshm=enabled >+ > .include "${MASTERDIR}/Makefile" >diff --git a/x11/gstreamer1-plugins-x/pkg-plist b/x11/gstreamer1-plugins-x/pkg-plist >new file mode 100644 >index 000000000000..33b56ccc0c8f >--- /dev/null >+++ b/x11/gstreamer1-plugins-x/pkg-plist >@@ -0,0 +1,3 @@ >+lib/gstreamer-%%VERSION%%/libgstximagesink.so >+lib/gstreamer-%%VERSION%%/libgstxvimagesink.so >+ >diff --git a/x11/gstreamer1-plugins-ximagesrc/Makefile b/x11/gstreamer1-plugins-ximagesrc/Makefile >index 0f66edca8bd7..1d80ba731d52 100644 >--- a/x11/gstreamer1-plugins-ximagesrc/Makefile >+++ b/x11/gstreamer1-plugins-ximagesrc/Makefile >@@ -1,12 +1,21 @@ >-PORTREVISION= 2 > CATEGORIES= x11 > PKGNAMESUFFIX= 1-plugins-ximagesrc > > COMMENT= GStreamer X source plugin > >-GST_PLUGIN= x >+GST_PLUGIN= ximagesrc > DIST= good > >+GOOD_GST_ENABLED_PLUGINS= ximagesrc \ >+ ximagesrc-xshm \ >+ ximagesrc-xfixes \ >+ ximagesrc-xdamage >+ > MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins > >+PLIST= ${.CURDIR}/pkg-plist >+ >+USES= xorg >+USE_XORG= x11 xfixes xdamage xext >+ > .include "${MASTERDIR}/Makefile" >diff --git a/x11/gstreamer1-plugins-ximagesrc/pkg-plist b/x11/gstreamer1-plugins-ximagesrc/pkg-plist >new file mode 100644 >index 000000000000..9b0955aad4f8 >--- /dev/null >+++ b/x11/gstreamer1-plugins-ximagesrc/pkg-plist >@@ -0,0 +1 @@ >+lib/gstreamer-%%VERSION%%/libgstximagesrc.so
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 261585
:
236714
|
236796
|
236831
|
236861
|
236893
|
236981
|
237002
|
237003
|
237034
|
237157