View | Details | Raw Unified | Return to bug 261585 | Differences between
and this patch

Collapse All | Expand All

(-)b/audio/gstreamer1-plugins-a52dec/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer ATSC A/52 stream aka AC-3 (dvd audio) plugin
3
COMMENT=	GStreamer ATSC A/52 stream aka AC-3 (dvd audio) plugin
Lines 8-11 DIST= ugly Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
MESON_ARGS+= -Dgpl=enabled
11
12
PLIST=  ${.CURDIR}/pkg-plist
13
14
LIB_DEPENDS= liba52.so:audio/liba52
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-a52dec/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgsta52dec.so
(-)b/audio/gstreamer1-plugins-amrnb/Makefile (-2 / +7 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer OpenCore based Adaptive Multi-Rate Narrow-Band plugin
3
COMMENT=	GStreamer OpenCore based Adaptive Multi-Rate Narrow-Band plugin
Lines 6-11 COMMENT= GStreamer OpenCore based Adaptive Multi-Rate Narrow-Band plugin Link Here
6
GST_PLUGIN=	amrnb
5
GST_PLUGIN=	amrnb
7
DIST=		ugly
6
DIST=		ugly
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=  ${.CURDIR}/../../multimedia/gstreamer1-plugins
9
10
MESON_ARGS+= -Dgpl=enabled
11
12
PLIST=  ${.CURDIR}/pkg-plist
13
14
LIB_DEPENDS=  libopencore-amrnb.so:audio/opencore-amr
10
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-amrnb/pkg-plist (+2 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstamrnb.so
2
%%DATADIR%%-%%VERSION%%/presets/GstAmrnbEnc.prs
(-)b/audio/gstreamer1-plugins-amrwbdec/Makefile (-3 / +8 lines)
Lines 1-12 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
PKGNAMESUFFIX=	1-plugins-amrwbdec
2
PKGNAMESUFFIX=	1-plugins-amrwbdec
4
3
5
COMMENT=	GStreamer OpenCore based Adaptive Multi-Rate Wide-Band Decoder plugin
4
COMMENT=	GStreamer OpenCore based Adaptive Multi-Rate Wide-Band Decoder plugin
6
5
7
GST_PLUGIN=	amrwb
6
GST_PLUGIN=	amrwbdec
8
DIST=		ugly
7
DIST=		ugly
9
8
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=  ${.CURDIR}/../../multimedia/gstreamer1-plugins
10
11
MESON_ARGS+= -Dgpl=enabled
12
13
PLIST=  ${.CURDIR}/pkg-plist
14
15
LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr
11
16
12
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-amrwbdec/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstamrwbdec.so
(-)b/audio/gstreamer1-plugins-bs2b/Makefile (-2 / +7 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer Bauer Stereophonic to Banaural BSP (bs2b) plugin
3
COMMENT=	GStreamer Bauer Stereophonic to Banaural BSP (bs2b) plugin
Lines 6-11 COMMENT= GStreamer Bauer Stereophonic to Banaural BSP (bs2b) plugin Link Here
6
GST_PLUGIN=	bs2b
5
GST_PLUGIN=	bs2b
7
DIST=		bad
6
DIST=		bad
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=  ${.CURDIR}/../../multimedia/gstreamer1-plugins
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
LIB_DEPENDS= libbs2b.so:audio/libbs2b
12
13
MESON_ARGS+= -Dgpl=enabled
10
14
11
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
16
(-)b/audio/gstreamer1-plugins-bs2b/pkg-plist (+1 lines)
Added Link Here
1
 lib/gstreamer-%%VERSION%%/libgstbs2b.so
(-)b/audio/gstreamer1-plugins-cdparanoia/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer CDDA extraction (aka audio ripping) plugin
3
COMMENT=	GStreamer CDDA extraction (aka audio ripping) plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libcdda_interface.so:audio/cdparanoia
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-cdparanoia/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstcdparanoia.so
(-)b/audio/gstreamer1-plugins-chromaprint/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer audio fingerprint extracting plugin
3
COMMENT=	GStreamer audio fingerprint extracting plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libchromaprint.so:audio/chromaprint
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-chromaprint/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstchromaprint.so
(-)b/audio/gstreamer1-plugins-faac/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer MPEG-2 and MPEG-4 AAC encoder plugin
3
COMMENT=	GStreamer MPEG-2 and MPEG-4 AAC encoder plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libfaac.so:audio/faac
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-faac/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstfaac.so
(-)b/audio/gstreamer1-plugins-faad/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer MPEG-2 and MPEG-4 AAC decoder plugin
3
COMMENT=	GStreamer MPEG-2 and MPEG-4 AAC decoder plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libfaad.so:audio/faad
13
14
MESON_ARGS+= -Dgpl=enabled
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-faad/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstfaad.so
(-)b/audio/gstreamer1-plugins-flac/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer free lossless audio encoder/decoder plugin
3
COMMENT=	GStreamer free lossless audio encoder/decoder plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libFLAC.so:audio/flac
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-flac/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstflac.so
(-)b/audio/gstreamer1-plugins-flite/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer flite run-time speech synthesis engine plugin
3
COMMENT=	GStreamer flite run-time speech synthesis engine plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libflite.so:audio/flite
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-flite/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstflite.so
(-)b/audio/gstreamer1-plugins-gme/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer emulate gaming console sound processors plugin
3
COMMENT=	GStreamer emulate gaming console sound processors plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libgme.so:audio/libgme
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-gme/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstgme.so
(-)b/audio/gstreamer1-plugins-gsm/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer gsm encoding/decoding plugin
3
COMMENT=	GStreamer gsm encoding/decoding plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libgsm.so:audio/gsm
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-gsm/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstgsm.so
(-)b/audio/gstreamer1-plugins-jack/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer low-latency audio server plugin
3
COMMENT=	GStreamer low-latency audio server plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libjack.so:audio/jack
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-jack/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstjack.so
(-)b/audio/gstreamer1-plugins-ladspa/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	Gstreamer ladspa (Linux Audio Developer's Simple Plugin API) plugin
3
COMMENT=	Gstreamer ladspa (Linux Audio Developer's Simple Plugin API) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
BUILD_DEPENDS= ${LOCALBASE}/include/ladspa.h:audio/ladspa
13
14
LIB_DEPENDS= liblrdf.so:textproc/liblrdf
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-ladspa/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstladspa.so
(-)b/audio/gstreamer1-plugins-lame/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer High-quality free mp3 encode plugin
3
COMMENT=	GStreamer High-quality free mp3 encode plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libmp3lame.so:audio/lame
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-lame/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstlame.so
(-)b/audio/gstreamer1-plugins-lv2/Makefile (-1 / +10 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	Gstreamer lv2 wrapper plugin
3
COMMENT=	Gstreamer lv2 wrapper plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
BUILD_DEPENDS=  lv2>=1.14.0:audio/lv2
13
LIB_DEPENDS=  libsord-0.so:devel/sord \
14
		libserd-0.so:devel/serd \
15
		libsratom-0.so:audio/sratom \
16
		liblilv-0.so:audio/lilv
17
11
.include "${MASTERDIR}/Makefile"
18
.include "${MASTERDIR}/Makefile"
19
20
USES+=   pkgconfig
(-)b/audio/gstreamer1-plugins-lv2/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstlv2.so
(-)b/audio/gstreamer1-plugins-modplug/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer module decoder based on modplug egine plugin
3
COMMENT=	GStreamer module decoder based on modplug egine plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libmodplug.so:audio/libmodplug
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-modplug/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmodplug.so
(-)b/audio/gstreamer1-plugins-mpg123/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer MPEG Layer 1, 2, and 3 plugin
3
COMMENT=	GStreamer MPEG Layer 1, 2, and 3 plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libmpg123.so:audio/mpg123
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-mpg123/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmpg123.so
(-)b/audio/gstreamer1-plugins-musepack/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	Gstreamer musepack mpc encoder/decoder plugin
3
COMMENT=	Gstreamer musepack mpc encoder/decoder plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=libmpcdec.so:audio/musepack
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-musepack/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmusepack.so
(-)b/audio/gstreamer1-plugins-ogg/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer Ogg bitstream plugin
3
COMMENT=	GStreamer Ogg bitstream plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libogg.so:audio/libogg
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-ogg/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstogg.so
(-)b/audio/gstreamer1-plugins-openmpt/Makefile (-7 / +3 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer OpenMPT audio decoder plugin
3
COMMENT=	GStreamer OpenMPT audio decoder plugin
Lines 6-18 COMMENT= GStreamer OpenMPT audio decoder plugin Link Here
6
GST_PLUGIN=	openmpt
5
GST_PLUGIN=	openmpt
7
DIST=		bad
6
DIST=		bad
8
7
9
OPENMPT_GST_DIRS=	gst-libs/gst/audio
10
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
12
9
13
pre-build:
10
PLIST=  ${.CURDIR}/pkg-plist
14
.for dir in ${OPENMPT_GST_DIRS}
11
15
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
12
LIB_DEPENDS=  libopenmpt.so:audio/libopenmpt
16
.endfor
17
13
18
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-openmpt/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstopenmpt.so
(-)b/audio/gstreamer1-plugins-opus/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer Opus audio encoder/decoder plugin
3
COMMENT=	GStreamer Opus audio encoder/decoder plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libopus.so:audio/opus
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-opus/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstopus.so
(-)b/audio/gstreamer1-plugins-pulse/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer pulseaudio plugin
3
COMMENT=	GStreamer pulseaudio plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libpulse.so:audio/pulseaudio
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-pulse/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstpulseaudio.so
(-)b/audio/gstreamer1-plugins-shout2/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer icecast output plugin
3
COMMENT=	GStreamer icecast output plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libshout.so:audio/libshout
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-shout2/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstshout2.so
(-)b/audio/gstreamer1-plugins-sidplay/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer Commodore SID audio decoder plugin
3
COMMENT=	GStreamer Commodore SID audio decoder plugin
Lines 8-11 DIST= ugly Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libsidplay.so:audio/libsidplay
13
14
MESON_ARGS+= -Dgpl=enabled
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-sidplay/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstsid.so
(-)b/audio/gstreamer1-plugins-sndfile/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	Gstreamer sndfile plugin
3
COMMENT=	Gstreamer sndfile plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libsndfile.so:audio/libsndfile
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-sndfile/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstsndfile.so
(-)b/audio/gstreamer1-plugins-soundtouch/Makefile (-1 / +3 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer soundtouch plugin
3
COMMENT=	GStreamer soundtouch plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
LIB_DEPENDS= libSoundTouch.so:audio/soundtouch
12
11
.include "${MASTERDIR}/Makefile"
13
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-soundtouch/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstsoundtouch.so
(-)b/audio/gstreamer1-plugins-speex/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer speex voice encode/decode plugin
3
COMMENT=	GStreamer speex voice encode/decode plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libspeex.so:audio/speex
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-speex/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstspeex.so
(-)b/audio/gstreamer1-plugins-taglib/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer taglib plugin for adding APEv2 and ID3v2 headers
3
COMMENT=	GStreamer taglib plugin for adding APEv2 and ID3v2 headers
Lines 11-14 DIST= good Link Here
11
10
12
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
13
12
13
PLIST=  ${.CURDIR}/pkg-plist
14
15
LIB_DEPENDS= libtag.so:audio/taglib
16
14
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-taglib/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgsttaglib.so
(-)b/audio/gstreamer1-plugins-twolame/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer High-quality free MP2 encoder plugin
3
COMMENT=	GStreamer High-quality free MP2 encoder plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libtwolame.so:audio/twolame
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-twolame/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgsttwolame.so
(-)b/audio/gstreamer1-plugins-vorbis/Makefile (-1 / +5 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer vorbis encoder/decoder plugin
3
COMMENT=	GStreamer vorbis encoder/decoder plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USE_GSTREAMER= ogg
13
LIB_DEPENDS= libvorbis.so:audio/libvorbis
14
11
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-vorbis/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstvorbis.so
(-)b/audio/gstreamer1-plugins-wavpack/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer wavpack encode/decode plugin
3
COMMENT=	GStreamer wavpack encode/decode plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libwavpack.so:audio/wavpack
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-wavpack/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstwavpack.so
(-)b/audio/gstreamer1-plugins-webrtcdsp/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	audio
1
CATEGORIES=	audio
3
2
4
COMMENT=	GStreamer WebRTC Audio Processing plugin
3
COMMENT=	GStreamer WebRTC Audio Processing plugin
Lines 10-13 USES+= compiler:c++11-lang Link Here
10
9
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
12
11
12
PLIST=  ${.CURDIR}/pkg-plist
13
14
LIB_DEPENDS=  libwebrtc_audio_processing.so:audio/webrtc-audio-processing0
15
13
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/audio/gstreamer1-plugins-webrtcdsp/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstwebrtcdsp.so
(-)b/comms/gstreamer1-plugins-spandsp/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	comms
1
CATEGORIES=	comms
3
2
4
COMMENT=	GStreamer DSP library and software FAX machine plugin
3
COMMENT=	GStreamer DSP library and software FAX machine plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libspandsp.so:comms/spandsp
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/comms/gstreamer1-plugins-spandsp/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstspandsp.so
(-)b/devel/gstreamer1-plugins-soup/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	devel
1
CATEGORIES=	devel
3
2
4
COMMENT=	GStreamer soup based http input plugin
3
COMMENT=	GStreamer soup based http input plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libsoup-2.4.so:devel/libsoup
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/devel/gstreamer1-plugins-soup/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstsoup.so
(-)b/ftp/gstreamer1-plugins-curl/Makefile (-1 / +5 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	ftp
1
CATEGORIES=	ftp
3
2
4
COMMENT=	GStreamer curl based output plugin
3
COMMENT=	GStreamer curl based output plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libcurl.so:ftp/curl \
13
	libssh2.so:security/libssh2
14
11
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/ftp/gstreamer1-plugins-curl/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstcurl.so
(-)b/graphics/gstreamer1-plugins-aalib/Makefile (-1 / +5 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer ASCII art videosink plugin
3
COMMENT=	GStreamer ASCII art videosink plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libaa.so:graphics/aalib
13
USES=   ncurses
14
11
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-aalib/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstaasink.so
(-)b/graphics/gstreamer1-plugins-cairo/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer overlay renderer plugin based on cairo
3
COMMENT=	GStreamer overlay renderer plugin based on cairo
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USE_GNOME=  cairo
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-cairo/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstcairo.so
(-)b/graphics/gstreamer1-plugins-gdkpixbuf/Makefile (-2 / +5 lines)
Lines 1-12 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
PKGNAMESUFFIX=	1-plugins-gdkpixbuf
2
PKGNAMESUFFIX=	1-plugins-gdkpixbuf
4
3
5
COMMENT=	GStreamer image decoder/overlay plugin
4
COMMENT=	GStreamer image decoder/overlay plugin
6
5
7
GST_PLUGIN=	gdk_pixbuf
6
GST_PLUGIN=	gdk-pixbuf
8
DIST=		good
7
DIST=		good
9
8
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
10
11
PLIST=  ${.CURDIR}/pkg-plist
12
13
USE_GNOME= gdkpixbuf2
14
12
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-gdkpixbuf/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstgdkpixbuf.so
(-)b/graphics/gstreamer1-plugins-gl/Makefile (-10 / +20 lines)
Lines 1-4 Link Here
1
PORTREVISION=	4
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer GL graphics plugin
3
COMMENT=	GStreamer GL graphics plugin
Lines 15-31 OPTIONS_DEFINE= WAYLAND Link Here
15
OPTIONS_DEFAULT=WAYLAND
14
OPTIONS_DEFAULT=WAYLAND
16
OPTIONS_SUB=	yes
15
OPTIONS_SUB=	yes
17
16
18
WAYLAND_CONFIGURE_ENABLE=	wayland
17
OPTIONS_UNSET=	WAYLAND
18
19
GL_WINSYS=	"x11,egl"
20
21
WAYLAND_VARS=	gl_winsys+=",wayland"
19
WAYLAND_BUILD_DEPENDS=		wayland-protocols>=0:graphics/wayland-protocols
22
WAYLAND_BUILD_DEPENDS=		wayland-protocols>=0:graphics/wayland-protocols
20
WAYLAND_LIB_DEPENDS=		libwayland-egl.so:graphics/wayland
23
WAYLAND_LIB_DEPENDS=		libwayland-egl.so:graphics/wayland
21
24
22
pre-build:
25
USES=  gl
23
.for dir in ${GL_GST_DIRS}
26
USE_GL=  gl glu glesv2 egl
24
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
27
USE_XORG+=x11 \
25
.endfor
28
					xext \
26
29
					xcb
27
post-install:
30
BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto
28
	${INSTALL_DATA} ${WRKSRC}/pkgconfig/gstreamer-gl.pc \
31
LIB_DEPENDS= libgraphene-1.0.so:graphics/graphene \
29
		${STAGEDIR}${PREFIX}/libdata/pkgconfig/gstreamer-gl-1.0.pc
32
	libpng16.so:graphics/png
33
34
MESON_ARGS+= -Dgl=enabled \
35
						 -Dgl_winsys="${GL_WINSYS}" \
36
						 -Dgl_api=opengl,gles2 \
37
						 -Dgl_platform=glx,egl
38
39
GST_PLUGIN_DIR=  gst-libs/gst/gl ext/gl
30
40
31
.include "${MASTERDIR}/Makefile"
41
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-gl/pkg-plist (-2 / +19 lines)
Lines 1-6 Link Here
1
include/gstreamer-%%VERSION%%/gst/gl/egl/egl.h
1
include/gstreamer-%%VERSION%%/gst/gl/egl/gstegl.h
2
include/gstreamer-%%VERSION%%/gst/gl/egl/gstegl.h
2
include/gstreamer-%%VERSION%%/gst/gl/egl/gsteglimage.h
3
include/gstreamer-%%VERSION%%/gst/gl/egl/gsteglimage.h
3
include/gstreamer-%%VERSION%%/gst/gl/egl/gstgldisplay_egl.h
4
include/gstreamer-%%VERSION%%/gst/gl/egl/gstgldisplay_egl.h
5
include/gstreamer-%%VERSION%%/gst/gl/egl/gstgldisplay_egl_device.h
4
include/gstreamer-%%VERSION%%/gst/gl/egl/gstglmemoryegl.h
6
include/gstreamer-%%VERSION%%/gst/gl/egl/gstglmemoryegl.h
5
include/gstreamer-%%VERSION%%/gst/gl/gl-enumtypes.h
7
include/gstreamer-%%VERSION%%/gst/gl/gl-enumtypes.h
6
include/gstreamer-%%VERSION%%/gst/gl/gl-prelude.h
8
include/gstreamer-%%VERSION%%/gst/gl/gl-prelude.h
Lines 8-13 include/gstreamer-%%VERSION%%/gst/gl/gl.h Link Here
8
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/all_functions.h
10
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/all_functions.h
9
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/base.h
11
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/base.h
10
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/blending.h
12
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/blending.h
13
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/buffer_storage.h
11
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/buffers.h
14
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/buffers.h
12
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/debug.h
15
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/debug.h
13
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/eglimage.h
16
include/gstreamer-%%VERSION%%/gst/gl/glprototypes/eglimage.h
Lines 26-35 include/gstreamer-%%VERSION%%/gst/gl/gstgl_fwd.h Link Here
26
include/gstreamer-%%VERSION%%/gst/gl/gstglapi.h
29
include/gstreamer-%%VERSION%%/gst/gl/gstglapi.h
27
include/gstreamer-%%VERSION%%/gst/gl/gstglbasefilter.h
30
include/gstreamer-%%VERSION%%/gst/gl/gstglbasefilter.h
28
include/gstreamer-%%VERSION%%/gst/gl/gstglbasememory.h
31
include/gstreamer-%%VERSION%%/gst/gl/gstglbasememory.h
32
include/gstreamer-%%VERSION%%/gst/gl/gstglbasesrc.h
29
include/gstreamer-%%VERSION%%/gst/gl/gstglbuffer.h
33
include/gstreamer-%%VERSION%%/gst/gl/gstglbuffer.h
30
include/gstreamer-%%VERSION%%/gst/gl/gstglbufferpool.h
34
include/gstreamer-%%VERSION%%/gst/gl/gstglbufferpool.h
31
include/gstreamer-%%VERSION%%/gst/gl/gstglcolorconvert.h
35
include/gstreamer-%%VERSION%%/gst/gl/gstglcolorconvert.h
32
include/gstreamer-%%VERSION%%/gst/gl/gstglcontext.h
36
include/gstreamer-%%VERSION%%/gst/gl/gstglcontext.h
37
include/gstreamer-%%VERSION%%/gst/gl/gstglcontextconfig.h
33
include/gstreamer-%%VERSION%%/gst/gl/gstgldebug.h
38
include/gstreamer-%%VERSION%%/gst/gl/gstgldebug.h
34
include/gstreamer-%%VERSION%%/gst/gl/gstgldisplay.h
39
include/gstreamer-%%VERSION%%/gst/gl/gstgldisplay.h
35
include/gstreamer-%%VERSION%%/gst/gl/gstglfeature.h
40
include/gstreamer-%%VERSION%%/gst/gl/gstglfeature.h
Lines 52-63 include/gstreamer-%%VERSION%%/gst/gl/gstglutils.h Link Here
52
include/gstreamer-%%VERSION%%/gst/gl/gstglviewconvert.h
57
include/gstreamer-%%VERSION%%/gst/gl/gstglviewconvert.h
53
include/gstreamer-%%VERSION%%/gst/gl/gstglwindow.h
58
include/gstreamer-%%VERSION%%/gst/gl/gstglwindow.h
54
%%WAYLAND%%include/gstreamer-%%VERSION%%/gst/gl/wayland/gstgldisplay_wayland.h
59
%%WAYLAND%%include/gstreamer-%%VERSION%%/gst/gl/wayland/gstgldisplay_wayland.h
60
%%WAYLAND%%include/gstreamer-%%VERSION%%/gst/gl/wayland/wayland.h
55
include/gstreamer-%%VERSION%%/gst/gl/x11/gstgldisplay_x11.h
61
include/gstreamer-%%VERSION%%/gst/gl/x11/gstgldisplay_x11.h
56
lib/girepository-1.0/GstGL-%%VERSION%%.typelib
62
include/gstreamer-%%VERSION%%/gst/gl/x11/x11.h
63
lib/girepository-%%VERSION%%/GstGL-%%VERSION%%.typelib
64
lib/girepository-%%VERSION%%/GstGLEGL-%%VERSION%%.typelib
65
%%WAYLAND%%lib/girepository-%%VERSION%%/GstGLWayland-%%VERSION%%.typelib
66
lib/girepository-%%VERSION%%/GstGLX11-%%VERSION%%.typelib
57
lib/gstreamer-%%VERSION%%/include/gst/gl/gstglconfig.h
67
lib/gstreamer-%%VERSION%%/include/gst/gl/gstglconfig.h
58
lib/gstreamer-%%VERSION%%/libgstopengl.so
68
lib/gstreamer-%%VERSION%%/libgstopengl.so
59
lib/libgstgl-%%VERSION%%.so
69
lib/libgstgl-%%VERSION%%.so
60
lib/libgstgl-%%VERSION%%.so.0
70
lib/libgstgl-%%VERSION%%.so.0
61
lib/libgstgl-%%VERSION%%.so.%%SOVERSION%%
71
lib/libgstgl-%%VERSION%%.so.%%SOVERSION%%
62
libdata/pkgconfig/gstreamer-gl-%%VERSION%%.pc
72
libdata/pkgconfig/gstreamer-gl-%%VERSION%%.pc
63
share/gir-1.0/GstGL-%%VERSION%%.gir
73
libdata/pkgconfig/gstreamer-gl-egl-%%VERSION%%.pc
74
libdata/pkgconfig/gstreamer-gl-prototypes-%%VERSION%%.pc
75
%%WAYLAND%%libdata/pkgconfig/gstreamer-gl-wayland-%%VERSION%%.pc
76
libdata/pkgconfig/gstreamer-gl-x11-%%VERSION%%.pc
77
share/gir-%%VERSION%%/GstGL-%%VERSION%%.gir
78
share/gir-%%VERSION%%/GstGLEGL-%%VERSION%%.gir
79
%%WAYLAND%%share/gir-%%VERSION%%/GstGLWayland-%%VERSION%%.gir
80
share/gir-%%VERSION%%/GstGLX11-%%VERSION%%.gir
(-)b/graphics/gstreamer1-plugins-jpeg/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer jpeg encoder/decoder plugin
3
COMMENT=	GStreamer jpeg encoder/decoder plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USES=    jpeg
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-jpeg/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstjpeg.so
(-)b/graphics/gstreamer1-plugins-kms/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer video sink via KMS plugin
3
COMMENT=	GStreamer video sink via KMS plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libdrm.so:graphics/libdrm
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-kms/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstkms.so
(-)b/graphics/gstreamer1-plugins-libcaca/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer color ASCII art plugin
3
COMMENT=	GStreamer color ASCII art plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libcaca.so:graphics/libcaca
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-libcaca/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstcacasink.so
(-)b/graphics/gstreamer1-plugins-libvisual/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer libvisual plugin
3
COMMENT=	GStreamer libvisual plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libvisual-0.4.so:graphics/libvisual04
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-libvisual/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstlibvisual.so
(-)b/graphics/gstreamer1-plugins-opencv/Makefile (-1 / +2 lines)
Lines 1-4 Link Here
1
PORTREVISION=	4
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer opencv real time computer vision plugin
3
COMMENT=	GStreamer opencv real time computer vision plugin
Lines 10-15 MASTERDIR= ${.CURDIR}/../../multimedia/gstreamer1-plugins Link Here
10
9
11
# Clang has issues with Overloaded stuff inside OpenCV
10
# Clang has issues with Overloaded stuff inside OpenCV
12
CXXFLAGS+=	-Wno-overloaded-virtual
11
CXXFLAGS+=	-Wno-overloaded-virtual
12
LIB_DEPENDS=   libopencv_highgui.so:graphics/opencv
13
GST_PLUGIN_DIR=  gst-libs/gst/opencv ext/opencv
13
14
14
PLIST=		${.CURDIR}/pkg-plist
15
PLIST=		${.CURDIR}/pkg-plist
15
16
(-)b/graphics/gstreamer1-plugins-opencv/pkg-plist (-2 lines)
Lines 5-9 lib/gstreamer-%%VERSION%%/libgstopencv.so Link Here
5
lib/libgstopencv-%%VERSION%%.so
5
lib/libgstopencv-%%VERSION%%.so
6
lib/libgstopencv-%%VERSION%%.so.0
6
lib/libgstopencv-%%VERSION%%.so.0
7
lib/libgstopencv-%%VERSION%%.so.%%SOVERSION%%
7
lib/libgstopencv-%%VERSION%%.so.%%SOVERSION%%
8
share/gst-plugins-bad/%%VERSION%%/opencv_haarcascades/fist.xml
9
share/gst-plugins-bad/%%VERSION%%/opencv_haarcascades/palm.xml
(-)b/graphics/gstreamer1-plugins-openexr/Makefile (-4 / +5 lines)
Lines 1-4 Link Here
1
PORTREVISION=	12
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer OpenExr codec plugin
3
COMMENT=	GStreamer OpenExr codec plugin
Lines 9-17 DIST= bad Link Here
9
8
10
CPPFLAGS+=	-DInt64=uint64_t
9
CPPFLAGS+=	-DInt64=uint64_t
11
10
12
pre-configure:
13
		${REINPLACE_CMD} -e 's/c++98/c++11/' ${WRKSRC}/ext/openexr/Makefile.in
14
15
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
16
12
13
PLIST=  ${.CURDIR}/pkg-plist
14
15
LIB_DEPENDS=  libOpenEXR.so:graphics/openexr \
16
	libImath-3_1.so:math/Imath
17
17
.include "${MASTERDIR}/Makefile"
18
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-openexr/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstopenexr.so
(-)b/graphics/gstreamer1-plugins-openjpeg/Makefile (-2 / +3 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer jpeg2000 decoder plugin
3
COMMENT=	GStreamer jpeg2000 decoder plugin
Lines 8-13 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
11
EXTRA_PATCHES=	${.CURDIR}/files/patch-inc
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libopenjp2.so:graphics/openjpeg
12
13
13
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)a/graphics/gstreamer1-plugins-openjpeg/files/patch-inc (-30 lines)
Removed Link Here
1
Put the openjpeg include directory first, so that <openjpeg.h> includes
2
$LOCALBASE/include/openjpeg-2.3/openjpeg.h instead of $LOCALBASE/include/openjpeg.h
3
4
--- ext/openjpeg/Makefile.in.orig	2018-09-16 22:05:02.688860000 +0300
5
+++ ext/openjpeg/Makefile.in	2018-09-16 22:05:11.316104000 +0300
6
@@ -861,21 +861,21 @@
7
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
8
9
 libgstopenjpeg_la-gstopenjpegdec.lo: gstopenjpegdec.c
10
-@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
11
+@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
12
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopenjpeg_la-gstopenjpegdec.Tpo $(DEPDIR)/libgstopenjpeg_la-gstopenjpegdec.Plo
13
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstopenjpegdec.c' object='libgstopenjpeg_la-gstopenjpegdec.lo' libtool=yes @AMDEPBACKSLASH@
14
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
15
 @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
16
17
 libgstopenjpeg_la-gstopenjpegenc.lo: gstopenjpegenc.c
18
-@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
19
+@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
20
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopenjpeg_la-gstopenjpegenc.Tpo $(DEPDIR)/libgstopenjpeg_la-gstopenjpegenc.Plo
21
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstopenjpegenc.c' object='libgstopenjpeg_la-gstopenjpegenc.lo' libtool=yes @AMDEPBACKSLASH@
22
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
23
 @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
24
25
 libgstopenjpeg_la-gstopenjpeg.lo: gstopenjpeg.c
26
-@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
27
+@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
28
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopenjpeg_la-gstopenjpeg.Tpo $(DEPDIR)/libgstopenjpeg_la-gstopenjpeg.Plo
29
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstopenjpeg.c' object='libgstopenjpeg_la-gstopenjpeg.lo' libtool=yes @AMDEPBACKSLASH@
30
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
(-)b/graphics/gstreamer1-plugins-openjpeg/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstopenjpeg.so
(-)b/graphics/gstreamer1-plugins-png/Makefile (-2 / +5 lines)
Lines 1-12 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
PKGNAMESUFFIX=	1-plugins-png
2
PKGNAMESUFFIX=	1-plugins-png
4
3
5
COMMENT=	GStreamer png plugin
4
COMMENT=	GStreamer png plugin
6
5
7
GST_PLUGIN=	libpng
6
GST_PLUGIN=	png
8
DIST=		good
7
DIST=		good
9
8
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
10
11
PLIST=  ${.CURDIR}/pkg-plist
12
13
LIB_DEPENDS= libpng.so:graphics/png
14
12
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-png/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstpng.so
(-)b/graphics/gstreamer1-plugins-qt/Makefile (-2 / +8 lines)
Lines 1-11 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer Qt videosink plugin
3
COMMENT=	GStreamer Qt videosink plugin
5
4
6
GST_PLUGIN=	qt
5
GST_PLUGIN_SUFFIX=	-qt
6
GST_PLUGIN=	qt5
7
DIST=		good
7
DIST=		good
8
8
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
10
11
PLIST=  ${.CURDIR}/pkg-plist
12
13
USES=  compiler:c++11-lang qt:5
14
USE_QT=  core gui declarative buildtools_build network x11extras
15
USE_GSTREAMER= gl
16
11
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-qt/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstqmlgl.so
(-)b/graphics/gstreamer1-plugins-rsvg/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer SVG plugin
3
COMMENT=	GStreamer SVG plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USE_GNOME= cairo librsvg2
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-rsvg/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstrsvg.so
(-)b/graphics/gstreamer1-plugins-vulkan/Makefile (-1 / +13 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer Vulkan graphics plugin
3
COMMENT=	GStreamer Vulkan graphics plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USE_GSTREAMER= gl
13
BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto \
14
	${LOCALBASE}/include/libdrm/drm_fourcc.h:graphics/libdrm \
15
	${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \
16
	wayland-protocols>=0:graphics/wayland-protocols
17
LIB_DEPENDS=   libvulkan.so:graphics/vulkan-loader \
18
	libwayland-client.so:graphics/wayland \
19
	libshaderc_shared.so:graphics/shaderc
20
21
MESON_ARGS+=  -Dwayland=enabled
22
11
.include "${MASTERDIR}/Makefile"
23
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-vulkan/pkg-plist (+53 lines)
Added Link Here
1
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkapi.h
2
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkbarrier.h
3
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkbuffermemory.h
4
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkbufferpool.h
5
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkcommandbuffer.h
6
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkcommandpool.h
7
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkconfig.h
8
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdebug.h
9
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdescriptorcache.h
10
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdescriptorpool.h
11
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdescriptorset.h
12
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdevice.h
13
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkdisplay.h
14
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkerror.h
15
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkfence.h
16
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkformat.h
17
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkfullscreenquad.h
18
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkhandle.h
19
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkhandlepool.h
20
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkimagebufferpool.h
21
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkimagememory.h
22
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkimageview.h
23
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkinstance.h
24
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkmemory.h
25
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkphysicaldevice.h
26
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkqueue.h
27
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkswapper.h
28
include/gstreamer-%%VERSION%%/gst/vulkan/gstvktrash.h
29
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkutils.h
30
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkvideofilter.h
31
include/gstreamer-%%VERSION%%/gst/vulkan/gstvkwindow.h
32
include/gstreamer-%%VERSION%%/gst/vulkan/vulkan-enumtypes.h
33
include/gstreamer-%%VERSION%%/gst/vulkan/vulkan-prelude.h
34
include/gstreamer-%%VERSION%%/gst/vulkan/vulkan.h
35
include/gstreamer-%%VERSION%%/gst/vulkan/vulkan_fwd.h
36
include/gstreamer-%%VERSION%%/gst/vulkan/wayland/gstvkdisplay_wayland.h
37
include/gstreamer-%%VERSION%%/gst/vulkan/wayland/wayland.h
38
include/gstreamer-%%VERSION%%/gst/wayland/wayland.h
39
lib/girepository-%%VERSION%%/GstVulkan-%%VERSION%%.typelib
40
lib/girepository-%%VERSION%%/GstVulkanWayland-%%VERSION%%.typelib
41
lib/gstreamer-%%VERSION%%/libgstvulkan.so
42
lib/gstreamer-%%VERSION%%/libgstwaylandsink.so
43
lib/libgstvulkan-%%VERSION%%.so
44
lib/libgstvulkan-%%VERSION%%.so.0
45
lib/libgstvulkan-%%VERSION%%.so.%%SOVERSION%%
46
lib/libgstwayland-%%VERSION%%.so
47
lib/libgstwayland-%%VERSION%%.so.0
48
lib/libgstwayland-%%VERSION%%.so.%%SOVERSION%%
49
libdata/pkgconfig/gstreamer-vulkan-%%VERSION%%.pc
50
libdata/pkgconfig/gstreamer-vulkan-wayland-%%VERSION%%.pc
51
libdata/pkgconfig/gstreamer-wayland-%%VERSION%%.pc
52
share/gir-%%VERSION%%/GstVulkan-%%VERSION%%.gir
53
share/gir-%%VERSION%%/GstVulkanWayland-%%VERSION%%.gir
(-)b/graphics/gstreamer1-plugins-webp/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer webp image decoder plugin
3
COMMENT=	GStreamer webp image decoder plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libwebp.so:graphics/webp
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-webp/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstwebp.so
(-)b/graphics/gstreamer1-plugins-zbar/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	graphics
1
CATEGORIES=	graphics
3
2
4
COMMENT=	GStreamer ZBar barcode detector plugin
3
COMMENT=	GStreamer ZBar barcode detector plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libzbar.so:graphics/zbar
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/graphics/gstreamer1-plugins-zbar/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstzbar.so
(-)b/multimedia/gstreamer1-editing-services/Makefile (-12 / +13 lines)
Lines 1-8 Link Here
1
PORTNAME=	gstreamer1-editing-services
1
PORTNAME=	gstreamer1-editing-services
2
PORTVERSION=	1.16.3
2
PORTVERSION=	1.20.3
3
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
4
MASTER_SITES=	http://gstreamer.freedesktop.org/src/gstreamer-editing-services/
4
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gstreamer-editing-services/
5
DISTNAME=	gstreamer-editing-services-${PORTVERSION}
5
DISTNAME=	gst-editing-services-${PORTVERSION}
6
6
7
MAINTAINER=	multimedia@FreeBSD.org
7
MAINTAINER=	multimedia@FreeBSD.org
8
COMMENT=	GStreamer editing services
8
COMMENT=	GStreamer editing services
Lines 10-30 WWW= http://gstreamer.freedeskop.org Link Here
10
10
11
LICENSE=	LGPL20
11
LICENSE=	LGPL20
12
12
13
USES=		compiler:c11 gnome gstreamer meson python pkgconfig tar:xz
13
USES=		bison compiler:c11 gnome gstreamer meson ninja python:3.8+,build pkgconfig tar:xz
14
USE_LDCONFIG=	yes
14
USE_LDCONFIG=	yes
15
USE_GNOME=	glib20 introspection:build libxml2 pygobject3:build
15
USE_GNOME=	glib20 introspection:build libxml2 pygobject3:build
16
USE_GSTREAMER=	good bad
16
USE_GSTREAMER=	good bad
17
LIB_DEPENDS+=	libgstvalidate-1.0.so:multimedia/gstreamer1-validate
17
LIB_DEPENDS+=	libgstvalidate-1.0.so:multimedia/gstreamer1-validate \
18
							libpython3.9.so:lang/python39
18
PORTSCOUT=	limitw:1,even
19
PORTSCOUT=	limitw:1,even
19
20
20
CONFIGURE_ARGS=	-D gtk_doc=disabled \
21
CONFIGURE_ARGS=	-Ddoc=disabled \
21
		-D introspection=enabled \
22
		-Dintrospection=enabled \
22
		-D pygi-overrides-dir=${PYTHON_SITELIBDIR}/gstreamer-editing-services
23
		-Dpygi-overrides-dir=${PYTHON_SITELIBDIR}/gstreamer-editing-services
23
PLIST_SUB=	VERSION=1.0 SOVERSION=0.1603.0
24
PLIST_SUB=	VERSION=1.0 SOVERSION=0.2003.0
24
25
25
post-install:
26
post-install:
26
		${MKDIR} ${PREFIX}/share/bash-completion/completions
27
	${MKDIR} ${PREFIX}/share/bash-completion/completions
27
		${INSTALL_SCRIPT} ${WRKSRC}/data/completions/ges-launch-1.0 \
28
	${INSTALL_SCRIPT} ${WRKSRC}/data/completions/ges-launch-1.0 \
28
			${STAGEDIR}${PREFIX}/share/bash-completion/completions/
29
	${STAGEDIR}${PREFIX}/share/bash-completion/completions/
29
30
30
.include <bsd.port.mk>
31
.include <bsd.port.mk>
(-)b/multimedia/gstreamer1-editing-services/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1654955116
1
TIMESTAMP = 1661966172
2
SHA256 (gstreamer-editing-services-1.16.3.tar.xz) = 9b05cbb8a6f1db53999e7ad11f00f4f1ccc154d6805b7e49cb7755eb37a99ba6
2
SHA256 (gst-editing-services-1.20.3.tar.xz) = 5fd896de69fbe24421eb6b0ff8d2f8b4c3cba3f3025ceacd302172f39a8abaa2
3
SIZE (gstreamer-editing-services-1.16.3.tar.xz) = 1091208
3
SIZE (gst-editing-services-1.20.3.tar.xz) = 979284
(-)b/multimedia/gstreamer1-editing-services/pkg-plist (+4 lines)
Lines 23-28 include/gstreamer-%%VERSION%%/ges/ges-gerror.h Link Here
23
include/gstreamer-%%VERSION%%/ges/ges-group.h
23
include/gstreamer-%%VERSION%%/ges/ges-group.h
24
include/gstreamer-%%VERSION%%/ges/ges-image-source.h
24
include/gstreamer-%%VERSION%%/ges/ges-image-source.h
25
include/gstreamer-%%VERSION%%/ges/ges-layer.h
25
include/gstreamer-%%VERSION%%/ges/ges-layer.h
26
include/gstreamer-%%VERSION%%/ges/ges-marker-list.h
26
include/gstreamer-%%VERSION%%/ges/ges-meta-container.h
27
include/gstreamer-%%VERSION%%/ges/ges-meta-container.h
27
include/gstreamer-%%VERSION%%/ges/ges-multi-file-source.h
28
include/gstreamer-%%VERSION%%/ges/ges-multi-file-source.h
28
include/gstreamer-%%VERSION%%/ges/ges-operation-clip.h
29
include/gstreamer-%%VERSION%%/ges/ges-operation-clip.h
Lines 34-48 include/gstreamer-%%VERSION%%/ges/ges-prelude.h Link Here
34
include/gstreamer-%%VERSION%%/ges/ges-project.h
35
include/gstreamer-%%VERSION%%/ges/ges-project.h
35
include/gstreamer-%%VERSION%%/ges/ges-screenshot.h
36
include/gstreamer-%%VERSION%%/ges/ges-screenshot.h
36
include/gstreamer-%%VERSION%%/ges/ges-source-clip.h
37
include/gstreamer-%%VERSION%%/ges/ges-source-clip.h
38
include/gstreamer-%%VERSION%%/ges/ges-source-clip-asset.h
37
include/gstreamer-%%VERSION%%/ges/ges-source.h
39
include/gstreamer-%%VERSION%%/ges/ges-source.h
38
include/gstreamer-%%VERSION%%/ges/ges-test-clip.h
40
include/gstreamer-%%VERSION%%/ges/ges-test-clip.h
39
include/gstreamer-%%VERSION%%/ges/ges-text-overlay-clip.h
41
include/gstreamer-%%VERSION%%/ges/ges-text-overlay-clip.h
40
include/gstreamer-%%VERSION%%/ges/ges-text-overlay.h
42
include/gstreamer-%%VERSION%%/ges/ges-text-overlay.h
43
include/gstreamer-%%VERSION%%/ges/ges-time-overlay-clip.h
41
include/gstreamer-%%VERSION%%/ges/ges-timeline-element.h
44
include/gstreamer-%%VERSION%%/ges/ges-timeline-element.h
42
include/gstreamer-%%VERSION%%/ges/ges-timeline.h
45
include/gstreamer-%%VERSION%%/ges/ges-timeline.h
43
include/gstreamer-%%VERSION%%/ges/ges-title-clip.h
46
include/gstreamer-%%VERSION%%/ges/ges-title-clip.h
44
include/gstreamer-%%VERSION%%/ges/ges-title-source.h
47
include/gstreamer-%%VERSION%%/ges/ges-title-source.h
45
include/gstreamer-%%VERSION%%/ges/ges-track-element-asset.h
48
include/gstreamer-%%VERSION%%/ges/ges-track-element-asset.h
49
include/gstreamer-%%VERSION%%/ges/ges-track-element-deprecated.h
46
include/gstreamer-%%VERSION%%/ges/ges-track-element.h
50
include/gstreamer-%%VERSION%%/ges/ges-track-element.h
47
include/gstreamer-%%VERSION%%/ges/ges-track.h
51
include/gstreamer-%%VERSION%%/ges/ges-track.h
48
include/gstreamer-%%VERSION%%/ges/ges-transition-clip.h
52
include/gstreamer-%%VERSION%%/ges/ges-transition-clip.h
(-)b/multimedia/gstreamer1-libav/Makefile (-15 / +4 lines)
Lines 1-37 Link Here
1
PORTNAME=	gstreamer1-libav
1
PORTNAME=	gstreamer1-libav
2
PORTVERSION=	1.16.2
2
PORTVERSION=	1.20.3
3
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
4
MASTER_SITES=	http://gstreamer.freedesktop.org/src/gst-libav/
4
MASTER_SITES=	http://gstreamer.freedesktop.org/src/gst-libav/
5
DISTNAME=	gst-libav-${PORTVERSION}
5
DISTNAME=	gst-libav-${PORTVERSION}
6
6
7
PATCH_SITES=	https://gitlab.freedesktop.org/gstreamer/gst-libav/-/commit/
8
PATCHFILES+=	07b43c727c9a.patch:-p1 # https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/127
9
10
MAINTAINER=	multimedia@FreeBSD.org
7
MAINTAINER=	multimedia@FreeBSD.org
11
COMMENT=	GStreamer plug-in with many audio/video decoders/encoders
8
COMMENT=	GStreamer plug-in with many audio/video decoders/encoders
12
WWW=		https://gstreamer.freedesktop.org/
9
WWW=		https://gstreamer.freedesktop.org/
13
10
14
LICENSE=	LGPL20+
11
LICENSE=	LGPL20+
15
LICENSE_FILE=	${WRKSRC}/COPYING.LIB
12
LICENSE_FILE=	${WRKSRC}/COPYING
16
13
17
BUILD_DEPENDS=	orc>=0.4.16:devel/orc
14
BUILD_DEPENDS=	orc>=0.4.16:devel/orc
18
LIB_DEPENDS=	liborc-0.4.so:devel/orc
15
LIB_DEPENDS=	liborc-0.4.so:devel/orc
19
16
20
PORTSCOUT=	limitw:1,even
17
PORTSCOUT=	limitw:1,even
21
18
22
USES=		compiler:features gettext-runtime gmake gnome gstreamer libtool localbase \
19
USES=		bison gettext-runtime gnome gstreamer libtool localbase \
23
		pkgconfig python:build tar:xz
20
		meson ninja pkgconfig python:3.8+,build tar:xz
24
USE_LDCONFIG=	yes
25
USE_GNOME=	glib20
21
USE_GNOME=	glib20
26
GNU_CONFIGURE=	yes
27
INSTALL_TARGET=	install-strip
28
22
29
OPTIONS_DEFINE=	FFMPEG
23
OPTIONS_DEFINE=	FFMPEG
30
OPTIONS_DEFAULT=FFMPEG
24
OPTIONS_DEFAULT=FFMPEG
31
25
32
FFMPEG_DESC?=	Use system ffmpeg instead of internal libav
26
FFMPEG_DESC?=	Use system ffmpeg instead of internal libav
33
FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg
27
FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg
34
FFMPEG_CONFIGURE_WITH=	system-libav
35
FFMPEG_BUILD_DEPENDS_OFF=	nasm:devel/nasm
28
FFMPEG_BUILD_DEPENDS_OFF=	nasm:devel/nasm
36
FFMPEG_MAKE_ENV_OFF=	V=1
29
FFMPEG_MAKE_ENV_OFF=	V=1
37
FFMPEG_VARS_OFF+=	NOPRECIOUSMAKEVARS=yes # ARCH
30
FFMPEG_VARS_OFF+=	NOPRECIOUSMAKEVARS=yes # ARCH
Lines 42-49 FFMPEG_VARS_OFF+= NOPRECIOUSMAKEVARS=yes # ARCH Link Here
42
LDFLAGS_aarch64=	-Wl,-z,notext
35
LDFLAGS_aarch64=	-Wl,-z,notext
43
.endif
36
.endif
44
37
45
post-patch:
46
	@${REINPLACE_CMD} -e 's|-Werror||g' \
47
		${WRKSRC}/configure
48
49
.include <bsd.port.mk>
38
.include <bsd.port.mk>
(-)b/multimedia/gstreamer1-libav/distinfo (-5 / +3 lines)
Lines 1-5 Link Here
1
TIMESTAMP = 1575825716
1
TIMESTAMP = 1663682373
2
SHA256 (gst-libav-1.16.2.tar.xz) = c724f612700c15a933c7356fbeabb0bb9571fb5538f8b1b54d4d2d94188deef2
2
SHA256 (gst-libav-1.20.3.tar.xz) = 3fedd10560fcdfaa1b6462cbf79a38c4e7b57d7f390359393fc0cef6dbf27dfe
3
SIZE (gst-libav-1.16.2.tar.xz) = 9466288
3
SIZE (gst-libav-1.20.3.tar.xz) = 284528
4
SHA256 (07b43c727c9a.patch) = a0331d46d744dba3885a3834457ed071111b49eccfda70ebada914090831f12b
5
SIZE (07b43c727c9a.patch) = 1237
(-)b/multimedia/gstreamer1-libav/pkg-plist (-22 lines)
Lines 1-23 Link Here
1
lib/gstreamer-1.0/libgstlibav.so
1
lib/gstreamer-1.0/libgstlibav.so
2
share/gtk-doc/html/gst-libav-plugins-1.0/ch01.html
3
share/gtk-doc/html/gst-libav-plugins-1.0/ch02.html
4
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-1.0.devhelp2
5
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegAudDec.html
6
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegAudEnc.html
7
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegVidDec.html
8
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-GstFFMpegVidEnc.html
9
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstav.html
10
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavcfg.html
11
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavcodecmap.html
12
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavprotocol.html
13
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-gstavutils.html
14
share/gtk-doc/html/gst-libav-plugins-1.0/gst-libav-plugins-plugin-libav.html
15
share/gtk-doc/html/gst-libav-plugins-1.0/home.png
16
share/gtk-doc/html/gst-libav-plugins-1.0/index.html
17
share/gtk-doc/html/gst-libav-plugins-1.0/left-insensitive.png
18
share/gtk-doc/html/gst-libav-plugins-1.0/left.png
19
share/gtk-doc/html/gst-libav-plugins-1.0/right-insensitive.png
20
share/gtk-doc/html/gst-libav-plugins-1.0/right.png
21
share/gtk-doc/html/gst-libav-plugins-1.0/style.css
22
share/gtk-doc/html/gst-libav-plugins-1.0/up-insensitive.png
23
share/gtk-doc/html/gst-libav-plugins-1.0/up.png
(-)b/multimedia/gstreamer1-plugins-all/Makefile (-2 / +1 lines)
Lines 1-6 Link Here
1
PORTNAME=	gstreamer1-plugins-all
1
PORTNAME=	gstreamer1-plugins-all
2
PORTVERSION=	1.16
2
PORTVERSION=	1.20
3
PORTREVISION=	4
4
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
5
4
6
MAINTAINER=	multimedia@FreeBSD.org
5
MAINTAINER=	multimedia@FreeBSD.org
(-)b/multimedia/gstreamer1-plugins-aom/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	18
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer (libaom) plugin
3
COMMENT=	GStreamer (libaom) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=   libaom.so:multimedia/aom
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-aom/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstaom.so
(-)b/multimedia/gstreamer1-plugins-assrender/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer ASS/SSA text renderer plugin
3
COMMENT=	GStreamer ASS/SSA text renderer plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libass.so:multimedia/libass
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
USES+= compiler:c11
(-)b/multimedia/gstreamer1-plugins-assrender/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstassrender.so
(-)b/multimedia/gstreamer1-plugins-bad/Makefile (-15 / +102 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer-plugins that need more quality, testing or documentation
3
COMMENT=	GStreamer-plugins that need more quality, testing or documentation
Lines 6-30 COMMENT= GStreamer-plugins that need more quality, testing or documentation Link Here
6
GST_PLUGIN=	bad
5
GST_PLUGIN=	bad
7
GST_PLUGIN_SUFFIX=	-bad
6
GST_PLUGIN_SUFFIX=	-bad
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
USES+=	xorg
9
USE_XORG+=x11
10
10
11
BUILD_DEPENDS+=	v4l_compat>=1.0.20100321:multimedia/v4l_compat
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
12
12
13
DIST=		bad
13
DIST=		bad
14
BAD_GST_DIRS=	gst-libs sys gst po pkgconfig
14
BAD_GST_ENABLED_PLUGINS=accurip \
15
# "extra" plugins enabled by default in Makefile.common
15
			adaptivedemux \
16
BAD_GST_DIRS+=  ext/bz2
16
			adpcmdec \
17
			adpcmenc \
18
			aes \
19
			aiff \
20
			asfmux \
21
			audio \
22
			audiobuffersplit \
23
			audiofxbad \
24
			audiolatency \
25
			audiomixmatrix \
26
			audiovisualizers \
27
			autoconvert \
28
			basecamerabinsrc \
29
			bayer \
30
			bz2 \
31
			camerabin2 \
32
			codecalpha \
33
			codecparsers \
34
			codecs \
35
			coloreffects \
36
			data \
37
			debugutils \
38
			dvbsubenc \
39
			dvbsuboverlay \
40
			dvdspu \
41
			examples \
42
			faceoverlay \
43
			festival \
44
			fieldanalysis \
45
			freeverb \
46
			frei0r \
47
			gaudieffects \
48
			gdp \
49
			geometrictransform \
50
			id3tag \
51
			insertbin \
52
			inter \
53
			interfaces \
54
			interlace \
55
			ipcpipeline \
56
			isoff \
57
			ivfparse \
58
			ivtc \
59
			jp2kdecimator \
60
			jpegformat \
61
			librfb \
62
			midi \
63
			mpegdemux \
64
			mpegpsmux \
65
			mpegts \
66
			mpegtsdemux \
67
			mpegtsmux \
68
			mxf \
69
			netsim \
70
			nls \
71
			onvif \
72
			pcapparse \
73
			pkgconfig \
74
			play \
75
			player \
76
			pnm \
77
			proxy \
78
			rawparse \
79
			removesilence \
80
			rist \
81
			rtmp2 \
82
			rtp \
83
			sctp \
84
			sdp \
85
			segmentclip \
86
			shm \
87
			siren \
88
			smooth \
89
			speed \
90
			subenc \
91
			switchbin \
92
			timecode \
93
			transcode \
94
			transcoder \
95
			uridownloader \
96
			videofilters \
97
			videoframe_audiolevel \
98
			videoparsers \
99
			videosignal \
100
			vmnc \
101
			webrtc \
102
			y4m
103
17
NO_GSTREAMER_COMMON=	yes
104
NO_GSTREAMER_COMMON=	yes
18
PLIST=		${.CURDIR}/pkg-plist
105
PLIST=		${.CURDIR}/pkg-plist
19
106
20
do-build:
107
USES+=ssl
21
.for dir in ${BAD_GST_DIRS}
22
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
23
.endfor
24
25
do-install:
26
.for dir in ${BAD_GST_DIRS}
27
	@(cd ${INSTALL_WRKSRC}/${dir} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
28
.endfor
29
108
30
.include "${MASTERDIR}/Makefile"
109
.include "${MASTERDIR}/Makefile"
110
111
USE_GNOME+=	glib20 gtk30
112
113
BUILD_DEPENDS+=	v4l_compat>=1.0.20100321:multimedia/v4l_compat \
114
	gtk3>=3.10:x11-toolkits/gtk30
115
116
LIB_DEPENDS+=libnice.so:net-im/libnice
117
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-data_meson.build (+12 lines)
Added Link Here
1
--- data/meson.build.orig	2022-09-05 21:41:46 UTC
2
+++ data/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('data').enabled()
5
 encoding_targetsdir = join_paths(get_option('datadir'),
6
     'gstreamer-' + api_version, 'encoding-profiles')
7
 
8
@@ -21,3 +22,4 @@ foreach path_targets : encoding_targets
9
   etargets = path_targets.get(1)
10
   install_data(sources: etargets, install_dir: dir)
11
 endforeach
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_dash_meson.build (+21 lines)
Added Link Here
1
--- ext/dash/meson.build.orig	2022-09-13 21:07:32 UTC
2
+++ ext/dash/meson.build
3
@@ -45,9 +45,15 @@ if xml2_dep.found()
4
     c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'],
5
     link_args : noseh_link_args,
6
     include_directories : [configinc, libsinc],
7
-    dependencies : [gstadaptivedemux_dep, gsturidownloader_dep, gsttag_dep,
8
-                    gstnet_dep, gstpbutils_dep, gstbase_dep, gstisoff_dep,
9
-                    gio_dep, xml2_dep],
10
+    dependencies : [cc.find_library('gstadaptivedemux-1.0', required : true),
11
+      cc.find_library('gsturidownloader-1.0', required : true),
12
+      dependency('gstreamer-tag-1.0'),
13
+      dependency('gstreamer-net-1.0'),
14
+      dependency('gstreamer-pbutils-1.0'),
15
+      gstbase_dep,
16
+      cc.find_library('gstisoff-1.0', required : true),
17
+      gio_dep,
18
+      xml2_dep],
19
     install : true,
20
     install_dir : plugins_install_dir,
21
   )
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_hls_meson.build (+12 lines)
Added Link Here
1
--- ext/hls/meson.build.orig	2022-09-16 17:38:38 UTC
2
+++ ext/hls/meson.build
3
@@ -58,7 +58,8 @@ gsthls = library('gsthls',
4
   link_args : noseh_link_args,
5
   include_directories : [configinc],
6
   dependencies : [gstpbutils_dep, gsttag_dep, gstvideo_dep,
7
-                  gstadaptivedemux_dep, gsturidownloader_dep,
8
+                  cc.find_library('gstadaptivedemux-1.0', required: true),
9
+                  cc.find_library('gsturidownloader-1.0', required: true),
10
                   hls_crypto_dep, gio_dep, libm],
11
   install : true,
12
   install_dir : plugins_install_dir,
(-)a/multimedia/gstreamer1-plugins-bad/files/patch-ext_opencv_gstcvdilateerode.cpp (-11 lines)
Removed Link Here
1
--- ext/opencv/gstcvdilateerode.cpp.orig	2021-08-02 14:37:33 UTC
2
+++ ext/opencv/gstcvdilateerode.cpp
3
@@ -89,7 +89,7 @@ gst_cv_dilate_erode_get_type (void)
4
 {
5
   static volatile gsize opencv_dilate_erode_type = 0;
6
 
7
-  if (g_once_init_enter (&opencv_dilate_erode_type)) {
8
+  if (g_once_init_enter ((unsigned long *)&opencv_dilate_erode_type)) {
9
     GType _type;
10
     static const GTypeInfo opencv_dilate_erode_info = {
11
       sizeof (GstCvDilateErodeClass),
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_openjpeg_meson.build (+11 lines)
Added Link Here
1
--- ext/openjpeg/meson.build.orig	2022-09-12 08:53:57 UTC
2
+++ ext/openjpeg/meson.build
3
@@ -18,7 +18,7 @@ if openjpeg_dep.found()
4
     link_args : noseh_link_args,
5
     include_directories : [configinc],
6
     dependencies : [gst_dep, gstvideo_dep, openjpeg_dep,
7
-		    gstcodecparsers_dep, libm],
8
+		    dependency('gstreamer-codecparsers-1.0'), libm],
9
     install : true,
10
     install_dir : plugins_install_dir,
11
   )
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_openmpt_meson.build (+11 lines)
Added Link Here
1
--- ext/openmpt/meson.build.orig	2022-06-15 22:36:22 UTC
2
+++ ext/openmpt/meson.build
3
@@ -4,7 +4,7 @@ if openmpt_dep.found()
4
     'gstopenmptdec.c', 'plugin.c',
5
     c_args: gst_plugins_bad_args,
6
     include_directories: [configinc],
7
-    dependencies: [gstbadaudio_dep, gstaudio_dep, openmpt_dep],
8
+    dependencies: [dependency('gstreamer-bad-audio-1.0'), dependency('gstreamer-audio-1.0'), openmpt_dep],
9
     install: true,
10
     install_dir: plugins_install_dir,
11
   )
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_smoothstreaming_meson.build (+17 lines)
Added Link Here
1
--- ext/smoothstreaming/meson.build.orig	2022-09-16 20:01:19 UTC
2
+++ ext/smoothstreaming/meson.build
3
@@ -13,8 +13,12 @@ if xml28_dep.found()
4
     c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'],
5
     link_args : noseh_link_args,
6
     include_directories : [configinc, libsinc],
7
-    dependencies : [gst_dep, gstadaptivedemux_dep, gstcodecparsers_dep,
8
-		    gsturidownloader_dep, gstisoff_dep, xml28_dep, gio_dep],
9
+    dependencies : [gst_dep,
10
+      cc.find_library('gstadaptivedemux-1.0', required : true),
11
+      dependency('gstreamer-codecparsers-1.0', required : true),
12
+      cc.find_library('gsturidownloader-1.0', required : true),
13
+      cc.find_library('gstisoff-1.0', required : true),
14
+      xml28_dep, gio_dep],
15
     install : true,
16
     install_dir : plugins_install_dir,
17
   )
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_spandsp_gstspanplc.h (+10 lines)
Added Link Here
1
--- ext/spandsp/gstspanplc.h.orig	2022-09-16 22:58:32 UTC
2
+++ ext/spandsp/gstspanplc.h
3
@@ -22,6 +22,7 @@
4
 
5
 #include <gst/gst.h>
6
 
7
+#include <spandsp/private/plc.h>
8
 #include <spandsp.h>
9
 
10
 G_BEGIN_DECLS
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-ext_webrtcdsp_meson.build (+11 lines)
Added Link Here
1
--- ext/webrtcdsp/meson.build.orig	2022-09-07 19:55:24 UTC
2
+++ ext/webrtcdsp/meson.build
3
@@ -17,7 +17,7 @@ if webrtc_dep.found() and gnustl_dep.found()
4
     cpp_args : gst_plugins_bad_args,
5
     link_args : noseh_link_args,
6
     include_directories : [configinc],
7
-    dependencies : [gstbase_dep, gstaudio_dep, gstbadaudio_dep, webrtc_dep, gnustl_dep],
8
+    dependencies : [gstbase_dep, gstaudio_dep, dependency('gstreamer-bad-audio-1.0'), webrtc_dep, gnustl_dep],
9
     install : true,
10
     install_dir : plugins_install_dir,
11
     override_options : ['cpp_std=c++11'],
(-)a/multimedia/gstreamer1-plugins-bad/files/patch-git_a0cd455d (-142 lines)
Removed Link Here
1
From a0cd455dd0e0375c6395fe732173225ea7e18562 Mon Sep 17 00:00:00 2001
2
From: Debarshi Ray <rishi@gnu.org>
3
Date: Fri, 20 Mar 2020 15:49:06 +0100
4
Subject: [PATCH] lv2: Make it build with -fno-common
5
6
GCC 10 defaults to -fno-common. This means that global variables shared
7
across multiple translation units should be declared as 'extern' in
8
header files and defined in exactly one C file. See:
9
https://gcc.gnu.org/gcc-10/porting_to.html
10
11
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1125
12
13
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1125>
14
---
15
 ext/lv2/gstlv2.c | 33 ++++++++++++++++++++++++++
16
 ext/lv2/gstlv2.h | 62 ++++++++++++++++++++++++------------------------
17
 2 files changed, 64 insertions(+), 31 deletions(-)
18
19
diff --git a/ext/lv2/gstlv2.c b/ext/lv2/gstlv2.c
20
index 60d502f41a..7feeee1921 100644
21
--- ext/lv2/gstlv2.c
22
+++ ext/lv2/gstlv2.c
23
@@ -69,6 +69,39 @@ GST_DEBUG_CATEGORY (lv2_debug);
24
 #error "Unsupported OS"
25
 #endif
26
 
27
+LilvWorld *world = NULL;
28
+LilvNode *atom_class = NULL;
29
+LilvNode *audio_class = NULL;
30
+LilvNode *control_class = NULL;
31
+LilvNode *cv_class = NULL;
32
+LilvNode *event_class = NULL;
33
+LilvNode *input_class = NULL;
34
+LilvNode *output_class = NULL;
35
+LilvNode *preset_class = NULL;
36
+LilvNode *state_iface = NULL;
37
+LilvNode *state_uri = NULL;
38
+
39
+LilvNode *integer_prop = NULL;
40
+LilvNode *toggled_prop = NULL;
41
+LilvNode *designation_pred = NULL;
42
+LilvNode *in_place_broken_pred = NULL;
43
+LilvNode *optional_pred = NULL;
44
+LilvNode *group_pred = NULL;
45
+LilvNode *supports_event_pred = NULL;
46
+LilvNode *label_pred = NULL;
47
+
48
+LilvNode *center_role = NULL;
49
+LilvNode *left_role = NULL;
50
+LilvNode *right_role = NULL;
51
+LilvNode *rear_center_role = NULL;
52
+LilvNode *rear_left_role = NULL;
53
+LilvNode *rear_right_role = NULL;
54
+LilvNode *lfe_role = NULL;
55
+LilvNode *center_left_role = NULL;
56
+LilvNode *center_right_role = NULL;
57
+LilvNode *side_left_role = NULL;
58
+LilvNode *side_right_role = NULL;
59
+
60
 GstStructure *lv2_meta_all = NULL;
61
 
62
 static void
63
diff --git a/ext/lv2/gstlv2.h b/ext/lv2/gstlv2.h
64
index 177f9b2c19..9f72582294 100644
65
--- ext/lv2/gstlv2.h
66
+++ ext/lv2/gstlv2.h
67
@@ -28,40 +28,40 @@
68
 
69
 #include "gstlv2utils.h"
70
 
71
-LilvWorld *world;
72
-LilvNode *atom_class;
73
-LilvNode *audio_class;
74
-LilvNode *control_class;
75
-LilvNode *cv_class;
76
-LilvNode *event_class;
77
-LilvNode *input_class;
78
-LilvNode *output_class;
79
-LilvNode *preset_class;
80
-LilvNode *state_iface;
81
-LilvNode *state_uri;
82
+extern LilvWorld *world;
83
+extern LilvNode *atom_class;
84
+extern LilvNode *audio_class;
85
+extern LilvNode *control_class;
86
+extern LilvNode *cv_class;
87
+extern LilvNode *event_class;
88
+extern LilvNode *input_class;
89
+extern LilvNode *output_class;
90
+extern LilvNode *preset_class;
91
+extern LilvNode *state_iface;
92
+extern LilvNode *state_uri;
93
 
94
-LilvNode *integer_prop;
95
-LilvNode *toggled_prop;
96
-LilvNode *designation_pred;
97
-LilvNode *in_place_broken_pred;
98
-LilvNode *optional_pred;
99
-LilvNode *group_pred;
100
-LilvNode *supports_event_pred;
101
-LilvNode *label_pred;
102
+extern LilvNode *integer_prop;
103
+extern LilvNode *toggled_prop;
104
+extern LilvNode *designation_pred;
105
+extern LilvNode *in_place_broken_pred;
106
+extern LilvNode *optional_pred;
107
+extern LilvNode *group_pred;
108
+extern LilvNode *supports_event_pred;
109
+extern LilvNode *label_pred;
110
 
111
-LilvNode *center_role;
112
-LilvNode *left_role;
113
-LilvNode *right_role;
114
-LilvNode *rear_center_role;
115
-LilvNode *rear_left_role;
116
-LilvNode *rear_right_role;
117
-LilvNode *lfe_role;
118
-LilvNode *center_left_role;
119
-LilvNode *center_right_role;
120
-LilvNode *side_left_role;
121
-LilvNode *side_right_role;
122
+extern LilvNode *center_role;
123
+extern LilvNode *left_role;
124
+extern LilvNode *right_role;
125
+extern LilvNode *rear_center_role;
126
+extern LilvNode *rear_left_role;
127
+extern LilvNode *rear_right_role;
128
+extern LilvNode *lfe_role;
129
+extern LilvNode *center_left_role;
130
+extern LilvNode *center_right_role;
131
+extern LilvNode *side_left_role;
132
+extern LilvNode *side_right_role;
133
 
134
-GstStructure *lv2_meta_all;
135
+extern GstStructure *lv2_meta_all;
136
 
137
 void gst_lv2_filter_register_element (GstPlugin *plugin,
138
                                       GstStructure * lv2_meta);
139
-- 
140
GitLab
141
142
(-)a/multimedia/gstreamer1-plugins-bad/files/patch-git_dc57fb70 (-26 lines)
Removed Link Here
1
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1255
2
3
vkerror.c:66:16: error: use of undeclared identifier 'VK_RESULT_BEGIN_RANGE'
4
  if (result < VK_RESULT_BEGIN_RANGE)
5
               ^
6
7
--- ext/vulkan/vkerror.c.orig	2019-04-19 09:16:36 UTC
8
+++ ext/vulkan/vkerror.c
9
@@ -27,7 +27,7 @@
10
 #include "vkerror.h"
11
 
12
 /* *INDENT-OFF* */
13
-static const struct 
14
+static const struct
15
 {
16
   VkResult result;
17
   const char *str;
18
@@ -63,8 +63,6 @@ _vk_result_to_string (VkResult result)
19
 
20
   if (result >= 0)
21
     return NULL;
22
-  if (result < VK_RESULT_BEGIN_RANGE)
23
-    return "Unknown Error";
24
 
25
   for (i = 0; i < G_N_ELEMENTS (vk_result_string_map); i++) {
26
     if (result == vk_result_string_map[i].result)
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_adaptivedemux_meson.build (+20 lines)
Added Link Here
1
--- gst-libs/gst/adaptivedemux/meson.build.orig	2022-09-05 19:47:37 UTC
2
+++ gst-libs/gst/adaptivedemux/meson.build
3
@@ -1,5 +1,8 @@
4
+if get_option('adaptivedemux').enabled()
5
 adaptivedemux_sources = files('gstadaptivedemux.c')
6
-adaptivedemux_headers = files('gstadaptivedemux.h')
7
+adaptivedemux_headers = files('gstadaptivedemux.h',
8
+  'adaptive-demux-prelude.h')
9
+install_headers(adaptivedemux_headers, subdir : 'gstreamer-1.0/gst/adaptivedemux')
10
 
11
 pkg_name = 'gstreamer-adaptivedemux-1.0'
12
 gstadaptivedemux = library('gstadaptivedemux-' + api_version,
13
@@ -18,4 +21,5 @@ gstadaptivedemux_dep = declare_dependency(link_with : 
14
   include_directories : [libsinc],
15
   dependencies : [gstbase_dep, gsturidownloader_dep])
16
 
17
-meson.override_dependency(pkg_name, gstadaptivedemux_dep)
18
\ No newline at end of file
19
+meson.override_dependency(pkg_name, gstadaptivedemux_dep)
20
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_audio_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/audio/meson.build.orig	2022-09-05 20:33:42 UTC
2
+++ gst-libs/gst/audio/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('audio').enabled()
5
 badaudio_sources = files('gstnonstreamaudiodecoder.c', 'gstplanaraudioadapter.c')
6
 badaudio_headers = files('gstnonstreamaudiodecoder.h', 'audio-bad-prelude.h', 'gstplanaraudioadapter.h')
7
 install_headers(badaudio_headers, subdir : 'gstreamer-1.0/gst/audio')
8
@@ -52,3 +53,4 @@ gstbadaudio_dep = declare_dependency(link_with : gstba
9
   dependencies : [gstaudio_dep, gstbase_dep])
10
 
11
 meson.override_dependency(pkg_name, gstbadaudio_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_basecamerabinsrc_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/basecamerabinsrc/meson.build.orig	2022-09-05 21:00:40 UTC
2
+++ gst-libs/gst/basecamerabinsrc/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('basecamerabinsrc').enabled()
5
 camerabin_sources = files(
6
   'gstcamerabin-enum.c',
7
   'gstcamerabinpreview.c',
8
@@ -51,3 +52,4 @@ gstbasecamerabin_dep = declare_dependency(link_with : 
9
   sources: gen_sources,
10
   dependencies : [gstapp_dep])
11
 meson.override_dependency(pkg_name, gstbasecamerabin_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecparsers_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/codecparsers/meson.build.orig	2022-09-05 20:42:22 UTC
2
+++ gst-libs/gst/codecparsers/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('codecparsers').enabled()
5
 codecparser_sources = files([
6
   'gstjpeg2000sampling.c',
7
   'gstjpegparser.c',
8
@@ -69,3 +70,4 @@ gstcodecparsers_dep = declare_dependency(link_with : g
9
 
10
 libraries += [[pkg_name, {'lib': gstcodecparsers}]]
11
 meson.override_dependency(pkg_name, gstcodecparsers_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_codecs_meson.build (+15 lines)
Added Link Here
1
--- gst-libs/gst/codecs/meson.build.orig	2022-09-05 20:49:44 UTC
2
+++ gst-libs/gst/codecs/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('codecs').enabled()
5
 codecs_sources = files(
6
   'gsth264decoder.c',
7
   'gsth264picture.c',
8
@@ -81,4 +82,5 @@ gstcodecs_dep = declare_dependency(link_with : gstcode
9
   include_directories : [libsinc],
10
   sources: gen_sources,
11
   dependencies : [gstvideo_dep, gstcodecparsers_dep])
12
-meson.override_dependency(pkg_name, gstcodecs_dep)
13
\ No newline at end of file
14
+meson.override_dependency(pkg_name, gstcodecs_dep)
15
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_insertbin_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/insertbin/meson.build.orig	2022-09-05 21:06:02 UTC
2
+++ gst-libs/gst/insertbin/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('insertbin').enabled()
5
 insert_sources = files('gstinsertbin.c')
6
 insert_headers = files('gstinsertbin.h')
7
 install_headers(insert_headers, subdir : 'gstreamer-1.0/gst/insertbin')
8
@@ -51,3 +52,4 @@ gstinsertbin_dep = declare_dependency(link_with : gsti
9
   dependencies : [gst_dep])
10
 
11
 meson.override_dependency(pkg_name, gstinsertbin_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_interfaces_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/interfaces/meson.build.orig	2022-09-05 21:08:24 UTC
2
+++ gst-libs/gst/interfaces/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('interfaces').enabled()
5
 photography_sources = ['photography.c']
6
 photo_headers = ['photography.h', 'photography-prelude.h']
7
 install_headers(photo_headers, subdir : 'gstreamer-1.0/gst/interfaces')
8
@@ -40,3 +41,4 @@ gstphotography_dep = declare_dependency(link_with : gs
9
 
10
 libraries += [[pkg_name, {'lib': gstphotography}]]
11
 meson.override_dependency(pkg_name, gstphotography_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_isoff_meson.build (+21 lines)
Added Link Here
1
--- gst-libs/gst/isoff/meson.build.orig	2022-09-15 15:00:43 UTC
2
+++ gst-libs/gst/isoff/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('isoff').enabled()
5
 isoff_sources = [
6
   'gstisoff.c',
7
 ]
8
@@ -6,6 +7,8 @@ isoff_headers = [
9
 ]
10
 install_headers(isoff_headers, subdir : 'gstreamer-1.0/gst/isoff')
11
 
12
+pkg_name = 'gstreamer-isoff-1.0'
13
+
14
 gstisoff = library('gstisoff-' + api_version,
15
   isoff_sources,
16
   c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DBUILDING_GST_ISOFF', '-DG_LOG_DOMAIN="GStreamer-ISOFF"'],
17
@@ -20,3 +23,4 @@ gstisoff = library('gstisoff-' + api_version,
18
 gstisoff_dep = declare_dependency(link_with : gstisoff,
19
   include_directories : [libsinc],
20
   dependencies : [gstbase_dep])
21
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_mpegts_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/mpegts/meson.build.orig	2022-09-05 21:11:41 UTC
2
+++ gst-libs/gst/mpegts/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('mpegts').enabled()
5
 mpegts_sources = files(
6
   'mpegts.c',
7
   'gstmpegtssection.c',
8
@@ -82,3 +83,4 @@ gstmpegts_dep = declare_dependency(link_with : gstmpeg
9
   dependencies : [gst_dep],
10
   sources : gen_sources)
11
 meson.override_dependency(pkg_name, gstmpegts_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_play_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/play/meson.build.orig	2022-09-05 21:13:21 UTC
2
+++ gst-libs/gst/play/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('play').enabled()
5
 gstplay_sources = files(
6
   'gstplay.c',
7
   'gstplay-signal-adapter.c',
8
@@ -74,3 +75,4 @@ gstplay_dep = declare_dependency(link_with : gstplay,
9
                   gsttag_dep, gstpbutils_dep])
10
 
11
 meson.override_dependency(pkg_name, gstplay_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_player_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/player/meson.build.orig	2022-09-05 21:14:52 UTC
2
+++ gst-libs/gst/player/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('player').enabled()
5
 gstplayer_sources = files([
6
   'gstplayer.c',
7
   'gstplayer-signal-dispatcher.c',
8
@@ -77,3 +78,4 @@ gstplayer_dep = declare_dependency(link_with : gstplay
9
                   gsttag_dep, gstpbutils_dep])
10
 
11
 meson.override_dependency(pkg_name, gstplayer_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_sctp_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/sctp/meson.build.orig	2022-09-05 21:16:11 UTC
2
+++ gst-libs/gst/sctp/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('sctp').enabled()
5
 sctp_sources = [
6
   'sctpreceivemeta.c',
7
   'sctpsendmeta.c',
8
@@ -36,3 +37,4 @@ gstsctp_dep = declare_dependency(link_with : libgstsct
9
   dependencies : [gstbase_dep])
10
 
11
 meson.override_dependency(pkg_name, gstsctp_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_transcoder_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/transcoder/meson.build.orig	2022-09-05 21:18:30 UTC
2
+++ gst-libs/gst/transcoder/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('transcoder').enabled()
5
 sources = files(['gsttranscoder.c', 'gsttranscoder-signal-adapter.c'])
6
 headers = files(['gsttranscoder.h', 'transcoder-prelude.h', 'gsttranscoder-signal-adapter.h'])
7
 
8
@@ -64,3 +65,4 @@ gst_transcoder_dep = declare_dependency(link_with: gst
9
   include_directories : [libsinc]
10
 )
11
 meson.override_dependency(pkg_name, gst_transcoder_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_uridownloader_meson.build (+15 lines)
Added Link Here
1
--- gst-libs/gst/uridownloader/meson.build.orig	2022-09-05 21:20:17 UTC
2
+++ gst-libs/gst/uridownloader/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('uridownloader').enabled()
5
 urid_sources = [
6
   'gstfragment.c',
7
   'gsturidownloader.c',
8
@@ -27,4 +28,5 @@ gsturidownloader_dep = declare_dependency(link_with : 
9
   dependencies : [gstbase_dep])
10
 
11
 libraries += [[pkg_name, {'lib': gsturidownloader}]]
12
-meson.override_dependency(pkg_name, gsturidownloader_dep)
13
\ No newline at end of file
14
+meson.override_dependency(pkg_name, gsturidownloader_dep)
15
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-gst-libs_gst_webrtc_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/webrtc/meson.build.orig	2022-09-05 21:22:10 UTC
2
+++ gst-libs/gst/webrtc/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('webrtc').enabled()
5
 webrtc_sources = files([
6
   'dtlstransport.c',
7
   'icetransport.c',
8
@@ -95,3 +96,4 @@ gstwebrtc_dep = declare_dependency(link_with: gstwebrt
9
   dependencies: gstwebrtc_dependencies)
10
 
11
 meson.override_dependency(pkg_name, gstwebrtc_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-meson.build (+18 lines)
Added Link Here
1
--- meson.build.orig	2022-09-04 20:06:36 UTC
2
+++ meson.build
3
@@ -498,6 +498,7 @@ pkgconfig_variables = ['exec_prefix=${prefix}',
4
 
5
 pkgconfig_subdirs = ['gstreamer-1.0']
6
 
7
+if get_option('pkgconfig').enabled()
8
 pkgconfig.generate(
9
   libraries : [gst_dep],
10
   variables : pkgconfig_variables,
11
@@ -505,6 +506,7 @@ pkgconfig.generate(
12
   name : 'gstreamer-plugins-bad-1.0',
13
   description : 'Streaming media framework, bad plugins libraries',
14
 )
15
+endif
16
 
17
 gpl_allowed = get_option('gpl').allowed()
18
 
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-meson__options.txt (+42 lines)
Added Link Here
1
--- meson_options.txt.orig	2022-09-04 20:24:08 UTC
2
+++ meson_options.txt
3
@@ -1,5 +1,39 @@
4
 option('gst_play_tests', type: 'boolean', value: false,
5
        description: 'Enable GstPlay tests that need network access')
6
+option('adaptivedemux', type: 'feature', value: 'auto',
7
+       description: 'adaptivedemux lib')
8
+option('audio', type: 'feature', value: 'auto',
9
+       description: 'audio lib')
10
+option('codecparsers', type: 'feature', value: 'auto',
11
+       description: 'codecparsers lib')
12
+option('codecs', type: 'feature', value: 'auto',
13
+       description: 'codecs lib')
14
+option('basecamerabinsrc', type: 'feature', value: 'auto',
15
+       description: 'basecamerabinsrc lib')
16
+option('insertbin', type: 'feature', value: 'auto',
17
+       description: 'insertbin lib')
18
+option('interfaces', type: 'feature', value: 'auto',
19
+       description: 'interfaces lib')
20
+option('isoff', type: 'feature', value: 'auto',
21
+       description: 'isoff lib')
22
+option('mpegts', type: 'feature', value: 'auto',
23
+       description: 'mpegts lib')
24
+option('play', type: 'feature', value: 'auto',
25
+       description: 'play lib')
26
+option('player', type: 'feature', value: 'auto',
27
+       description: 'player lib')
28
+option('transcoder', type: 'feature', value: 'auto',
29
+       description: 'transcoder lib')
30
+option('uridownloader', type: 'feature', value: 'auto',
31
+       description: 'uridownloader lib')
32
+option('webrtc', type: 'feature', value: 'auto',
33
+       description: 'webrtc lib')
34
+option('tools', type: 'feature', value: 'auto',
35
+       description: 'tools lib')
36
+option('data', type: 'feature', value: 'auto',
37
+       description: 'data lib')
38
+option('pkgconfig', type: 'feature', value: 'auto',
39
+       description: 'pkgconfig lib')
40
 
41
 # Feature options for plugins without external deps
42
 option('accurip', type : 'feature', value : 'auto')
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-sys_kms_meson.build (+13 lines)
Added Link Here
1
--- sys/kms/meson.build.orig	2022-09-12 09:58:35 UTC
2
+++ sys/kms/meson.build
3
@@ -5,10 +5,6 @@ kmssink_sources = [
4
   'gstkmsutils.c',
5
 ]
6
 
7
-if host_system != 'linux'
8
-  subdir_done()
9
-endif
10
-
11
 libdrm_dep = dependency('libdrm', version : '>= 2.4.98',
12
                         required : get_option('kms'),
13
                         fallback: ['libdrm', 'ext_libdrm'])
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-sys_msdk_meson.build (+16 lines)
Added Link Here
1
--- sys/msdk/meson.build.orig	2022-09-16 08:39:55 UTC
2
+++ sys/msdk/meson.build
3
@@ -169,7 +169,12 @@ if msdk_deps_found
4
     msdk_sources,
5
     c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'],
6
     include_directories : [configinc, mfx_inc],
7
-    dependencies : [gstbase_dep, gstvideo_dep, gstpbutils_dep, gstallocators_dep, gstcodecparsers_dep, mfx_dep, msdk_deps],
8
+    dependencies : [gstbase_dep,
9
+      dependency('gstreamer-video-1.0', required : true),
10
+      dependency('gstreamer-pbutils-1.0', required : true),
11
+      dependency('gstreamer-allocators-1.0', required : true),
12
+      dependency('gstreamer-codecparsers-1.0', required : true),
13
+      mfx_dep, msdk_deps],
14
     install : true,
15
     install_dir : plugins_install_dir,
16
   )
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-tests_examples_meson.build (+74 lines)
Added Link Here
1
--- tests/examples/meson.build.orig	2022-09-13 22:41:40 UTC
2
+++ tests/examples/meson.build
3
@@ -1,20 +1,54 @@
4
-subdir('audiomixmatrix')
5
-subdir('avsamplesink')
6
-subdir('camerabin2')
7
-subdir('codecparsers')
8
-subdir('d3d11')
9
-subdir('directfb')
10
-subdir('ipcpipeline')
11
-subdir('mpegts')
12
-subdir('msdk')
13
-subdir('mxf')
14
-subdir('nvcodec')
15
-subdir('opencv', if_found: opencv_dep)
16
-subdir('uvch264')
17
-subdir('va')
18
-subdir('waylandsink')
19
-subdir('webrtc')
20
-subdir('wpe')
21
+if get_option('audiomixmatrix').enabled()
22
+  subdir('audiomixmatrix')
23
+endif
24
+if get_option('applemedia').enabled()
25
+  subdir('avsamplesink')
26
+endif
27
+if get_option('camerabin2').enabled()
28
+  subdir('camerabin2')
29
+endif
30
+if get_option('codecparsers').enabled()
31
+  subdir('codecparsers')
32
+endif
33
+if get_option('d3d11').enabled()
34
+  subdir('d3d11')
35
+endif
36
+if get_option('directfb').enabled()
37
+  subdir('directfb')
38
+endif
39
+if get_option('ipcpipeline').enabled()
40
+  subdir('ipcpipeline')
41
+endif
42
+if get_option('mpegts').enabled()
43
+  subdir('mpegts')
44
+endif
45
+if get_option('msdk').enabled()
46
+  subdir('msdk')
47
+endif
48
+if get_option('mxf').enabled()
49
+  subdir('mxf')
50
+endif
51
+if get_option('nvcodec').enabled()
52
+  subdir('nvcodec')
53
+endif
54
+if get_option('opencv').enabled()
55
+  subdir('opencv', if_found: opencv_dep)
56
+endif
57
+if get_option('uvch264').enabled()
58
+  subdir('uvch264')
59
+endif
60
+if get_option('va').enabled()
61
+  subdir('va')
62
+endif
63
+if get_option('wayland').enabled()
64
+  subdir('waylandsink')
65
+endif
66
+if get_option('webrtc').enabled()
67
+  subdir('webrtc')
68
+endif
69
+if get_option('wpe').enabled()
70
+  subdir('wpe')
71
+endif
72
 
73
 executable('playout',
74
   'playout.c',
(-)b/multimedia/gstreamer1-plugins-bad/files/patch-tools_meson.build (+11 lines)
Added Link Here
1
--- tools/meson.build.orig	2022-09-05 21:25:23 UTC
2
+++ tools/meson.build
3
@@ -1,6 +1,8 @@
4
+if get_option('tools').enabled()
5
 executable('gst-transcoder-' + api_version,
6
   'gst-transcoder.c', 'utils.c',
7
   install : true,
8
   dependencies : [gst_dep, gstpbutils_dep, gst_transcoder_dep],
9
   c_args: ['-DG_LOG_DOMAIN="gst-transcoder-@0@"'.format(api_version)],
10
 )
11
+endif
(-)b/multimedia/gstreamer1-plugins-bad/pkg-plist (-10 / +71 lines)
Lines 1-3 Link Here
1
bin/playout
2
include/gstreamer-%%VERSION%%/gst/adaptivedemux/gstadaptivedemux.h
3
include/gstreamer-%%VERSION%%/gst/adaptivedemux/adaptive-demux-prelude.h
1
include/gstreamer-%%VERSION%%/gst/audio/audio-bad-prelude.h
4
include/gstreamer-%%VERSION%%/gst/audio/audio-bad-prelude.h
2
include/gstreamer-%%VERSION%%/gst/audio/gstnonstreamaudiodecoder.h
5
include/gstreamer-%%VERSION%%/gst/audio/gstnonstreamaudiodecoder.h
3
include/gstreamer-%%VERSION%%/gst/audio/gstplanaraudioadapter.h
6
include/gstreamer-%%VERSION%%/gst/audio/gstplanaraudioadapter.h
Lines 6-11 include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstbasecamerasrc.h Link Here
6
include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstcamerabin-enum.h
9
include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstcamerabin-enum.h
7
include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstcamerabinpreview.h
10
include/gstreamer-%%VERSION%%/gst/basecamerabinsrc/gstcamerabinpreview.h
8
include/gstreamer-%%VERSION%%/gst/codecparsers/codecparsers-prelude.h
11
include/gstreamer-%%VERSION%%/gst/codecparsers/codecparsers-prelude.h
12
include/gstreamer-%%VERSION%%/gst/codecparsers/gstav1parser.h
9
include/gstreamer-%%VERSION%%/gst/codecparsers/gsth264parser.h
13
include/gstreamer-%%VERSION%%/gst/codecparsers/gsth264parser.h
10
include/gstreamer-%%VERSION%%/gst/codecparsers/gsth265parser.h
14
include/gstreamer-%%VERSION%%/gst/codecparsers/gsth265parser.h
11
include/gstreamer-%%VERSION%%/gst/codecparsers/gstjpeg2000sampling.h
15
include/gstreamer-%%VERSION%%/gst/codecparsers/gstjpeg2000sampling.h
Lines 22-36 include/gstreamer-%%VERSION%%/gst/interfaces/photography-enumtypes.h Link Here
22
include/gstreamer-%%VERSION%%/gst/interfaces/photography-prelude.h
26
include/gstreamer-%%VERSION%%/gst/interfaces/photography-prelude.h
23
include/gstreamer-%%VERSION%%/gst/interfaces/photography.h
27
include/gstreamer-%%VERSION%%/gst/interfaces/photography.h
24
include/gstreamer-%%VERSION%%/gst/isoff/gstisoff.h
28
include/gstreamer-%%VERSION%%/gst/isoff/gstisoff.h
29
include/gstreamer-%%VERSION%%/gst/mpegts/gst-atsc-descriptor.h
25
include/gstreamer-%%VERSION%%/gst/mpegts/gst-atsc-section.h
30
include/gstreamer-%%VERSION%%/gst/mpegts/gst-atsc-section.h
26
include/gstreamer-%%VERSION%%/gst/mpegts/gst-dvb-descriptor.h
31
include/gstreamer-%%VERSION%%/gst/mpegts/gst-dvb-descriptor.h
27
include/gstreamer-%%VERSION%%/gst/mpegts/gst-dvb-section.h
32
include/gstreamer-%%VERSION%%/gst/mpegts/gst-dvb-section.h
33
include/gstreamer-%%VERSION%%/gst/mpegts/gst-hdmv-section.h
34
include/gstreamer-%%VERSION%%/gst/mpegts/gst-isdb-descriptor.h
28
include/gstreamer-%%VERSION%%/gst/mpegts/gst-scte-section.h
35
include/gstreamer-%%VERSION%%/gst/mpegts/gst-scte-section.h
29
include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegts-enumtypes.h
36
include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegts-enumtypes.h
30
include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegtsdescriptor.h
37
include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegtsdescriptor.h
31
include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegtssection.h
38
include/gstreamer-%%VERSION%%/gst/mpegts/gstmpegtssection.h
32
include/gstreamer-%%VERSION%%/gst/mpegts/mpegts-prelude.h
39
include/gstreamer-%%VERSION%%/gst/mpegts/mpegts-prelude.h
33
include/gstreamer-%%VERSION%%/gst/mpegts/mpegts.h
40
include/gstreamer-%%VERSION%%/gst/mpegts/mpegts.h
41
include/gstreamer-%%VERSION%%/gst/play/gstplay-media-info.h
42
include/gstreamer-%%VERSION%%/gst/play/gstplay-signal-adapter.h
43
include/gstreamer-%%VERSION%%/gst/play/gstplay-types.h
44
include/gstreamer-%%VERSION%%/gst/play/gstplay-video-overlay-video-renderer.h
45
include/gstreamer-%%VERSION%%/gst/play/gstplay-video-renderer.h
46
include/gstreamer-%%VERSION%%/gst/play/gstplay-visualization.h
47
include/gstreamer-%%VERSION%%/gst/play/gstplay.h
48
include/gstreamer-%%VERSION%%/gst/play/play-prelude.h
49
include/gstreamer-%%VERSION%%/gst/play/play.h
34
include/gstreamer-%%VERSION%%/gst/player/gstplayer-g-main-context-signal-dispatcher.h
50
include/gstreamer-%%VERSION%%/gst/player/gstplayer-g-main-context-signal-dispatcher.h
35
include/gstreamer-%%VERSION%%/gst/player/gstplayer-media-info.h
51
include/gstreamer-%%VERSION%%/gst/player/gstplayer-media-info.h
36
include/gstreamer-%%VERSION%%/gst/player/gstplayer-signal-dispatcher.h
52
include/gstreamer-%%VERSION%%/gst/player/gstplayer-signal-dispatcher.h
Lines 44-69 include/gstreamer-%%VERSION%%/gst/player/player.h Link Here
44
include/gstreamer-%%VERSION%%/gst/sctp/sctp-prelude.h
60
include/gstreamer-%%VERSION%%/gst/sctp/sctp-prelude.h
45
include/gstreamer-%%VERSION%%/gst/sctp/sctpreceivemeta.h
61
include/gstreamer-%%VERSION%%/gst/sctp/sctpreceivemeta.h
46
include/gstreamer-%%VERSION%%/gst/sctp/sctpsendmeta.h
62
include/gstreamer-%%VERSION%%/gst/sctp/sctpsendmeta.h
63
include/gstreamer-%%VERSION%%/gst/transcoder/gsttranscoder-signal-adapter.h
64
include/gstreamer-%%VERSION%%/gst/transcoder/gsttranscoder.h
65
include/gstreamer-%%VERSION%%/gst/transcoder/transcoder-enumtypes.h
66
include/gstreamer-%%VERSION%%/gst/transcoder/transcoder-prelude.h
47
include/gstreamer-%%VERSION%%/gst/uridownloader/gstfragment.h
67
include/gstreamer-%%VERSION%%/gst/uridownloader/gstfragment.h
48
include/gstreamer-%%VERSION%%/gst/uridownloader/gsturidownloader.h
68
include/gstreamer-%%VERSION%%/gst/uridownloader/gsturidownloader.h
49
include/gstreamer-%%VERSION%%/gst/uridownloader/gsturidownloader_debug.h
69
include/gstreamer-%%VERSION%%/gst/uridownloader/gsturidownloader_debug.h
50
include/gstreamer-%%VERSION%%/gst/uridownloader/uridownloader-prelude.h
70
include/gstreamer-%%VERSION%%/gst/uridownloader/uridownloader-prelude.h
71
include/gstreamer-%%VERSION%%/gst/webrtc/datachannel.h
51
include/gstreamer-%%VERSION%%/gst/webrtc/dtlstransport.h
72
include/gstreamer-%%VERSION%%/gst/webrtc/dtlstransport.h
52
include/gstreamer-%%VERSION%%/gst/webrtc/icetransport.h
73
include/gstreamer-%%VERSION%%/gst/webrtc/icetransport.h
53
include/gstreamer-%%VERSION%%/gst/webrtc/rtcsessiondescription.h
74
include/gstreamer-%%VERSION%%/gst/webrtc/rtcsessiondescription.h
54
include/gstreamer-%%VERSION%%/gst/webrtc/rtpreceiver.h
75
include/gstreamer-%%VERSION%%/gst/webrtc/rtpreceiver.h
55
include/gstreamer-%%VERSION%%/gst/webrtc/rtpsender.h
76
include/gstreamer-%%VERSION%%/gst/webrtc/rtpsender.h
56
include/gstreamer-%%VERSION%%/gst/webrtc/rtptransceiver.h
77
include/gstreamer-%%VERSION%%/gst/webrtc/rtptransceiver.h
78
include/gstreamer-%%VERSION%%/gst/webrtc/sctptransport.h
57
include/gstreamer-%%VERSION%%/gst/webrtc/webrtc-enumtypes.h
79
include/gstreamer-%%VERSION%%/gst/webrtc/webrtc-enumtypes.h
58
include/gstreamer-%%VERSION%%/gst/webrtc/webrtc.h
80
include/gstreamer-%%VERSION%%/gst/webrtc/webrtc.h
59
include/gstreamer-%%VERSION%%/gst/webrtc/webrtc_fwd.h
81
include/gstreamer-%%VERSION%%/gst/webrtc/webrtc_fwd.h
60
lib/girepository-1.0/GstInsertBin-%%VERSION%%.typelib
82
lib/girepository-%%VERSION%%/GstBadAudio-%%VERSION%%.typelib
61
lib/girepository-1.0/GstMpegts-%%VERSION%%.typelib
83
lib/girepository-%%VERSION%%/GstCodecs-%%VERSION%%.typelib
62
lib/girepository-1.0/GstPlayer-%%VERSION%%.typelib
84
lib/girepository-%%VERSION%%/GstInsertBin-%%VERSION%%.typelib
63
lib/girepository-1.0/GstWebRTC-%%VERSION%%.typelib
85
lib/girepository-%%VERSION%%/GstMpegts-%%VERSION%%.typelib
86
lib/girepository-%%VERSION%%/GstPlay-%%VERSION%%.typelib
87
lib/girepository-%%VERSION%%/GstPlayer-%%VERSION%%.typelib
88
lib/girepository-%%VERSION%%/GstTranscoder-%%VERSION%%.typelib
89
lib/girepository-%%VERSION%%/GstWebRTC-%%VERSION%%.typelib
64
lib/gstreamer-%%VERSION%%/libgstaccurip.so
90
lib/gstreamer-%%VERSION%%/libgstaccurip.so
65
lib/gstreamer-%%VERSION%%/libgstadpcmdec.so
91
lib/gstreamer-%%VERSION%%/libgstadpcmdec.so
66
lib/gstreamer-%%VERSION%%/libgstadpcmenc.so
92
lib/gstreamer-%%VERSION%%/libgstadpcmenc.so
93
lib/gstreamer-%%VERSION%%/libgstaes.so
67
lib/gstreamer-%%VERSION%%/libgstaiff.so
94
lib/gstreamer-%%VERSION%%/libgstaiff.so
68
lib/gstreamer-%%VERSION%%/libgstasfmux.so
95
lib/gstreamer-%%VERSION%%/libgstasfmux.so
69
lib/gstreamer-%%VERSION%%/libgstaudiobuffersplit.so
96
lib/gstreamer-%%VERSION%%/libgstaudiobuffersplit.so
Lines 75-83 lib/gstreamer-%%VERSION%%/libgstautoconvert.so Link Here
75
lib/gstreamer-%%VERSION%%/libgstbayer.so
102
lib/gstreamer-%%VERSION%%/libgstbayer.so
76
lib/gstreamer-%%VERSION%%/libgstbz2.so
103
lib/gstreamer-%%VERSION%%/libgstbz2.so
77
lib/gstreamer-%%VERSION%%/libgstcamerabin.so
104
lib/gstreamer-%%VERSION%%/libgstcamerabin.so
105
lib/gstreamer-%%VERSION%%/libgstcodecalpha.so
78
lib/gstreamer-%%VERSION%%/libgstcoloreffects.so
106
lib/gstreamer-%%VERSION%%/libgstcoloreffects.so
79
lib/gstreamer-%%VERSION%%/libgstdebugutilsbad.so
107
lib/gstreamer-%%VERSION%%/libgstdebugutilsbad.so
80
lib/gstreamer-%%VERSION%%/libgstdvb.so
108
lib/gstreamer-%%VERSION%%/libgstdvbsubenc.so
81
lib/gstreamer-%%VERSION%%/libgstdvbsuboverlay.so
109
lib/gstreamer-%%VERSION%%/libgstdvbsuboverlay.so
82
lib/gstreamer-%%VERSION%%/libgstdvdspu.so
110
lib/gstreamer-%%VERSION%%/libgstdvdspu.so
83
lib/gstreamer-%%VERSION%%/libgstfaceoverlay.so
111
lib/gstreamer-%%VERSION%%/libgstfaceoverlay.so
Lines 109-115 lib/gstreamer-%%VERSION%%/libgstpnm.so Link Here
109
lib/gstreamer-%%VERSION%%/libgstproxy.so
137
lib/gstreamer-%%VERSION%%/libgstproxy.so
110
lib/gstreamer-%%VERSION%%/libgstremovesilence.so
138
lib/gstreamer-%%VERSION%%/libgstremovesilence.so
111
lib/gstreamer-%%VERSION%%/libgstrfbsrc.so
139
lib/gstreamer-%%VERSION%%/libgstrfbsrc.so
140
lib/gstreamer-%%VERSION%%/libgstrist.so
141
lib/gstreamer-%%VERSION%%/libgstrtmp2.so
142
lib/gstreamer-%%VERSION%%/libgstrtpmanagerbad.so
112
lib/gstreamer-%%VERSION%%/libgstrtponvif.so
143
lib/gstreamer-%%VERSION%%/libgstrtponvif.so
144
lib/gstreamer-%%VERSION%%/libgstsctp.so
113
lib/gstreamer-%%VERSION%%/libgstsdpelem.so
145
lib/gstreamer-%%VERSION%%/libgstsdpelem.so
114
lib/gstreamer-%%VERSION%%/libgstsegmentclip.so
146
lib/gstreamer-%%VERSION%%/libgstsegmentclip.so
115
lib/gstreamer-%%VERSION%%/libgstshm.so
147
lib/gstreamer-%%VERSION%%/libgstshm.so
Lines 117-130 lib/gstreamer-%%VERSION%%/libgstsiren.so Link Here
117
lib/gstreamer-%%VERSION%%/libgstsmooth.so
149
lib/gstreamer-%%VERSION%%/libgstsmooth.so
118
lib/gstreamer-%%VERSION%%/libgstspeed.so
150
lib/gstreamer-%%VERSION%%/libgstspeed.so
119
lib/gstreamer-%%VERSION%%/libgstsubenc.so
151
lib/gstreamer-%%VERSION%%/libgstsubenc.so
152
lib/gstreamer-%%VERSION%%/libgstswitchbin.so
120
lib/gstreamer-%%VERSION%%/libgsttimecode.so
153
lib/gstreamer-%%VERSION%%/libgsttimecode.so
154
lib/gstreamer-%%VERSION%%/libgsttranscode.so
121
lib/gstreamer-%%VERSION%%/libgstvideofiltersbad.so
155
lib/gstreamer-%%VERSION%%/libgstvideofiltersbad.so
122
lib/gstreamer-%%VERSION%%/libgstvideoframe_audiolevel.so
156
lib/gstreamer-%%VERSION%%/libgstvideoframe_audiolevel.so
123
lib/gstreamer-%%VERSION%%/libgstvideoparsersbad.so
157
lib/gstreamer-%%VERSION%%/libgstvideoparsersbad.so
124
lib/gstreamer-%%VERSION%%/libgstvideosignal.so
158
lib/gstreamer-%%VERSION%%/libgstvideosignal.so
159
lib/gstreamer-%%VERSION%%/libgstwebrtc.so
125
lib/gstreamer-%%VERSION%%/libgstvmnc.so
160
lib/gstreamer-%%VERSION%%/libgstvmnc.so
126
lib/gstreamer-%%VERSION%%/libgsty4mdec.so
161
lib/gstreamer-%%VERSION%%/libgsty4mdec.so
127
lib/gstreamer-%%VERSION%%/libgstyadif.so
128
lib/libgstadaptivedemux-%%VERSION%%.so
162
lib/libgstadaptivedemux-%%VERSION%%.so
129
lib/libgstadaptivedemux-%%VERSION%%.so.0
163
lib/libgstadaptivedemux-%%VERSION%%.so.0
130
lib/libgstadaptivedemux-%%VERSION%%.so.%%SOVERSION%%
164
lib/libgstadaptivedemux-%%VERSION%%.so.%%SOVERSION%%
Lines 137-142 lib/libgstbasecamerabinsrc-%%VERSION%%.so.%%SOVERSION%% Link Here
137
lib/libgstcodecparsers-%%VERSION%%.so
171
lib/libgstcodecparsers-%%VERSION%%.so
138
lib/libgstcodecparsers-%%VERSION%%.so.0
172
lib/libgstcodecparsers-%%VERSION%%.so.0
139
lib/libgstcodecparsers-%%VERSION%%.so.%%SOVERSION%%
173
lib/libgstcodecparsers-%%VERSION%%.so.%%SOVERSION%%
174
lib/libgstcodecs-%%VERSION%%.so
175
lib/libgstcodecs-%%VERSION%%.so.0
176
lib/libgstcodecs-%%VERSION%%.so.%%SOVERSION%%
140
lib/libgstinsertbin-%%VERSION%%.so
177
lib/libgstinsertbin-%%VERSION%%.so
141
lib/libgstinsertbin-%%VERSION%%.so.0
178
lib/libgstinsertbin-%%VERSION%%.so.0
142
lib/libgstinsertbin-%%VERSION%%.so.%%SOVERSION%%
179
lib/libgstinsertbin-%%VERSION%%.so.%%SOVERSION%%
Lines 149-160 lib/libgstmpegts-%%VERSION%%.so.%%SOVERSION%% Link Here
149
lib/libgstphotography-%%VERSION%%.so
186
lib/libgstphotography-%%VERSION%%.so
150
lib/libgstphotography-%%VERSION%%.so.0
187
lib/libgstphotography-%%VERSION%%.so.0
151
lib/libgstphotography-%%VERSION%%.so.%%SOVERSION%%
188
lib/libgstphotography-%%VERSION%%.so.%%SOVERSION%%
189
lib/libgstplay-%%VERSION%%.so
190
lib/libgstplay-%%VERSION%%.so.0
191
lib/libgstplay-%%VERSION%%.so.%%SOVERSION%%
152
lib/libgstplayer-%%VERSION%%.so
192
lib/libgstplayer-%%VERSION%%.so
153
lib/libgstplayer-%%VERSION%%.so.0
193
lib/libgstplayer-%%VERSION%%.so.0
154
lib/libgstplayer-%%VERSION%%.so.%%SOVERSION%%
194
lib/libgstplayer-%%VERSION%%.so.%%SOVERSION%%
155
lib/libgstsctp-%%VERSION%%.so
195
lib/libgstsctp-%%VERSION%%.so
156
lib/libgstsctp-%%VERSION%%.so.0
196
lib/libgstsctp-%%VERSION%%.so.0
157
lib/libgstsctp-%%VERSION%%.so.%%SOVERSION%%
197
lib/libgstsctp-%%VERSION%%.so.%%SOVERSION%%
198
lib/libgsttranscoder-%%VERSION%%.so
199
lib/libgsttranscoder-%%VERSION%%.so.0
158
lib/libgsturidownloader-%%VERSION%%.so
200
lib/libgsturidownloader-%%VERSION%%.so
159
lib/libgsturidownloader-%%VERSION%%.so.0
201
lib/libgsturidownloader-%%VERSION%%.so.0
160
lib/libgsturidownloader-%%VERSION%%.so.%%SOVERSION%%
202
lib/libgsturidownloader-%%VERSION%%.so.%%SOVERSION%%
Lines 165-178 libdata/pkgconfig/gstreamer-bad-audio-%%VERSION%%.pc Link Here
165
libdata/pkgconfig/gstreamer-codecparsers-%%VERSION%%.pc
207
libdata/pkgconfig/gstreamer-codecparsers-%%VERSION%%.pc
166
libdata/pkgconfig/gstreamer-insertbin-%%VERSION%%.pc
208
libdata/pkgconfig/gstreamer-insertbin-%%VERSION%%.pc
167
libdata/pkgconfig/gstreamer-mpegts-%%VERSION%%.pc
209
libdata/pkgconfig/gstreamer-mpegts-%%VERSION%%.pc
210
libdata/pkgconfig/gstreamer-photography-%%VERSION%%.pc
211
libdata/pkgconfig/gstreamer-play-%%VERSION%%.pc
168
libdata/pkgconfig/gstreamer-player-%%VERSION%%.pc
212
libdata/pkgconfig/gstreamer-player-%%VERSION%%.pc
169
libdata/pkgconfig/gstreamer-plugins-bad-%%VERSION%%.pc
213
libdata/pkgconfig/gstreamer-plugins-bad-%%VERSION%%.pc
170
libdata/pkgconfig/gstreamer-sctp-%%VERSION%%.pc
214
libdata/pkgconfig/gstreamer-sctp-%%VERSION%%.pc
215
libdata/pkgconfig/gstreamer-transcoder-%%VERSION%%.pc
171
libdata/pkgconfig/gstreamer-webrtc-%%VERSION%%.pc
216
libdata/pkgconfig/gstreamer-webrtc-%%VERSION%%.pc
172
share/gir-1.0/GstInsertBin-%%VERSION%%.gir
217
share/gir-%%VERSION%%/GstBadAudio-%%VERSION%%.gir
173
share/gir-1.0/GstMpegts-%%VERSION%%.gir
218
share/gir-%%VERSION%%/GstCodecs-%%VERSION%%.gir
174
share/gir-1.0/GstPlayer-%%VERSION%%.gir
219
share/gir-%%VERSION%%/GstInsertBin-%%VERSION%%.gir
175
share/gir-1.0/GstWebRTC-%%VERSION%%.gir
220
share/gir-%%VERSION%%/GstMpegts-%%VERSION%%.gir
221
share/gir-%%VERSION%%/GstPlay-%%VERSION%%.gir
222
share/gir-%%VERSION%%/GstPlayer-%%VERSION%%.gir
223
share/gir-%%VERSION%%/GstTranscoder-%%VERSION%%.gir
224
share/gir-%%VERSION%%/GstWebRTC-%%VERSION%%.gir
225
%%DATADIR%%-%%VERSION%%/encoding-profiles/device/dvd.gep
226
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/avi.gep
227
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/flv.gep
228
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/mkv.gep
229
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/mp3.gep
230
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/mp4.gep
231
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/oga.gep
232
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/ogv.gep
233
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/ts.gep
234
%%DATADIR%%-%%VERSION%%/encoding-profiles/file-extension/webm.gep
235
%%DATADIR%%-%%VERSION%%/encoding-profiles/online-services/youtube.gep
176
%%DATADIR%%-%%VERSION%%/presets/GstFreeverb.prs
236
%%DATADIR%%-%%VERSION%%/presets/GstFreeverb.prs
177
share/locale/af/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
237
share/locale/af/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
178
share/locale/ast/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
238
share/locale/ast/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
Lines 216-218 share/locale/tr/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo Link Here
216
share/locale/uk/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
276
share/locale/uk/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
217
share/locale/vi/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
277
share/locale/vi/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
218
share/locale/zh_CN/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
278
share/locale/zh_CN/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
279
share/locale/zh_TW/LC_MESSAGES/gst-plugins-bad-%%VERSION%%.mo
(-)b/multimedia/gstreamer1-plugins-core/Makefile (-1 / +1 lines)
Lines 1-5 Link Here
1
PORTNAME=	gstreamer1-plugins-core
1
PORTNAME=	gstreamer1-plugins-core
2
PORTVERSION=	1.16
2
PORTVERSION=	1.20.3
3
CATEGORIES=	multimedia audio
3
CATEGORIES=	multimedia audio
4
MASTER_SITES=	# empty
4
MASTER_SITES=	# empty
5
DISTFILES=	# empty
5
DISTFILES=	# empty
(-)b/multimedia/gstreamer1-plugins-dash/Makefile (-7 / +3 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer Dynamic Adaptive Streaming over HTTP demuxer plugin
3
COMMENT=	GStreamer Dynamic Adaptive Streaming over HTTP demuxer plugin
Lines 6-18 COMMENT= GStreamer Dynamic Adaptive Streaming over HTTP demuxer plugin Link Here
6
GST_PLUGIN=	dash
5
GST_PLUGIN=	dash
7
DIST=		bad
6
DIST=		bad
8
7
9
DASH_GST_DIRS=	gst-libs/gst/isoff
10
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
12
9
13
pre-build:
10
PLIST=  ${.CURDIR}/pkg-plist
14
.for dir in ${DASH_GST_DIRS}
11
15
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
12
USE_GNOME= libxml2
16
.endfor
17
13
18
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-dash/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstdash.so
(-)b/multimedia/gstreamer1-plugins-dts/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer dts audio decode plugin
3
COMMENT=	GStreamer dts audio decode plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libdca.so:multimedia/libdca
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-dts/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstdtsdec.so
(-)b/multimedia/gstreamer1-plugins-dv/Makefile (-2 / +5 lines)
Lines 1-12 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
PKGNAMESUFFIX=	1-plugins-dv
2
PKGNAMESUFFIX=	1-plugins-dv
4
3
5
COMMENT=	GStreamer dv demux and decoder plugin based on libdv
4
COMMENT=	GStreamer dv demux and decoder plugin based on libdv
6
5
7
GST_PLUGIN=	libdv
6
GST_PLUGIN=	dv
8
DIST=		good
7
DIST=		good
9
8
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
10
11
PLIST=  ${.CURDIR}/pkg-plist
12
13
LIB_DEPENDS=    libdv.so:multimedia/libdv
14
12
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-dv/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstdv.so
(-)b/multimedia/gstreamer1-plugins-dvdread/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	4
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer DVD access plugin with libdvdread
3
COMMENT=	GStreamer DVD access plugin with libdvdread
Lines 8-11 DIST= ugly Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=libdvdread.so:multimedia/libdvdread
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-dvdread/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstdvdread.so
(-)b/multimedia/gstreamer1-plugins-gnonlin/Makefile (-1 / +2 lines)
Lines 8-14 MAINTAINER= multimedia@FreeBSD.org Link Here
8
COMMENT=	GStreamer library for writing non-linear audio and video
8
COMMENT=	GStreamer library for writing non-linear audio and video
9
WWW=		http://gstreamer.net
9
WWW=		http://gstreamer.net
10
10
11
USES=		gstreamer libtool pkgconfig python:3.4+,build tar:xz
11
USES=		gettext-runtime gnome gstreamer libtool pkgconfig python:3.4+,build tar:xz
12
USE_GNOME=	glib20
12
GNU_CONFIGURE=	yes
13
GNU_CONFIGURE=	yes
13
USE_GSTREAMER=	good
14
USE_GSTREAMER=	good
14
INSTALL_TARGET=	install-strip
15
INSTALL_TARGET=	install-strip
(-)b/multimedia/gstreamer1-plugins-good/Makefile (-12 / +47 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer-plugins good-quality plug-ins
3
COMMENT=	GStreamer-plugins good-quality plug-ins
Lines 9-29 GST_PLUGIN_SUFFIX= -good Link Here
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
11
DIST=	good
10
DIST=	good
12
GOOD_GST_DIRS=	gst sys po
13
11
14
PLIST=		${.CURDIR}/pkg-plist
12
PLIST=		${.CURDIR}/pkg-plist
15
FILESDIR=	${.CURDIR}/files
16
PATCHDIR=	${.CURDIR}/files
13
PATCHDIR=	${.CURDIR}/files
17
NO_GSTREAMER_COMMON=	yes
14
NO_GSTREAMER_COMMON=	yes
18
15
19
do-build:
16
GOOD_GST_ENABLED_PLUGINS=	alpha \
20
.for dir in ${GOOD_GST_DIRS}
17
				apetag \
21
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
18
				audiofx \
22
.endfor
19
				audioparsers \
23
20
				auparse \
24
do-install:
21
				autodetect \
25
.for dir in ${GOOD_GST_DIRS}
22
				avi \
26
	@(cd ${INSTALL_WRKSRC}/${dir} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
23
				cutter \
27
.endfor
24
				deinterlace \
25
				debugutils \
26
				dtmf \
27
				effectv \
28
				equalizer \
29
				flv \
30
				flx \
31
				goom \
32
				goom2k1 \
33
				icydemux \
34
				id3demux \
35
				imagefreeze \
36
				interleave \
37
				isomp4 \
38
				law \
39
				level \
40
				matroska \
41
				monoscope \
42
				multifile \
43
				multipart \
44
				nls \
45
				oss \
46
				oss4 \
47
				replaygain \
48
				rtp \
49
				rtpmanager \
50
				rtsp \
51
				shapewipe \
52
				smpte \
53
				spectrum \
54
				tests \
55
				udp \
56
				videobox \
57
				videocrop \
58
				videofilter \
59
				videomixer \
60
				wavenc \
61
				wavparse \
62
				y4m
28
63
29
.include "${MASTERDIR}/Makefile"
64
.include "${MASTERDIR}/Makefile"
(-)a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqsgtexture.cc (-11 lines)
Removed Link Here
1
--- ext/qt/gstqsgtexture.cc.orig	2021-08-02 23:41:35 UTC
2
+++ ext/qt/gstqsgtexture.cc
3
@@ -39,7 +39,7 @@ GstQSGTexture::GstQSGTexture ()
4
 
5
   initializeOpenGLFunctions();
6
 
7
-  if (g_once_init_enter (&_debug)) {
8
+  if (g_once_init_enter ((unsigned long *)&_debug)) {
9
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtqsgtexture", 0,
10
         "Qt Scenegraph Texture");
11
     g_once_init_leave (&_debug, 1);
(-)a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_gstqtglutility.cc (-15 lines)
Removed Link Here
1
--- ext/qt/gstqtglutility.cc.orig	2021-08-02 23:37:36 UTC
2
+++ ext/qt/gstqtglutility.cc
3
@@ -62,10 +62,10 @@ gst_qt_get_gl_display ()
4
 
5
   g_assert (app != NULL);
6
 
7
-  if (g_once_init_enter (&_debug)) {
8
+  if (g_once_init_enter ((unsigned long *)&_debug)) {
9
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglutility", 0,
10
         "Qt gl utility functions");
11
-    g_once_init_leave (&_debug, 1);
12
+    g_once_init_leave ((unsigned long *)&_debug, 1);
13
   }
14
   GST_INFO ("QGuiApplication::instance()->platformName() %s", app->platformName().toUtf8().data());
15
 
(-)a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtitem.cc (-11 lines)
Removed Link Here
1
--- ext/qt/qtitem.cc.orig	2021-08-02 23:44:43 UTC
2
+++ ext/qt/qtitem.cc
3
@@ -104,7 +104,7 @@ QtGLVideoItem::QtGLVideoItem()
4
 {
5
   static volatile gsize _debug;
6
 
7
-  if (g_once_init_enter (&_debug)) {
8
+  if (g_once_init_enter ((unsigned long *)&_debug)) {
9
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwidget", 0, "Qt GL Widget");
10
     g_once_init_leave (&_debug, 1);
11
   }
(-)a/multimedia/gstreamer1-plugins-good/files/patch-ext_qt_qtwindow.cc (-20 lines)
Removed Link Here
1
--- ext/qt/qtwindow.cc.orig	2021-08-02 23:46:48 UTC
2
+++ ext/qt/qtwindow.cc
3
@@ -107,7 +107,7 @@ QtGLWindow::QtGLWindow ( QWindow * parent, QQuickWindo
4
 
5
   g_assert (app != NULL);
6
 
7
-  if (g_once_init_enter (&_debug)) {
8
+  if (g_once_init_enter ((unsigned long *)&_debug)) {
9
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwindow", 0, "Qt GL QuickWindow");
10
     g_once_init_leave (&_debug, 1);
11
   }
12
@@ -153,7 +153,7 @@ QtGLWindow::beforeRendering()
13
   g_mutex_lock (&this->priv->lock);
14
 
15
   static volatile gsize once = 0;
16
-  if (g_once_init_enter(&once)) {
17
+  if (g_once_init_enter((unsigned long *)&once)) {
18
     this->priv->start = QDateTime::currentDateTime().toMSecsSinceEpoch();
19
     g_once_init_leave(&once,1);
20
   }
(-)a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosshelper.c (-82 lines)
Removed Link Here
1
--- sys/oss/gstosshelper.c.orig	2014-07-21 10:24:27.000000000 +0200
2
+++ sys/oss/gstosshelper.c	2014-10-12 18:13:53.847663389 +0200
3
@@ -82,9 +82,9 @@
4
 gst_oss_helper_probe_caps (gint fd)
5
 {
6
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
7
-  const guint probe_formats[] = { AFMT_S16_LE, AFMT_U16_LE, AFMT_U8, AFMT_S8 };
8
+  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 };
9
 #else
10
-  const guint probe_formats[] = { AFMT_S16_BE, AFMT_U16_BE, AFMT_U8, AFMT_S8 };
11
+  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 };
12
 #endif
13
   GstOssProbe *probe;
14
   int i, f;
15
@@ -165,6 +165,9 @@
16
   const gchar *format;
17
 
18
   switch (format_bit) {
19
+    case AFMT_S8:
20
+      format = "S8";
21
+      break;
22
     case AFMT_U8:
23
       format = "U8";
24
       break;
25
@@ -174,15 +177,36 @@
26
     case AFMT_S16_BE:
27
       format = "S16BE";
28
       break;
29
-    case AFMT_S8:
30
-      format = "S8";
31
-      break;
32
     case AFMT_U16_LE:
33
       format = "U16LE";
34
       break;
35
     case AFMT_U16_BE:
36
       format = "U16BE";
37
       break;
38
+    case AFMT_S24_LE:
39
+      format = "S24LE";
40
+      break;
41
+    case AFMT_S24_BE:
42
+      format = "S24BE";
43
+      break;
44
+    case AFMT_U24_LE:
45
+      format = "U24LE";
46
+      break;
47
+    case AFMT_U24_BE:
48
+      format = "U24BE";
49
+      break;
50
+    case AFMT_S32_LE:
51
+      format = "S32LE";
52
+      break;
53
+    case AFMT_S32_BE:
54
+      format = "S32BE";
55
+      break;
56
+    case AFMT_U32_LE:
57
+      format = "U32LE";
58
+      break;
59
+    case AFMT_U32_BE:
60
+      format = "U32BE";
61
+      break;
62
     default:
63
       g_assert_not_reached ();
64
       return NULL;
65
@@ -320,13 +344,17 @@
66
   int format;
67
   int n_channels;
68
   int ret;
69
+  int rst;
70
 
71
   rate = irate;
72
   format = probe->format;
73
   n_channels = probe->n_channels;
74
+  rst = 4000; /* XXX Lowest supported rate for FreeBSD. */
75
 
76
   GST_LOG ("checking format %d, channels %d, rate %d",
77
       format, n_channels, rate);
78
+  /* Reset rate to lowest supported rate. */
79
+  ioctl (probe->fd, SNDCTL_DSP_SPEED, &rst);
80
   ret = ioctl (probe->fd, SNDCTL_DSP_SETFMT, &format);
81
   if (ret < 0 || format != probe->format) {
82
     GST_DEBUG ("unsupported format: %d (%d)", probe->format, format);
(-)a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssink.c (-73 lines)
Removed Link Here
1
--- sys/oss/gstosssink.c.orig	2013-09-24 15:05:22.000000000 +0200
2
+++ sys/oss/gstosssink.c	2014-09-11 09:10:55.116013220 +0200
3
@@ -106,7 +106,10 @@
4
   PROP_DEVICE,
5
 };
6
 
7
-#define FORMATS "{" GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)", S8, U8 }"
8
+#define FORMATS "{" GST_AUDIO_NE(S32)","GST_AUDIO_NE(U32)"," \
9
+                    GST_AUDIO_NE(S24)","GST_AUDIO_NE(U24)"," \
10
+                    GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)"," \
11
+                    "S8, U8 }"
12
 
13
 static GstStaticPadTemplate osssink_sink_factory =
14
     GST_STATIC_PAD_TEMPLATE ("sink",
15
@@ -321,6 +324,9 @@
16
     case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW:
17
     {
18
       switch (rfmt) {
19
+        case GST_AUDIO_FORMAT_S8:
20
+          result = AFMT_S8;
21
+          break;
22
         case GST_AUDIO_FORMAT_U8:
23
           result = AFMT_U8;
24
           break;
25
@@ -330,15 +336,36 @@
26
         case GST_AUDIO_FORMAT_S16BE:
27
           result = AFMT_S16_BE;
28
           break;
29
-        case GST_AUDIO_FORMAT_S8:
30
-          result = AFMT_S8;
31
-          break;
32
         case GST_AUDIO_FORMAT_U16LE:
33
           result = AFMT_U16_LE;
34
           break;
35
         case GST_AUDIO_FORMAT_U16BE:
36
           result = AFMT_U16_BE;
37
           break;
38
+        case GST_AUDIO_FORMAT_S24LE:
39
+          result = AFMT_S24_LE;
40
+          break;
41
+        case GST_AUDIO_FORMAT_S24BE:
42
+          result = AFMT_S24_BE;
43
+          break;
44
+        case GST_AUDIO_FORMAT_U24LE:
45
+          result = AFMT_U24_LE;
46
+          break;
47
+        case GST_AUDIO_FORMAT_U24BE:
48
+          result = AFMT_U24_BE;
49
+          break;
50
+        case GST_AUDIO_FORMAT_S32LE:
51
+          result = AFMT_S32_LE;
52
+          break;
53
+        case GST_AUDIO_FORMAT_S32BE:
54
+          result = AFMT_S32_BE;
55
+          break;
56
+        case GST_AUDIO_FORMAT_U32LE:
57
+          result = AFMT_U32_LE;
58
+          break;
59
+        case GST_AUDIO_FORMAT_U32BE:
60
+          result = AFMT_U32_BE;
61
+          break;
62
         default:
63
           result = 0;
64
           break;
65
@@ -441,7 +468,7 @@
66
   rate = GST_AUDIO_INFO_RATE (&spec->info);
67
   channels = GST_AUDIO_INFO_CHANNELS (&spec->info);
68
 
69
-  if (width != 16 && width != 8)
70
+  if (width != 32 && width != 24 && width != 16 && width != 8)
71
     goto dodgy_width;
72
 
73
   SET_PARAM (oss, SNDCTL_DSP_SETFMT, tmp, "SETFMT");
(-)a/multimedia/gstreamer1-plugins-good/files/patch-sys_oss_gstosssrc.c (-73 lines)
Removed Link Here
1
--- sys/oss/gstosssrc.c.orig	2013-09-24 15:05:22.000000000 +0200
2
+++ sys/oss/gstosssrc.c	2014-09-11 09:10:55.116013220 +0200
3
@@ -100,7 +100,10 @@
4
 static guint gst_oss_src_delay (GstAudioSrc * asrc);
5
 static void gst_oss_src_reset (GstAudioSrc * asrc);
6
 
7
-#define FORMATS "{" GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)", S8, U8 }"
8
+#define FORMATS "{" GST_AUDIO_NE(S32)","GST_AUDIO_NE(U32)"," \
9
+                    GST_AUDIO_NE(S24)","GST_AUDIO_NE(U24)"," \
10
+                    GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)"," \
11
+                    "S8, U8 }"
12
 
13
 static GstStaticPadTemplate osssrc_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
14
     GST_PAD_SRC,
15
@@ -314,6 +317,9 @@
16
     case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW:
17
     {
18
       switch (rfmt) {
19
+        case GST_AUDIO_FORMAT_S8:
20
+          result = AFMT_S8;
21
+          break;
22
         case GST_AUDIO_FORMAT_U8:
23
           result = AFMT_U8;
24
           break;
25
@@ -323,15 +329,36 @@
26
         case GST_AUDIO_FORMAT_S16BE:
27
           result = AFMT_S16_BE;
28
           break;
29
-        case GST_AUDIO_FORMAT_S8:
30
-          result = AFMT_S8;
31
-          break;
32
         case GST_AUDIO_FORMAT_U16LE:
33
           result = AFMT_U16_LE;
34
           break;
35
         case GST_AUDIO_FORMAT_U16BE:
36
           result = AFMT_U16_BE;
37
           break;
38
+        case GST_AUDIO_FORMAT_S24LE:
39
+          result = AFMT_S24_LE;
40
+          break;
41
+        case GST_AUDIO_FORMAT_S24BE:
42
+          result = AFMT_S24_BE;
43
+          break;
44
+        case GST_AUDIO_FORMAT_U24LE:
45
+          result = AFMT_U24_LE;
46
+          break;
47
+        case GST_AUDIO_FORMAT_U24BE:
48
+          result = AFMT_U24_BE;
49
+          break;
50
+        case GST_AUDIO_FORMAT_S32LE:
51
+          result = AFMT_S32_LE;
52
+          break;
53
+        case GST_AUDIO_FORMAT_S32BE:
54
+          result = AFMT_S32_BE;
55
+          break;
56
+        case GST_AUDIO_FORMAT_U32LE:
57
+          result = AFMT_U32_LE;
58
+          break;
59
+        case GST_AUDIO_FORMAT_U32BE:
60
+          result = AFMT_U32_BE;
61
+          break;
62
         default:
63
           result = 0;
64
           break;
65
@@ -428,7 +455,7 @@
66
   rate = GST_AUDIO_INFO_RATE (&spec->info);
67
   channels = GST_AUDIO_INFO_CHANNELS (&spec->info);
68
 
69
-  if (width != 16 && width != 8)
70
+  if (width != 32 && width != 24 && width != 16 && width != 8)
71
     goto dodgy_width;
72
 
73
   tmp = ilog2 (spec->segsize);
(-)a/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_gstv4l2object.c (-13 lines)
Removed Link Here
1
--- sys/v4l2/gstv4l2object.c.orig	2020-04-06 14:45:19 UTC
2
+++ sys/v4l2/gstv4l2object.c
3
@@ -2891,8 +2891,9 @@ gst_v4l2_object_is_dmabuf_supported (GstV4l2Object * v
4
   }
5
 
6
   /* Expected to fail, but ENOTTY tells us that it is not implemented. */
7
+  /* FreeBSD cuse sends EINVAL? */
8
   v4l2object->ioctl (v4l2object->video_fd, VIDIOC_EXPBUF, &expbuf);
9
-  if (errno == ENOTTY)
10
+  if (errno == ENOTTY || errno == EINVAL)
11
     ret = FALSE;
12
 
13
   return ret;
(-)b/multimedia/gstreamer1-plugins-good/files/patch-sys_v4l2_v4l2__calls.c (+15 lines)
Added Link Here
1
--- sys/v4l2/v4l2_calls.c.orig	2022-09-13 20:56:55 UTC
2
+++ sys/v4l2/v4l2_calls.c
3
@@ -1329,10 +1329,12 @@ gst_v4l2_query_dv_timings (GstV4l2Object * v4l2object,
4
 
5
   if (ret < 0) {
6
     switch (errno) {
7
+#ifdef ENODATA
8
       case ENODATA:
9
         GST_DEBUG_OBJECT (v4l2object->dbg_obj,
10
             "QUERY_DV_TIMINGS not supported for this input/output");
11
         break;
12
+#endif
13
       case ENOLINK:
14
         GST_DEBUG_OBJECT (v4l2object->dbg_obj,
15
             "No timings could be detected because no signal was found.");
(-)b/multimedia/gstreamer1-plugins-good/pkg-plist (+1 lines)
Lines 24-29 lib/gstreamer-%%VERSION%%/libgstinterleave.so Link Here
24
lib/gstreamer-%%VERSION%%/libgstisomp4.so
24
lib/gstreamer-%%VERSION%%/libgstisomp4.so
25
lib/gstreamer-%%VERSION%%/libgstlevel.so
25
lib/gstreamer-%%VERSION%%/libgstlevel.so
26
lib/gstreamer-%%VERSION%%/libgstmatroska.so
26
lib/gstreamer-%%VERSION%%/libgstmatroska.so
27
lib/gstreamer-%%VERSION%%/libgstmonoscope.so
27
lib/gstreamer-%%VERSION%%/libgstmulaw.so
28
lib/gstreamer-%%VERSION%%/libgstmulaw.so
28
lib/gstreamer-%%VERSION%%/libgstmultifile.so
29
lib/gstreamer-%%VERSION%%/libgstmultifile.so
29
lib/gstreamer-%%VERSION%%/libgstmultipart.so
30
lib/gstreamer-%%VERSION%%/libgstmultipart.so
(-)b/multimedia/gstreamer1-plugins-hls/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer HTTP Live Streaming (HLS) plugin
3
COMMENT=	GStreamer HTTP Live Streaming (HLS) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libnettle.so:security/nettle
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-hls/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgsthls.so
(-)b/multimedia/gstreamer1-plugins-kate/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer kate codec plugin
3
COMMENT=	GStreamer kate codec plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libkate.so:multimedia/libkate
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-kate/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstkate.so
(-)b/multimedia/gstreamer1-plugins-libde265/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer HEVC/H.265 decoder (libde265) plugin
3
COMMENT=	GStreamer HEVC/H.265 decoder (libde265) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libde265.so:multimedia/libde265
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-libde265/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstde265.so
(-)b/multimedia/gstreamer1-plugins-mpeg2dec/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer mpeg decode plugin
3
COMMENT=	GStreamer mpeg decode plugin
Lines 8-11 DIST= ugly Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libmpeg2.so:multimedia/libmpeg2
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-mpeg2dec/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmpeg2dec.so
(-)b/multimedia/gstreamer1-plugins-mpeg2enc/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer mpeg encoder plugin
3
COMMENT=	GStreamer mpeg encoder plugin
Lines 11-14 DIST= bad Link Here
11
10
12
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
13
12
13
PLIST=  ${.CURDIR}/pkg-plist
14
15
LIB_DEPENDS= libmjpegutils.so:multimedia/mjpegtools
16
17
MESON_ARGS+=	-Dgpl=enabled
18
14
.include "${MASTERDIR}/Makefile"
19
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-mpeg2enc/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmpeg2enc.so
(-)b/multimedia/gstreamer1-plugins-mplex/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer mplex plugin
3
COMMENT=	GStreamer mplex plugin
Lines 11-14 DIST= bad Link Here
11
10
12
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
13
12
13
PLIST=  ${.CURDIR}/pkg-plist
14
15
LIB_DEPENDS=  libmplex2.so:multimedia/mjpegtools
16
14
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
18
19
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-mplex/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmplex.so
(-)b/multimedia/gstreamer1-plugins-msdk/Makefile (-1 / +7 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer (Intel MediaSDK) plugin
3
COMMENT=	GStreamer (Intel MediaSDK) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libgudev-1.0.so:devel/libgudev \
13
	libmfx.so:multimedia/intel-media-sdk \
14
	libva-drm.so:multimedia/libva \
15
	libdrm.so:graphics/libdrm
16
11
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-msdk/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstmsdk.so
(-)b/multimedia/gstreamer1-plugins-openh264/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer (openh264) plugin
3
COMMENT=	GStreamer (openh264) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libopenh264.so:multimedia/openh264
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-openh264/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstopenh264.so
(-)b/multimedia/gstreamer1-plugins-resindvd/Makefile (-1 / +8 lines)
Lines 1-4 Link Here
1
PORTREVISION=	4
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer resindvd DVD playback plugin
3
COMMENT=	GStreamer resindvd DVD playback plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
BUILD_DEPENDS+= libdvdnav>=4.1.2:multimedia/libdvdnav
13
LIB_DEPENDS+= libdvdread.so:multimedia/libdvdread
14
RUN_DEPENDS+= libdvdnav>=4.1.2:multimedia/libdvdnav
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
17
18
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-resindvd/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstresindvd.so
(-)b/multimedia/gstreamer1-plugins-rtmp/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer RTMP stream source and sink plugin
3
COMMENT=	GStreamer RTMP stream source and sink plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= librtmp.so:multimedia/librtmp
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-rtmp/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstrtmp.so
(-)b/multimedia/gstreamer1-plugins-smoothstreaming/Makefile (-5 / +3 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer parse and demuliplex a Smooth Streaming manifest into audio/video streams plugin
3
COMMENT=	GStreamer parse and demuliplex a Smooth Streaming manifest into audio/video streams plugin
Lines 10-18 SMOOTH_GST_DIRS= gst-libs/gst/isoff Link Here
10
9
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
12
11
13
pre-build:
12
PLIST=  ${.CURDIR}/pkg-plist
14
.for dir in ${SMOOTH_GST_DIRS}
13
15
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
14
USE_GNOME=  libxml2
16
.endfor
17
15
18
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-smoothstreaming/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstsmoothstreaming.so
(-)b/multimedia/gstreamer1-plugins-theora/Makefile (-1 / +5 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer theora plugin
3
COMMENT=	GStreamer theora plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS+= libtheora.so:multimedia/libtheora \
13
	libogg.so:audio/libogg
14
11
.include "${MASTERDIR}/Makefile"
15
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-theora/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgsttheora.so
(-)b/multimedia/gstreamer1-plugins-ttml/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer ttml subtitle plugin
3
COMMENT=	GStreamer ttml subtitle plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USE_GNOME= cairo libxml2 pango
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-ttml/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstttmlsubs.so
(-)b/multimedia/gstreamer1-plugins-ugly/Makefile (-13 / +7 lines)
Lines 1-5 Link Here
1
PORTREVISION=	2
1
CATEGORIES?=	multimedia audio
2
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer-plugins set of good-quality plug-ins that might have distribution problems
3
COMMENT=	GStreamer-plugins set of good-quality plug-ins that might have distribution problems
5
4
Lines 9-26 GST_PLUGIN_SUFFIX= -ugly Link Here
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
11
DIST=	ugly
10
DIST=	ugly
12
UGLY_GST_DIRS=	gst po gst-libs
13
NO_GSTREAMER_COMMON=	yes
11
NO_GSTREAMER_COMMON=	yes
14
PLIST=	${.CURDIR}/pkg-plist
12
PLIST=	${.CURDIR}/pkg-plist
15
13
UGLY_GST_ENABLED_PLUGINS=	asfdemux \
16
do-build:
14
				nls \
17
.for dir in ${UGLY_GST_DIRS}
15
				dvdlpcmdec \
18
	@(cd ${BUILD_WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
16
				dvdsub \
19
.endfor
17
				realmedia \
20
18
				xingmux
21
do-install:
22
.for dir in ${UGLY_GST_DIRS}
23
	@(cd ${INSTALL_WRKSRC}/${dir} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
24
.endfor
25
19
26
.include "${MASTERDIR}/Makefile"
20
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-ugly/files/patch-meson.build (+14 lines)
Added Link Here
1
*** meson.build.orig	Fri Sep  2 18:21:32 2022
2
--- meson.build	Fri Sep  2 18:24:38 2022
3
***************
4
*** 117,122 ****
5
--- 117,125 ----
6
  cdata.set_quoted('GETTEXT_PACKAGE', 'gst-plugins-ugly-1.0')
7
  cdata.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir')))
8
  
9
+ cdata.set_quoted('DEFAULT_AUDIOSINK', get_option('defaultaudiosink'))
10
+ cdata.set_quoted('DEFAULT_AUDIOSRC', get_option('defaultaudiosrc'))
11
+ 
12
  # GStreamer package name and origin url
13
  gst_package_name = get_option('package-name')
14
  if gst_package_name == ''
(-)b/multimedia/gstreamer1-plugins-ugly/files/patch-meson_options.txt (+15 lines)
Added Link Here
1
*** meson_options.txt.orig	Fri Sep  2 18:21:12 2022
2
--- meson_options.txt	Fri Sep  2 18:22:42 2022
3
***************
4
*** 7,12 ****
5
--- 7,16 ----
6
  option('dvdsub', type : 'feature', value : 'auto')
7
  option('realmedia', type : 'feature', value : 'auto')
8
  option('xingmux', type : 'feature', value : 'auto')
9
+ option('defaultaudiosink', type : 'string', value : 'autoaudiosink',
10
+         description: 'set default audio sink')
11
+ option('defaultaudiosrc', type : 'string', value : 'autoaudiosrc',
12
+         description: 'set default audio src')
13
  
14
  # Feature options for plugins that need external deps
15
  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!)')
(-)b/multimedia/gstreamer1-plugins-ugly/pkg-plist (+1 lines)
Lines 46-48 share/locale/tr/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo Link Here
46
share/locale/uk/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
46
share/locale/uk/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
47
share/locale/vi/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
47
share/locale/vi/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
48
share/locale/zh_CN/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
48
share/locale/zh_CN/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
49
share/locale/zh_TW/LC_MESSAGES/gst-plugins-ugly-%%VERSION%%.mo
(-)b/multimedia/gstreamer1-plugins-v4l2/Makefile (-2 / +7 lines)
Lines 1-12 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
PKGNAMESUFFIX=	1-plugins-v4l2
2
PKGNAMESUFFIX=	1-plugins-v4l2
4
3
5
COMMENT=	GStreamer Video 4 Linux 2 source plugin
4
COMMENT=	GStreamer Video 4 Linux 2 source plugin
6
5
7
GST_PLUGIN=	gst_v4l2
6
GST_PLUGIN=	v4l2
8
DIST=		good
7
DIST=		good
9
8
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
10
11
PLIST=  ${.CURDIR}/pkg-plist
12
13
BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat
14
LIB_DEPENDS= libv4l2.so:multimedia/libv4l
15
RUN_DEPENDS= webcamd:multimedia/webcamd
16
12
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-v4l2/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstvideo4linux2.so
(-)b/multimedia/gstreamer1-plugins-vpx/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer vp8 codec plugin
3
COMMENT=	GStreamer vp8 codec plugin
Lines 8-11 DIST= good Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS=  libvpx.so:multimedia/libvpx
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/multimedia/gstreamer1-plugins-vpx/pkg-plist (+2 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstvpx.so
2
%%DATADIR%%-%%VERSION%%/presets/GstVP8Enc.prs
(-)b/multimedia/gstreamer1-plugins-x264/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	6
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer libx264 based H264 plugin
3
COMMENT=	GStreamer libx264 based H264 plugin
Lines 8-11 DIST= ugly Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libx264.so:multimedia/libx264
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-x264/pkg-plist (+2 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstx264.so
2
%%DATADIR%%-%%VERSION%%/presets/GstX264Enc.prs
(-)b/multimedia/gstreamer1-plugins-x265/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	3
2
CATEGORIES=	multimedia
1
CATEGORIES=	multimedia
3
2
4
COMMENT=	GStreamer libx265 based H265 plugin
3
COMMENT=	GStreamer libx265 based H265 plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libx265.so:multimedia/x265
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
MESON_ARGS+= -Dgpl=enabled
(-)b/multimedia/gstreamer1-plugins-x265/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstx265.so
(-)b/multimedia/gstreamer1-plugins/Makefile (-94 / +50 lines)
Lines 1-15 Link Here
1
PORTNAME=	gstreamer
1
PORTNAME=	gstreamer
2
PORTVERSION?=	${BASE_PORTVERSION}
2
PORTVERSION?=	${BASE_PORTVERSION}
3
# When chasing a shared library for a plug-in bump the PORTREVISION in the
4
# plug-in port instead, like ${category}/gstreamer1-plugin-${PLUGIN}.
3
# plug-in port instead, like ${category}/gstreamer1-plugin-${PLUGIN}.
5
PORTREVISION?=	7
4
PORTREVISION?=	0
6
CATEGORIES?=	multimedia audio
5
CATEGORIES?=	multimedia audio
7
MASTER_SITES=	GNOME/sources/gst-plugins-base/${PORTVERSION:R}:base \
6
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gst-plugins-base/:base \
8
		GNOME/sources/gst-plugins-good/${PORTVERSION:R}:good \
7
		https://gstreamer.freedesktop.org/src/gst-plugins-bad/:bad \
9
		http://gstreamer.freedesktop.org/src/gst-plugins-base/:base \
8
		https://gstreamer.freedesktop.org/src/gst-plugins-good/:good \
10
		http://gstreamer.freedesktop.org/src/gst-plugins-bad/:bad \
9
		https://gstreamer.freedesktop.org/src/gst-plugins-ugly/:ugly
11
		http://gstreamer.freedesktop.org/src/gst-plugins-good/:good \
12
		http://gstreamer.freedesktop.org/src/gst-plugins-ugly/:ugly
13
PKGNAMESUFFIX?=	1-plugins${GST_PLUGIN_SUFFIX}
10
PKGNAMESUFFIX?=	1-plugins${GST_PLUGIN_SUFFIX}
14
11
15
MAINTAINER=	multimedia@FreeBSD.org
12
MAINTAINER=	multimedia@FreeBSD.org
Lines 26-49 RUN_DEPENDS+= iso-codes>=0:misc/iso-codes Link Here
26
23
27
PORTSCOUT=	limitw:1,even
24
PORTSCOUT=	limitw:1,even
28
25
29
BASE_PORTVERSION=	1.16.2
26
BASE_PORTVERSION=	1.20.3
30
BASE_DISTNAME=		gst-plugins-base-${BASE_PORTVERSION}
27
BASE_DISTNAME=		gst-plugins-base-${BASE_PORTVERSION}
31
BASE_DISTFILE=		${BASE_DISTNAME}${EXTRACT_SUFX}
28
BASE_DISTFILE=		${BASE_DISTNAME}${EXTRACT_SUFX}
32
BAD_PORTVERSION=	1.16.2
29
BAD_PORTVERSION=	1.20.3
33
BAD_DISTNAME=		gst-plugins-bad-${BAD_PORTVERSION}
30
BAD_DISTNAME=		gst-plugins-bad-${BAD_PORTVERSION}
34
BAD_DISTFILE=		${BAD_DISTNAME}${EXTRACT_SUFX}
31
BAD_DISTFILE=		${BAD_DISTNAME}${EXTRACT_SUFX}
35
GOOD_PORTVERSION=	1.16.2
32
GOOD_PORTVERSION=	1.20.3
36
GOOD_DISTNAME=		gst-plugins-good-${GOOD_PORTVERSION}
33
GOOD_DISTNAME=		gst-plugins-good-${GOOD_PORTVERSION}
37
GOOD_DISTFILE=		${GOOD_DISTNAME}${EXTRACT_SUFX}
34
GOOD_DISTFILE=		${GOOD_DISTNAME}${EXTRACT_SUFX}
38
UGLY_PORTVERSION=	1.16.2
35
UGLY_PORTVERSION=	1.20.3
39
UGLY_DISTNAME=		gst-plugins-ugly-${UGLY_PORTVERSION}
36
UGLY_DISTNAME=		gst-plugins-ugly-${UGLY_PORTVERSION}
40
UGLY_DISTFILE=		${UGLY_DISTNAME}${EXTRACT_SUFX}
37
UGLY_DISTFILE=		${UGLY_DISTNAME}${EXTRACT_SUFX}
41
DIST?=		base
38
DIST?=		base
42
39
43
USES+=		cpe gettext gmake gnome gstreamer libtool pathfix pkgconfig python tar:xz
40
USES+=		meson cpe gettext gnome gstreamer libtool pathfix pkgconfig python:3.8+,build tar:xz
44
USE_GNOME+=	glib20 introspection:build libxml2
41
USE_GNOME+=	glib20 introspection:build libxml2
45
GNU_CONFIGURE=	yes
46
INSTALL_TARGET=	install-strip
47
GST_PLUGIN?=	base
42
GST_PLUGIN?=	base
48
USE_LDCONFIG=	yes
43
USE_LDCONFIG=	yes
49
44
Lines 54-61 CFLAGS+= -Wno-format Link Here
54
CPPFLAGS+=	-I${LOCALBASE}/include
49
CPPFLAGS+=	-I${LOCALBASE}/include
55
LDFLAGS+=	-lpthread -L${LOCALBASE}/lib ${EXTRA_LIBS}
50
LDFLAGS+=	-lpthread -L${LOCALBASE}/lib ${EXTRA_LIBS}
56
51
57
CONFIGURE_ARGS+=	--disable-fatal-warnings
58
59
DEFAULT_AUDIOSINK?=	osssink
52
DEFAULT_AUDIOSINK?=	osssink
60
DEFAULT_AUDIOSRC?=	osssrc
53
DEFAULT_AUDIOSRC?=	osssrc
61
54
Lines 64-70 IGNORE= DIST not specified Link Here
64
.endif
57
.endif
65
58
66
VERSION=	1.0
59
VERSION=	1.0
67
SOVERSION=	0.1602.0
60
SOVERSION=	0.2003.0
68
PLIST_SUB+=	VERSION="${VERSION}" \
61
PLIST_SUB+=	VERSION="${VERSION}" \
69
		SOVERSION="${SOVERSION}"
62
		SOVERSION="${SOVERSION}"
70
63
Lines 74-89 PLIST_SUB+= VERSION="${VERSION}" \ Link Here
74
.if ${GST_PLUGIN} == "base"
67
.if ${GST_PLUGIN} == "base"
75
DIST=	base
68
DIST=	base
76
NO_GSTREAMER_COMMON=	yes
69
NO_GSTREAMER_COMMON=	yes
70
71
BASE_GST_ENABLED_PLUGINS=	adder \
72
				allocators \
73
				app \
74
				audio \
75
				audioconvert \
76
				audiomixer \
77
				audiorate \
78
				audioresample \
79
				audiotestsrc \
80
				compositor \
81
				encoding \
82
				fft \
83
				gio \
84
				nls \
85
				overlaycomposition \
86
				pbtypes \
87
				pkgconfig \
88
				pbutils \
89
				playback \
90
				rawparse \
91
				riff \
92
				rtp \
93
				rtsp \
94
				sdp \
95
				subparse \
96
				tag \
97
				tcp \
98
				tools \
99
				typefind \
100
				video \
101
				videoconvert \
102
				videorate \
103
				videoscale \
104
				videotestsrc \
105
				volume
77
.endif
106
.endif
78
107
79
.if ${DIST} == base || ${DIST} == ugly
108
.if ${DIST} == base || ${DIST} == ugly
80
#  --with-default-audiosink specify default audio sink
109
CONFIGURE_ARGS+= -Ddefaultaudiosink="${DEFAULT_AUDIOSINK}" \
81
#  --with-default-audiosrc specify default audio source
110
		-Ddefaultaudiosrc="${DEFAULT_AUDIOSRC}"
82
#  --with-default-videosink specify default video sink
83
#  --with-default-videosrc specify default video source
84
#  --with-default-visualizer specify default visualizer
85
CONFIGURE_ARGS+=--with-default-audiosink="${DEFAULT_AUDIOSINK}" \
86
		--with-default-audiosrc="${DEFAULT_AUDIOSRC}"
87
.endif
111
.endif
88
112
89
.include "${MASTERDIR}/Makefile.common"
113
.include "${MASTERDIR}/Makefile.common"
Lines 126-200 DEFAULT_DVD_DEVICE=${WITH_DVD_DEVICE} Link Here
126
DEFAULT_DVD_DEVICE=/dev/cd0
150
DEFAULT_DVD_DEVICE=/dev/cd0
127
.endif
151
.endif
128
152
129
post-patch:
130
.if ${DIST} == bad
131
# custom rule to fix opencv detection in configure
132
#	@${REINPLACE_CMD} -e 's|opencv <= 2.4.8|opencv <= 2.4.9|g' \
133
#		${WRKSRC}/configure
134
	@${REINPLACE_CMD} -e 's|/dev/dvd|${DEFAULT_DVD_DEVICE}|g' \
135
		${WRKSRC}/ext/resindvd/resindvdbin.c \
136
		${WRKSRC}/ext/resindvd/resindvdsrc.c
137
# Fix dependency on neon-0.31 and 0.32
138
	${REINPLACE_CMD} -e '/neon/s|0.30.99|0.32.99|g' \
139
		${WRKSRC}/configure
140
# Fix build against OpenCV 4.5.1
141
	 ${REINPLACE_CMD} '/opencv/s|4\.2\.0|4.7.0|g' \
142
		 ${WRKSRC}/configure
143
144
.endif
145
.if ${DIST} != ugly
146
	@${FIND} ${WRKSRC}/ext ${WRKSRC}/sys \
147
	-name Makefile.in | ${XARGS} -n 10 ${REINPLACE_CMD} -e \
148
	'/la_DEPENDENCIES/,/am__DEPENDENCIES/s,$$(top_builddir)/gst-libs/.*.la,,' -e \
149
	's|$$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_API_VERSION@.la|-lgsttag-${VERSION}|; \
150
	s|$$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_API_VERSION@.la|-lgstaudio-${VERSION}|; \
151
	s|$$(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_API_VERSION@.la|-lgstpbutils-${VERSION}|; \
152
	s|$$(top_builddir)/gst-libs/gst/riff/libgstriff-@GST_API_VERSION@.la|-lgstriff-${VERSION}|; \
153
	s|$$(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la|-lgstsignalprocessor-${VERSION}|; \
154
	s|$$(top_builddir)/gst-libs/gst/video/libgstbasevideo-@GST_API_VERSION@.la|-lgstbasevideo-${VERSION}|; \
155
	s|$$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la|-lgstvideo-${VERSION}|; \
156
	s|$$(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la|-lgstbadbase-${VERSION}|; \
157
	s|$$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la|-lgsturidownloader-${VERSION}|; \
158
	s|$$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la|-lgstadaptivedemux-${VERSION}|; \
159
	s|$$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-@GST_API_VERSION@.la|-lgstcodecparsers-${VERSION}|; \
160
	s|$$(top_builddir)/gst-libs/gst/allocators/libgstbadallocators-@GST_API_VERSION@.la|-lgstbadallocators-${VERSION}|; \
161
	s|$$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-@GST_API_VERSION@.la|-lgstbadaudio-${VERSION}|; \
162
	s|$$(top_builddir)/gst-libs/gst/video/libgstbadvideo-@GST_API_VERSION@.la|-lgstbadvideo-${VERSION}|'
163
164
	 @${FIND} ${WRKSRC}/ext ${WRKSRC}/sys -name Makefile.in | \
165
	 ${XARGS} -n 10 ${REINPLACE_CMD} -e \
166
	'/la_DEPENDENCIES/,/am__DEPENDENCIES/s,$$(top_builddir)/gst-libs/.*.la,,' -e \
167
	 's|$$(top_builddir)/gst-libs/gst/tag/libgsttag-$$(GST_API_VERSION).la|-lgsttag-${VERSION}|; \
168
	  s|$$(top_builddir)/gst-libs/gst/audio/libgstaudio-$$(GST_API_VERSION).la|-lgstaudio-${VERSION}|; \
169
	  s|$$(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-$$(GST_API_VERSION).la|-lgstpbutils-${VERSION}|; \
170
	  s|$$(top_builddir)/gst-libs/gst/riff/libgstriff-$$(GST_API_VERSION).la|-lgstriff-${VERSION}|; \
171
	  s|$$(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-$$(GST_API_VERSION).la|-lgstsignalprocessor-${VERSION}|; \
172
	  s|$$(top_builddir)/gst-libs/gst/video/libgstbasevideo-$$(GST_API_VERSION).la|-lgstbasevideo-${VERSION}|; \
173
	  s|$$(top_builddir)/gst-libs/gst/video/libgstvideo-$$(GST_API_VERSION).la|-lgstvideo-${VERSION}|; \
174
	  s|$$(top_builddir)/gst-libs/gst/base/libgstbadbase-$$(GST_API_VERSION).la|-lgstbadbase-${VERSION}|; \
175
	  s|$$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-$$(GST_API_VERSION).la|-lgsturidownloader-${VERSION}|; \
176
	  s|$$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la|-lgstadaptivedemux-${VERSION}|; \
177
	  s|$$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$$(GST_API_VERSION).la|-lgstcodecparsers-${VERSION}|; \
178
	  s|$$(top_builddir)/gst-libs/gst/allocators/libgstbadallocators-$$(GST_API_VERSION).la|-lgstbadallocators-${VERSION}|; \
179
	  s|$$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-$$(GST_API_VERSION).la|-lgstbadaudio-${VERSION}|; \
180
	  s|$$(top_builddir)/gst-libs/gst/video/libgstbadvideo-$$(GST_API_VERSION).la|-lgstbadvideo-${VERSION}|'
181
	@${FIND} ${WRKSRC}/ext ${WRKSRC}/gst ${WRKSRC}/gst-libs \
182
		-name Makefile.in -exec ${REINPLACE_CMD} \
183
		'/foreach/s/\\#include/#include/' {} +
184
.endif
185
186
.if ${DIST} == bad
187
# Disable X11 support in librfb
188
post-configure:
189
	@${REINPLACE_CMD} -e 's|HAVE_X11 = yes|HAVE_X11 = no|g' \
190
		-e 's|#ifdef HAVE_X11|#ifdef NO_X11|g' \
191
		-e 's|$$(X11_CFLAGS) \\|\\|g' \
192
		-e 's|$$(X11_LIBS) \\|\\|g' \
193
		${WRKSRC}/gst/librfb/Makefile \
194
		${WRKSRC}/gst/librfb/gstrfbsrc.c
195
.endif
196
197
pre-install:
153
pre-install:
198
	${MKDIR} ${STAGEDIR}${PREFIX}/lib/gstreamer-1.0
154
	${MKDIR} ${STAGEDIR}${PREFIX}/lib/gstreamer-${VERSION}
199
155
200
.include <bsd.port.mk>
156
.include <bsd.port.mk>
(-)b/multimedia/gstreamer1-plugins/Makefile.common (-487 / +244 lines)
Lines 1-608 Link Here
1
BASE_GST_ALL_PLUGINS= \
1
BASE_GST_ALL_PLUGINS+= \
2
		adder \
3
		allocators \
2
		alsa \
4
		alsa \
5
		app \
6
		audio \
7
		audioconvert \
8
		audiomixer \
9
		audiorate \
10
		audioresample \
11
		audiotestsrc \
3
		cdparanoia \
12
		cdparanoia \
13
		compositor \
14
		doc \
15
		encoding \
16
		examples \
17
		fft \
18
		gio \
4
		gl \
19
		gl \
5
		ivorbis \
6
		libvisual \
20
		libvisual \
21
		nls \
7
		ogg \
22
		ogg \
8
		opengl \
9
		opus \
23
		opus \
24
		overlaycomposition \
10
		pango \
25
		pango \
26
		pbtypes \
27
		pbutils \
28
		pkgconfig \
29
		playback \
30
		rawparse \
31
		riff \
32
		rtp \
33
		rtsp \
34
		sdp \
35
		subparse \
36
		tag \
37
		tcp \
38
		tests \
11
		theora \
39
		theora \
40
		tools \
41
		typefind \
42
		video \
43
		videoconvert \
44
		videorate \
45
		videoscale \
46
		videotestsrc \
47
		volume \
12
		vorbis \
48
		vorbis \
13
		x \
49
		ximage \
14
		xvideo
50
		xvideo
15
51
16
BASE_GST_NON_PLUGINS= \
52
BASE_GST_ENABLED_PLUGINS?=
17
		--disable-gles2 \
18
		--disable-egl \
19
		--disable-glx
20
53
21
BAD_GST_ALL_PLUGINS+= \
54
BAD_GST_ALL_PLUGINS+= \
55
		accurip \
56
		adaptivedemux \
57
		adpcmdec \
58
		adpcmenc \
59
		aes \
60
		aiff \
61
		androidmedia \
22
		aom \
62
		aom \
63
		applemedia \
64
		asfmux \
23
		assrender \
65
		assrender \
66
		audiobuffersplit \
67
		audiofxbad \
68
		audiolatency \
69
		audiomixmatrix \
70
		audiovisualizers \
71
		autoconvert \
72
		basecamerabinsrc \
73
		bayer \
74
		bluez \
24
		bs2b \
75
		bs2b \
76
		bz2 \
77
		camerabin2 \
25
		chromaprint \
78
		chromaprint \
79
		closedcaption \
80
		codecalpha \
81
		codecparsers \
82
		codecs \
83
		coloreffects \
84
		colormanagement \
26
		curl \
85
		curl \
27
		dash \
86
		dash \
87
		data \
88
		dc1394 \
89
		debugutils \
90
		directfb \
91
		directsound \
92
		doc \
28
		dtls \
93
		dtls \
29
		dts \
94
		dts \
95
		dvb \
96
		dvbsubenc \
97
		dvbsuboverlay \
98
		dvdspu \
99
		examples \
30
		faac \
100
		faac \
31
		faad \
101
		faad \
102
		faceoverlay \
103
		festival \
104
		fieldanalysis \
32
		flite \
105
		flite \
106
		freeverb \
107
		frei0r \
108
		gaudieffects \
109
		gdp \
110
		geometrictransform \
33
		gme \
111
		gme \
34
		gsm \
112
		gsm \
35
		hls \
113
		hls \
114
		id3tag \
115
		insertbin \
116
		inter \
117
		interfaces \
118
		interlace \
119
		ipcpipeline \
120
		isoff \
121
		ivfparse \
122
		ivtc \
123
		jp2kdecimator \
124
		jpegformat \
36
		kate \
125
		kate \
37
		kms \
126
		kms \
38
		ladspa \
127
		ladspa \
39
		libde265 \
128
		libde265 \
129
		librfb \
40
		lv2 \
130
		lv2 \
131
		midi \
41
		modplug \
132
		modplug \
42
		mpeg2enc \
133
		mpeg2enc \
134
		mpegdemux \
135
		mpegpsmux \
136
		mpegts \
137
		mpegtsdemux \
138
		mpegtsmux \
43
		mplex \
139
		mplex \
44
		msdk \
140
		msdk \
45
		musepack \
141
		musepack \
142
		mxf \
46
		neon \
143
		neon \
47
		ofa \
144
		netsim \
145
		nls \
146
		nvcodec \
147
		onvif \
48
		openal \
148
		openal \
49
		opencv \
149
		opencv \
50
		openexr \
150
		openexr \
51
		openh264 \
151
		openh264 \
52
		openjpeg \
152
		openjpeg \
53
		openmpt \
153
		openmpt \
154
		opus \
155
		pcapparse \
156
		pkgconfig \
157
		play \
158
		player \
159
		pnm \
160
		proxy \
161
		rawparse \
162
		removesilence \
54
		resindvd \
163
		resindvd \
55
		rtmp \
164
		rist \
56
		rsvg \
165
		rsvg \
166
		rtmp \
167
		rtmp2 \
168
		rtp \
169
		sbc \
170
		sctp \
171
		sdp \
172
		segmentclip \
173
		shm \
174
		siren \
175
		smooth \
57
		smoothstreaming \
176
		smoothstreaming \
58
		sndfile \
177
		sndfile \
59
		soundtouch \
178
		soundtouch \
60
		spandsp \
179
		spandsp \
180
		speed \
61
		srtp \
181
		srtp \
182
		subenc \
183
		switchbin \
184
		tests \
185
		timecode \
186
		tinyalsa \
187
		tools \
188
		transcode \
189
		transcoder \
62
		ttml \
190
		ttml \
63
		vdpau \
191
		uridownloader \
192
		uvch264 \
193
		videofilters \
194
		videoframe_audiolevel \
195
		videoparsers \
196
		videosignal \
197
		vmnc \
64
		vulkan \
198
		vulkan \
199
		wasapi \
65
		wayland \
200
		wayland \
66
		webp \
201
		webp \
202
		webrtc \
67
		webrtcdsp \
203
		webrtcdsp \
204
		winks \
205
		winscreencap \
68
		x265 \
206
		x265 \
69
		zbar \
207
		y4m \
208
		zbar
70
209
71
BAD_GST_NON_PLUGINS= \
210
BAD_GST_ENABLED_PLUGINS?=
72
		--enable-bz2 \
73
		--enable-dvb \
74
		--enable-shm \
75
		--disable-acm \
76
		--disable-android_media \
77
		--disable-apple_media \
78
		--disable-avc \
79
		--disable-bluez \
80
		--disable-directfb \
81
		--disable-direct3d \
82
		--disable-directsound \
83
		--disable-nvenc \
84
		--disable-nvdec \
85
		--disable-sbc \
86
		--disable-spc \
87
		--disable-tinyalsa \
88
		--disable-uvch264 \
89
		--disable-vcd \
90
		--disable-wasapi \
91
		--disable-winks \
92
		--disable-winscreencap
93
211
94
GOOD_GST_ALL_PLUGINS+= \
212
GOOD_GST_ALL_PLUGINS+= \
95
		aalib \
213
		aalib \
214
		alpha \
215
		apetag \
216
		audiofx \
217
		audioparsers \
218
		auparse \
219
		autodetect \
220
		avi \
96
		cairo \
221
		cairo \
222
		cutter \
223
		debugutils \
224
		deinterlace \
225
		directsound \
226
		dtmf \
227
		dv \
228
		dv1394 \
229
		effectv \
230
		equalizer \
231
		examples \
97
		flac \
232
		flac \
98
		gdk_pixbuf \
233
		flv \
99
		gst_v4l2 \
234
		flx \
235
		gdk-pixbuf \
236
		goom \
237
		goom2k1 \
100
		gtk3 \
238
		gtk3 \
239
		icydemux \
240
		id3demux \
241
		imagefreeze \
242
		interleave \
243
		isomp4 \
101
		jack \
244
		jack \
102
		jpeg \
245
		jpeg \
103
		lame \
246
		lame \
247
		law \
248
		level \
104
		libcaca \
249
		libcaca \
105
		libdv \
250
		matroska \
106
		libpng \
251
		monoscope \
107
		mpg123 \
252
		mpg123 \
253
		multifile \
254
		multipart \
255
		nls \
256
		oss \
257
		oss4 \
258
		osxaudio \
259
		osxvideo \
260
		png \
108
		pulse \
261
		pulse \
109
		qt \
262
		qt5 \
263
		replaygain \
264
		rtp \
265
		rtpmanager \
266
		rtsp \
267
		shapewipe \
110
		shout2 \
268
		shout2 \
269
		smpte \
111
		soup \
270
		soup \
271
		spectrum \
112
		speex \
272
		speex \
113
		taglib \
273
		taglib \
274
		tests \
114
		twolame \
275
		twolame \
276
		udp \
277
		v4l2 \
278
		videobox \
279
		videocrop \
280
		videofilter \
281
		videomixer \
115
		vpx \
282
		vpx \
283
		waveform \
284
		wavenc \
116
		wavpack \
285
		wavpack \
117
		x
286
		wavparse \
287
		ximagesrc \
288
		y4m
118
289
119
GOOD_GST_NON_PLUGINS=	\
290
GOOD_GST_ENABLED_PLUGINS?=
120
		--disable-dv1394 \
121
		--disable-directsound \
122
		--disable-osx_audio \
123
		--disable-osx_video \
124
		--disable-waveform \
125
		--enable-bz2 \
126
		--enable-oss \
127
		--enable-oss4 \
128
		--enable-zlib
129
291
130
UGLY_GST_ALL_PLUGINS+= \
292
UGLY_GST_ALL_PLUGINS+= \
131
		a52dec \
293
		a52dec \
132
		amrnb \
294
		amrnb \
133
		amrwb \
295
		amrwbdec \
296
		asfdemux \
134
		cdio \
297
		cdio \
298
		dvdlpcmdec \
135
		dvdread \
299
		dvdread \
300
		dvdsub \
136
		mpeg2dec \
301
		mpeg2dec \
302
		nls \
303
		realmedia \
137
		sidplay \
304
		sidplay \
138
		x264
305
		x264 \
306
		xingmux
307
308
UGLY_GST_ENABLED_PLUGINS?=
139
309
140
UGLY_GST_NON_PLUGINS=
310
# gstreamer scripts tend to call python3 rather than python
311
BINARY_ALIAS=	python3=${PYTHON_VERSION}
141
312
142
# Disable all plugins by default
313
# Disable all plugins by default
143
.if ${DIST}=="base"
314
.if ${DIST}=="base"
144
.for d in ${BASE_GST_ALL_PLUGINS}
315
.for d in ${BASE_GST_ALL_PLUGINS}
145
CONFIGURE_ARGS+=	--disable-${d}
316
CONFIGURE_ARGS+=	-D${d}=disabled
317
.endfor
318
.for d in ${BASE_GST_ENABLED_PLUGINS}
319
CONFIGURE_ARGS+=	-D${d}=enabled
146
.endfor
320
.endfor
147
CONFIGURE_ARGS+= ${BASE_GST_NON_PLUGINS}
148
.endif
321
.endif
149
322
150
.if ${DIST}=="bad"
323
.if ${DIST}=="bad"
151
.for d in ${BAD_GST_ALL_PLUGINS}
324
.for d in ${BAD_GST_ALL_PLUGINS}
152
CONFIGURE_ARGS+=	--disable-${d}
325
CONFIGURE_ARGS+=	-D${d}=disabled
326
.endfor
327
.for d in ${BAD_GST_ENABLED_PLUGINS}
328
CONFIGURE_ARGS+=	-D${d}=enabled
153
.endfor
329
.endfor
154
CONFIGURE_ARGS+= ${BAD_GST_NON_PLUGINS}
155
.endif
330
.endif
156
331
157
.if ${DIST}=="good"
332
.if ${DIST}=="good"
158
.for d in ${GOOD_GST_ALL_PLUGINS}
333
.for d in ${GOOD_GST_ALL_PLUGINS}
159
CONFIGURE_ARGS+=	--disable-${d}
334
CONFIGURE_ARGS+=	-D${d}=disabled
335
.endfor
336
.for d in ${GOOD_GST_ENABLED_PLUGINS}
337
CONFIGURE_ARGS+=	-D${d}=enabled
160
.endfor
338
.endfor
161
CONFIGURE_ARGS+= ${GOOD_GST_NON_PLUGINS}
162
.endif
339
.endif
163
340
164
.if ${DIST}=="ugly"
341
.if ${DIST}=="ugly"
165
.for d in ${UGLY_GST_ALL_PLUGINS}
342
.for d in ${UGLY_GST_ALL_PLUGINS}
166
CONFIGURE_ARGS+=	--disable-${d}
343
CONFIGURE_ARGS+=	-D${d}=disabled
344
.endfor
345
.for d in ${UGLY_GST_ENABLED_PLUGINS}
346
CONFIGURE_ARGS+=	-D${d}=enabled
167
.endfor
347
.endfor
168
CONFIGURE_ARGS+= ${UGLY_GST_NON_PLUGINS}
169
.endif
348
.endif
170
349
171
.if ${GST_PLUGIN}!="base" && ${GST_PLUGIN}!="bad" && \
350
.if ${GST_PLUGIN}!="base" && ${GST_PLUGIN}!="bad" && \
172
	${GST_PLUGIN}!="good" && ${GST_PLUGIN}!="ugly"
351
	${GST_PLUGIN}!="good" && ${GST_PLUGIN}!="ugly" && \
173
CONFIGURE_ARGS+=	--enable-${GST_PLUGIN}
352
	${GST_PLUGIN}!="x"
353
CONFIGURE_ARGS+=	-D${GST_PLUGIN}=enabled
174
.endif
354
.endif
175
355
176
.if !defined(NO_GSTREAMER_COMMON)
356
.if !defined(NO_GSTREAMER_COMMON)
177
GST_PLUGIN_SUFFIX?=	-${GST_PLUGIN}
357
GST_PLUGIN_SUFFIX?=	-${GST_PLUGIN}
178
358
179
# Enable the right plugin
359
USE_GSTREAMER+=	${DIST:base=}
180
CONFIGURE_ARGS:=${CONFIGURE_ARGS:S|--disable-${GST_PLUGIN}|--enable-${GST_PLUGIN}|}
181
360
182
GST_INC_DIR=		include/gstreamer-${VERSION}
361
GST_INC_DIR=		include/gstreamer-${VERSION}
183
GST_LIB_DIR=		lib/gstreamer-${VERSION}
362
GST_LIB_DIR=		lib/gstreamer-${VERSION}
184
363
185
# Auto create PLIST
186
PLIST?=		${NONEXISTENT}
187
188
# ------- plugins ---------
189
190
# a52dec
191
gst_a52dec_LIB_DEPENDS=	liba52.so:audio/liba52
192
193
# aalib
194
gst_aalib_LIB_DEPENDS=	libaa.so:graphics/aalib
195
gst_aalib_USES=		ncurses
196
gst_aalib_PLIST_FILES=	${GST_LIB_DIR}/libgstaasink.so
197
198
# amrnb
199
gst_amrnb_LIB_DEPENDS=	libopencore-amrnb.so:audio/opencore-amr
200
gst_amrnb_PLIST_FILES=	${GST_LIB_DIR}/libgstamrnb.so \
201
			share/gstreamer-${VERSION}/presets/GstAmrnbEnc.prs
202
203
# amrwb
204
gst_amrwb_LIB_DEPENDS=	libopencore-amrwb.so:audio/opencore-amr
205
gst_amrwb_GST_PLUGIN_DIR=	ext/amrwbdec
206
gst_amrwb_PLIST_FILES=	${GST_LIB_DIR}/libgstamrwbdec.so
207
208
# aom
209
gst_aom_LIB_DEPENDS=	libaom.so:multimedia/aom
210
211
# assrender
212
gst_assrender_LIB_DEPENDS=	libass.so:multimedia/libass
213
gst_assrender_USES=	compiler:c11
214
215
# bs2b
216
gst_bs2b_LIB_DEPENDS=	libbs2b.so:audio/libbs2b
217
218
# cairo
219
gst_cairo_USE_GNOME=	cairo
220
221
# cdparanoia
222
gst_cdparanoia_LIB_DEPENDS=	libcdda_interface.so:audio/cdparanoia
223
224
# cdio
225
gst_cdio_LIB_DEPENDS=	libcdio.so:sysutils/libcdio
226
227
# chromaprint
228
gst_chromaprint_LIB_DEPENDS=	libchromaprint.so:audio/chromaprint
229
230
# curl
231
gst_curl_LIB_DEPENDS=	libcurl.so:ftp/curl \
232
			libssh2.so:security/libssh2
233
234
# dash
235
gst_dash_USE_GNOME=	libxml2
236
gst_dash_PLIST_FILES=	${GST_LIB_DIR}/libgstdashdemux.so
237
238
# dtls
239
gst_dtls_USES=		compiler:c11 ssl
240
gst_dtls_CONFIGURE_ENV=	DTLS_CFLAGS="-I${OPENSSLINC}" \
241
			DTLS_LIBS="-L${OPENSSLLIB} -lcrypto -lssl"
242
243
# dts
244
gst_dts_LIB_DEPENDS=	libdca.so:multimedia/libdca
245
gst_dts_PLIST_FILES=	${GST_LIB_DIR}/libgstdtsdec.so
246
247
# libdv
248
gst_libdv_LIB_DEPENDS=		libdv.so:multimedia/libdv
249
gst_libdv_GST_PLUGIN_DIR=	ext/dv
250
gst_libdv_PLIST_FILES=		${GST_LIB_DIR}/libgstdv.so
251
252
# dvdread
253
gst_dvdread_LIB_DEPENDS=libdvdread.so:multimedia/libdvdread
254
255
# faac
256
gst_faac_LIB_DEPENDS=	libfaac.so:audio/faac
257
258
# faad
259
gst_faad_LIB_DEPENDS=	libfaad.so:audio/faad
260
261
# flac
262
gst_flac_LIB_DEPENDS=	libFLAC.so:audio/flac
263
264
# flite
265
gst_flite_LIB_DEPENDS=	libflite.so:audio/flite
266
267
# gdk_pixbuf
268
gst_gdk_pixbuf_USE_GNOME=	gdkpixbuf2
269
gst_gdk_pixbuf_PLIST_FILES=	${GST_LIB_DIR}/libgstgdkpixbuf.so
270
271
# gl
272
gst_gl_USES=	gl
273
gst_gl_USE_GL=	gl glu glesv2 egl
274
gst_gl_BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
275
gst_gl_LIB_DEPENDS=	libgraphene-1.0.so:graphics/graphene
276
gst_gl_CONFIGURE_ARGS=	--enable-gl --enable-glx \
277
			--enable-egl --enable-gles2
278
gst_gl_GST_PLUGIN_DIR=	gst-libs/gst/gl ext/gl
279
gst_gl_PLIST_FILES=		#
280
281
# gme
282
gst_gme_LIB_DEPENDS=	libgme.so:audio/libgme
283
284
# gsm
285
gst_gsm_LIB_DEPENDS=	libgsm.so:audio/gsm
286
287
# gtk3
288
gst_gtk3_USES=		gnome
289
gst_gtk3_USE_GSTREAMER=	gl
290
gst_gtk3_USE_GNOME=	cairo gdkpixbuf2 gtk30
291
gst_gtk3_CONFIGURE_ARGS=--enable-gtk3
292
gst_gtk3_GST_PLUGIN_DIR=ext/gtk
293
gst_gtk3_PLIST_FILES=	${GST_LIB_DIR}/libgstgtk.so
294
295
# hls
296
gst_hls_LIB_DEPENDS=	libnettle.so:security/nettle
297
298
# jack
299
gst_jack_LIB_DEPENDS=	libjack.so:audio/jack
300
301
# jpeg
302
gst_jpeg_USES=		jpeg
303
304
# kate
305
gst_kate_LIB_DEPENDS=	libkate.so:multimedia/libkate
306
307
# kms
308
gst_kms_LIB_DEPENDS=	libdrm.so:graphics/libdrm
309
gst_kms_GST_PLUGIN_DIR=	sys/kms
310
311
# ladspa
312
gst_ladspa_BUILD_DEPENDS=	${LOCALBASE}/include/ladspa.h:audio/ladspa
313
314
# lame
315
gst_lame_LIB_DEPENDS=	libmp3lame.so:audio/lame
316
317
# libcaca
318
gst_libcaca_LIB_DEPENDS=	libcaca.so:graphics/libcaca
319
gst_libcaca_PLIST_FILES=	${GST_LIB_DIR}/libgstcacasink.so
320
321
# libde265
322
gst_libde265_LIB_DEPENDS=	libde265.so:multimedia/libde265
323
gst_libde265_PLIST_FILES=	${GST_LIB_DIR}/libgstde265.so
324
325
# librfb
326
gst_librfb_USES=	xorg
327
gst_librfb_USE_XORG=	x11
328
329
# liblv2
330
gst_lv2_USES=		pkgconfig
331
gst_lv2_BUILD_DEPENDS=	lv2>=1.14.0:audio/lv2
332
gst_lv2_LIB_DEPENDS=	libsord-0.so:devel/sord \
333
			libserd-0.so:devel/serd \
334
			libsratom-0.so:audio/sratom \
335
			liblilv-0.so:audio/lilv
336
337
# png
338
gst_libpng_LIB_DEPENDS=	libpng.so:graphics/png
339
gst_libpng_PLIST_FILES=	${GST_LIB_DIR}/libgstpng.so
340
341
# libvisual
342
gst_libvisual_LIB_DEPENDS=	libvisual-0.4.so:graphics/libvisual04
343
344
# modplug
345
gst_modplug_LIB_DEPENDS=	libmodplug.so:audio/libmodplug
346
347
# mpeg2enc
348
gst_mpeg2enc_LIB_DEPENDS=	libmjpegutils.so:multimedia/mjpegtools
349
350
# mpeg2dec
351
gst_mpeg2dec_LIB_DEPENDS=	libmpeg2.so:multimedia/libmpeg2
352
353
# mplex
354
gst_mplex_LIB_DEPENDS=	libmplex2.so:multimedia/mjpegtools
355
356
# mpg123
357
gst_mpg123_LIB_DEPENDS=	libmpg123.so:audio/mpg123
358
359
# msdk
360
gst_msdk_LIB_DEPENDS=	libgudev-1.0.so:devel/libgudev \
361
			libmfx.so:multimedia/intel-media-sdk \
362
			libva-drm.so:multimedia/libva
363
gst_msdk_GST_PLUGIN_DIR=	sys/msdk
364
365
# musepack
366
gst_musepack_LIB_DEPENDS=libmpcdec.so:audio/musepack
367
368
# neon
369
gst_neon_LIB_DEPENDS+=  libneon.so:www/neon
370
gst_neon_PLIST_FILES=	${GST_LIB_DIR}/libgstneonhttpsrc.so
371
372
# ogg
373
gst_ogg_LIB_DEPENDS=	libogg.so:audio/libogg
374
375
# opencv
376
gst_opencv_LIB_DEPENDS=		libopencv_highgui.so:graphics/opencv
377
gst_opencv_GST_PLUGIN_DIR=	gst-libs/gst/opencv ext/opencv
378
gst_opencv_PLIST_FILES=		#
379
gst_opencv_USES=	compiler:c++11-lib
380
381
# openexr
382
gst_openexr_LIB_DEPENDS=	libOpenEXR.so:graphics/openexr
383
384
# openjpeg
385
gst_openjpeg_LIB_DEPENDS=	libopenjp2.so:graphics/openjpeg
386
387
# openh264
388
gst_openh264_LIB_DEPENDS=	libopenh264.so:multimedia/openh264
389
390
# openmpt
391
gst_openmpt_LIB_DEPENDS=	libopenmpt.so:audio/libopenmpt
392
393
# opus
394
gst_opus_LIB_DEPENDS=	libopus.so:audio/opus
395
396
# pango
397
gst_pango_USE_GNOME=	cairo pango
398
399
# pulse
400
gst_pulse_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
401
gst_pulse_PLIST_FILES=	${GST_LIB_DIR}/libgstpulseaudio.so
402
403
# qt
404
gst_qt_USES=	compiler:c++11-lang qt:5
405
gst_qt_USE_QT=	core gui declarative buildtools:build network x11extras
406
gst_qt_USE_GSTREAMER=	gl
407
gst_qt_PLIST_FILES=	${GST_LIB_DIR}/libgstqmlgl.so
408
409
# resindvd
410
gst_resindvd_BUILD_DEPENDS=	libdvdnav>=4.1.2:multimedia/libdvdnav
411
gst_resindvd_LIB_DEPENDS=	libdvdread.so:multimedia/libdvdread
412
gst_resindvd_RUN_DEPENDS=	libdvdnav>=4.1.2:multimedia/libdvdnav
413
414
# rtmp
415
gst_rtmp_LIB_DEPENDS=	librtmp.so:multimedia/librtmp
416
417
# rsvg
418
gst_rsvg_USE_GNOME=	cairo librsvg2
419
420
# shout2
421
gst_shout2_LIB_DEPENDS=	libshout.so:audio/libshout
422
423
# sidplay
424
gst_sidplay_LIB_DEPENDS=	libsidplay.so:audio/libsidplay
425
gst_sidplay_PLIST_FILES=	${GST_LIB_DIR}/libgstsid.so
426
427
# smoothstreaming
428
gst_smoothstreaming_USE_GNOME=	libxml2
429
430
# sndfile
431
gst_sndfile_LIB_DEPENDS=	libsndfile.so:audio/libsndfile
432
433
# soundtouch
434
gst_soundtouch_LIB_DEPENDS=	libSoundTouch.so:audio/soundtouch
435
436
# souphttpsrc
437
gst_soup_LIB_DEPENDS=	libsoup-2.4.so:devel/libsoup
438
439
# spandsp
440
gst_spandsp_LIB_DEPENDS=	libspandsp.so:comms/spandsp
441
442
# speex
443
gst_speex_LIB_DEPENDS=	libspeex.so:audio/speex
444
445
# srtp
446
gst_srtp_LIB_DEPENDS=	libsrtp2.so:net/libsrtp2
447
448
# taglib
449
gst_taglib_LIB_DEPENDS=	libtag.so:audio/taglib
450
451
# theora
452
gst_theora_LIB_DEPENDS=	libtheora.so:multimedia/libtheora \
453
			libogg.so:audio/libogg
454
455
# ttml
456
gst_ttml_USE_GNOME=	cairo libxml2 pango
457
gst_ttml_PLIST_FILES=	${GST_LIB_DIR}/libgstttmlsubs.so
458
459
# twolame
460
gst_twolame_LIB_DEPENDS=	libtwolame.so:audio/twolame
461
462
# gst_v4l2
463
gst_gst_v4l2_BUILD_DEPENDS=	v4l_compat>0:multimedia/v4l_compat
464
gst_gst_v4l2_LIB_DEPENDS=	libv4l2.so:multimedia/libv4l
465
gst_gst_v4l2_RUN_DEPENDS=	webcamd:multimedia/webcamd
466
gst_gst_v4l2_PLIST_FILES=	${GST_LIB_DIR}/libgstvideo4linux2.so
467
gst_gst_v4l2_GST_PLUGIN_DIR=	sys/v4l2
468
469
# vorbis
470
gst_vorbis_USE_GSTREAMER=	ogg
471
gst_vorbis_LIB_DEPENDS=	libvorbis.so:audio/libvorbis
472
473
# vpx
474
gst_vpx_LIB_DEPENDS=	libvpx.so:multimedia/libvpx
475
gst_vpx_PLIST_FILES=	${GST_LIB_DIR}/libgstvpx.so \
476
			share/gstreamer-${VERSION}/presets/GstVP8Enc.prs
477
478
# vdpau
479
gst_vdpau_LIB_DEPENDS=	libvdpau.so:multimedia/libvdpau
480
gst_vdpau_GST_PLUGIN_DIR=	sys/vdpau
481
482
# vulkan
483
gst_vulkan_USE_GSTREAMER=	gl
484
gst_vulkan_BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto \
485
				${LOCALBASE}/include/libdrm/drm_fourcc.h:graphics/libdrm \
486
				${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \
487
				wayland-protocols>=0:graphics/wayland-protocols
488
gst_vulkan_LIB_DEPENDS=		libvulkan.so:graphics/vulkan-loader \
489
				libwayland-client.so:graphics/wayland
490
gst_vulkan_CONFIGURE_ARGS=	--enable-wayland
491
492
# webp
493
gst_webp_LIB_DEPENDS=	libwebp.so:graphics/webp
494
495
# webrtcdsp
496
gst_webrtcdsp_LIB_DEPENDS=	libwebrtc_audio_processing.so:audio/webrtc-audio-processing0
497
498
# X ximage and xvimage sinks aka output
499
.if ${DIST} == base
500
gst_x_USES=		xorg
501
gst_x_USE_XORG=		x11 xv xext
502
gst_x_CONFIGURE_ARGS=	--enable-xvideo --enable-xshm
503
gst_x_GST_PLUGIN_DIR=	sys/ximage sys/xvimage
504
gst_x_PLIST_FILES=	${GST_LIB_DIR}/libgstximagesink.so \
505
			${GST_LIB_DIR}/libgstxvimagesink.so
506
.endif
507
508
.if ${DIST} == good
509
# Ximagesrc
510
gst_x_USES=		xorg
511
gst_x_USE_XORG=		x11 xfixes xdamage xext
512
gst_x_CONFIGURE_ARGS=	--enable-x
513
gst_x_GST_PLUGIN_DIR=	sys/ximage
514
gst_x_PLIST_FILES=	${GST_LIB_DIR}/libgstximagesrc.so
515
.endif
516
517
# x264
518
gst_x264_LIB_DEPENDS=	libx264.so:multimedia/libx264
519
gst_x264_PLIST_FILES=	${GST_LIB_DIR}/libgstx264.so \
520
			share/gstreamer-${VERSION}/presets/GstX264Enc.prs
521
522
# x265
523
gst_x265_LIB_DEPENDS=	libx265.so:multimedia/x265
524
525
# xvid
526
gst_xvid_LIB_DEPENDS=	libxvidcore.so:multimedia/xvid
527
528
# wavpack
529
gst_wavpack_LIB_DEPENDS=	libwavpack.so:audio/wavpack
530
531
# zbar
532
gst_zbar_LIB_DEPENDS=	libzbar.so:graphics/zbar
533
534
.endif # NO_GSTREAMER_COMMON
364
.endif # NO_GSTREAMER_COMMON
535
365
536
.if !defined(NO_GSTREAMER_COMMON)
537
gst_${GST_PLUGIN}_BUILD_DEPENDS?=
538
gst_${GST_PLUGIN}_LIB_DEPENDS?=
539
gst_${GST_PLUGIN}_RUN_DEPENDS?=
540
gst_${GST_PLUGIN}_USES?=
541
gst_${GST_PLUGIN}_USE_QT?=
542
gst_${GST_PLUGIN}_USE_XORG?=
543
gst_${GST_PLUGIN}_PLIST_FILES?= \
544
		${GST_LIB_DIR}/libgst${GST_PLUGIN}${GST_PLIST_SUFFIX}.so
545
gst_${GST_PLUGIN}_EXTRA_LIBS?=
546
gst_${GST_PLUGIN}_PREBUILD_DIR?=
547
gst_${GST_PLUGIN}_GST_PLUGIN_DIR?=	ext/${GST_PLUGIN}
548
gst_${GST_PLUGIN}_POSTBUILD_DIR?=
549
gst_${GST_PLUGIN}_USE_XORG?=
550
gst_${GST_PLUGIN}_USE_GNOME?=
551
gst_${GST_PLUGIN}_CONFIGURE_ENV?=
552
gst_${GST_PLUGIN}_USE_GL?=
553
gst_${GST_PLUGIN}_GLIB_SCHEMAS?=
554
gst_${GST_PLUGIN}_CONFIGURE_ARGS?=
555
gst_${GST_PLUGIN}_USE_SDL?=
556
gst_${GST_PLUGIN}_USE_GSTREAMER?=
557
558
BUILD_DEPENDS+=	${gst_${GST_PLUGIN}_BUILD_DEPENDS}
559
LIB_DEPENDS+=	${gst_${GST_PLUGIN}_LIB_DEPENDS}
560
RUN_DEPENDS+=	${gst_${GST_PLUGIN}_RUN_DEPENDS}
561
USES+=		${gst_${GST_PLUGIN}_USES}
562
PLIST_FILES=	${gst_${GST_PLUGIN}_PLIST_FILES}
563
EXTRA_LIBS+=	${gst_${GST_PLUGIN}_EXTRA_LIBS}
564
.if ${gst_${GST_PLUGIN}_USE_XORG}!=""
565
USE_XORG+=	${gst_${GST_PLUGIN}_USE_XORG}
566
.endif
567
.if ${gst_${GST_PLUGIN}_USE_GNOME}!=""
568
USE_GNOME+=	${gst_${GST_PLUGIN}_USE_GNOME}
569
.endif
570
.if ${gst_${GST_PLUGIN}_USE_QT}!=""
571
USE_QT+=	${gst_${GST_PLUGIN}_USE_QT}
572
.endif
573
CONFIGURE_ENV+=	${gst_${GST_PLUGIN}_CONFIGURE_ENV}
574
.if ${gst_${GST_PLUGIN}_USE_GL}!=""
575
USE_GL+=	${gst_${GST_PLUGIN}_USE_GL}
576
.endif
577
578
.if ${gst_${GST_PLUGIN}_GLIB_SCHEMAS}!=""
579
GLIB_SCHEMAS=	${gst_${GST_PLUGIN}_GLIB_SCHEMAS}
580
.endif
581
582
CONFIGURE_ARGS+=	${gst_${GST_PLUGIN}_CONFIGURE_ARGS}
583
584
.if ${gst_${GST_PLUGIN}_USE_SDL}!=""
585
USE_SDL=		${gst_${GST_PLUGIN}_USE_SDL}
586
.endif
587
588
USE_GSTREAMER+=	${gst_${GST_PLUGIN}_USE_GSTREAMER} ${DIST:base=}
589
GST_PREBUILD_DIR=	${gst_${GST_PLUGIN}_GST_PREBUILD_DIR}
590
GST_PLUGIN_DIR=		${gst_${GST_PLUGIN}_GST_PLUGIN_DIR}
591
GST_POSTBUILD_DIR=	${gst_${GST_PLUGIN}_GST_POSTBUILD_DIR}
592
593
.if !target(do-build)
594
do-build:
595
.for dir in ${GST_PREBUILD_DIR} ${GST_PLUGIN_DIR} ${GST_POSTBUILD_DIR}
596
	@cd ${WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
597
		${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET}
598
.endfor
599
.endif
600
601
.if !target(do-install)
602
do-install:
603
.for dir in ${GST_PLUGIN_DIR}
604
	@cd ${WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
605
		${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET}
606
.endfor
607
.endif
608
.endif
(-)b/multimedia/gstreamer1-plugins/distinfo (-9 / +9 lines)
Lines 1-9 Link Here
1
TIMESTAMP = 1575818122
1
TIMESTAMP = 1662117432
2
SHA256 (gst-plugins-base-1.16.2.tar.xz) = b13e73e2fe74a4166552f9577c3dcb24bed077021b9c7fa600d910ec6987816a
2
SHA256 (gst-plugins-base-1.20.3.tar.xz) = 7e30b3dd81a70380ff7554f998471d6996ff76bbe6fc5447096f851e24473c9f
3
SIZE (gst-plugins-base-1.16.2.tar.xz) = 3939868
3
SIZE (gst-plugins-base-1.20.3.tar.xz) = 3299976
4
SHA256 (gst-plugins-bad-1.16.2.tar.xz) = f1cb7aa2389569a5343661aae473f0a940a90b872001824bc47fa8072a041e74
4
SHA256 (gst-plugins-bad-1.20.3.tar.xz) = 7a11c13b55dd1d2386dd902219e41cbfcdda8e1e0aa3e738186c95074b35da4f
5
SIZE (gst-plugins-bad-1.16.2.tar.xz) = 4887812
5
SIZE (gst-plugins-bad-1.20.3.tar.xz) = 6222824
6
SHA256 (gst-plugins-ugly-1.16.2.tar.xz) = 5500415b865e8b62775d4742cbb9f37146a50caecfc0e7a6fc0160d3c560fbca
6
SHA256 (gst-plugins-ugly-1.20.3.tar.xz) = 8caa20789a09c304b49cf563d33cca9421b1875b84fcc187e4a385fa01d6aefd
7
SIZE (gst-plugins-ugly-1.16.2.tar.xz) = 893964
7
SIZE (gst-plugins-ugly-1.20.3.tar.xz) = 508272
8
SHA256 (gst-plugins-good-1.16.2.tar.xz) = 40bb3bafda25c0b739c8fc36e48380fccf61c4d3f83747e97ac3f9b0171b1319
8
SHA256 (gst-plugins-good-1.20.3.tar.xz) = f8f3c206bf5cdabc00953920b47b3575af0ef15e9f871c0b6966f6d0aa5868b7
9
SIZE (gst-plugins-good-1.16.2.tar.xz) = 3897172
9
SIZE (gst-plugins-good-1.20.3.tar.xz) = 3417252
(-)a/multimedia/gstreamer1-plugins/files/patch-Makefile.in (-11 lines)
Removed Link Here
1
--- Makefile.in.orig	2013-03-10 14:54:07.000000000 +0000
2
+++ Makefile.in	2013-03-10 14:55:01.000000000 +0000
3
@@ -483,8 +483,6 @@
4
 	gst-libs 		\
5
 	gst sys $(SUBDIRS_EXT) 	\
6
 	tools 			\
7
-	tests 			\
8
-	docs			\
9
 	po 			\
10
 	common 			\
11
 	m4
(-)a/multimedia/gstreamer1-plugins/files/patch-configure (-109 lines)
Removed Link Here
1
--- configure.orig	2019-03-02 18:59:35.242374000 +0100
2
+++ configure	2019-03-02 19:00:32.651461000 +0100
3
@@ -33987,54 +33987,9 @@
4
 _ACEOF
5
 
6
     fi
7
-    if test "x$FOUND_CDPARANOIA" = "xyes";
8
-    then
9
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for paranoia_cachemodel_size in -lcdda_paranoia" >&5
10
-$as_echo_n "checking for paranoia_cachemodel_size in -lcdda_paranoia... " >&6; }
11
-if ${ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size+:} false; then :
12
-  $as_echo_n "(cached) " >&6
13
-else
14
-  ac_check_lib_save_LIBS=$LIBS
15
-LIBS="-lcdda_paranoia -lcdda_interface $LIBS"
16
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17
-/* end confdefs.h.  */
18
 
19
-/* Override any GCC internal prototype to avoid an error.
20
-   Use char because int might match the return type of a GCC
21
-   builtin and then its argument prototype would still apply.  */
22
-#ifdef __cplusplus
23
-extern "C"
24
-#endif
25
-char paranoia_cachemodel_size ();
26
-int
27
-main ()
28
-{
29
-return paranoia_cachemodel_size ();
30
-  ;
31
-  return 0;
32
-}
33
-_ACEOF
34
-if ac_fn_c_try_link "$LINENO"; then :
35
-  ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=yes
36
-else
37
-  ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=no
38
-fi
39
-rm -f core conftest.err conftest.$ac_objext \
40
-    conftest$ac_exeext conftest.$ac_ext
41
-LIBS=$ac_check_lib_save_LIBS
42
-fi
43
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&5
44
-$as_echo "$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&6; }
45
-if test "x$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" = xyes; then :
46
-  :
47
-else
48
-  HAVE_CDPARANOIA=no
49
-fi
50
 
51
-    fi
52
 
53
-
54
-
55
 elif test $pkg_failed = untried; then
56
 
57
 
58
@@ -34176,51 +34131,6 @@
59
 cat >>confdefs.h <<_ACEOF
60
 #define CDPARANOIA_HEADERS_IN_DIR /**/
61
 _ACEOF
62
-
63
-    fi
64
-    if test "x$FOUND_CDPARANOIA" = "xyes";
65
-    then
66
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for paranoia_cachemodel_size in -lcdda_paranoia" >&5
67
-$as_echo_n "checking for paranoia_cachemodel_size in -lcdda_paranoia... " >&6; }
68
-if ${ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size+:} false; then :
69
-  $as_echo_n "(cached) " >&6
70
-else
71
-  ac_check_lib_save_LIBS=$LIBS
72
-LIBS="-lcdda_paranoia -lcdda_interface $LIBS"
73
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
74
-/* end confdefs.h.  */
75
-
76
-/* Override any GCC internal prototype to avoid an error.
77
-   Use char because int might match the return type of a GCC
78
-   builtin and then its argument prototype would still apply.  */
79
-#ifdef __cplusplus
80
-extern "C"
81
-#endif
82
-char paranoia_cachemodel_size ();
83
-int
84
-main ()
85
-{
86
-return paranoia_cachemodel_size ();
87
-  ;
88
-  return 0;
89
-}
90
-_ACEOF
91
-if ac_fn_c_try_link "$LINENO"; then :
92
-  ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=yes
93
-else
94
-  ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size=no
95
-fi
96
-rm -f core conftest.err conftest.$ac_objext \
97
-    conftest$ac_exeext conftest.$ac_ext
98
-LIBS=$ac_check_lib_save_LIBS
99
-fi
100
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&5
101
-$as_echo "$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" >&6; }
102
-if test "x$ac_cv_lib_cdda_paranoia_paranoia_cachemodel_size" = xyes; then :
103
-  :
104
-else
105
-  HAVE_CDPARANOIA=no
106
-fi
107
 
108
     fi
109
 
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_cdparanoia_meson.build (+11 lines)
Added Link Here
1
--- ext/cdparanoia/meson.build.orig	2022-09-08 19:40:48 UTC
2
+++ ext/cdparanoia/meson.build
3
@@ -33,7 +33,7 @@ if cdparanoia_found
4
     ['gstcdparanoiasrc.c'],
5
     include_directories: [configinc, libsinc],
6
     c_args : gst_plugins_base_args,
7
-    dependencies : cdparanoia_deps + glib_deps + [audio_dep, gst_dep, gst_base_dep],
8
+    dependencies : cdparanoia_deps + glib_deps + [dependency('gstreamer-audio-1.0'), gst_dep, gst_base_dep],
9
     install : true,
10
     install_dir : plugins_install_dir,
11
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_gl_meson.build (+11 lines)
Added Link Here
1
--- ext/gl/meson.build.orig	2022-09-09 09:05:31 UTC
2
+++ ext/gl/meson.build
3
@@ -146,7 +146,7 @@ gstopengl = library('gstopengl',
4
   objc_args : gst_plugins_base_args + gl_objc_args + extra_c_args,
5
   link_args : noseh_link_args,
6
   include_directories : [configinc],
7
-  dependencies : [gstgl_dep, video_dep,
8
+  dependencies : [gstgl_dep, dependency('gstreamer-video-1.0'),
9
                   gst_base_dep, gst_controller_dep, libm] + optional_deps,
10
   install : true,
11
   install_dir : plugins_install_dir)
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_libvisual_meson.build (+12 lines)
Added Link Here
1
--- ext/libvisual/meson.build.orig	2022-09-12 14:49:46 UTC
2
+++ ext/libvisual/meson.build
3
@@ -13,7 +13,8 @@ if libvisual_dep.found()
4
     libvisual_sources,
5
     c_args : gst_plugins_base_args,
6
     include_directories: [configinc, libsinc],
7
-    dependencies : glib_deps + [libvisual_dep, audio_dep, video_dep, pbutils_dep, gst_dep, gst_base_dep],
8
+    dependencies : glib_deps + [libvisual_dep, dependency('gstreamer-audio-1.0'),
9
+      dependency('gstreamer-video-1.0'), dependency('gstreamer-pbutils-1.0'), gst_dep, gst_base_dep],
10
     install : true,
11
     install_dir : plugins_install_dir,
12
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_ogg_meson.build (+13 lines)
Added Link Here
1
--- ext/ogg/meson.build.orig	2022-09-07 20:35:50 UTC
2
+++ ext/ogg/meson.build
3
@@ -19,7 +19,9 @@ if ogg_dep.found()
4
     c_args : gst_plugins_base_args,
5
     link_args : noseh_link_args,
6
     include_directories: [configinc, libsinc],
7
-    dependencies : glib_deps + [ogg_dep, audio_dep, pbutils_dep, tag_dep, riff_dep, gst_dep, gst_base_dep],
8
+    dependencies : glib_deps + [ogg_dep, dependency('gstreamer-audio-1.0'),
9
+      dependency('gstreamer-pbutils-1.0'), dependency('gstreamer-tag-1.0'),
10
+      dependency('gstreamer-riff-1.0'), gst_dep, gst_base_dep],
11
     install : true,
12
     install_dir : plugins_install_dir,
13
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_opus_meson.build (+19 lines)
Added Link Here
1
--- ext/opus/meson.build.orig	2022-09-06 22:11:13 UTC
2
+++ ext/opus/meson.build
3
@@ -11,12 +11,15 @@ opus_dep = dependency('opus', version: '>= 0.9.4', req
4
                       fallback: ['opus', 'opus_dep'], default_options: ['docs=disabled'])
5
 
6
 if opus_dep.found()
7
+  pbutils_dep2 = dependency('gstreamer-pbutils-@0@'.format(api_version))
8
+  audio_dep2 = dependency('gstreamer-audio-@0@'.format(api_version))
9
+  tag_dep2 = dependency('gstreamer-tag-@0@'.format(api_version))
10
   gstopus = library('gstopus',
11
     opus_sources,
12
     c_args : gst_plugins_base_args,
13
     link_args : noseh_link_args,
14
     include_directories: [configinc, libsinc],
15
-    dependencies : glib_deps + [pbutils_dep, tag_dep, audio_dep, gst_dep, gst_base_dep, opus_dep, libm],
16
+    dependencies : glib_deps + [pbutils_dep2, tag_dep2, audio_dep2, gst_dep, gst_base_dep, opus_dep, libm],
17
     install : true,
18
     install_dir : plugins_install_dir,
19
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_pango_meson.build (+13 lines)
Added Link Here
1
--- ext/pango/meson.build.orig	2022-09-16 21:45:01 UTC
2
+++ ext/pango/meson.build
3
@@ -18,7 +18,9 @@ if pango_dep.found()
4
     c_args : gst_plugins_base_args,
5
     link_args : noseh_link_args,
6
     include_directories: [configinc, libsinc],
7
-    dependencies : glib_deps + [pango_dep, video_dep, gst_dep, gst_base_dep, libm],
8
+    dependencies : glib_deps + [pango_dep,
9
+      dependency('gstreamer-video-1.0', required : true),
10
+      gst_dep, gst_base_dep, libm],
11
     install : true,
12
     install_dir : plugins_install_dir,
13
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_theora_meson.build (+12 lines)
Added Link Here
1
--- ext/theora/meson.build.orig	2022-09-13 20:18:31 UTC
2
+++ ext/theora/meson.build
3
@@ -21,7 +21,8 @@ if theoradec_dep.found() or theoraenc_dep.found()
4
     c_args : gst_plugins_base_args,
5
     link_args : noseh_link_args,
6
     include_directories: [configinc, libsinc],
7
-    dependencies : theora_deps + glib_deps + [video_dep, tag_dep, gst_dep, gst_base_dep],
8
+    dependencies : theora_deps + glib_deps + [dependency('gstreamer-video-1.0'),
9
+      dependency('gstreamer-tag-1.0'), gst_base_dep],
10
     install : true,
11
     install_dir : plugins_install_dir,
12
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-ext_vorbis_meson.build (+12 lines)
Added Link Here
1
--- ext/vorbis/meson.build.orig	2022-09-07 21:09:11 UTC
2
+++ ext/vorbis/meson.build
3
@@ -31,7 +31,8 @@ if vorbis_dep.found()
4
     c_args : gst_plugins_base_args,
5
     link_args : noseh_link_args,
6
     include_directories: [configinc, libsinc],
7
-    dependencies : vorbis_deps + glib_deps + [audio_dep, tag_dep, gst_dep, gst_base_dep],
8
+    dependencies : vorbis_deps + glib_deps + [dependency('gstreamer-audio-1.0'),
9
+      dependency('gstreamer-tag-1.0'), gst_dep, gst_base_dep],
10
     install : true,
11
     install_dir : plugins_install_dir,
12
   )
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_allocators_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/allocators/meson.build.orig	2022-09-06 20:56:00 UTC
2
+++ gst-libs/gst/allocators/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('allocators').enabled()
5
 gst_allocators_headers = files([
6
   'allocators.h',
7
   'allocators-prelude.h',
8
@@ -58,3 +59,4 @@ allocators_dep = declare_dependency(link_with: gstallo
9
   sources : allocators_gen_sources)
10
 
11
 meson.override_dependency('gstreamer-allocators-1.0', allocators_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_app_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/app/meson.build.orig	2022-09-06 20:56:57 UTC
2
+++ gst-libs/gst/app/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('app').enabled()
5
 app_sources = files(['gstappsrc.c', 'gstappsink.c'])
6
 
7
 app_mkenum_headers = files([
8
@@ -68,3 +69,4 @@ app_dep = declare_dependency(link_with: gstapp,
9
   sources : app_gen_sources)
10
 
11
 meson.override_dependency(pkg_name, app_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_audio_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/audio/meson.build.orig	2022-09-06 20:57:46 UTC
2
+++ gst-libs/gst/audio/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('audio').enabled()
5
 audio_src = files([
6
   'audio.c',
7
   'audio-buffer.c',
8
@@ -189,3 +190,4 @@ audio_dep = declare_dependency(link_with : gstaudio,
9
   sources : audio_gen_sources)
10
 
11
 meson.override_dependency(pkg_name, audio_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_fft_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/fft/meson.build.orig	2022-09-06 20:58:23 UTC
2
+++ gst-libs/gst/fft/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('fft').enabled()
5
 fft_sources = [
6
   'gstfft.c',
7
   'gstffts16.c',
8
@@ -50,3 +51,4 @@ fft_dep = declare_dependency(link_with: gstfft,
9
   dependencies : [gst_dep])
10
 
11
 meson.override_dependency(pkg_name, fft_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_gl_meson.build (+69 lines)
Added Link Here
1
--- gst-libs/gst/gl/meson.build.orig	2022-09-08 22:01:19 UTC
2
+++ gst-libs/gst/gl/meson.build
3
@@ -1049,7 +1049,7 @@ if build_gstgl
4
     soversion : soversion,
5
     darwin_versions : osxversion,
6
     install : true,
7
-    dependencies : [gst_base_dep, video_dep, allocators_dep, gmodule_dep,
8
+    dependencies : [gst_base_dep, dependency('gstreamer-video-1.0'), dependency('gstreamer-allocators-1.0'), gmodule_dep,
9
                     gl_lib_deps, gl_platform_deps, gl_winsys_deps, gl_misc_deps],
10
     # don't confuse EGL/egl.h with gst-libs/gl/egl/egl.h on case-insensitive file systems
11
     implicit_include_directories : false)
12
@@ -1060,10 +1060,10 @@ if build_gstgl
13
     'gl_apis=' + ' '.join(enabled_gl_apis),
14
   ]
15
 
16
-  library_def = {'lib': pbutils}
17
+  library_def = {'lib': library('gstpbutils-@0@'.format(api_version))}
18
   pkg_name = 'gstreamer-gl-1.0'
19
   pkgconfig.generate(gstgl,
20
-    libraries : [gstvideo, gst_base_dep, gst_dep],
21
+    libraries : [library('gstvideo-@0@'.format(api_version)), gst_base_dep, gst_dep],
22
     variables : pkgconfig_variables + pkgconfig_gl_variables,
23
     uninstalled_variables : pkgconfig_gl_variables,
24
     subdirs : pkgconfig_subdirs,
25
@@ -1095,7 +1095,7 @@ if build_gstgl
26
         'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'],
27
         'install' : true,
28
         'extra_args' : gir_init_section + ['--c-include=gst/gl/gl.h'],
29
-        'dependencies' : [video_dep, gst_dep, gst_base_dep],
30
+        'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep],
31
     }
32
     library_def += {'gir': [gir]}
33
     if not static_build
34
@@ -1107,7 +1107,7 @@ if build_gstgl
35
   gstgl_dep = declare_dependency(link_with : gstgl,
36
     include_directories : [libsinc, compat_includes],
37
     sources: gen_sources,
38
-    dependencies : [video_dep, gst_base_dep])
39
+    dependencies : [dependency('gstreamer-video-1.0'), gst_base_dep])
40
   gstglproto_dep = declare_dependency(dependencies : [gstgl_dep] + gl_lib_deps)
41
   meson.override_dependency('gstreamer-gl-1.0', gstgl_dep)
42
   meson.override_dependency('gstreamer-gl-prototypes-1.0', gstglproto_dep)
43
@@ -1134,7 +1134,7 @@ if build_gstgl
44
         'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'],
45
         'install' : true,
46
         'extra_args' : gir_init_section + ['--c-include=gst/gl/x11/x11.h'],
47
-        'dependencies' : [video_dep, gst_dep, gst_base_dep]
48
+        'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep]
49
       }
50
       gir_dict = gir + {'includes': gir['includes'] + ['GstGL-1.0']}
51
       libraries += [[pkg_name, {'gir': gir_dict}]]
52
@@ -1170,7 +1170,7 @@ if build_gstgl
53
         'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'],
54
         'install' : true,
55
         'extra_args' : gir_init_section + ['--c-include=gst/gl/wayland/wayland.h'],
56
-        'dependencies' : [video_dep, gst_dep, gst_base_dep]
57
+        'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep]
58
       }
59
 
60
       gir_dict = gir + {'includes': gir['includes'] + ['GstGL-1.0']}
61
@@ -1206,7 +1206,7 @@ if build_gstgl
62
         'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'],
63
         'install' : true,
64
         'extra_args' : gir_init_section + ['--c-include=gst/gl/egl/egl.h'],
65
-        'dependencies' : [video_dep, gst_dep, gst_base_dep]
66
+        'dependencies' : [dependency('gstreamer-video-1.0'), gst_dep, gst_base_dep]
67
       }
68
       gir_dict = gir + {'includes': gir['includes'] + ['GstGL-1.0']}
69
       libraries += [[pkg_name, {'gir': gir_dict}]]
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_pbutils_meson.build (+15 lines)
Added Link Here
1
--- gst-libs/gst/pbutils/meson.build.orig	2022-09-06 20:58:54 UTC
2
+++ gst-libs/gst/pbutils/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('pbutils').enabled()
5
 pbutils_sources = files([
6
   'gstpluginsbaseversion.c',
7
   'pbutils.c',
8
@@ -98,4 +99,5 @@ pbutils_dep = declare_dependency(link_with : pbutils,
9
   dependencies : gstpbutils_deps,
10
   sources : pbutils_gen_sources)
11
 
12
-meson.override_dependency(pkg_name, pbutils_dep)
13
\ No newline at end of file
14
+meson.override_dependency(pkg_name, pbutils_dep)
15
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_riff_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/riff/meson.build.orig	2022-09-06 21:07:15 UTC
2
+++ gst-libs/gst/riff/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('riff').enabled()
5
 riff_sources = [
6
   'riff.c',
7
   'riff-media.c',
8
@@ -62,3 +63,4 @@ riff_dep = declare_dependency(link_with: gstriff,
9
   sources : riff_gen_sources  )
10
 
11
 meson.override_dependency(pkg_name, riff_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtp_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/rtp/meson.build.orig	2022-09-06 21:07:44 UTC
2
+++ gst-libs/gst/rtp/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('rtp').enabled()
5
 rtp_sources = files([
6
   'gstrtpbuffer.c',
7
   'gstrtcpbuffer.c',
8
@@ -85,3 +86,4 @@ rtp_dep = declare_dependency(link_with : gst_rtp,
9
   sources : rtp_gen_sources)
10
 
11
 meson.override_dependency(pkg_name, rtp_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_rtsp_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/rtsp/meson.build.orig	2022-09-06 21:08:11 UTC
2
+++ gst-libs/gst/rtsp/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('rtsp').enabled()
5
 rtsp_sources = files([
6
   'gstrtsptransport.c',
7
   'gstrtspurl.c',
8
@@ -90,3 +91,4 @@ rtsp_dep = declare_dependency(link_with : gst_rtsp,
9
   sources : rtsp_gen_sources)
10
 
11
 meson.override_dependency(pkg_name, rtsp_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_sdp_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/sdp/meson.build.orig	2022-09-06 21:08:38 UTC
2
+++ gst-libs/gst/sdp/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('sdp').enabled()
5
 gst_sdp_headers = files([
6
   'sdp.h',
7
   'sdp-prelude.h',
8
@@ -60,3 +61,4 @@ sdp_dep = declare_dependency(link_with: gstsdp,
9
   sources: sdp_gen_sources)
10
 
11
 meson.override_dependency(pkg_name, sdp_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_tag_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/tag/meson.build.orig	2022-09-06 21:09:11 UTC
2
+++ gst-libs/gst/tag/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('tag').enabled()
5
 tag_sources = files([
6
   'gstvorbistag.c',
7
   'gstid3tag.c',
8
@@ -142,3 +143,4 @@ executable('mklicensestables', 'mklicensestables.c',
9
   install : false)
10
 
11
 gst_tag_dir = meson.current_source_dir()
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-gst-libs_gst_video_meson.build (+12 lines)
Added Link Here
1
--- gst-libs/gst/video/meson.build.orig	2022-09-06 21:09:42 UTC
2
+++ gst-libs/gst/video/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('video').enabled()
5
 video_sources = files([
6
   'colorbalance.c',
7
   'colorbalancechannel.c',
8
@@ -181,3 +182,4 @@ video_dep = declare_dependency(link_with : gstvideo,
9
   sources : video_gen_sources)
10
 
11
 meson.override_dependency(pkg_name, video_dep)
12
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-meson.build (+39 lines)
Added Link Here
1
--- meson.build.orig	2022-09-03 05:39:18 UTC
2
+++ meson.build
3
@@ -17,6 +17,8 @@ endif
4
 gst_version_is_stable = gst_version_minor.is_even()
5
 gst_version_is_dev = gst_version_minor % 2 == 1 and gst_version_micro < 90
6
 
7
+build_gstgl = false
8
+
9
 host_system = host_machine.system()
10
 
11
 have_cxx = add_languages('cpp', native: false, required: false)
12
@@ -282,8 +284,10 @@ core_conf.set_quoted('GST_PACKAGE_ORIGIN', get_option(
13
 
14
 # FIXME: These should be configure options
15
 core_conf.set_quoted('DEFAULT_VIDEOSINK', 'autovideosink')
16
-core_conf.set_quoted('DEFAULT_AUDIOSINK', 'autoaudiosink')
17
 
18
+core_conf.set_quoted('DEFAULT_AUDIOSINK', get_option('defaultaudiosink'))
19
+core_conf.set_quoted('DEFAULT_AUDIOSRC', get_option('defaultaudiosrc'))
20
+
21
 # Set whether the audioresampling method should be detected at runtime
22
 core_conf.set('AUDIORESAMPLE_FORMAT_' + get_option('audioresample_format').to_upper(), true)
23
 
24
@@ -484,6 +488,7 @@ pkgconfig_plugins_base_libs_variables = [
25
   'libraries=' + ' '.join(base_libraries),
26
 ]
27
 
28
+if get_option('pkgconfig').enabled()
29
 pkgconfig.generate(
30
   libraries : [gst_dep],
31
   variables : pkgconfig_variables + pkgconfig_plugins_base_libs_variables,
32
@@ -497,6 +502,7 @@ pkgconfig.generate(
33
 run_command(meson_pkg_config_file_fixup_script,
34
   'gstreamer-plugins-base-1.0', 'libraries',
35
   check: true)
36
+endif
37
 
38
 if have_orcc
39
   update_orc_dist_files = find_program('scripts/update-orc-dist-files.py')
(-)b/multimedia/gstreamer1-plugins/files/patch-meson__options.txt (+30 lines)
Added Link Here
1
--- meson_options.txt.orig	2022-09-06 20:35:43 UTC
2
+++ meson_options.txt
3
@@ -1,9 +1,27 @@
4
+option('tag', type : 'feature', value : 'auto', description : 'tag integration library and tag plugin')
5
+option('pkgconfig', type : 'feature', value : 'auto', description : 'pkgconfig integration library and pkgconfig plugin')
6
+option('fft', type : 'feature', value : 'auto', description : 'fft integration library and fft plugin')
7
+option('video', type : 'feature', value : 'auto', description : 'video integration library and video plugin')
8
+option('audio', type : 'feature', value : 'auto', description : 'audio integration library and audio plugin')
9
+option('rtp', type : 'feature', value : 'auto', description : 'rtp integration library and rtp plugin')
10
+option('pbutils', type : 'feature', value : 'auto', description : 'pbutils integration library and pbutils plugin')
11
+option('sdp', type : 'feature', value : 'auto', description : 'sdp integration library and sdp plugin')
12
+option('rtsp', type : 'feature', value : 'auto', description : 'rtsp integration library and rtsp plugin')
13
+option('riff', type : 'feature', value : 'auto', description : 'riff integration library and riff plugin')
14
+option('ximage', type : 'feature', value : 'auto', description : 'ximage integration library and ximage plugin')
15
+option('app', type : 'feature', value : 'auto', description : 'app integration library and app plugin')
16
+option('allocators', type : 'feature', value : 'auto', description : 'allocators integration library and allocators plugin')
17
+
18
 option('audioresample_format', type : 'combo',
19
        choices : ['int', 'float', 'auto'], value : 'auto')
20
 option('install_plugins_helper', type: 'string', value: '',
21
        description: 'Path of distro helper script to call to install missing plugins')
22
 option('iso-codes', type : 'feature', value : 'auto',
23
        description: 'Use iso-codes in libgsttag (for language names)')
24
+option('defaultaudiosink', type : 'string', value : 'autoaudiosink',
25
+       description: 'set default audio sink')
26
+option('defaultaudiosrc', type : 'string', value : 'autoaudiosrc',
27
+       description: 'set default audio src')
28
 
29
 # OpenGL integration library options
30
 option('gl_api', type : 'array', choices : ['opengl', 'gles2', 'auto'], value : ['auto'],
(-)b/multimedia/gstreamer1-plugins/files/patch-sys_ximage_meson.build (+19 lines)
Added Link Here
1
--- sys/ximage/meson.build.orig	2022-09-09 09:10:02 UTC
2
+++ sys/ximage/meson.build
3
@@ -1,3 +1,4 @@
4
+if get_option('ximage').enabled()
5
 no_warn_args = []
6
 # XKeycodeToKeysym is deprecated, but we use it when Xkb is unavailable
7
 if cc.has_argument ('-Wno-deprecated-declarations')
8
@@ -8,9 +9,10 @@ gstximage = library('gstximagesink',
9
   'ximagesink.c', 'ximage.c', 'ximagepool.c',
10
   c_args : gst_plugins_base_args + no_warn_args,
11
   include_directories: [configinc, libsinc],
12
-  dependencies : glib_deps + [video_dep, gst_base_dep, gst_dep, x11_dep, xshm_dep],
13
+  dependencies : glib_deps + [dependency('gstreamer-video-1.0'), gst_base_dep, gst_dep, x11_dep, xshm_dep],
14
   install : true,
15
   install_dir : plugins_install_dir,
16
 )
17
 pkgconfig.generate(gstximage, install_dir : plugins_pkgconfig_install_dir)
18
 plugins += [gstximage]
19
+endif
(-)b/multimedia/gstreamer1-plugins/files/patch-sys_xvimage_meson.build (+13 lines)
Added Link Here
1
--- sys/xvimage/meson.build.orig	2022-09-17 07:37:22 UTC
2
+++ sys/xvimage/meson.build
3
@@ -19,7 +19,9 @@ if xvideo_dep.found()
4
     xvimage_sources,
5
     c_args : gst_plugins_base_args + no_warn_args,
6
     include_directories: [configinc, libsinc],
7
-    dependencies : glib_deps + [video_dep, gst_base_dep, gst_dep, x11_dep, xshm_dep, xvideo_dep, libm],
8
+    dependencies : glib_deps + [
9
+      dependency('gstreamer-video-1.0', required : true),
10
+      gst_base_dep, gst_dep, x11_dep, xshm_dep, xvideo_dep, libm],
11
     install : true,
12
     install_dir : plugins_install_dir,
13
   )
(-)b/multimedia/gstreamer1-plugins/pkg-plist (-18 / +20 lines)
Lines 99-104 include/gstreamer-%%VERSION%%/gst/video/colorbalance.h Link Here
99
include/gstreamer-%%VERSION%%/gst/video/colorbalancechannel.h
99
include/gstreamer-%%VERSION%%/gst/video/colorbalancechannel.h
100
include/gstreamer-%%VERSION%%/gst/video/gstvideoaffinetransformationmeta.h
100
include/gstreamer-%%VERSION%%/gst/video/gstvideoaffinetransformationmeta.h
101
include/gstreamer-%%VERSION%%/gst/video/gstvideoaggregator.h
101
include/gstreamer-%%VERSION%%/gst/video/gstvideoaggregator.h
102
include/gstreamer-%%VERSION%%/gst/video/gstvideocodecalphameta.h
102
include/gstreamer-%%VERSION%%/gst/video/gstvideodecoder.h
103
include/gstreamer-%%VERSION%%/gst/video/gstvideodecoder.h
103
include/gstreamer-%%VERSION%%/gst/video/gstvideoencoder.h
104
include/gstreamer-%%VERSION%%/gst/video/gstvideoencoder.h
104
include/gstreamer-%%VERSION%%/gst/video/gstvideofilter.h
105
include/gstreamer-%%VERSION%%/gst/video/gstvideofilter.h
Lines 118-123 include/gstreamer-%%VERSION%%/gst/video/video-enumtypes.h Link Here
118
include/gstreamer-%%VERSION%%/gst/video/video-event.h
119
include/gstreamer-%%VERSION%%/gst/video/video-event.h
119
include/gstreamer-%%VERSION%%/gst/video/video-format.h
120
include/gstreamer-%%VERSION%%/gst/video/video-format.h
120
include/gstreamer-%%VERSION%%/gst/video/video-frame.h
121
include/gstreamer-%%VERSION%%/gst/video/video-frame.h
122
include/gstreamer-%%VERSION%%/gst/video/video-hdr.h
121
include/gstreamer-%%VERSION%%/gst/video/video-info.h
123
include/gstreamer-%%VERSION%%/gst/video/video-info.h
122
include/gstreamer-%%VERSION%%/gst/video/video-multiview.h
124
include/gstreamer-%%VERSION%%/gst/video/video-multiview.h
123
include/gstreamer-%%VERSION%%/gst/video/video-overlay-composition.h
125
include/gstreamer-%%VERSION%%/gst/video/video-overlay-composition.h
Lines 129-143 include/gstreamer-%%VERSION%%/gst/video/video.h Link Here
129
include/gstreamer-%%VERSION%%/gst/video/videodirection.h
131
include/gstreamer-%%VERSION%%/gst/video/videodirection.h
130
include/gstreamer-%%VERSION%%/gst/video/videoorientation.h
132
include/gstreamer-%%VERSION%%/gst/video/videoorientation.h
131
include/gstreamer-%%VERSION%%/gst/video/videooverlay.h
133
include/gstreamer-%%VERSION%%/gst/video/videooverlay.h
132
lib/girepository-1.0/GstAllocators-%%VERSION%%.typelib
134
lib/girepository-%%VERSION%%/GstAllocators-%%VERSION%%.typelib
133
lib/girepository-1.0/GstApp-%%VERSION%%.typelib
135
lib/girepository-%%VERSION%%/GstApp-%%VERSION%%.typelib
134
lib/girepository-1.0/GstAudio-%%VERSION%%.typelib
136
lib/girepository-%%VERSION%%/GstAudio-%%VERSION%%.typelib
135
lib/girepository-1.0/GstPbutils-%%VERSION%%.typelib
137
lib/girepository-%%VERSION%%/GstPbutils-%%VERSION%%.typelib
136
lib/girepository-1.0/GstRtp-%%VERSION%%.typelib
138
lib/girepository-%%VERSION%%/GstRtp-%%VERSION%%.typelib
137
lib/girepository-1.0/GstRtsp-%%VERSION%%.typelib
139
lib/girepository-%%VERSION%%/GstRtsp-%%VERSION%%.typelib
138
lib/girepository-1.0/GstSdp-%%VERSION%%.typelib
140
lib/girepository-%%VERSION%%/GstSdp-%%VERSION%%.typelib
139
lib/girepository-1.0/GstTag-%%VERSION%%.typelib
141
lib/girepository-%%VERSION%%/GstTag-%%VERSION%%.typelib
140
lib/girepository-1.0/GstVideo-%%VERSION%%.typelib
142
lib/girepository-%%VERSION%%/GstVideo-%%VERSION%%.typelib
141
lib/gstreamer-%%VERSION%%/libgstadder.so
143
lib/gstreamer-%%VERSION%%/libgstadder.so
142
lib/gstreamer-%%VERSION%%/libgstapp.so
144
lib/gstreamer-%%VERSION%%/libgstapp.so
143
lib/gstreamer-%%VERSION%%/libgstaudioconvert.so
145
lib/gstreamer-%%VERSION%%/libgstaudioconvert.so
Lines 208-222 libdata/pkgconfig/gstreamer-video-%%VERSION%%.pc Link Here
208
man/man1/gst-device-monitor-%%VERSION%%.1.gz
210
man/man1/gst-device-monitor-%%VERSION%%.1.gz
209
man/man1/gst-discoverer-%%VERSION%%.1.gz
211
man/man1/gst-discoverer-%%VERSION%%.1.gz
210
man/man1/gst-play-%%VERSION%%.1.gz
212
man/man1/gst-play-%%VERSION%%.1.gz
211
share/gir-1.0/GstAllocators-%%VERSION%%.gir
213
share/gir-%%VERSION%%/GstAllocators-%%VERSION%%.gir
212
share/gir-1.0/GstApp-%%VERSION%%.gir
214
share/gir-%%VERSION%%/GstApp-%%VERSION%%.gir
213
share/gir-1.0/GstAudio-%%VERSION%%.gir
215
share/gir-%%VERSION%%/GstAudio-%%VERSION%%.gir
214
share/gir-1.0/GstPbutils-%%VERSION%%.gir
216
share/gir-%%VERSION%%/GstPbutils-%%VERSION%%.gir
215
share/gir-1.0/GstRtp-%%VERSION%%.gir
217
share/gir-%%VERSION%%/GstRtp-%%VERSION%%.gir
216
share/gir-1.0/GstRtsp-%%VERSION%%.gir
218
share/gir-%%VERSION%%/GstRtsp-%%VERSION%%.gir
217
share/gir-1.0/GstSdp-%%VERSION%%.gir
219
share/gir-%%VERSION%%/GstSdp-%%VERSION%%.gir
218
share/gir-1.0/GstTag-%%VERSION%%.gir
220
share/gir-%%VERSION%%/GstTag-%%VERSION%%.gir
219
share/gir-1.0/GstVideo-%%VERSION%%.gir
221
share/gir-%%VERSION%%/GstVideo-%%VERSION%%.gir
220
share/gst-plugins-base/%%VERSION%%/license-translations.dict
222
share/gst-plugins-base/%%VERSION%%/license-translations.dict
221
share/locale/af/LC_MESSAGES/gst-plugins-base-%%VERSION%%.mo
223
share/locale/af/LC_MESSAGES/gst-plugins-base-%%VERSION%%.mo
222
share/locale/az/LC_MESSAGES/gst-plugins-base-%%VERSION%%.mo
224
share/locale/az/LC_MESSAGES/gst-plugins-base-%%VERSION%%.mo
(-)b/multimedia/gstreamer1-rtsp-server/Makefile (-6 / +4 lines)
Lines 1-7 Link Here
1
PORTNAME=	gstreamer1-rtsp-server
1
PORTNAME=	gstreamer1-rtsp-server
2
PORTVERSION=	1.16.2
2
PORTVERSION=	1.20.3
3
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
4
MASTER_SITES=	http://gstreamer.freedesktop.org/src/gst-rtsp-server/
4
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gst-rtsp-server/
5
DISTNAME=	gst-rtsp-server-${PORTVERSION}
5
DISTNAME=	gst-rtsp-server-${PORTVERSION}
6
6
7
MAINTAINER=	multimedia@FreeBSD.org
7
MAINTAINER=	multimedia@FreeBSD.org
Lines 11-23 WWW= https://gstreamer.freedesktop.org/ Link Here
11
LICENSE=	LGPL20+
11
LICENSE=	LGPL20+
12
LICENSE_FILE=	${WRKSRC}/COPYING
12
LICENSE_FILE=	${WRKSRC}/COPYING
13
13
14
USES=		gmake gnome gstreamer libtool pathfix pkgconfig tar:xz
14
USES=		bison gnome gstreamer libtool meson ninja pathfix pkgconfig python:3.8+,build tar:xz
15
USE_LDCONFIG=	yes
15
USE_LDCONFIG=	yes
16
GNU_CONFIGURE=	yes
17
USE_GNOME=	glib20 introspection:build
16
USE_GNOME=	glib20 introspection:build
18
USE_GSTREAMER=	good bad
17
USE_GSTREAMER=	good bad
19
INSTALL_TARGET=	install-strip
20
18
21
PLIST_SUB=	VERSION=1.0 SOVERSION=0.1602.0
19
PLIST_SUB=	VERSION=1.0 SOVERSION=0.2003.0
22
20
23
.include <bsd.port.mk>
21
.include <bsd.port.mk>
(-)b/multimedia/gstreamer1-rtsp-server/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1586566691
1
TIMESTAMP = 1661966465
2
SHA256 (gst-rtsp-server-1.16.2.tar.xz) = de07a2837b3b04820ce68264a4909f70c221b85dbff0cede7926e9cdbb1dc26e
2
SHA256 (gst-rtsp-server-1.20.3.tar.xz) = ee402718be9b127f0e5e66ca4c1b4f42e4926ec93ba307b7ccca5dc6cc9794ca
3
SIZE (gst-rtsp-server-1.16.2.tar.xz) = 693368
3
SIZE (gst-rtsp-server-1.20.3.tar.xz) = 362348
(-)b/multimedia/gstreamer1-transcoder/Makefile (-2 / +1 lines)
Lines 9-21 WWW= https://github.com/pitivi/gst-transcoder Link Here
9
LICENSE=	LGPL21
9
LICENSE=	LGPL21
10
LICENSE_FILE=	${WRKSRC}/LICENSE
10
LICENSE_FILE=	${WRKSRC}/LICENSE
11
11
12
USES=		compiler gnome gstreamer meson pkgconfig python:3.3+ #shebangfix
12
USES=		compiler gnome gstreamer meson pkgconfig python:3.3+
13
USE_GNOME=	introspection
13
USE_GNOME=	introspection
14
USE_GSTREAMER=	core
14
USE_GSTREAMER=	core
15
USE_LDCONFIG=	yes
15
USE_LDCONFIG=	yes
16
16
17
BINARY_ALIAS=	python3=${PYTHON_VERSION}
17
BINARY_ALIAS=	python3=${PYTHON_VERSION}
18
#SHEBANG_FILES=	configure
19
18
20
USE_GITHUB=	yes
19
USE_GITHUB=	yes
21
GH_ACCOUNT=	pitivi
20
GH_ACCOUNT=	pitivi
(-)b/multimedia/gstreamer1-vaapi/Makefile (-9 / +6 lines)
Lines 1-6 Link Here
1
PORTNAME=	gstreamer1-vaapi
1
PORTNAME=	gstreamer1-vaapi
2
PORTVERSION=	1.16.2
2
PORTVERSION=	1.20.3
3
PORTREVISION=	2
4
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
5
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gstreamer-vaapi/
4
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gstreamer-vaapi/
6
DISTNAME=	gstreamer-vaapi-${PORTVERSION}
5
DISTNAME=	gstreamer-vaapi-${PORTVERSION}
Lines 13-25 LICENSE= LGPL21 Link Here
13
12
14
LIB_DEPENDS=	libva.so:multimedia/libva
13
LIB_DEPENDS=	libva.so:multimedia/libva
15
14
16
GNU_CONFIGURE=	yes
15
USES=		bison compiler:c11 gettext-runtime gl gnome gstreamer libtool \
17
INSTALL_TARGET=	install-strip
16
		meson ninja pkgconfig python:3.8+,build tar:xz xorg
18
USES=		compiler:c11 gettext-runtime gl gmake gnome gstreamer libtool \
19
		pkgconfig tar:xz xorg
20
USE_LDCONFIG=	yes
17
USE_LDCONFIG=	yes
21
USE_GNOME=	glib20
18
USE_GNOME=	glib20
22
USE_GSTREAMER=	bad gl
19
USE_GSTREAMER=	bad
23
USE_GL=		gl
20
USE_GL=		gl
24
USE_XORG=	x11 xrandr xrender xorgproto
21
USE_XORG=	x11 xrandr xrender xorgproto
25
22
Lines 27-37 OPTIONS_DEFINE= DRM WAYLAND Link Here
27
24
28
DRM_DESC=	Raw KMS/DRM backend
25
DRM_DESC=	Raw KMS/DRM backend
29
26
30
DRM_CONFIGURE_ENABLE=	drm
27
DRM_MESON_OFF=	-Dwith_drm=no
31
DRM_LIB_DEPENDS=	libudev.so:devel/libudev-devd \
28
DRM_LIB_DEPENDS=	libudev.so:devel/libudev-devd \
32
	libdrm.so:graphics/libdrm
29
	libdrm.so:graphics/libdrm
33
30
34
WAYLAND_CONFIGURE_ENABLE=	wayland
31
WAYLAND_MESON_OFF=	-Dwith_wayland=no
35
WAYLAND_LIB_DEPENDS=	libva-wayland.so:multimedia/libva \
32
WAYLAND_LIB_DEPENDS=	libva-wayland.so:multimedia/libva \
36
	libwayland-client.so:graphics/wayland
33
	libwayland-client.so:graphics/wayland
37
34
(-)b/multimedia/gstreamer1-vaapi/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1575826374
1
TIMESTAMP = 1662144496
2
SHA256 (gstreamer-vaapi-1.16.2.tar.xz) = 191de7b0ab64a85dd0875c990721e7be95518f60e2a9106beca162004ed7c601
2
SHA256 (gstreamer-vaapi-1.20.3.tar.xz) = 6ee99eb316abdde9ad37002915bd8c3867918f6fdc74b7cf2ac4c1ae0d690b45
3
SIZE (gstreamer-vaapi-1.16.2.tar.xz) = 1095012
3
SIZE (gstreamer-vaapi-1.20.3.tar.xz) = 794840
(-)b/multimedia/gstreamer1-vaapi/pkg-plist (-35 lines)
Lines 1-36 Link Here
1
lib/gstreamer-1.0/libgstvaapi.so
1
lib/gstreamer-1.0/libgstvaapi.so
2
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/api-index-full.html
3
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/ch01.html
4
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/ch02.html
5
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/ch03.html
6
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-1.0.devhelp2
7
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-plugin-vaapi.html
8
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapidecodebin.html
9
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih263dec.html
10
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih264dec.html
11
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih264enc.html
12
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih265dec.html
13
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapih265enc.html
14
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapijpegdec.html
15
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapijpegenc.html
16
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapimpeg2dec.html
17
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapimpeg2enc.html
18
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapimpeg4dec.html
19
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapipostproc.html
20
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapisink.html
21
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivc1dec.html
22
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp8dec.html
23
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp8enc.html
24
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp9dec.html
25
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-plugins-vaapivp9enc.html
26
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/gstreamer-vaapi-running.html
27
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/home.png
28
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/index.html
29
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/left-insensitive.png
30
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/left.png
31
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/object-tree.html
32
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/right-insensitive.png
33
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/right.png
34
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/style.css
35
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/up-insensitive.png
36
share/gtk-doc/html/gstreamer-vaapi-plugins-1.0/up.png
(-)b/multimedia/gstreamer1-validate/Makefile (-4 / +5 lines)
Lines 1-7 Link Here
1
PORTNAME=	gstreamer1-validate
1
PORTNAME=	gstreamer1-validate
2
PORTVERSION=	1.16.1
2
PORTVERSION=	1.16.3
3
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
4
MASTER_SITES=	http://gstreamer.freedesktop.org/src/gst-validate/
4
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gst-validate/
5
DISTNAME=	gst-validate-${PORTVERSION}
5
DISTNAME=	gst-validate-${PORTVERSION}
6
6
7
MAINTAINER=	multimedia@FreeBSD.org
7
MAINTAINER=	multimedia@FreeBSD.org
Lines 9-15 COMMENT= Gstreamer element validation suite Link Here
9
WWW=		https://gstreamer.freedesktop.org/
9
WWW=		https://gstreamer.freedesktop.org/
10
10
11
LIB_DEPENDS=	libjson-glib-1.0.so:devel/json-glib \
11
LIB_DEPENDS=	libjson-glib-1.0.so:devel/json-glib \
12
		libgstrtspserver-1.0.so:multimedia/gstreamer1-rtsp-server
12
		libgstrtspserver-1.0.so:multimedia/gstreamer1-rtsp-server \
13
		libharfbuzz.so:print/harfbuzz
13
14
14
LICENSE=	LGPL21+
15
LICENSE=	LGPL21+
15
LICENSE_FILE=	${WRKSRC}/COPYING
16
LICENSE_FILE=	${WRKSRC}/COPYING
Lines 23-28 USE_GNOME= cairo gdkpixbuf2 gtk30 introspection:build Link Here
23
INSTALL_TARGET=	install-strip
24
INSTALL_TARGET=	install-strip
24
USE_PYTHON=	noflavors
25
USE_PYTHON=	noflavors
25
26
26
PLIST_SUB=	VERSION=1.0 SOVERSION=0.1601.0
27
PLIST_SUB=	VERSION=1.0 SOVERSION=0.1603.0
27
28
28
.include <bsd.port.mk>
29
.include <bsd.port.mk>
(-)b/multimedia/gstreamer1-validate/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1575056805
1
TIMESTAMP = 1662141068
2
SHA256 (gst-validate-1.16.1.tar.xz) = 7f079b9b2a127604b98e297037dc8847ef50f4ce2b508aa2df0cac5b77562899
2
SHA256 (gst-validate-1.16.3.tar.xz) = c2064e887324af6aa476ca669234936711f253b29042f617f1d9f2597c4bf92b
3
SIZE (gst-validate-1.16.1.tar.xz) = 735364
3
SIZE (gst-validate-1.16.3.tar.xz) = 742180
(-)b/multimedia/gstreamer1/Makefile (-19 / +17 lines)
Lines 1-8 Link Here
1
PORTNAME=	gstreamer
1
PORTNAME=	gstreamer
2
PORTVERSION=	1.16.2
2
PORTVERSION=	1.20.3
3
CATEGORIES=	multimedia
3
CATEGORIES=	multimedia
4
MASTER_SITES=	GNOME \
4
MASTER_SITES=	https://gstreamer.freedesktop.org/src/gstreamer/
5
		http://gstreamer.freedesktop.org/src/gstreamer/
6
PKGNAMESUFFIX=	1
5
PKGNAMESUFFIX=	1
7
6
8
MAINTAINER=	multimedia@FreeBSD.org
7
MAINTAINER=	multimedia@FreeBSD.org
Lines 12-33 WWW= https://gstreamer.freedesktop.org/ Link Here
12
LICENSE=	LGPL20+
11
LICENSE=	LGPL20+
13
LICENSE_FILE=	${WRKSRC}/COPYING
12
LICENSE_FILE=	${WRKSRC}/COPYING
14
13
15
USES=		bison cpe gmake gnome libtool pathfix perl5 pkgconfig python tar:xz
14
USES=		bison libtool gnome meson ninja pkgconfig python:3.8+,build shebangfix tar:xz
16
USE_PERL5=	build
15
USE_GNOME=     glib20 introspection:build
17
USE_GNOME=	glib20 introspection:build
18
16
19
CPE_VENDOR=	gstreamer_project
17
CONFIGURE_ARGS=	-D tests=disabled \
20
18
	-D examples=disabled \
21
GNU_CONFIGURE=	yes
19
	-D dbghelp=disabled \
22
CONFIGURE_ARGS=	--disable-tests \
20
	-D doc=disabled
23
		--disable-examples \
24
		--disable-failing-tests \
25
		--disable-fatal-warnings \
26
		--disable-gtk-doc
27
CONFIGURE_ENV=	ac_cv_func_register_printf_function="no"
28
INSTALL_TARGET=	install-strip
29
PLIST_SUB=	VERSION=${GST10_VERSION} \
21
PLIST_SUB=	VERSION=${GST10_VERSION} \
30
		SOVERSION=0.1602.0
22
		SOVERSION=0.2003.0
31
23
32
USE_LDCONFIG=	yes
24
USE_LDCONFIG=	yes
33
GST10_VERSION=	1.0
25
GST10_VERSION=	1.0
Lines 45-54 OPTIONS_DEFINE_i386= LIBUNWIND Link Here
45
OPTIONS_DEFFAULT_i386=		LIBUNWIND
37
OPTIONS_DEFFAULT_i386=		LIBUNWIND
46
38
47
NLS_USES=	gettext
39
NLS_USES=	gettext
48
NLS_CONFIGURE_ENABLE=	nls
40
NLS_MESON_ENABLED=      nls
49
41
50
LIBUNWIND_DESC=		Libunwind is optionally used by the leaks tracer
42
LIBUNWIND_DESC=		Libunwind is optionally used by the leaks tracer
51
LIBUNWIND_LIB_DEPENDS=	libunwind.so:devel/libunwind
43
LIBUNWIND_LIB_DEPENDS=	libunwind.so:devel/libunwind
52
LIBUNWIND_CONFIGURE_WITH=	unwind
44
LIBUNWIND_MESON_ENABLED=        libunwind
45
46
SHEBANG_FILES=  gst/parse/get_flex_version.py \
47
	scripts/extract-release-date-from-doap-file.py \
48
	docs/gst-plugins-doc-cache-generator.py
49
python_OLD_CMD= "/usr/bin/env python3"
50
python_CMD=     ${SETENV} ${PYTHON_VERSION}
53
51
54
.include <bsd.port.mk>
52
.include <bsd.port.mk>
(-)b/multimedia/gstreamer1/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1575817893
1
TIMESTAMP = 1661955042
2
SHA256 (gstreamer-1.16.2.tar.xz) = e3f044246783fd685439647373fa13ba14f7ab0b346eadd06437092f8419e94e
2
SHA256 (gstreamer-1.20.3.tar.xz) = 607daf64bbbd5fb18af9d17e21c0d22c4d702fffe83b23cb22d1b1af2ca23a2a
3
SIZE (gstreamer-1.16.2.tar.xz) = 3328600
3
SIZE (gstreamer-1.20.3.tar.xz) = 2681088
(-)a/multimedia/gstreamer1/files/patch-Makefile.in (-11 lines)
Removed Link Here
1
--- Makefile.in.orig	2018-09-16 12:03:27 UTC
2
+++ Makefile.in
3
@@ -569,7 +569,7 @@ top_srcdir = @top_srcdir@
4
 DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
5
 aclocaldir = $(datadir)/aclocal
6
 aclocal_DATA = gst-element-check-1.0.m4
7
-SUBDIRS = pkgconfig gst libs plugins tests docs po m4 common data \
8
+SUBDIRS = pkgconfig gst libs plugins tests po m4 common data \
9
 	$(am__append_1)
10
 
11
 # These are all the possible subdirs
(-)a/multimedia/gstreamer1/files/patch-libs_gst_controller_Makefile.in (-11 lines)
Removed Link Here
1
--- libs/gst/controller/Makefile.in.orig	2019-12-03 10:52:27 UTC
2
+++ libs/gst/controller/Makefile.in
3
@@ -591,7 +591,7 @@ libgstcontroller_@GST_API_VERSION@_la_CFLAGS = $(GST_O
4
 libgstcontroller_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(LIBM)
5
 libgstcontroller_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
6
 CLEANFILES = *.gcno *.gcda *.gcov $(BUILT_SOURCES) $(am__append_1)
7
-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
8
+enum_headers = $(foreach h,$(glib_enum_headers),\n#include \"$(h)\")
9
 @HAVE_INTROSPECTION_TRUE@BUILT_GIRSOURCES = GstController-@GST_API_VERSION@.gir
10
 @HAVE_INTROSPECTION_TRUE@gir_headers = $(patsubst %,$(srcdir)/%, \
11
 @HAVE_INTROSPECTION_TRUE@	$(libgstcontroller_@GST_API_VERSION@_include_HEADERS)) \
(-)b/multimedia/gstreamer1/pkg-plist (-56 / +56 lines)
Lines 120-133 include/gstreamer-%%VERSION%%/gst/net/gstnetclientclock.h Link Here
120
include/gstreamer-%%VERSION%%/gst/net/gstnetcontrolmessagemeta.h
120
include/gstreamer-%%VERSION%%/gst/net/gstnetcontrolmessagemeta.h
121
include/gstreamer-%%VERSION%%/gst/net/gstnettimepacket.h
121
include/gstreamer-%%VERSION%%/gst/net/gstnettimepacket.h
122
include/gstreamer-%%VERSION%%/gst/net/gstnettimeprovider.h
122
include/gstreamer-%%VERSION%%/gst/net/gstnettimeprovider.h
123
include/gstreamer-%%VERSION%%/gst/net/gstnetutils.h
123
include/gstreamer-%%VERSION%%/gst/net/gstptpclock.h
124
include/gstreamer-%%VERSION%%/gst/net/gstptpclock.h
124
include/gstreamer-%%VERSION%%/gst/net/net-prelude.h
125
include/gstreamer-%%VERSION%%/gst/net/net-prelude.h
125
include/gstreamer-%%VERSION%%/gst/net/net.h
126
include/gstreamer-%%VERSION%%/gst/net/net.h
126
lib/girepository-1.0/Gst-%%VERSION%%.typelib
127
lib/girepository-%%VERSION%%/Gst-%%VERSION%%.typelib
127
lib/girepository-1.0/GstBase-%%VERSION%%.typelib
128
lib/girepository-%%VERSION%%/GstBase-%%VERSION%%.typelib
128
lib/girepository-1.0/GstCheck-%%VERSION%%.typelib
129
lib/girepository-%%VERSION%%/GstCheck-%%VERSION%%.typelib
129
lib/girepository-1.0/GstController-%%VERSION%%.typelib
130
lib/girepository-%%VERSION%%/GstController-%%VERSION%%.typelib
130
lib/girepository-1.0/GstNet-%%VERSION%%.typelib
131
lib/girepository-%%VERSION%%/GstNet-%%VERSION%%.typelib
131
lib/gstreamer-%%VERSION%%/libgstcoreelements.so
132
lib/gstreamer-%%VERSION%%/libgstcoreelements.so
132
lib/gstreamer-%%VERSION%%/libgstcoretracers.so
133
lib/gstreamer-%%VERSION%%/libgstcoretracers.so
133
lib/libgstbase-%%VERSION%%.so
134
lib/libgstbase-%%VERSION%%.so
Lines 150-212 libdata/pkgconfig/gstreamer-base-%%VERSION%%.pc Link Here
150
libdata/pkgconfig/gstreamer-check-%%VERSION%%.pc
151
libdata/pkgconfig/gstreamer-check-%%VERSION%%.pc
151
libdata/pkgconfig/gstreamer-controller-%%VERSION%%.pc
152
libdata/pkgconfig/gstreamer-controller-%%VERSION%%.pc
152
libdata/pkgconfig/gstreamer-net-%%VERSION%%.pc
153
libdata/pkgconfig/gstreamer-net-%%VERSION%%.pc
153
libexec/gstreamer-%%VERSION%%/gst-completion-helper
154
libexec/gstreamer-%%VERSION%%/gst-hotdoc-plugins-scanner
154
libexec/gstreamer-%%VERSION%%/gst-plugin-scanner
155
libexec/gstreamer-%%VERSION%%/gst-plugin-scanner
156
libexec/gstreamer-%%VERSION%%/gst-plugins-doc-cache-generator
155
@(root,wheel,4755) libexec/gstreamer-%%VERSION%%/gst-ptp-helper
157
@(root,wheel,4755) libexec/gstreamer-%%VERSION%%/gst-ptp-helper
156
man/man1/gst-inspect-%%VERSION%%.1.gz
158
man/man1/gst-inspect-%%VERSION%%.1.gz
157
man/man1/gst-launch-%%VERSION%%.1.gz
159
man/man1/gst-launch-%%VERSION%%.1.gz
158
man/man1/gst-stats-%%VERSION%%.1.gz
160
man/man1/gst-stats-%%VERSION%%.1.gz
159
man/man1/gst-typefind-%%VERSION%%.1.gz
161
man/man1/gst-typefind-%%VERSION%%.1.gz
160
share/aclocal/gst-element-check-%%VERSION%%.m4
162
share/aclocal/gst-element-check-%%VERSION%%.m4
161
share/bash-completion/completions/gst-inspect-%%VERSION%%
163
share/gdb/auto-load/usr/local/lib/libgstreamer-%%VERSION%%.so.%%SOVERSION%%-gdb.py
162
share/bash-completion/completions/gst-launch-%%VERSION%%
163
share/bash-completion/helpers/gst
164
share/gdb/auto-load%%RESETPREFIX%%/lib/libgstreamer-%%VERSION%%.so.%%SOVERSION%%-gdb.py
165
share/gir-1.0/Gst-%%VERSION%%.gir
166
share/gir-1.0/GstBase-%%VERSION%%.gir
167
share/gir-1.0/GstCheck-%%VERSION%%.gir
168
share/gir-1.0/GstController-%%VERSION%%.gir
169
share/gir-1.0/GstNet-%%VERSION%%.gir
170
%%DATADIR%%-%%VERSION%%/gdb/glib_gobject_helper.py
164
%%DATADIR%%-%%VERSION%%/gdb/glib_gobject_helper.py
171
%%DATADIR%%-%%VERSION%%/gdb/gst_gdb.py
165
%%DATADIR%%-%%VERSION%%/gdb/gst_gdb.py
172
%%NLS%%share/locale/af/LC_MESSAGES/gstreamer-%%VERSION%%.mo
166
share/gir-%%VERSION%%/Gst-%%VERSION%%.gir
173
%%NLS%%share/locale/ast/LC_MESSAGES/gstreamer-%%VERSION%%.mo
167
share/gir-%%VERSION%%/GstBase-%%VERSION%%.gir
174
%%NLS%%share/locale/az/LC_MESSAGES/gstreamer-%%VERSION%%.mo
168
share/gir-%%VERSION%%/GstCheck-%%VERSION%%.gir
175
%%NLS%%share/locale/be/LC_MESSAGES/gstreamer-%%VERSION%%.mo
169
share/gir-%%VERSION%%/GstController-%%VERSION%%.gir
176
%%NLS%%share/locale/bg/LC_MESSAGES/gstreamer-%%VERSION%%.mo
170
share/gir-%%VERSION%%/GstNet-%%VERSION%%.gir
177
%%NLS%%share/locale/ca/LC_MESSAGES/gstreamer-%%VERSION%%.mo
171
share/locale/af/LC_MESSAGES/gstreamer-%%VERSION%%.mo
178
%%NLS%%share/locale/cs/LC_MESSAGES/gstreamer-%%VERSION%%.mo
172
share/locale/ast/LC_MESSAGES/gstreamer-%%VERSION%%.mo
179
%%NLS%%share/locale/da/LC_MESSAGES/gstreamer-%%VERSION%%.mo
173
share/locale/az/LC_MESSAGES/gstreamer-%%VERSION%%.mo
180
%%NLS%%share/locale/de/LC_MESSAGES/gstreamer-%%VERSION%%.mo
174
share/locale/be/LC_MESSAGES/gstreamer-%%VERSION%%.mo
181
%%NLS%%share/locale/el/LC_MESSAGES/gstreamer-%%VERSION%%.mo
175
share/locale/bg/LC_MESSAGES/gstreamer-%%VERSION%%.mo
182
%%NLS%%share/locale/en_GB/LC_MESSAGES/gstreamer-%%VERSION%%.mo
176
share/locale/ca/LC_MESSAGES/gstreamer-%%VERSION%%.mo
183
%%NLS%%share/locale/eo/LC_MESSAGES/gstreamer-%%VERSION%%.mo
177
share/locale/cs/LC_MESSAGES/gstreamer-%%VERSION%%.mo
184
%%NLS%%share/locale/es/LC_MESSAGES/gstreamer-%%VERSION%%.mo
178
share/locale/da/LC_MESSAGES/gstreamer-%%VERSION%%.mo
185
%%NLS%%share/locale/eu/LC_MESSAGES/gstreamer-%%VERSION%%.mo
179
share/locale/de/LC_MESSAGES/gstreamer-%%VERSION%%.mo
186
%%NLS%%share/locale/fi/LC_MESSAGES/gstreamer-%%VERSION%%.mo
180
share/locale/el/LC_MESSAGES/gstreamer-%%VERSION%%.mo
187
%%NLS%%share/locale/fr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
181
share/locale/en_GB/LC_MESSAGES/gstreamer-%%VERSION%%.mo
188
%%NLS%%share/locale/fur/LC_MESSAGES/gstreamer-%%VERSION%%.mo
182
share/locale/eo/LC_MESSAGES/gstreamer-%%VERSION%%.mo
189
%%NLS%%share/locale/gl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
183
share/locale/es/LC_MESSAGES/gstreamer-%%VERSION%%.mo
190
%%NLS%%share/locale/hr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
184
share/locale/eu/LC_MESSAGES/gstreamer-%%VERSION%%.mo
191
%%NLS%%share/locale/hu/LC_MESSAGES/gstreamer-%%VERSION%%.mo
185
share/locale/fi/LC_MESSAGES/gstreamer-%%VERSION%%.mo
192
%%NLS%%share/locale/id/LC_MESSAGES/gstreamer-%%VERSION%%.mo
186
share/locale/fr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
193
%%NLS%%share/locale/it/LC_MESSAGES/gstreamer-%%VERSION%%.mo
187
share/locale/fur/LC_MESSAGES/gstreamer-%%VERSION%%.mo
194
%%NLS%%share/locale/ja/LC_MESSAGES/gstreamer-%%VERSION%%.mo
188
share/locale/gl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
195
%%NLS%%share/locale/lt/LC_MESSAGES/gstreamer-%%VERSION%%.mo
189
share/locale/hr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
196
%%NLS%%share/locale/nb/LC_MESSAGES/gstreamer-%%VERSION%%.mo
190
share/locale/hu/LC_MESSAGES/gstreamer-%%VERSION%%.mo
197
%%NLS%%share/locale/nl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
191
share/locale/id/LC_MESSAGES/gstreamer-%%VERSION%%.mo
198
%%NLS%%share/locale/pl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
192
share/locale/it/LC_MESSAGES/gstreamer-%%VERSION%%.mo
199
%%NLS%%share/locale/pt_BR/LC_MESSAGES/gstreamer-%%VERSION%%.mo
193
share/locale/ja/LC_MESSAGES/gstreamer-%%VERSION%%.mo
200
%%NLS%%share/locale/ro/LC_MESSAGES/gstreamer-%%VERSION%%.mo
194
share/locale/ko/LC_MESSAGES/gstreamer-%%VERSION%%.mo
201
%%NLS%%share/locale/ru/LC_MESSAGES/gstreamer-%%VERSION%%.mo
195
share/locale/lt/LC_MESSAGES/gstreamer-%%VERSION%%.mo
202
%%NLS%%share/locale/rw/LC_MESSAGES/gstreamer-%%VERSION%%.mo
196
share/locale/nb/LC_MESSAGES/gstreamer-%%VERSION%%.mo
203
%%NLS%%share/locale/sk/LC_MESSAGES/gstreamer-%%VERSION%%.mo
197
share/locale/nl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
204
%%NLS%%share/locale/sl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
198
share/locale/pl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
205
%%NLS%%share/locale/sq/LC_MESSAGES/gstreamer-%%VERSION%%.mo
199
share/locale/pt_BR/LC_MESSAGES/gstreamer-%%VERSION%%.mo
206
%%NLS%%share/locale/sr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
200
share/locale/ro/LC_MESSAGES/gstreamer-%%VERSION%%.mo
207
%%NLS%%share/locale/sv/LC_MESSAGES/gstreamer-%%VERSION%%.mo
201
share/locale/ru/LC_MESSAGES/gstreamer-%%VERSION%%.mo
208
%%NLS%%share/locale/tr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
202
share/locale/rw/LC_MESSAGES/gstreamer-%%VERSION%%.mo
209
%%NLS%%share/locale/uk/LC_MESSAGES/gstreamer-%%VERSION%%.mo
203
share/locale/sk/LC_MESSAGES/gstreamer-%%VERSION%%.mo
210
%%NLS%%share/locale/vi/LC_MESSAGES/gstreamer-%%VERSION%%.mo
204
share/locale/sl/LC_MESSAGES/gstreamer-%%VERSION%%.mo
211
%%NLS%%share/locale/zh_CN/LC_MESSAGES/gstreamer-%%VERSION%%.mo
205
share/locale/sq/LC_MESSAGES/gstreamer-%%VERSION%%.mo
212
%%NLS%%share/locale/zh_TW/LC_MESSAGES/gstreamer-%%VERSION%%.mo
206
share/locale/sr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
207
share/locale/sv/LC_MESSAGES/gstreamer-%%VERSION%%.mo
208
share/locale/tr/LC_MESSAGES/gstreamer-%%VERSION%%.mo
209
share/locale/uk/LC_MESSAGES/gstreamer-%%VERSION%%.mo
210
share/locale/vi/LC_MESSAGES/gstreamer-%%VERSION%%.mo
211
share/locale/zh_CN/LC_MESSAGES/gstreamer-%%VERSION%%.mo
212
share/locale/zh_TW/LC_MESSAGES/gstreamer-%%VERSION%%.mo
(-)b/net/gstreamer1-plugins-srtp/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	net
1
CATEGORIES=	net
3
2
4
COMMENT=	GStreamer srtp plugin
3
COMMENT=	GStreamer srtp plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libsrtp2.so:net/libsrtp2
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/net/gstreamer1-plugins-srtp/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstsrtp.so
(-)b/security/gstreamer1-plugins-dtls/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	security
1
CATEGORIES=	security
3
2
4
COMMENT=	GStreamer Datagram TLS (dtls) plugin
3
COMMENT=	GStreamer Datagram TLS (dtls) plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USES=    compiler:c11 ssl
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/security/gstreamer1-plugins-dtls/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstdtls.so
(-)b/sysutils/gstreamer1-plugins-cdio/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	sysutils
1
CATEGORIES=	sysutils
3
2
4
COMMENT=	GStreamer compact disc input and control library
3
COMMENT=	GStreamer compact disc input and control library
Lines 8-11 DIST= ugly Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS= libcdio.so:sysutils/libcdio
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
15
16
MESON_ARGS+= -Dgpl=enabled
(-)b/sysutils/gstreamer1-plugins-cdio/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstcdio.so
(-)b/www/gstreamer1-plugins-neon/Makefile (-1 / +4 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	www
1
CATEGORIES=	www
3
2
4
COMMENT=	GStreamer neon http source plugin
3
COMMENT=	GStreamer neon http source plugin
Lines 8-11 DIST= bad Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
LIB_DEPENDS+=  libneon.so:www/neon
13
11
.include "${MASTERDIR}/Makefile"
14
.include "${MASTERDIR}/Makefile"
(-)b/www/gstreamer1-plugins-neon/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstneonhttpsrc.so
(-)b/x11-toolkits/gstreamer1-plugins-gtk/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	x11-toolkits
1
CATEGORIES=	x11-toolkits
3
GST_PLUGIN_SUFFIX=	-gtk
2
GST_PLUGIN_SUFFIX=	-gtk
4
3
Lines 9-12 DIST= good Link Here
9
8
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
10
11
PLIST=  ${.CURDIR}/pkg-plist
12
13
USES=    gnome
14
USE_GSTREAMER= gl
15
USE_GNOME= cairo gdkpixbuf2 gtk30
16
12
.include "${MASTERDIR}/Makefile"
17
.include "${MASTERDIR}/Makefile"
(-)b/x11-toolkits/gstreamer1-plugins-gtk/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstgtk.so
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/Makefile (-10 / +10 lines)
Lines 1-21 Link Here
1
PORTNAME=	gstreamer1-plugins-gtk4
2
DISTVERSION=	1.16.2
3
CATEGORIES=	x11-toolkits
1
CATEGORIES=	x11-toolkits
4
MASTER_SITES=	GNOME/sources/${DISTNAME:S/-${DISTVERSION}/\/${DISTVERSION:R}/} \
2
GST_PLUGIN_SUFFIX=  -gtk4
5
		https://gstreamer.freedesktop.org/src/${DISTNAME:S/-${DISTVERSION}//}/
6
DISTNAME=	gst-plugins-good-${DISTVERSION}
7
3
8
MAINTAINER=	jbeich@FreeBSD.org
4
MAINTAINER=	jbeich@FreeBSD.org
9
COMMENT=	GStreamer GTK4 video sink plugin
5
COMMENT=	GStreamer GTK4 video sink plugin
10
WWW=		https://gstreamer.freedesktop.org/documentation/gtk/gtksink.html
6
WWW=		https://gstreamer.freedesktop.org/documentation/gtk/gtksink.html
11
7
12
LICENSE=	LGPL21+
8
GST_PLUGIN= gtk4
13
LICENSE_FILE=	${WRKSRC}/COPYING
9
DIST=   good
14
10
15
USES=		compiler:c11 gnome gstreamer meson pkgconfig tar:xz
11
MASTERDIR=  ${.CURDIR}/../../multimedia/gstreamer1-plugins
12
USES=	gnome
16
USE_GNOME=	cairo gtk40
13
USE_GNOME=	cairo gtk40
17
USE_GSTREAMER=	gl
14
USE_GSTREAMER=	gl
18
MESON_ARGS=	--auto-features=disabled -Dgtk4=enabled
15
MESON_ARGS+=	--auto-features=disabled
19
PLIST_FILES=	lib/gstreamer-1.0/libgstgtk4.so
16
PLIST_FILES=	lib/gstreamer-1.0/libgstgtk4.so
20
17
21
.include <bsd.port.mk>
18
EXTRA_PATCHES=	${.CURDIR}/files
19
PLIST=  ${.CURDIR}/pkg-plist
20
21
.include "${MASTERDIR}/Makefile"
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.c (+196 lines)
Added Link Here
1
--- ext/gtk/gstgtkbasesink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkbasesink.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -80,7 +81,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_
12
     G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
13
         gst_gtk_base_sink_navigation_interface_init);
14
     GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink,
15
-        "gtkbasesink", 0, "Gtk Video Sink base class"));
16
+        "gtkbasesink", 0, "GTK Video Sink base class"));
17
 
18
 
19
 static void
20
@@ -100,7 +101,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
21
   gobject_class->get_property = gst_gtk_base_sink_get_property;
22
 
23
   g_object_class_install_property (gobject_class, PROP_WIDGET,
24
-      g_param_spec_object ("widget", "Gtk Widget",
25
+      g_param_spec_object ("widget", "GTK Widget",
26
           "The GtkWidget to place in the widget hierarchy "
27
           "(must only be get from the GTK main thread)",
28
           GTK_TYPE_WIDGET,
29
@@ -135,10 +136,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
30
           G_MAXINT, G_MAXINT, 1, DEFAULT_VIDEO_PAR_N, DEFAULT_VIDEO_PAR_D,
31
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
32
 
33
+  /* Disabling alpha was removed in GTK4 */
34
+#if !defined(BUILD_FOR_GTK4)
35
   g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA,
36
       g_param_spec_boolean ("ignore-alpha", "Ignore Alpha",
37
           "When enabled, alpha will be ignored and converted to black",
38
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
39
+#endif
40
 
41
   gobject_class->finalize = gst_gtk_base_sink_finalize;
42
 
43
@@ -169,6 +173,8 @@ gst_gtk_base_sink_finalize (GObject * object)
44
 {
45
   GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object);
46
 
47
+  GST_DEBUG ("finalizing base sink");
48
+
49
   GST_OBJECT_LOCK (gtk_sink);
50
   if (gtk_sink->window && gtk_sink->window_destroy_id)
51
     g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id);
52
@@ -193,6 +199,14 @@ static void
53
 window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink)
54
 {
55
   GST_OBJECT_LOCK (gtk_sink);
56
+  if (gtk_sink->widget) {
57
+    if (gtk_sink->widget_destroy_id) {
58
+      g_signal_handler_disconnect (gtk_sink->widget,
59
+          gtk_sink->widget_destroy_id);
60
+      gtk_sink->widget_destroy_id = 0;
61
+    }
62
+    g_clear_object (&gtk_sink->widget);
63
+  }
64
   gtk_sink->window = NULL;
65
   GST_OBJECT_UNLOCK (gtk_sink);
66
 }
67
@@ -205,7 +219,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
68
 
69
   /* Ensure GTK is initialized, this has no side effect if it was already
70
    * initialized. Also, we do that lazily, so the application can be first */
71
-  if (!gtk_init_check (NULL, NULL)) {
72
+  if (!gtk_init_check (
73
+#if !defined(BUILD_FOR_GTK4)
74
+          NULL, NULL
75
+#endif
76
+      )) {
77
     GST_INFO_OBJECT (gtk_sink, "Could not ensure GTK initialization.");
78
     return NULL;
79
   }
80
@@ -224,13 +242,16 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
81
       g_object_bind_property (gtk_sink, "video-aspect-ratio-override",
82
       gtk_sink->widget, "video-aspect-ratio-override",
83
       G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
84
+#if !defined(BUILD_FOR_GTK4)
85
   gtk_sink->bind_ignore_alpha =
86
       g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget,
87
       "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
88
+#endif
89
 
90
   /* Take the floating ref, other wise the destruction of the container will
91
    * make this widget disappear possibly before we are done. */
92
   gst_object_ref_sink (gtk_sink->widget);
93
+
94
   gtk_sink->widget_destroy_id = g_signal_connect (gtk_sink->widget, "destroy",
95
       G_CALLBACK (widget_destroy_cb), gtk_sink);
96
 
97
@@ -372,6 +393,9 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
98
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
99
   GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink);
100
   GtkWidget *toplevel;
101
+#if defined(BUILD_FOR_GTK4)
102
+  GtkRoot *root;
103
+#endif
104
 
105
   if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) {
106
     GST_ERROR_OBJECT (bsink, "Could not ensure GTK initialization.");
107
@@ -380,19 +404,46 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
108
 
109
   /* After this point, gtk_sink->widget will always be set */
110
 
111
+#if defined(BUILD_FOR_GTK4)
112
+  root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget));
113
+  if (!GTK_IS_ROOT (root)) {
114
+    GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget));
115
+    if (parent) {
116
+      GtkWidget *temp_parent;
117
+      while ((temp_parent = gtk_widget_get_parent (parent)))
118
+        parent = temp_parent;
119
+    }
120
+    toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget);
121
+#else
122
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget));
123
   if (!gtk_widget_is_toplevel (toplevel)) {
124
+#endif
125
     /* sanity check */
126
     g_assert (klass->window_title);
127
 
128
     /* User did not add widget its own UI, let's popup a new GtkWindow to
129
      * make gst-launch-1.0 work. */
130
-    gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
131
+    gst_sink->window = gtk_window_new (
132
+#if !defined(BUILD_FOR_GTK4)
133
+        GTK_WINDOW_TOPLEVEL
134
+#endif
135
+        );
136
     gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480);
137
     gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title);
138
-    gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel);
139
-    gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy",
140
-        G_CALLBACK (window_destroy_cb), gst_sink);
141
+#if defined(BUILD_FOR_GTK4)
142
+    gtk_window_set_child (GTK_WINDOW (
143
+#else
144
+    gtk_container_add (GTK_CONTAINER (
145
+#endif
146
+            gst_sink->window), toplevel);
147
+
148
+    gst_sink->window_destroy_id = g_signal_connect (
149
+#if defined(BUILD_FOR_GTK4)
150
+        GTK_WINDOW (gst_sink->window),
151
+#else
152
+        gst_sink->window,
153
+#endif
154
+        "destroy", G_CALLBACK (window_destroy_cb), gst_sink);
155
   }
156
 
157
   return TRUE;
158
@@ -411,7 +462,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink)
159
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
160
 
161
   if (gst_sink->window) {
162
+#if defined(BUILD_FOR_GTK4)
163
+    gtk_window_destroy (GTK_WINDOW (gst_sink->window));
164
+#else
165
     gtk_widget_destroy (gst_sink->window);
166
+#endif
167
     gst_sink->window = NULL;
168
     gst_sink->widget = NULL;
169
   }
170
@@ -432,10 +487,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink)
171
 }
172
 
173
 static void
174
-gst_gtk_widget_show_all_and_unref (GtkWidget * widget)
175
+gst_gtk_window_show_all_and_unref (GtkWidget * window)
176
 {
177
-  gtk_widget_show_all (widget);
178
-  g_object_unref (widget);
179
+#if defined(BUILD_FOR_GTK4)
180
+  gtk_window_present (GTK_WINDOW (window));
181
+#else
182
+  gtk_widget_show_all (window);
183
+#endif
184
+  g_object_unref (window);
185
 }
186
 
187
 static GstStateChangeReturn
188
@@ -463,7 +522,7 @@ gst_gtk_base_sink_change_state (GstElement * element, 
189
       GST_OBJECT_UNLOCK (gtk_sink);
190
 
191
       if (window)
192
-        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref,
193
+        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref,
194
             window);
195
 
196
       break;
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkbasesink.h (+31 lines)
Added Link Here
1
--- ext/gtk/gstgtkbasesink.h.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkbasesink.h
3
@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void);
4
 struct _GstGtkBaseSink
5
 {
6
   /* <private> */
7
-  GstVideoSink         parent;
8
+  GstVideoSink          parent;
9
 
10
-  GstVideoInfo         v_info;
11
+  GstVideoInfo          v_info;
12
 
13
   GtkGstBaseWidget     *widget;
14
 
15
   /* properties */
16
-  gboolean             force_aspect_ratio;
17
+  gboolean              force_aspect_ratio;
18
   GBinding             *bind_aspect_ratio;
19
 
20
   gint                  par_n;
21
@@ -73,8 +73,8 @@ struct _GstGtkBaseSink
22
   GBinding             *bind_ignore_alpha;
23
 
24
   GtkWidget            *window;
25
-  gulong               widget_destroy_id;
26
-  gulong               window_destroy_id;
27
+  gulong                widget_destroy_id;
28
+  gulong                window_destroy_id;
29
 };
30
 
31
 /**
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.c (+187 lines)
Added Link Here
1
--- ext/gtk/gstgtkglsink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkglsink.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -23,6 +24,12 @@
12
  * @title: gtkglsink
13
  */
14
 
15
+/**
16
+ * SECTION:element-gtk4glsink
17
+ * @title: gtk4glsink
18
+ */
19
+
20
+
21
 #ifdef HAVE_CONFIG_H
22
 #include "config.h"
23
 #endif
24
@@ -30,6 +37,7 @@
25
 #include <gst/gl/gstglfuncs.h>
26
 #include <gst/video/gstvideoaffinetransformationmeta.h>
27
 
28
+#include "gtkconfig.h"
29
 #include "gstgtkglsink.h"
30
 #include "gtkgstglwidget.h"
31
 
32
@@ -65,7 +73,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template =
33
 #define gst_gtk_gl_sink_parent_class parent_class
34
 G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink,
35
     GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink,
36
-        "gtkglsink", 0, "Gtk GL Video Sink"));
37
+        GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink"));
38
 GST_ELEMENT_REGISTER_DEFINE (gtkglsink, "gtkglsink", GST_RANK_NONE,
39
     GST_TYPE_GTK_GL_SINK);
40
 
41
@@ -101,7 +109,7 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
42
   gstbasesink_class->event = gst_gtk_gl_sink_event;
43
 
44
   gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new;
45
-  gstgtkbasesink_class->window_title = "Gtk+ GL renderer";
46
+  gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer";
47
 
48
   /**
49
    * gtkglsink:rotate-method:
50
@@ -117,9 +125,11 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
51
           GST_TYPE_VIDEO_ORIENTATION_METHOD, GST_VIDEO_ORIENTATION_IDENTITY,
52
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
53
 
54
-  gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink",
55
+  gst_element_class_set_metadata (gstelement_class,
56
+      GTKCONFIG_NAME " GL Video Sink",
57
       "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL",
58
-      "Matthew Waters <matthew@centricular.com>");
59
+      "Matthew Waters <matthew@centricular.com>, "
60
+      "Rafał Dzięgiel <rafostar.github@gmail.com>");
61
 
62
   gst_element_class_add_static_pad_template (gstelement_class,
63
       &gst_gtk_gl_sink_template);
64
@@ -202,16 +212,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery *
65
 }
66
 
67
 static void
68
-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle,
69
-    GstGtkGLSink * gtk_sink)
70
+_size_changed_cb (GtkWidget * widget, gint width,
71
+    gint height, GstGtkGLSink * gtk_sink)
72
 {
73
-  gint scale_factor, width, height;
74
   gboolean reconfigure;
75
 
76
-  scale_factor = gtk_widget_get_scale_factor (widget);
77
-  width = scale_factor * gtk_widget_get_allocated_width (widget);
78
-  height = scale_factor * gtk_widget_get_allocated_height (widget);
79
+  GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
80
 
81
+  /* Ignore size changes before widget is negotiated
82
+   * we are going to queue a resize after negotiation */
83
+  if (!base_widget->negotiated)
84
+    return;
85
+
86
   GST_OBJECT_LOCK (gtk_sink);
87
   reconfigure =
88
       (width != gtk_sink->display_width || height != gtk_sink->display_height);
89
@@ -220,7 +232,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
90
   GST_OBJECT_UNLOCK (gtk_sink);
91
 
92
   if (reconfigure) {
93
-    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad.");
94
+    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad");
95
     gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad,
96
         gst_event_new_reconfigure ());
97
   }
98
@@ -229,9 +241,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
99
 static void
100
 destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink)
101
 {
102
-  if (gtk_sink->size_allocate_sig_handler) {
103
-    g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler);
104
-    gtk_sink->size_allocate_sig_handler = 0;
105
+  if (gtk_sink->widget_resize_sig_handler) {
106
+    g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler);
107
+    gtk_sink->widget_resize_sig_handler = 0;
108
   }
109
 
110
   if (gtk_sink->widget_destroy_sig_handler) {
111
@@ -254,29 +266,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink)
112
   gst_widget = GTK_GST_GL_WIDGET (base_sink->widget);
113
 
114
   /* Track the allocation size */
115
-  gtk_sink->size_allocate_sig_handler =
116
-      g_signal_connect (gst_widget, "size-allocate",
117
-      G_CALLBACK (_size_changed_cb), gtk_sink);
118
+  if (!gtk_sink->widget_resize_sig_handler) {
119
+    gtk_sink->widget_resize_sig_handler =
120
+        g_signal_connect (gst_widget, "resize",
121
+        G_CALLBACK (_size_changed_cb), gtk_sink);
122
+  }
123
 
124
-  gtk_sink->widget_destroy_sig_handler =
125
-      g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
126
-      gtk_sink);
127
+  if (!gtk_sink->widget_destroy_sig_handler) {
128
+    gtk_sink->widget_destroy_sig_handler =
129
+        g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
130
+        gtk_sink);
131
+  }
132
 
133
-  _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink);
134
-
135
   if (!gtk_gst_gl_widget_init_winsys (gst_widget)) {
136
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
137
-            "Failed to initialize OpenGL with Gtk"), (NULL));
138
+            "Failed to initialize OpenGL with GTK"), (NULL));
139
     return FALSE;
140
   }
141
 
142
-  gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
143
-  gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
144
-  gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
145
+  if (!gtk_sink->display)
146
+    gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
147
+  if (!gtk_sink->context)
148
+    gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
149
+  if (!gtk_sink->gtk_context)
150
+    gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
151
 
152
   if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) {
153
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
154
-            "Failed to retrieve OpenGL context from Gtk"), (NULL));
155
+            "Failed to retrieve OpenGL context from GTK"), (NULL));
156
     return FALSE;
157
   }
158
 
159
@@ -290,7 +307,14 @@ static gboolean
160
 gst_gtk_gl_sink_stop (GstBaseSink * bsink)
161
 {
162
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink);
163
+  GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink);
164
 
165
+  if (gtk_sink->widget_resize_sig_handler) {
166
+    g_signal_handler_disconnect (base_sink->widget,
167
+        gtk_sink->widget_resize_sig_handler);
168
+    gtk_sink->widget_resize_sig_handler = 0;
169
+  }
170
+
171
   if (gtk_sink->display) {
172
     gst_object_unref (gtk_sink->display);
173
     gtk_sink->display = NULL;
174
@@ -432,10 +456,10 @@ gst_gtk_gl_sink_finalize (GObject * object)
175
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object);
176
   GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object);
177
 
178
-  if (gtk_sink->size_allocate_sig_handler) {
179
+  if (gtk_sink->widget_resize_sig_handler) {
180
     g_signal_handler_disconnect (base_sink->widget,
181
-        gtk_sink->size_allocate_sig_handler);
182
-    gtk_sink->size_allocate_sig_handler = 0;
183
+        gtk_sink->widget_resize_sig_handler);
184
+    gtk_sink->widget_resize_sig_handler = 0;
185
   }
186
 
187
   if (gtk_sink->widget_destroy_sig_handler) {
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtkglsink.h (+11 lines)
Added Link Here
1
--- ext/gtk/gstgtkglsink.h.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkglsink.h
3
@@ -57,7 +57,7 @@ struct _GstGtkGLSink
4
   gint                  display_width;
5
   gint                  display_height;
6
 
7
-  gulong                size_allocate_sig_handler;
8
+  gulong                widget_resize_sig_handler;
9
   gulong                widget_destroy_sig_handler;
10
 };
11
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstgtksink.c (+51 lines)
Added Link Here
1
--- ext/gtk/gstgtksink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtksink.c
3
@@ -19,15 +19,22 @@
4
  */
5
 
6
 /**
7
- * SECTION:element-gtkgstsink
8
- * @title: gtkgstsink
9
+ * SECTION:element-gtksink
10
+ * @title: gtksink
11
  *
12
  */
13
 
14
+/**
15
+ * SECTION:element-gtk4sink
16
+ * @title: gtk4sink
17
+ *
18
+ */
19
+
20
 #ifdef HAVE_CONFIG_H
21
 #include "config.h"
22
 #endif
23
 
24
+#include "gtkconfig.h"
25
 #include "gtkgstwidget.h"
26
 #include "gstgtksink.h"
27
 
28
@@ -49,8 +56,8 @@ GST_STATIC_PAD_TEMPLATE ("sink",
29
 
30
 #define gst_gtk_sink_parent_class parent_class
31
 G_DEFINE_TYPE_WITH_CODE (GstGtkSink, gst_gtk_sink, GST_TYPE_GTK_BASE_SINK,
32
-    GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, "gtksink", 0,
33
-        "Gtk Video Sink"));
34
+    GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, GTKCONFIG_SINK, 0,
35
+        GTKCONFIG_NAME " Video Sink"));
36
 GST_ELEMENT_REGISTER_DEFINE (gtksink, "gtksink", GST_RANK_NONE,
37
     GST_TYPE_GTK_SINK);
38
 
39
@@ -64,9 +71,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass)
40
   base_class = (GstGtkBaseSinkClass *) klass;
41
 
42
   base_class->create_widget = gtk_gst_widget_new;
43
-  base_class->window_title = "Gtk+ Cairo renderer";
44
+  base_class->window_title = GTKCONFIG_NAME " Cairo Renderer";
45
 
46
-  gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink",
47
+  gst_element_class_set_metadata (gstelement_class,
48
+      GTKCONFIG_NAME " Video Sink",
49
       "Sink/Video", "A video sink that renders to a GtkWidget",
50
       "Matthew Waters <matthew@centricular.com>");
51
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gstplugin.c (+52 lines)
Added Link Here
1
--- ext/gtk/gstplugin.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstplugin.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -22,28 +23,30 @@
12
 #include "config.h"
13
 #endif
14
 
15
+#include "gtkconfig.h"
16
 #include "gstgtksink.h"
17
-#if defined(HAVE_GTK3_GL)
18
+#if defined(HAVE_GTK_GL)
19
 #include "gstgtkglsink.h"
20
 #endif
21
 
22
 static gboolean
23
 plugin_init (GstPlugin * plugin)
24
 {
25
-  gboolean ret = FALSE;
26
-
27
-  ret |= GST_ELEMENT_REGISTER (gtksink, plugin);
28
-
29
-#if defined(HAVE_GTK3_GL)
30
-  ret |= GST_ELEMENT_REGISTER (gtkglsink, plugin);
31
+  if (!gst_element_register (plugin, GTKCONFIG_SINK,
32
+          GST_RANK_NONE, GST_TYPE_GTK_SINK)) {
33
+    return FALSE;
34
+  }
35
+#if defined(HAVE_GTK_GL)
36
+  if (!gst_element_register (plugin, GTKCONFIG_GLSINK,
37
+          GST_RANK_NONE, GST_TYPE_GTK_GL_SINK)) {
38
+    return FALSE;
39
+  }
40
 #endif
41
-
42
-  return ret;
43
+  return TRUE;
44
 }
45
 
46
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
47
     GST_VERSION_MINOR,
48
-    gtk,
49
-    "Gtk+ sink",
50
+    GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink",
51
     plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME,
52
     GST_PACKAGE_ORIGIN)
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkconfig.h (+38 lines)
Added Link Here
1
--- ext/gtk/gtkconfig.h.orig	2022-09-18 22:21:54 UTC
2
+++ ext/gtk/gtkconfig.h
3
@@ -0,0 +1,35 @@
4
+/*
5
+ * GStreamer
6
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
7
+ *
8
+ * This library is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU Library General Public
10
+ * License as published by the Free Software Foundation; either
11
+ * version 2 of the License, or (at your option) any later version.
12
+ *
13
+ * This library is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
+ * Library General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU Library General Public
19
+ * License along with this library; if not, write to the
20
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
21
+ * Boston, MA 02110-1301, USA.
22
+ */
23
+
24
+#if defined(BUILD_FOR_GTK4)
25
+#define GTKCONFIG_PLUGIN gtk4
26
+#define GTKCONFIG_NAME "GTK4"
27
+#define GTKCONFIG_SINK_N gtk4sink
28
+#define GTKCONFIG_GLSINK_N gtk4glsink
29
+#define GTKCONFIG_SINK "gtk4sink"
30
+#define GTKCONFIG_GLSINK "gtk4glsink"
31
+#else
32
+#define GTKCONFIG_PLUGIN gtk
33
+#define GTKCONFIG_NAME "GTK"
34
+#define GTKCONFIG_SINK_N gtksink
35
+#define GTKCONFIG_GLSINK_N gtkglsink
36
+#define GTKCONFIG_SINK "gtksink"
37
+#define GTKCONFIG_GLSINK "gtkglsink"
38
+#endif
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.c (+276 lines)
Added Link Here
1
--- ext/gtk/gtkgstbasewidget.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gtkgstbasewidget.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -208,7 +209,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * 
12
     *natural = video_height;
13
 }
14
 
15
+#if defined(BUILD_FOR_GTK4)
16
 static void
17
+gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation,
18
+    gint for_size, gint * min, gint * natural,
19
+    gint * minimum_baseline, gint * natural_baseline)
20
+{
21
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
22
+    gtk_gst_base_widget_get_preferred_width (widget, min, natural);
23
+  else
24
+    gtk_gst_base_widget_get_preferred_height (widget, min, natural);
25
+
26
+  *minimum_baseline = -1;
27
+  *natural_baseline = -1;
28
+}
29
+#endif
30
+
31
+static void
32
 gtk_gst_base_widget_set_property (GObject * object, guint prop_id,
33
     const GValue * value, GParamSpec * pspec)
34
 {
35
@@ -281,22 +298,46 @@ _gdk_key_to_navigation_string (guint keyval)
36
   }
37
 }
38
 
39
+static GdkEvent *
40
+_get_current_event (GtkEventController * controller)
41
+{
42
+#if defined(BUILD_FOR_GTK4)
43
+  return gtk_event_controller_get_current_event (controller);
44
+#else
45
+  return gtk_get_current_event ();
46
+#endif
47
+}
48
+
49
+static void
50
+_gdk_event_free (GdkEvent * event)
51
+{
52
+#if !defined(BUILD_FOR_GTK4)
53
+  if (event)
54
+    gdk_event_free (event);
55
+#endif
56
+}
57
+
58
 static gboolean
59
-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event)
60
+gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller,
61
+    guint keyval, guint keycode, GdkModifierType state)
62
 {
63
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller);
64
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
65
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
66
   GstElement *element;
67
 
68
   if ((element = g_weak_ref_get (&base_widget->element))) {
69
     if (GST_IS_NAVIGATION (element)) {
70
-      const gchar *str = _gdk_key_to_navigation_string (event->keyval);
71
-      const gchar *key_type =
72
-          event->type == GDK_KEY_PRESS ? "key-press" : "key-release";
73
+      GdkEvent *event = _get_current_event (controller);
74
+      const gchar *str = _gdk_key_to_navigation_string (keyval);
75
 
76
-      if (!str)
77
-        str = event->string;
78
-
79
-      gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
80
+      if (str) {
81
+        const gchar *key_type =
82
+            gdk_event_get_event_type (event) ==
83
+            GDK_KEY_PRESS ? "key-press" : "key-release";
84
+        gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
85
+      }
86
+      _gdk_event_free (event);
87
     }
88
     g_object_unref (element);
89
   }
90
@@ -371,18 +412,39 @@ gtk_gst_base_widget_display_size_to_stream_size (GtkGs
91
 }
92
 
93
 static gboolean
94
-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event)
95
+gtk_gst_base_widget_button_event (
96
+#if defined(BUILD_FOR_GTK4)
97
+    GtkGestureClick * gesture,
98
+#else
99
+    GtkGestureMultiPress * gesture,
100
+#endif
101
+    gint n_press, gdouble x, gdouble y)
102
 {
103
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture);
104
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
105
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
106
   GstElement *element;
107
 
108
   if ((element = g_weak_ref_get (&base_widget->element))) {
109
     if (GST_IS_NAVIGATION (element)) {
110
+      GdkEvent *event = _get_current_event (controller);
111
       const gchar *key_type =
112
-          event->type ==
113
-          GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release";
114
+          gdk_event_get_event_type (event) == GDK_BUTTON_PRESS
115
+          ? "mouse-button-press" : "mouse-button-release";
116
+#if !defined(BUILD_FOR_GTK4)
117
+      guint button;
118
+      gdk_event_get_button (event, &button);
119
+#endif
120
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type,
121
-          event->button, event->x, event->y);
122
+#if defined(BUILD_FOR_GTK4)
123
+          /* Gesture is set to ignore other buttons so we do not have to check */
124
+          GDK_BUTTON_PRIMARY,
125
+#else
126
+          button,
127
+#endif
128
+          x, y);
129
+
130
+      _gdk_event_free (event);
131
     }
132
     g_object_unref (element);
133
   }
134
@@ -391,15 +453,18 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, 
135
 }
136
 
137
 static gboolean
138
-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event)
139
+gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller,
140
+    gdouble x, gdouble y)
141
 {
142
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller);
143
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
144
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
145
   GstElement *element;
146
 
147
   if ((element = g_weak_ref_get (&base_widget->element))) {
148
     if (GST_IS_NAVIGATION (element)) {
149
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move",
150
-          0, event->x, event->y);
151
+          0, x, y);
152
     }
153
     g_object_unref (element);
154
   }
155
@@ -407,6 +472,7 @@ gtk_gst_base_widget_motion_event (GtkWidget * widget, 
156
   return FALSE;
157
 }
158
 
159
+#if !defined(BUILD_FOR_GTK4)
160
 static gboolean
161
 gtk_gst_base_widget_scroll_event (GtkWidget * widget, GdkEventScroll * event)
162
 {
163
@@ -450,8 +516,8 @@ gtk_gst_base_widget_scroll_event (GtkWidget * widget, 
164
   }
165
   return FALSE;
166
 }
167
+#endif
168
 
169
-
170
 void
171
 gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass * klass)
172
 {
173
@@ -490,24 +556,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass 
174
           "When enabled, alpha will be ignored and converted to black",
175
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
176
 
177
+#if defined(BUILD_FOR_GTK4)
178
+  widget_klass->measure = gtk_gst_base_widget_measure;
179
+#else
180
   widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width;
181
   widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height;
182
-  widget_klass->key_press_event = gtk_gst_base_widget_key_event;
183
-  widget_klass->key_release_event = gtk_gst_base_widget_key_event;
184
-  widget_klass->button_press_event = gtk_gst_base_widget_button_event;
185
-  widget_klass->button_release_event = gtk_gst_base_widget_button_event;
186
-  widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event;
187
-  widget_klass->scroll_event = gtk_gst_base_widget_scroll_event;
188
+#endif
189
 
190
   GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0,
191
-      "Gtk Video Base Widget");
192
+      "GTK Video Base Widget");
193
 }
194
 
195
 void
196
 gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
197
 {
198
-  int event_mask;
199
-
200
   widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO;
201
   widget->par_n = DEFAULT_DISPLAY_PAR_N;
202
   widget->par_d = DEFAULT_DISPLAY_PAR_D;
203
@@ -521,20 +583,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
204
   g_weak_ref_init (&widget->element, NULL);
205
   g_mutex_init (&widget->lock);
206
 
207
+  widget->key_controller = gtk_event_controller_key_new (
208
+#if !defined(BUILD_FOR_GTK4)
209
+      GTK_WIDGET (widget)
210
+#endif
211
+      );
212
+  g_signal_connect (widget->key_controller, "key-pressed",
213
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
214
+  g_signal_connect (widget->key_controller, "key-released",
215
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
216
+
217
+  widget->motion_controller = gtk_event_controller_motion_new (
218
+#if !defined(BUILD_FOR_GTK4)
219
+      GTK_WIDGET (widget)
220
+#endif
221
+      );
222
+  g_signal_connect (widget->motion_controller, "motion",
223
+      G_CALLBACK (gtk_gst_base_widget_motion_event), NULL);
224
+
225
+  widget->click_gesture =
226
+#if defined(BUILD_FOR_GTK4)
227
+      gtk_gesture_click_new ();
228
+#else
229
+      gtk_gesture_multi_press_new (GTK_WIDGET (widget));
230
+#endif
231
+  g_signal_connect (widget->click_gesture, "pressed",
232
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
233
+  g_signal_connect (widget->click_gesture, "released",
234
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
235
+
236
+#if defined(BUILD_FOR_GTK4)
237
+  /* Otherwise widget in grid will appear as a 1x1px
238
+   * video which might be misleading for users */
239
+  gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE);
240
+  gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE);
241
+
242
+  gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE);
243
+  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture),
244
+      GDK_BUTTON_PRIMARY);
245
+
246
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller);
247
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller);
248
+  gtk_widget_add_controller (GTK_WIDGET (widget),
249
+      GTK_EVENT_CONTROLLER (widget->click_gesture));
250
+#endif
251
+
252
   gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE);
253
-  event_mask = gtk_widget_get_events (GTK_WIDGET (widget));
254
-  event_mask |= GDK_KEY_PRESS_MASK
255
-      | GDK_KEY_RELEASE_MASK
256
-      | GDK_BUTTON_PRESS_MASK
257
-      | GDK_BUTTON_RELEASE_MASK
258
-      | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_SCROLL_MASK;
259
-  gtk_widget_set_events (GTK_WIDGET (widget), event_mask);
260
 }
261
 
262
 void
263
 gtk_gst_base_widget_finalize (GObject * object)
264
 {
265
   GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object);
266
+
267
+  /* GTK4 takes ownership of EventControllers
268
+   * while GTK3 still needs manual unref */
269
+#if !defined(BUILD_FOR_GTK4)
270
+  g_object_unref (widget->key_controller);
271
+  g_object_unref (widget->motion_controller);
272
+  g_object_unref (widget->click_gesture);
273
+#endif
274
 
275
   gst_buffer_replace (&widget->pending_buffer, NULL);
276
   gst_buffer_replace (&widget->buffer, NULL);
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstbasewidget.h (+53 lines)
Added Link Here
1
--- ext/gtk/gtkgstbasewidget.h.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gtkgstbasewidget.h
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -25,6 +26,10 @@
12
 #include <gst/gst.h>
13
 #include <gst/video/video.h>
14
 
15
+#if !defined(BUILD_FOR_GTK4)
16
+#include <gdk/gdk.h>
17
+#endif
18
+
19
 #define GTK_GST_BASE_WIDGET(w)         ((GtkGstBaseWidget *)(w))
20
 #define GTK_GST_BASE_WIDGET_CLASS(k)   ((GtkGstBaseWidgetClass *)(k))
21
 #define GTK_GST_BASE_WIDGET_LOCK(w)    g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock)
22
@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget
23
 {
24
   union {
25
     GtkDrawingArea drawing_area;
26
-#if GTK_CHECK_VERSION(3, 15, 0)
27
     GtkGLArea gl_area;
28
-#endif
29
   } parent;
30
 
31
   /* properties */
32
@@ -68,6 +71,11 @@ struct _GtkGstBaseWidget
33
   GMutex lock;
34
   GWeakRef element;
35
 
36
+  /* event controllers */
37
+  GtkEventController *key_controller;
38
+  GtkEventController *motion_controller;
39
+  GtkGesture *click_gesture;
40
+
41
   /* Pending draw idles callback */
42
   guint draw_id;
43
 };
44
@@ -76,9 +84,7 @@ struct _GtkGstBaseWidgetClass
45
 {
46
   union {
47
     GtkDrawingAreaClass drawing_area_class;
48
-#if GTK_CHECK_VERSION(3, 15, 0)
49
     GtkGLAreaClass gl_area_class;
50
-#endif
51
   } parent_class;
52
 };
53
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstglwidget.c (+53 lines)
Added Link Here
1
--- ext/gtk/gtkgstglwidget.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gtkgstglwidget.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -30,12 +31,20 @@
12
 #include <gst/video/video.h>
13
 
14
 #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11)
15
+#if defined(BUILD_FOR_GTK4)
16
+#include <gdk/x11/gdkx.h>
17
+#else
18
 #include <gdk/gdkx.h>
19
+#endif
20
 #include <gst/gl/x11/gstgldisplay_x11.h>
21
 #endif
22
 
23
 #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
24
+#if defined(BUILD_FOR_GTK4)
25
+#include <gdk/wayland/gdkwayland.h>
26
+#else
27
 #include <gdk/gdkwayland.h>
28
+#endif
29
 #include <gst/gl/wayland/gstgldisplay_wayland.h>
30
 #endif
31
 
32
@@ -81,8 +90,7 @@ static const GLfloat vertices[] = {
33
 G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA,
34
     G_ADD_PRIVATE (GtkGstGLWidget)
35
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0,
36
-        "Gtk Gst GL Widget");
37
-    );
38
+        "GTK Gst GL Widget"));
39
 
40
 static void
41
 gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget)
42
@@ -510,8 +518,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget)
43
 
44
   GST_INFO ("Created %" GST_PTR_FORMAT, priv->display);
45
 
46
+  /* GTK4 always has alpha */
47
+#if !defined(BUILD_FOR_GTK4)
48
   gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget),
49
       !base_widget->ignore_alpha);
50
+#endif
51
 }
52
 
53
 static void
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_gtkgstwidget.c (+83 lines)
Added Link Here
1
--- ext/gtk/gtkgstwidget.c.orig	2019-12-03 11:06:37 UTC
2
+++ ext/gtk/gtkgstwidget.c
3
@@ -38,17 +38,15 @@
4
 
5
 G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA);
6
 
7
-static gboolean
8
-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
9
+static void
10
+_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr,
11
+    gint widget_width, gint widget_height, gpointer data)
12
 {
13
+  GtkWidget *widget = GTK_WIDGET (da);
14
   GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget;
15
-  guint widget_width, widget_height;
16
   cairo_surface_t *surface;
17
   GstVideoFrame frame;
18
 
19
-  widget_width = gtk_widget_get_allocated_width (widget);
20
-  widget_height = gtk_widget_get_allocated_height (widget);
21
-
22
   GTK_GST_BASE_WIDGET_LOCK (gst_widget);
23
 
24
   /* There is not much to optimize in term of redisplay, so simply swap the
25
@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
26
       color.alpha = 1.0;
27
     } else {
28
       gtk_style_context_get_color (gtk_widget_get_style_context (widget),
29
-          GTK_STATE_FLAG_NORMAL, &color);
30
+#if !defined(BUILD_FOR_GTK4)
31
+          GTK_STATE_FLAG_NORMAL,
32
+#endif
33
+          &color);
34
     }
35
     gdk_cairo_set_source_rgba (cr, &color);
36
     cairo_rectangle (cr, 0, 0, widget_width, widget_height);
37
@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
38
   }
39
 
40
   GTK_GST_BASE_WIDGET_UNLOCK (gst_widget);
41
+}
42
+
43
+#if !defined(BUILD_FOR_GTK4)
44
+static gboolean
45
+gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
46
+{
47
+  gint width = gtk_widget_get_allocated_width (widget);
48
+  gint height = gtk_widget_get_allocated_height (widget);
49
+
50
+  _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL);
51
+
52
   return FALSE;
53
 }
54
+#endif
55
 
56
 static void
57
 gtk_gst_widget_finalize (GObject * object)
58
@@ -171,17 +184,25 @@ static void
59
 gtk_gst_widget_class_init (GtkGstWidgetClass * klass)
60
 {
61
   GObjectClass *gobject_klass = (GObjectClass *) klass;
62
+#if !defined(BUILD_FOR_GTK4)
63
   GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass;
64
+#endif
65
 
66
   gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass));
67
   gobject_klass->finalize = gtk_gst_widget_finalize;
68
+#if !defined(BUILD_FOR_GTK4)
69
   widget_klass->draw = gtk_gst_widget_draw;
70
+#endif
71
 }
72
 
73
 static void
74
 gtk_gst_widget_init (GtkGstWidget * widget)
75
 {
76
   gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget));
77
+#if defined(BUILD_FOR_GTK4)
78
+  gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget),
79
+      _drawing_area_draw, NULL, NULL);
80
+#endif
81
 }
82
 
83
 GtkWidget *
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-ext_gtk_meson.build (+119 lines)
Added Link Here
1
--- ext/gtk/meson.build.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/meson.build
3
@@ -1,3 +1,4 @@
4
+gtk_versions = [3, 4]
5
 gtk_sources = [
6
   'gstgtkbasesink.c',
7
   'gstgtksink.c',
8
@@ -6,54 +7,88 @@ gtk_sources = [
9
   'gtkgstbasewidget.c',
10
   'gtkgstwidget.c',
11
 ]
12
+gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
13
+gtk_optional_deps = []
14
 
15
-gtk_defines = []
16
-optional_deps = []
17
+gtk4_dep = dependency('gtk4', required : get_option('gtk4'))
18
+gtk4_optional_deps = []
19
 
20
-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
21
-if gtk_dep.found()
22
-  # FIXME: automagic
23
-  if have_gstgl and gtk_dep.version().version_compare('>=3.15.0')
24
-    have_gtk3_gl_windowing = false
25
+foreach gtk_ver : gtk_versions
26
+  gtkv = 'gtk' + gtk_ver.to_string()
27
 
28
+  gtk_state = get_option(gtkv)
29
+  if gtk_state.disabled()
30
+    continue
31
+  endif
32
+
33
+  min_ver = gtk_ver >= 4 ? '3.99.2'          : '3.24.0'
34
+  x11_str = gtk_ver >= 4 ? gtkv + '-x11'     : 'gtk+-x11-3.0'
35
+  way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0'
36
+  lib_dep = gtk_ver >= 4 ? gtk4_dep          : gtk_dep
37
+
38
+  if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver)
39
+    continue
40
+  endif
41
+
42
+  lib_sources = []
43
+  gtk_defines = []
44
+  optional_deps = []
45
+  have_gtk_gl_windowing = false
46
+
47
+  lib_sources += gtk_sources
48
+
49
+  if have_gstgl
50
     if gst_gl_have_window_x11 and gst_gl_have_platform_glx
51
       # FIXME: automagic
52
-      gtk_x11_dep = dependency('gtk+-x11-3.0', required : false)
53
+      gtk_x11_dep = dependency(x11_str, required : false)
54
       if gtk_x11_dep.found()
55
         optional_deps += [gtk_x11_dep, gstglx11_dep]
56
-        have_gtk3_gl_windowing = true
57
+        have_gtk_gl_windowing = true
58
       endif
59
     endif
60
 
61
     if gst_gl_have_window_wayland and gst_gl_have_platform_egl
62
       # FIXME: automagic
63
-      gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false)
64
+      gtk_wayland_dep = dependency(way_str, required : false)
65
       if gtk_wayland_dep.found()
66
         optional_deps += [gtk_wayland_dep, gstglegl_dep, gstglwayland_dep]
67
-        have_gtk3_gl_windowing = true
68
+        have_gtk_gl_windowing = true
69
       endif
70
     endif
71
+  endif
72
 
73
-    if have_gtk3_gl_windowing
74
-      gtk_sources += [
75
-        'gstgtkglsink.c',
76
-        'gtkgstglwidget.c',
77
-      ]
78
-      optional_deps += [gstgl_dep, gstglproto_dep]
79
-      gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL']
80
-    endif
81
+  if have_gtk_gl_windowing
82
+    lib_sources += [
83
+      'gstgtkglsink.c',
84
+      'gtkgstglwidget.c',
85
+    ]
86
+    optional_deps += gstgl_dep
87
+    optional_deps += gstglproto_dep
88
+    gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL']
89
   endif
90
 
91
-  gstgtk = library('gstgtk',
92
-    gtk_sources,
93
+  if gtk_ver == 3
94
+    gtk_optional_deps = optional_deps
95
+  elif gtk_ver == 4
96
+    gtk4_optional_deps = optional_deps
97
+    gtk_defines += '-DBUILD_FOR_GTK4'
98
+  endif
99
+
100
+  lib_name = 'gstgtk'
101
+  if gtk_ver > 3
102
+    lib_name += gtk_ver.to_string()
103
+  endif
104
+
105
+  gstgtk = library(lib_name,
106
+    lib_sources,
107
     c_args : gst_plugins_good_args + gtk_defines,
108
     link_args : noseh_link_args,
109
     include_directories : [configinc],
110
-    dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
111
+    dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
112
     install : true,
113
     install_dir : plugins_install_dir,
114
   )
115
   pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir)
116
   plugins += [gstgtk]
117
-endif
118
+endforeach
119
 
(-)a/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-gtk4 (-1145 lines)
Removed Link Here
1
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/767
2
3
--- ext/gtk/gstgtkbasesink.c.orig	2019-12-03 11:06:37 UTC
4
+++ ext/gtk/gstgtkbasesink.c
5
@@ -1,6 +1,7 @@
6
 /*
7
  * GStreamer
8
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
9
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
10
  *
11
  * This library is free software; you can redistribute it and/or
12
  * modify it under the terms of the GNU Library General Public
13
@@ -77,7 +78,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_
14
     G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
15
         gst_gtk_base_sink_navigation_interface_init);
16
     GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink,
17
-        "gtkbasesink", 0, "Gtk Video Sink base class"));
18
+        "gtkbasesink", 0, "GTK Video Sink base class"));
19
 
20
 
21
 static void
22
@@ -97,7 +98,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
23
   gobject_class->get_property = gst_gtk_base_sink_get_property;
24
 
25
   g_object_class_install_property (gobject_class, PROP_WIDGET,
26
-      g_param_spec_object ("widget", "Gtk Widget",
27
+      g_param_spec_object ("widget", "GTK Widget",
28
           "The GtkWidget to place in the widget hierarchy "
29
           "(must only be get from the GTK main thread)",
30
           GTK_TYPE_WIDGET, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
31
@@ -114,10 +115,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
32
           "The pixel aspect ratio of the device", DEFAULT_PAR_N, DEFAULT_PAR_D,
33
           G_MAXINT, 1, 1, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
34
 
35
+  /* Disabling alpha was removed in GTK4 */
36
+#if !defined(BUILD_FOR_GTK4)
37
   g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA,
38
       g_param_spec_boolean ("ignore-alpha", "Ignore Alpha",
39
           "When enabled, alpha will be ignored and converted to black",
40
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
41
+#endif
42
 
43
   gobject_class->finalize = gst_gtk_base_sink_finalize;
44
 
45
@@ -144,6 +148,8 @@ gst_gtk_base_sink_finalize (GObject * object)
46
 {
47
   GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object);
48
 
49
+  GST_DEBUG ("finalizing base sink");
50
+
51
   GST_OBJECT_LOCK (gtk_sink);
52
   if (gtk_sink->window && gtk_sink->window_destroy_id)
53
     g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id);
54
@@ -168,6 +174,14 @@ static void
55
 window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink)
56
 {
57
   GST_OBJECT_LOCK (gtk_sink);
58
+  if (gtk_sink->widget) {
59
+    if (gtk_sink->widget_destroy_id) {
60
+      g_signal_handler_disconnect (gtk_sink->widget,
61
+          gtk_sink->widget_destroy_id);
62
+      gtk_sink->widget_destroy_id = 0;
63
+    }
64
+    g_clear_object (&gtk_sink->widget);
65
+  }
66
   gtk_sink->window = NULL;
67
   GST_OBJECT_UNLOCK (gtk_sink);
68
 }
69
@@ -180,7 +194,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
70
 
71
   /* Ensure GTK is initialized, this has no side effect if it was already
72
    * initialized. Also, we do that lazily, so the application can be first */
73
-  if (!gtk_init_check (NULL, NULL)) {
74
+  if (!gtk_init_check (
75
+#if !defined(BUILD_FOR_GTK4)
76
+          NULL, NULL
77
+#endif
78
+      )) {
79
     GST_ERROR_OBJECT (gtk_sink, "Could not ensure GTK initialization.");
80
     return NULL;
81
   }
82
@@ -195,13 +213,16 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
83
   gtk_sink->bind_pixel_aspect_ratio =
84
       g_object_bind_property (gtk_sink, "pixel-aspect-ratio", gtk_sink->widget,
85
       "pixel-aspect-ratio", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
86
+#if !defined(BUILD_FOR_GTK4)
87
   gtk_sink->bind_ignore_alpha =
88
       g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget,
89
       "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
90
+#endif
91
 
92
   /* Take the floating ref, other wise the destruction of the container will
93
    * make this widget disapear possibly before we are done. */
94
   gst_object_ref_sink (gtk_sink->widget);
95
+
96
   gtk_sink->widget_destroy_id = g_signal_connect (gtk_sink->widget, "destroy",
97
       G_CALLBACK (widget_destroy_cb), gtk_sink);
98
 
99
@@ -311,25 +332,55 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
100
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
101
   GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink);
102
   GtkWidget *toplevel;
103
+#if defined(BUILD_FOR_GTK4)
104
+  GtkRoot *root;
105
+#endif
106
 
107
   if (gst_gtk_base_sink_get_widget (gst_sink) == NULL)
108
     return FALSE;
109
 
110
   /* After this point, gtk_sink->widget will always be set */
111
 
112
+#if defined(BUILD_FOR_GTK4)
113
+  root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget));
114
+  if (!GTK_IS_ROOT (root)) {
115
+    GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget));
116
+    if (parent) {
117
+      GtkWidget *temp_parent;
118
+      while ((temp_parent = gtk_widget_get_parent (parent)))
119
+        parent = temp_parent;
120
+    }
121
+    toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget);
122
+#else
123
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget));
124
   if (!gtk_widget_is_toplevel (toplevel)) {
125
+#endif
126
     /* sanity check */
127
     g_assert (klass->window_title);
128
 
129
     /* User did not add widget its own UI, let's popup a new GtkWindow to
130
      * make gst-launch-1.0 work. */
131
-    gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
132
+    gst_sink->window = gtk_window_new (
133
+#if !defined(BUILD_FOR_GTK4)
134
+        GTK_WINDOW_TOPLEVEL
135
+#endif
136
+        );
137
     gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480);
138
     gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title);
139
-    gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel);
140
-    gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy",
141
-        G_CALLBACK (window_destroy_cb), gst_sink);
142
+#if defined(BUILD_FOR_GTK4)
143
+    gtk_window_set_child (GTK_WINDOW (
144
+#else
145
+    gtk_container_add (GTK_CONTAINER (
146
+#endif
147
+            gst_sink->window), toplevel);
148
+
149
+    gst_sink->window_destroy_id = g_signal_connect (
150
+#if defined(BUILD_FOR_GTK4)
151
+        GTK_WINDOW (gst_sink->window),
152
+#else
153
+        gst_sink->window,
154
+#endif
155
+        "destroy", G_CALLBACK (window_destroy_cb), gst_sink);
156
   }
157
 
158
   return TRUE;
159
@@ -348,7 +399,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink)
160
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
161
 
162
   if (gst_sink->window) {
163
+#if defined(BUILD_FOR_GTK4)
164
+    gtk_window_destroy (GTK_WINDOW (gst_sink->window));
165
+#else
166
     gtk_widget_destroy (gst_sink->window);
167
+#endif
168
     gst_sink->window = NULL;
169
     gst_sink->widget = NULL;
170
   }
171
@@ -369,10 +424,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink)
172
 }
173
 
174
 static void
175
-gst_gtk_widget_show_all_and_unref (GtkWidget * widget)
176
+gst_gtk_window_show_all_and_unref (GtkWidget * window)
177
 {
178
-  gtk_widget_show_all (widget);
179
-  g_object_unref (widget);
180
+#if defined(BUILD_FOR_GTK4)
181
+  gtk_window_present (GTK_WINDOW (window));
182
+#else
183
+  gtk_widget_show_all (window);
184
+#endif
185
+  g_object_unref (window);
186
 }
187
 
188
 static GstStateChangeReturn
189
@@ -400,7 +459,7 @@ gst_gtk_base_sink_change_state (GstElement * element, 
190
       GST_OBJECT_UNLOCK (gtk_sink);
191
 
192
       if (window)
193
-        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref,
194
+        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref,
195
             window);
196
 
197
       break;
198
--- ext/gtk/gstgtkbasesink.h.orig	2019-12-03 11:06:37 UTC
199
+++ ext/gtk/gstgtkbasesink.h
200
@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void);
201
 struct _GstGtkBaseSink
202
 {
203
   /* <private> */
204
-  GstVideoSink         parent;
205
+  GstVideoSink          parent;
206
 
207
-  GstVideoInfo         v_info;
208
+  GstVideoInfo          v_info;
209
 
210
   GtkGstBaseWidget     *widget;
211
 
212
   /* properties */
213
-  gboolean             force_aspect_ratio;
214
+  gboolean              force_aspect_ratio;
215
   GBinding             *bind_aspect_ratio;
216
 
217
   gint                  par_n;
218
@@ -69,8 +69,8 @@ struct _GstGtkBaseSink
219
   GBinding             *bind_ignore_alpha;
220
 
221
   GtkWidget            *window;
222
-  gulong               widget_destroy_id;
223
-  gulong               window_destroy_id;
224
+  gulong                widget_destroy_id;
225
+  gulong                window_destroy_id;
226
 };
227
 
228
 /**
229
--- ext/gtk/gstgtkglsink.c.orig	2019-12-03 11:06:37 UTC
230
+++ ext/gtk/gstgtkglsink.c
231
@@ -1,6 +1,7 @@
232
 /*
233
  * GStreamer
234
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
235
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
236
  *
237
  * This library is free software; you can redistribute it and/or
238
  * modify it under the terms of the GNU Library General Public
239
@@ -23,12 +24,18 @@
240
  * @title: gtkglsink
241
  */
242
 
243
+/**
244
+ * SECTION:element-gtk4glsink
245
+ * @title: gtk4glsink
246
+ */
247
+
248
 #ifdef HAVE_CONFIG_H
249
 #include "config.h"
250
 #endif
251
 
252
 #include <gst/gl/gstglfuncs.h>
253
 
254
+#include "gtkconfig.h"
255
 #include "gstgtkglsink.h"
256
 #include "gtkgstglwidget.h"
257
 
258
@@ -58,7 +65,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template =
259
 #define gst_gtk_gl_sink_parent_class parent_class
260
 G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink,
261
     GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink,
262
-        "gtkglsink", 0, "Gtk GL Video Sink"));
263
+        GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink"));
264
 
265
 static void
266
 gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
267
@@ -82,11 +89,13 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
268
   gstbasesink_class->get_caps = gst_gtk_gl_sink_get_caps;
269
 
270
   gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new;
271
-  gstgtkbasesink_class->window_title = "Gtk+ GL renderer";
272
+  gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer";
273
 
274
-  gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink",
275
+  gst_element_class_set_metadata (gstelement_class,
276
+      GTKCONFIG_NAME " GL Video Sink",
277
       "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL",
278
-      "Matthew Waters <matthew@centricular.com>");
279
+      "Matthew Waters <matthew@centricular.com>, "
280
+      "Rafał Dzięgiel <rafostar.github@gmail.com>");
281
 
282
   gst_element_class_add_static_pad_template (gstelement_class,
283
       &gst_gtk_gl_sink_template);
284
@@ -120,16 +129,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery *
285
 }
286
 
287
 static void
288
-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle,
289
-    GstGtkGLSink * gtk_sink)
290
+_size_changed_cb (GtkWidget * widget, gint width,
291
+    gint height, GstGtkGLSink * gtk_sink)
292
 {
293
-  gint scale_factor, width, height;
294
   gboolean reconfigure;
295
 
296
-  scale_factor = gtk_widget_get_scale_factor (widget);
297
-  width = scale_factor * gtk_widget_get_allocated_width (widget);
298
-  height = scale_factor * gtk_widget_get_allocated_height (widget);
299
+  GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
300
 
301
+  /* Ignore size changes before widget is negotiated
302
+   * we are going to queue a resize after negotiation */
303
+  if (!base_widget->negotiated)
304
+    return;
305
+
306
   GST_OBJECT_LOCK (gtk_sink);
307
   reconfigure =
308
       (width != gtk_sink->display_width || height != gtk_sink->display_height);
309
@@ -138,7 +149,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
310
   GST_OBJECT_UNLOCK (gtk_sink);
311
 
312
   if (reconfigure) {
313
-    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad.");
314
+    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad");
315
     gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad,
316
         gst_event_new_reconfigure ());
317
   }
318
@@ -147,9 +158,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
319
 static void
320
 destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink)
321
 {
322
-  if (gtk_sink->size_allocate_sig_handler) {
323
-    g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler);
324
-    gtk_sink->size_allocate_sig_handler = 0;
325
+  if (gtk_sink->widget_resize_sig_handler) {
326
+    g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler);
327
+    gtk_sink->widget_resize_sig_handler = 0;
328
   }
329
 
330
   if (gtk_sink->widget_destroy_sig_handler) {
331
@@ -172,29 +183,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink)
332
   gst_widget = GTK_GST_GL_WIDGET (base_sink->widget);
333
 
334
   /* Track the allocation size */
335
-  gtk_sink->size_allocate_sig_handler =
336
-      g_signal_connect (gst_widget, "size-allocate",
337
-      G_CALLBACK (_size_changed_cb), gtk_sink);
338
+  if (!gtk_sink->widget_resize_sig_handler) {
339
+    gtk_sink->widget_resize_sig_handler =
340
+        g_signal_connect (gst_widget, "resize",
341
+        G_CALLBACK (_size_changed_cb), gtk_sink);
342
+  }
343
 
344
-  gtk_sink->widget_destroy_sig_handler =
345
-      g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
346
-      gtk_sink);
347
+  if (!gtk_sink->widget_destroy_sig_handler) {
348
+    gtk_sink->widget_destroy_sig_handler =
349
+        g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
350
+        gtk_sink);
351
+  }
352
 
353
-  _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink);
354
-
355
   if (!gtk_gst_gl_widget_init_winsys (gst_widget)) {
356
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
357
-            "Failed to initialize OpenGL with Gtk"), (NULL));
358
+            "Failed to initialize OpenGL with GTK"), (NULL));
359
     return FALSE;
360
   }
361
 
362
-  gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
363
-  gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
364
-  gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
365
+  if (!gtk_sink->display)
366
+    gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
367
+  if (!gtk_sink->context)
368
+    gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
369
+  if (!gtk_sink->gtk_context)
370
+    gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
371
 
372
   if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) {
373
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
374
-            "Failed to retrieve OpenGL context from Gtk"), (NULL));
375
+            "Failed to retrieve OpenGL context from GTK"), (NULL));
376
     return FALSE;
377
   }
378
 
379
@@ -208,7 +224,14 @@ static gboolean
380
 gst_gtk_gl_sink_stop (GstBaseSink * bsink)
381
 {
382
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink);
383
+  GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink);
384
 
385
+  if (gtk_sink->widget_resize_sig_handler) {
386
+    g_signal_handler_disconnect (base_sink->widget,
387
+        gtk_sink->widget_resize_sig_handler);
388
+    gtk_sink->widget_resize_sig_handler = 0;
389
+  }
390
+
391
   if (gtk_sink->display) {
392
     gst_object_unref (gtk_sink->display);
393
     gtk_sink->display = NULL;
394
@@ -348,10 +371,10 @@ gst_gtk_gl_sink_finalize (GObject * object)
395
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object);
396
   GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object);
397
 
398
-  if (gtk_sink->size_allocate_sig_handler) {
399
+  if (gtk_sink->widget_resize_sig_handler) {
400
     g_signal_handler_disconnect (base_sink->widget,
401
-        gtk_sink->size_allocate_sig_handler);
402
-    gtk_sink->size_allocate_sig_handler = 0;
403
+        gtk_sink->widget_resize_sig_handler);
404
+    gtk_sink->widget_resize_sig_handler = 0;
405
   }
406
 
407
   if (gtk_sink->widget_destroy_sig_handler) {
408
--- ext/gtk/gstgtkglsink.h.orig	2019-12-03 11:06:37 UTC
409
+++ ext/gtk/gstgtkglsink.h
410
@@ -65,7 +65,7 @@ struct _GstGtkGLSink
411
   gint                  display_width;
412
   gint                  display_height;
413
 
414
-  gulong                size_allocate_sig_handler;
415
+  gulong                widget_resize_sig_handler;
416
   gulong                widget_destroy_sig_handler;
417
 };
418
 
419
--- ext/gtk/gstgtksink.c.orig	2019-12-03 11:06:37 UTC
420
+++ ext/gtk/gstgtksink.c
421
@@ -19,15 +19,22 @@
422
  */
423
 
424
 /**
425
- * SECTION:element-gtkgstsink
426
- * @title: gtkgstsink
427
+ * SECTION:element-gtksink
428
+ * @title: gtksink
429
  *
430
  */
431
 
432
+/**
433
+ * SECTION:element-gtk4sink
434
+ * @title: gtk4sink
435
+ *
436
+ */
437
+
438
 #ifdef HAVE_CONFIG_H
439
 #include "config.h"
440
 #endif
441
 
442
+#include "gtkconfig.h"
443
 #include "gtkgstwidget.h"
444
 #include "gstgtksink.h"
445
 
446
@@ -49,8 +56,8 @@ GST_STATIC_PAD_TEMPLATE ("sink",
447
 
448
 #define gst_gtk_sink_parent_class parent_class
449
 G_DEFINE_TYPE_WITH_CODE (GstGtkSink, gst_gtk_sink, GST_TYPE_GTK_BASE_SINK,
450
-    GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, "gtksink", 0,
451
-        "Gtk Video Sink"));
452
+    GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_sink, GTKCONFIG_SINK, 0,
453
+        GTKCONFIG_NAME " Video Sink"));
454
 
455
 static void
456
 gst_gtk_sink_class_init (GstGtkSinkClass * klass)
457
@@ -62,9 +69,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass)
458
   base_class = (GstGtkBaseSinkClass *) klass;
459
 
460
   base_class->create_widget = gtk_gst_widget_new;
461
-  base_class->window_title = "Gtk+ Cairo renderer";
462
+  base_class->window_title = GTKCONFIG_NAME " Cairo Renderer";
463
 
464
-  gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink",
465
+  gst_element_class_set_metadata (gstelement_class,
466
+      GTKCONFIG_NAME " Video Sink",
467
       "Sink/Video", "A video sink that renders to a GtkWidget",
468
       "Matthew Waters <matthew@centricular.com>");
469
 
470
--- ext/gtk/gstplugin.c.orig	2019-12-03 11:06:37 UTC
471
+++ ext/gtk/gstplugin.c
472
@@ -1,6 +1,7 @@
473
 /*
474
  * GStreamer
475
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
476
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
477
  *
478
  * This library is free software; you can redistribute it and/or
479
  * modify it under the terms of the GNU Library General Public
480
@@ -22,31 +23,31 @@
481
 #include "config.h"
482
 #endif
483
 
484
+#include "gtkconfig.h"
485
 #include "gstgtksink.h"
486
-#if defined(HAVE_GTK3_GL)
487
+
488
+#if defined(HAVE_GTK_GL)
489
 #include "gstgtkglsink.h"
490
 #endif
491
 
492
 static gboolean
493
 plugin_init (GstPlugin * plugin)
494
 {
495
-  if (!gst_element_register (plugin, "gtksink",
496
+  if (!gst_element_register (plugin, GTKCONFIG_SINK,
497
           GST_RANK_NONE, GST_TYPE_GTK_SINK)) {
498
     return FALSE;
499
   }
500
-#if defined(HAVE_GTK3_GL)
501
-  if (!gst_element_register (plugin, "gtkglsink",
502
+#if defined(HAVE_GTK_GL)
503
+  if (!gst_element_register (plugin, GTKCONFIG_GLSINK,
504
           GST_RANK_NONE, GST_TYPE_GTK_GL_SINK)) {
505
     return FALSE;
506
   }
507
 #endif
508
-
509
   return TRUE;
510
 }
511
 
512
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
513
     GST_VERSION_MINOR,
514
-    gtk,
515
-    "Gtk+ sink",
516
+    GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink",
517
     plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME,
518
     GST_PACKAGE_ORIGIN)
519
--- ext/gtk/gtkconfig.h.orig	2021-08-23 11:11:05 UTC
520
+++ ext/gtk/gtkconfig.h
521
@@ -0,0 +1,31 @@
522
+/*
523
+ * GStreamer
524
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
525
+ *
526
+ * This library is free software; you can redistribute it and/or
527
+ * modify it under the terms of the GNU Library General Public
528
+ * License as published by the Free Software Foundation; either
529
+ * version 2 of the License, or (at your option) any later version.
530
+ *
531
+ * This library is distributed in the hope that it will be useful,
532
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
533
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
534
+ * Library General Public License for more details.
535
+ *
536
+ * You should have received a copy of the GNU Library General Public
537
+ * License along with this library; if not, write to the
538
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
539
+ * Boston, MA 02110-1301, USA.
540
+ */
541
+
542
+#if defined(BUILD_FOR_GTK4)
543
+#define GTKCONFIG_PLUGIN gtk4
544
+#define GTKCONFIG_NAME "GTK4"
545
+#define GTKCONFIG_SINK "gtk4sink"
546
+#define GTKCONFIG_GLSINK "gtk4glsink"
547
+#else
548
+#define GTKCONFIG_PLUGIN gtk
549
+#define GTKCONFIG_NAME "GTK"
550
+#define GTKCONFIG_SINK "gtksink"
551
+#define GTKCONFIG_GLSINK "gtkglsink"
552
+#endif
553
--- ext/gtk/gtkgstbasewidget.c.orig	2019-12-03 11:06:37 UTC
554
+++ ext/gtk/gtkgstbasewidget.c
555
@@ -1,6 +1,7 @@
556
 /*
557
  * GStreamer
558
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
559
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
560
  *
561
  * This library is free software; you can redistribute it and/or
562
  * modify it under the terms of the GNU Library General Public
563
@@ -74,7 +75,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * 
564
     *natural = video_height;
565
 }
566
 
567
+#if defined(BUILD_FOR_GTK4)
568
 static void
569
+gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation,
570
+    gint for_size, gint * min, gint * natural,
571
+    gint * minimum_baseline, gint * natural_baseline)
572
+{
573
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
574
+    gtk_gst_base_widget_get_preferred_width (widget, min, natural);
575
+  else
576
+    gtk_gst_base_widget_get_preferred_height (widget, min, natural);
577
+
578
+  *minimum_baseline = -1;
579
+  *natural_baseline = -1;
580
+}
581
+#endif
582
+
583
+static void
584
 gtk_gst_base_widget_set_property (GObject * object, guint prop_id,
585
     const GValue * value, GParamSpec * pspec)
586
 {
587
@@ -235,22 +252,46 @@ _gdk_key_to_navigation_string (guint keyval)
588
   }
589
 }
590
 
591
+static GdkEvent *
592
+_get_current_event (GtkEventController * controller)
593
+{
594
+#if defined(BUILD_FOR_GTK4)
595
+  return gtk_event_controller_get_current_event (controller);
596
+#else
597
+  return gtk_get_current_event ();
598
+#endif
599
+}
600
+
601
+static void
602
+_gdk_event_free (GdkEvent * event)
603
+{
604
+#if !defined(BUILD_FOR_GTK4)
605
+  if (event)
606
+    gdk_event_free (event);
607
+#endif
608
+}
609
+
610
 static gboolean
611
-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event)
612
+gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller,
613
+    guint keyval, guint keycode, GdkModifierType state)
614
 {
615
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller);
616
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
617
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
618
   GstElement *element;
619
 
620
   if ((element = g_weak_ref_get (&base_widget->element))) {
621
     if (GST_IS_NAVIGATION (element)) {
622
-      const gchar *str = _gdk_key_to_navigation_string (event->keyval);
623
-      const gchar *key_type =
624
-          event->type == GDK_KEY_PRESS ? "key-press" : "key-release";
625
+      GdkEvent *event = _get_current_event (controller);
626
+      const gchar *str = _gdk_key_to_navigation_string (keyval);
627
 
628
-      if (!str)
629
-        str = event->string;
630
-
631
-      gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
632
+      if (str) {
633
+        const gchar *key_type =
634
+            gdk_event_get_event_type (event) ==
635
+            GDK_KEY_PRESS ? "key-press" : "key-release";
636
+        gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
637
+      }
638
+      _gdk_event_free (event);
639
     }
640
     g_object_unref (element);
641
   }
642
@@ -325,22 +366,43 @@ _display_size_to_stream_size (GtkGstBaseWidget * base_
643
 }
644
 
645
 static gboolean
646
-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event)
647
+gtk_gst_base_widget_button_event (
648
+#if defined(BUILD_FOR_GTK4)
649
+    GtkGestureClick * gesture,
650
+#else
651
+    GtkGestureMultiPress * gesture,
652
+#endif
653
+    gint n_press, gdouble x, gdouble y)
654
 {
655
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture);
656
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
657
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
658
   GstElement *element;
659
 
660
   if ((element = g_weak_ref_get (&base_widget->element))) {
661
     if (GST_IS_NAVIGATION (element)) {
662
+      GdkEvent *event = _get_current_event (controller);
663
       const gchar *key_type =
664
-          event->type ==
665
-          GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release";
666
-      gdouble x, y;
667
+          gdk_event_get_event_type (event) == GDK_BUTTON_PRESS
668
+          ? "mouse-button-press" : "mouse-button-release";
669
+      gdouble stream_x, stream_y;
670
+#if !defined(BUILD_FOR_GTK4)
671
+      guint button;
672
+      gdk_event_get_button (event, &button);
673
+#endif
674
 
675
-      _display_size_to_stream_size (base_widget, event->x, event->y, &x, &y);
676
+      _display_size_to_stream_size (base_widget, x, y, &stream_x, &stream_y);
677
 
678
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type,
679
-          event->button, x, y);
680
+#if defined(BUILD_FOR_GTK4)
681
+          /* Gesture is set to ignore other buttons so we do not have to check */
682
+          GDK_BUTTON_PRIMARY,
683
+#else
684
+          button,
685
+#endif
686
+          stream_x, stream_y);
687
+
688
+      _gdk_event_free (event);
689
     }
690
     g_object_unref (element);
691
   }
692
@@ -349,19 +411,22 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, 
693
 }
694
 
695
 static gboolean
696
-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event)
697
+gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller,
698
+    gdouble x, gdouble y)
699
 {
700
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller);
701
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
702
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
703
   GstElement *element;
704
 
705
   if ((element = g_weak_ref_get (&base_widget->element))) {
706
     if (GST_IS_NAVIGATION (element)) {
707
-      gdouble x, y;
708
+      gdouble stream_x, stream_y;
709
 
710
-      _display_size_to_stream_size (base_widget, event->x, event->y, &x, &y);
711
+      _display_size_to_stream_size (base_widget, x, y, &stream_x, &stream_y);
712
 
713
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move",
714
-          0, x, y);
715
+          0, stream_x, stream_y);
716
     }
717
     g_object_unref (element);
718
   }
719
@@ -395,23 +460,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass 
720
           "When enabled, alpha will be ignored and converted to black",
721
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
722
 
723
+#if defined(BUILD_FOR_GTK4)
724
+  widget_klass->measure = gtk_gst_base_widget_measure;
725
+#else
726
   widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width;
727
   widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height;
728
-  widget_klass->key_press_event = gtk_gst_base_widget_key_event;
729
-  widget_klass->key_release_event = gtk_gst_base_widget_key_event;
730
-  widget_klass->button_press_event = gtk_gst_base_widget_button_event;
731
-  widget_klass->button_release_event = gtk_gst_base_widget_button_event;
732
-  widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event;
733
+#endif
734
 
735
   GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0,
736
-      "Gtk Video Base Widget");
737
+      "GTK Video Base Widget");
738
 }
739
 
740
 void
741
 gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
742
 {
743
-  int event_mask;
744
-
745
   widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO;
746
   widget->par_n = DEFAULT_PAR_N;
747
   widget->par_d = DEFAULT_PAR_D;
748
@@ -423,20 +485,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
749
   g_weak_ref_init (&widget->element, NULL);
750
   g_mutex_init (&widget->lock);
751
 
752
+  widget->key_controller = gtk_event_controller_key_new (
753
+#if !defined(BUILD_FOR_GTK4)
754
+      GTK_WIDGET (widget)
755
+#endif
756
+      );
757
+  g_signal_connect (widget->key_controller, "key-pressed",
758
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
759
+  g_signal_connect (widget->key_controller, "key-released",
760
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
761
+
762
+  widget->motion_controller = gtk_event_controller_motion_new (
763
+#if !defined(BUILD_FOR_GTK4)
764
+      GTK_WIDGET (widget)
765
+#endif
766
+      );
767
+  g_signal_connect (widget->motion_controller, "motion",
768
+      G_CALLBACK (gtk_gst_base_widget_motion_event), NULL);
769
+
770
+  widget->click_gesture =
771
+#if defined(BUILD_FOR_GTK4)
772
+      gtk_gesture_click_new ();
773
+#else
774
+      gtk_gesture_multi_press_new (GTK_WIDGET (widget));
775
+#endif
776
+  g_signal_connect (widget->click_gesture, "pressed",
777
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
778
+  g_signal_connect (widget->click_gesture, "released",
779
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
780
+
781
+#if defined(BUILD_FOR_GTK4)
782
+  /* Otherwise widget in grid will appear as a 1x1px
783
+   * video which might be misleading for users */
784
+  gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE);
785
+  gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE);
786
+
787
+  gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE);
788
+  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture),
789
+      GDK_BUTTON_PRIMARY);
790
+
791
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller);
792
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller);
793
+  gtk_widget_add_controller (GTK_WIDGET (widget),
794
+      GTK_EVENT_CONTROLLER (widget->click_gesture));
795
+#endif
796
+
797
   gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE);
798
-  event_mask = gtk_widget_get_events (GTK_WIDGET (widget));
799
-  event_mask |= GDK_KEY_PRESS_MASK
800
-      | GDK_KEY_RELEASE_MASK
801
-      | GDK_BUTTON_PRESS_MASK
802
-      | GDK_BUTTON_RELEASE_MASK
803
-      | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK;
804
-  gtk_widget_set_events (GTK_WIDGET (widget), event_mask);
805
 }
806
 
807
 void
808
 gtk_gst_base_widget_finalize (GObject * object)
809
 {
810
   GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object);
811
+
812
+  /* GTK4 takes ownership of EventControllers
813
+   * while GTK3 still needs manual unref */
814
+#if !defined(BUILD_FOR_GTK4)
815
+  g_object_unref (widget->key_controller);
816
+  g_object_unref (widget->motion_controller);
817
+  g_object_unref (widget->click_gesture);
818
+#endif
819
 
820
   gst_buffer_replace (&widget->pending_buffer, NULL);
821
   gst_buffer_replace (&widget->buffer, NULL);
822
--- ext/gtk/gtkgstbasewidget.h.orig	2019-12-03 11:06:37 UTC
823
+++ ext/gtk/gtkgstbasewidget.h
824
@@ -1,6 +1,7 @@
825
 /*
826
  * GStreamer
827
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
828
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
829
  *
830
  * This library is free software; you can redistribute it and/or
831
  * modify it under the terms of the GNU Library General Public
832
@@ -25,6 +26,10 @@
833
 #include <gst/gst.h>
834
 #include <gst/video/video.h>
835
 
836
+#if !defined(BUILD_FOR_GTK4)
837
+#include <gdk/gdk.h>
838
+#endif
839
+
840
 #define GTK_GST_BASE_WIDGET(w)         ((GtkGstBaseWidget *)(w))
841
 #define GTK_GST_BASE_WIDGET_CLASS(k)   ((GtkGstBaseWidgetClass *)(k))
842
 #define GTK_GST_BASE_WIDGET_LOCK(w)    g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock)
843
@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget
844
 {
845
   union {
846
     GtkDrawingArea drawing_area;
847
-#if GTK_CHECK_VERSION(3, 15, 0)
848
     GtkGLArea gl_area;
849
-#endif
850
   } parent;
851
 
852
   /* properties */
853
@@ -67,6 +70,11 @@ struct _GtkGstBaseWidget
854
   GMutex lock;
855
   GWeakRef element;
856
 
857
+  /* event controllers */
858
+  GtkEventController *key_controller;
859
+  GtkEventController *motion_controller;
860
+  GtkGesture *click_gesture;
861
+
862
   /* Pending draw idles callback */
863
   guint draw_id;
864
 };
865
@@ -75,9 +83,7 @@ struct _GtkGstBaseWidgetClass
866
 {
867
   union {
868
     GtkDrawingAreaClass drawing_area_class;
869
-#if GTK_CHECK_VERSION(3, 15, 0)
870
     GtkGLAreaClass gl_area_class;
871
-#endif
872
   } parent_class;
873
 };
874
 
875
--- ext/gtk/gtkgstglwidget.c.orig	2019-12-03 11:06:37 UTC
876
+++ ext/gtk/gtkgstglwidget.c
877
@@ -1,6 +1,7 @@
878
 /*
879
  * GStreamer
880
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
881
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
882
  *
883
  * This library is free software; you can redistribute it and/or
884
  * modify it under the terms of the GNU Library General Public
885
@@ -30,12 +31,20 @@
886
 #include <gst/video/video.h>
887
 
888
 #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11)
889
+#if defined(BUILD_FOR_GTK4)
890
+#include <gdk/x11/gdkx.h>
891
+#else
892
 #include <gdk/gdkx.h>
893
+#endif
894
 #include <gst/gl/x11/gstgldisplay_x11.h>
895
 #endif
896
 
897
 #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
898
+#if defined(BUILD_FOR_GTK4)
899
+#include <gdk/wayland/gdkwayland.h>
900
+#else
901
 #include <gdk/gdkwayland.h>
902
+#endif
903
 #include <gst/gl/wayland/gstgldisplay_wayland.h>
904
 #endif
905
 
906
@@ -78,8 +87,7 @@ static const GLfloat vertices[] = {
907
 G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA,
908
     G_ADD_PRIVATE (GtkGstGLWidget)
909
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0,
910
-        "Gtk Gst GL Widget");
911
-    );
912
+        "GTK Gst GL Widget"));
913
 
914
 static void
915
 gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget)
916
@@ -407,8 +415,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget)
917
 
918
   GST_INFO ("Created %" GST_PTR_FORMAT, priv->display);
919
 
920
+  /* GTK4 always has alpha */
921
+#if !defined(BUILD_FOR_GTK4)
922
   gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget),
923
       !base_widget->ignore_alpha);
924
+#endif
925
 }
926
 
927
 static void
928
--- ext/gtk/gtkgstwidget.c.orig	2019-12-03 11:06:37 UTC
929
+++ ext/gtk/gtkgstwidget.c
930
@@ -38,17 +38,15 @@
931
 
932
 G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA);
933
 
934
-static gboolean
935
-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
936
+static void
937
+_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr,
938
+    gint widget_width, gint widget_height, gpointer data)
939
 {
940
+  GtkWidget *widget = GTK_WIDGET (da);
941
   GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget;
942
-  guint widget_width, widget_height;
943
   cairo_surface_t *surface;
944
   GstVideoFrame frame;
945
 
946
-  widget_width = gtk_widget_get_allocated_width (widget);
947
-  widget_height = gtk_widget_get_allocated_height (widget);
948
-
949
   GTK_GST_BASE_WIDGET_LOCK (gst_widget);
950
 
951
   /* There is not much to optimize in term of redisplay, so simply swap the
952
@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
953
       color.alpha = 1.0;
954
     } else {
955
       gtk_style_context_get_color (gtk_widget_get_style_context (widget),
956
-          GTK_STATE_FLAG_NORMAL, &color);
957
+#if !defined(BUILD_FOR_GTK4)
958
+          GTK_STATE_FLAG_NORMAL,
959
+#endif
960
+          &color);
961
     }
962
     gdk_cairo_set_source_rgba (cr, &color);
963
     cairo_rectangle (cr, 0, 0, widget_width, widget_height);
964
@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
965
   }
966
 
967
   GTK_GST_BASE_WIDGET_UNLOCK (gst_widget);
968
+}
969
+
970
+#if !defined(BUILD_FOR_GTK4)
971
+static gboolean
972
+gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
973
+{
974
+  gint width = gtk_widget_get_allocated_width (widget);
975
+  gint height = gtk_widget_get_allocated_height (widget);
976
+
977
+  _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL);
978
+
979
   return FALSE;
980
 }
981
+#endif
982
 
983
 static void
984
 gtk_gst_widget_finalize (GObject * object)
985
@@ -171,17 +184,25 @@ static void
986
 gtk_gst_widget_class_init (GtkGstWidgetClass * klass)
987
 {
988
   GObjectClass *gobject_klass = (GObjectClass *) klass;
989
+#if !defined(BUILD_FOR_GTK4)
990
   GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass;
991
+#endif
992
 
993
   gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass));
994
   gobject_klass->finalize = gtk_gst_widget_finalize;
995
+#if !defined(BUILD_FOR_GTK4)
996
   widget_klass->draw = gtk_gst_widget_draw;
997
+#endif
998
 }
999
 
1000
 static void
1001
 gtk_gst_widget_init (GtkGstWidget * widget)
1002
 {
1003
   gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget));
1004
+#if defined(BUILD_FOR_GTK4)
1005
+  gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget),
1006
+      _drawing_area_draw, NULL, NULL);
1007
+#endif
1008
 }
1009
 
1010
 GtkWidget *
1011
--- ext/gtk/meson.build.orig	2019-12-03 11:06:37 UTC
1012
+++ ext/gtk/meson.build
1013
@@ -1,3 +1,4 @@
1014
+gtk_versions = [3, 4]
1015
 gtk_sources = [
1016
   'gstgtkbasesink.c',
1017
   'gstgtksink.c',
1018
@@ -6,52 +7,86 @@ gtk_sources = [
1019
   'gtkgstbasewidget.c',
1020
   'gtkgstwidget.c',
1021
 ]
1022
+gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
1023
+gtk_optional_deps = []
1024
 
1025
-gtk_defines = []
1026
-optional_deps = []
1027
+gtk4_dep = dependency('gtk4', required : get_option('gtk4'))
1028
+gtk4_optional_deps = []
1029
 
1030
-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
1031
-if gtk_dep.found()
1032
-  if build_gstgl and gstgl_dep.found() and gtk_dep.version().version_compare('>=3.15.0')
1033
-    have_gtk3_gl_windowing = false
1034
+foreach gtk_ver : gtk_versions
1035
+  gtkv = 'gtk' + gtk_ver.to_string()
1036
 
1037
+  gtk_state = get_option(gtkv)
1038
+  if gtk_state.disabled()
1039
+    continue
1040
+  endif
1041
+
1042
+  min_ver = gtk_ver >= 4 ? '3.99.2'          : '3.24.0'
1043
+  x11_str = gtk_ver >= 4 ? gtkv + '-x11'     : 'gtk+-x11-3.0'
1044
+  way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0'
1045
+  lib_dep = gtk_ver >= 4 ? gtk4_dep          : gtk_dep
1046
+
1047
+  if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver)
1048
+    continue
1049
+  endif
1050
+
1051
+  lib_sources = []
1052
+  gtk_defines = []
1053
+  optional_deps = []
1054
+  have_gtk_gl_windowing = false
1055
+
1056
+  lib_sources += gtk_sources
1057
+
1058
+  if build_gstgl
1059
     if gst_gl_have_window_x11 and gst_gl_have_platform_glx
1060
       # FIXME: automagic
1061
-      gtk_x11_dep = dependency('gtk+-x11-3.0', required : false)
1062
+      gtk_x11_dep = dependency(x11_str, required : false)
1063
       if gtk_x11_dep.found()
1064
         optional_deps += gtk_x11_dep
1065
-        have_gtk3_gl_windowing = true
1066
+        have_gtk_gl_windowing = true
1067
       endif
1068
     endif
1069
 
1070
     if gst_gl_have_window_wayland and gst_gl_have_platform_egl
1071
       # FIXME: automagic
1072
-      gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false)
1073
+      gtk_wayland_dep = dependency(way_str, required : false)
1074
       if gtk_wayland_dep.found()
1075
         optional_deps += gtk_wayland_dep
1076
-        have_gtk3_gl_windowing = true
1077
+        have_gtk_gl_windowing = true
1078
       endif
1079
     endif
1080
+  endif
1081
 
1082
-    if have_gtk3_gl_windowing
1083
-      gtk_sources += [
1084
-        'gstgtkglsink.c',
1085
-        'gtkgstglwidget.c',
1086
-      ]
1087
-      optional_deps += gstgl_dep
1088
-      gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL']
1089
-    endif
1090
+  if have_gtk_gl_windowing
1091
+    lib_sources += [
1092
+      'gstgtkglsink.c',
1093
+      'gtkgstglwidget.c',
1094
+    ]
1095
+    optional_deps += gstgl_dep
1096
+    gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL']
1097
   endif
1098
 
1099
-  gstgtk = library('gstgtk',
1100
-    gtk_sources,
1101
+  if gtk_ver == 3
1102
+    gtk_optional_deps = optional_deps
1103
+  elif gtk_ver == 4
1104
+    gtk4_optional_deps = optional_deps
1105
+    gtk_defines += '-DBUILD_FOR_GTK4'
1106
+  endif
1107
+
1108
+  lib_name = 'gstgtk'
1109
+  if gtk_ver > 3
1110
+    lib_name += gtk_ver.to_string()
1111
+  endif
1112
+
1113
+  gstgtk = library(lib_name,
1114
+    lib_sources,
1115
     c_args : gst_plugins_good_args + gtk_defines,
1116
     link_args : noseh_link_args,
1117
     include_directories : [configinc],
1118
-    dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
1119
+    dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
1120
     install : true,
1121
     install_dir : plugins_install_dir,
1122
   )
1123
   pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir)
1124
-endif
1125
+endforeach
1126
 
1127
--- meson_options.txt.orig	2019-12-03 11:06:37 UTC
1128
+++ meson_options.txt
1129
@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', des
1130
 option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin')
1131
 option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin')
1132
 option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin')
1133
+option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin')
1134
 option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin')
1135
 option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin')
1136
 option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin')
1137
--- tests/examples/gtk/meson.build.orig	2019-12-03 11:06:37 UTC
1138
+++ tests/examples/gtk/meson.build
1139
@@ -1,5 +1,5 @@
1140
 executable('gtksink', 'gtksink.c',
1141
-  dependencies: [gst_dep, gtk_dep, optional_deps],
1142
+  dependencies: [gst_dep, gtk_dep, gtk_optional_deps],
1143
   c_args: gst_plugins_good_args,
1144
   include_directories: [configinc],
1145
   install: false)
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-meson__options.txt (+10 lines)
Added Link Here
1
--- meson_options.txt.orig	2019-12-03 11:06:37 UTC
2
+++ meson_options.txt
3
@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', des
4
 option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin')
5
 option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin')
6
 option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin')
7
+option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin')
8
 option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin')
9
 option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin')
10
 option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin')
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files/patch-tests_examples_gtk_meson.build (+9 lines)
Added Link Here
1
--- tests/examples/gtk/meson.build.orig	2019-12-03 11:06:37 UTC
2
+++ tests/examples/gtk/meson.build
3
@@ -1,5 +1,5 @@
4
 executable('gtksink', 'gtksink.c',
5
-  dependencies: [gst_dep, gtk_dep, optional_deps],
6
+  dependencies: [gst_dep, gtk_dep, gtk_optional_deps],
7
   c_args: gst_plugins_good_args,
8
   include_directories: [configinc],
9
   install: false)
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-docs_gst__plugins__cache.json (+161 lines)
Added Link Here
1
--- docs/gst_plugins_cache.json.orig	2022-06-15 22:36:22 UTC
2
+++ docs/gst_plugins_cache.json
3
@@ -7087,10 +7087,10 @@
4
         "url": "Unknown package origin"
5
     },
6
     "gtk": {
7
-        "description": "Gtk+ sink",
8
+        "description": "GTK sink",
9
         "elements": {
10
             "gtkglsink": {
11
-                "author": "Matthew Waters <matthew@centricular.com>",
12
+                "author": "Matthew Waters <matthew@centricular.com>, Rafał Dzięgiel <rafostar.github@gmail.com>",
13
                 "description": "A video sink that renders to a GtkWidget using OpenGL",
14
                 "hierarchy": [
15
                     "GstGtkGLSink",
16
@@ -7106,7 +7106,7 @@
17
                     "GstNavigation"
18
                 ],
19
                 "klass": "Sink/Video",
20
-                "long-name": "Gtk GL Video Sink",
21
+                "long-name": "GTK GL Video Sink",
22
                 "pad-templates": {
23
                     "sink": {
24
                         "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",
25
@@ -7147,7 +7147,7 @@
26
                     "GstNavigation"
27
                 ],
28
                 "klass": "Sink/Video",
29
-                "long-name": "Gtk Video Sink",
30
+                "long-name": "GTK Video Sink",
31
                 "pad-templates": {
32
                     "sink": {
33
                         "caps": "video/x-raw:\n         format: { BGRx, BGRA }\n          width: [ 1, 2147483647 ]\n         height: [ 1, 2147483647 ]\n      framerate: [ 0/1, 2147483647/1 ]\n",
34
@@ -7224,6 +7224,127 @@
35
                         "default": "0/1",
36
                         "max": "2147483647/1",
37
                         "min": "0/2147483647",
38
+                        "mutable": "null",
39
+                        "readable": true,
40
+                        "type": "GstFraction",
41
+                        "writable": true
42
+                    },
43
+                    "widget": {
44
+                        "blurb": "The GtkWidget to place in the widget hierarchy (must only be get from the GTK main thread)",
45
+                        "conditionally-available": false,
46
+                        "construct": false,
47
+                        "construct-only": false,
48
+                        "controllable": false,
49
+                        "mutable": "null",
50
+                        "readable": true,
51
+                        "type": "GtkWidget",
52
+                        "writable": false
53
+                    }
54
+                }
55
+            }
56
+        },
57
+        "package": "GStreamer Good Plug-ins",
58
+        "source": "gst-plugins-good",
59
+        "tracers": {},
60
+        "url": "Unknown package origin"
61
+    },
62
+    "gtk4": {
63
+        "description": "GTK4 sink",
64
+        "elements": {
65
+            "gtk4glsink": {
66
+                "author": "Matthew Waters <matthew@centricular.com>, Rafał Dzięgiel <rafostar.github@gmail.com>",
67
+                "description": "A video sink that renders to a GtkWidget using OpenGL",
68
+                "hierarchy": [
69
+                    "GstGtkGLSink",
70
+                    "GstGtkBaseSink",
71
+                    "GstVideoSink",
72
+                    "GstBaseSink",
73
+                    "GstElement",
74
+                    "GstObject",
75
+                    "GInitiallyUnowned",
76
+                    "GObject"
77
+                ],
78
+                "interfaces": [
79
+                    "GstNavigation"
80
+                ],
81
+                "klass": "Sink/Video",
82
+                "long-name": "GTK4 GL Video Sink",
83
+                "pad-templates": {
84
+                    "sink": {
85
+                        "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",
86
+                        "direction": "sink",
87
+                        "presence": "always"
88
+                    }
89
+                },
90
+                "rank": "none"
91
+            },
92
+            "gtk4sink": {
93
+                "author": "Matthew Waters <matthew@centricular.com>",
94
+                "description": "A video sink that renders to a GtkWidget",
95
+                "hierarchy": [
96
+                    "GstGtkSink",
97
+                    "GstGtkBaseSink",
98
+                    "GstVideoSink",
99
+                    "GstBaseSink",
100
+                    "GstElement",
101
+                    "GstObject",
102
+                    "GInitiallyUnowned",
103
+                    "GObject"
104
+                ],
105
+                "interfaces": [
106
+                    "GstNavigation"
107
+                ],
108
+                "klass": "Sink/Video",
109
+                "long-name": "GTK4 Video Sink",
110
+                "pad-templates": {
111
+                    "sink": {
112
+                        "caps": "video/x-raw:\n         format: { BGRx, BGRA }\n          width: [ 1, 2147483647 ]\n         height: [ 1, 2147483647 ]\n      framerate: [ 0/1, 2147483647/1 ]\n",
113
+                        "direction": "sink",
114
+                        "presence": "always"
115
+                    }
116
+                },
117
+                "rank": "none"
118
+            }
119
+        },
120
+        "filename": "gstgtk4",
121
+        "license": "LGPL",
122
+        "other-types": {
123
+            "GstGtkBaseSink": {
124
+                "hierarchy": [
125
+                    "GstGtkBaseSink",
126
+                    "GstVideoSink",
127
+                    "GstBaseSink",
128
+                    "GstElement",
129
+                    "GstObject",
130
+                    "GInitiallyUnowned",
131
+                    "GObject"
132
+                ],
133
+                "interfaces": [
134
+                    "GstNavigation"
135
+                ],
136
+                "kind": "object",
137
+                "properties": {
138
+                    "force-aspect-ratio": {
139
+                        "blurb": "When enabled, scaling will respect original aspect ratio",
140
+                        "conditionally-available": false,
141
+                        "construct": false,
142
+                        "construct-only": false,
143
+                        "controllable": false,
144
+                        "default": "true",
145
+                        "mutable": "null",
146
+                        "readable": true,
147
+                        "type": "gboolean",
148
+                        "writable": true
149
+                    },
150
+                    "pixel-aspect-ratio": {
151
+                        "blurb": "The pixel aspect ratio of the device",
152
+                        "conditionally-available": false,
153
+                        "construct": false,
154
+                        "construct-only": false,
155
+                        "controllable": false,
156
+                        "default": "0/1",
157
+                        "max": "2147483647/1",
158
+                        "min": "0/1",
159
                         "mutable": "null",
160
                         "readable": true,
161
                         "type": "GstFraction",
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.c (+192 lines)
Added Link Here
1
--- ext/gtk/gstgtkbasesink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkbasesink.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -80,7 +81,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_
12
     G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
13
         gst_gtk_base_sink_navigation_interface_init);
14
     GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink,
15
-        "gtkbasesink", 0, "Gtk Video Sink base class"));
16
+        "gtkbasesink", 0, "GTK Video Sink base class"));
17
 
18
 
19
 static void
20
@@ -100,7 +101,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
21
   gobject_class->get_property = gst_gtk_base_sink_get_property;
22
 
23
   g_object_class_install_property (gobject_class, PROP_WIDGET,
24
-      g_param_spec_object ("widget", "Gtk Widget",
25
+      g_param_spec_object ("widget", "GTK Widget",
26
           "The GtkWidget to place in the widget hierarchy "
27
           "(must only be get from the GTK main thread)",
28
           GTK_TYPE_WIDGET,
29
@@ -135,10 +136,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
30
           G_MAXINT, G_MAXINT, 1, DEFAULT_VIDEO_PAR_N, DEFAULT_VIDEO_PAR_D,
31
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
32
 
33
+  /* Disabling alpha was removed in GTK4 */
34
+#if !defined(BUILD_FOR_GTK4)
35
   g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA,
36
       g_param_spec_boolean ("ignore-alpha", "Ignore Alpha",
37
           "When enabled, alpha will be ignored and converted to black",
38
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
39
+#endif
40
 
41
   gobject_class->finalize = gst_gtk_base_sink_finalize;
42
 
43
@@ -169,6 +173,8 @@ gst_gtk_base_sink_finalize (GObject * object)
44
 {
45
   GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object);
46
 
47
+  GST_DEBUG ("finalizing base sink");
48
+
49
   GST_OBJECT_LOCK (gtk_sink);
50
   if (gtk_sink->window && gtk_sink->window_destroy_id)
51
     g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id);
52
@@ -193,6 +199,14 @@ static void
53
 window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink)
54
 {
55
   GST_OBJECT_LOCK (gtk_sink);
56
+  if (gtk_sink->widget) {
57
+    if (gtk_sink->widget_destroy_id) {
58
+      g_signal_handler_disconnect (gtk_sink->widget,
59
+          gtk_sink->widget_destroy_id);
60
+      gtk_sink->widget_destroy_id = 0;
61
+    }
62
+    g_clear_object (&gtk_sink->widget);
63
+  }
64
   gtk_sink->window = NULL;
65
   GST_OBJECT_UNLOCK (gtk_sink);
66
 }
67
@@ -205,7 +219,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
68
 
69
   /* Ensure GTK is initialized, this has no side effect if it was already
70
    * initialized. Also, we do that lazily, so the application can be first */
71
-  if (!gtk_init_check (NULL, NULL)) {
72
+  if (!gtk_init_check (
73
+#if !defined(BUILD_FOR_GTK4)
74
+          NULL, NULL
75
+#endif
76
+      )) {
77
     GST_INFO_OBJECT (gtk_sink, "Could not ensure GTK initialization.");
78
     return NULL;
79
   }
80
@@ -224,9 +242,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
81
       g_object_bind_property (gtk_sink, "video-aspect-ratio-override",
82
       gtk_sink->widget, "video-aspect-ratio-override",
83
       G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
84
+#if !defined(BUILD_FOR_GTK4)
85
   gtk_sink->bind_ignore_alpha =
86
       g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget,
87
       "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
88
+#endif
89
 
90
   /* Take the floating ref, other wise the destruction of the container will
91
    * make this widget disappear possibly before we are done. */
92
@@ -372,6 +392,9 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
93
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
94
   GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink);
95
   GtkWidget *toplevel;
96
+#if defined(BUILD_FOR_GTK4)
97
+  GtkRoot *root;
98
+#endif
99
 
100
   if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) {
101
     GST_ERROR_OBJECT (bsink, "Could not ensure GTK initialization.");
102
@@ -380,19 +403,47 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
103
 
104
   /* After this point, gtk_sink->widget will always be set */
105
 
106
+#if defined(BUILD_FOR_GTK4)
107
+  root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget));
108
+  if (!GTK_IS_ROOT (root)) {
109
+    GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget));
110
+    if (parent) {
111
+      GtkWidget *temp_parent;
112
+      while ((temp_parent = gtk_widget_get_parent (parent)))
113
+        parent = temp_parent;
114
+    }
115
+    toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget);
116
+#else
117
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget));
118
   if (!gtk_widget_is_toplevel (toplevel)) {
119
+#endif
120
     /* sanity check */
121
     g_assert (klass->window_title);
122
 
123
     /* User did not add widget its own UI, let's popup a new GtkWindow to
124
      * make gst-launch-1.0 work. */
125
-    gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
126
+    gst_sink->window = gtk_window_new (
127
+#if !defined(BUILD_FOR_GTK4)
128
+        GTK_WINDOW_TOPLEVEL
129
+#endif
130
+        );
131
     gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480);
132
     gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title);
133
-    gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel);
134
-    gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy",
135
-        G_CALLBACK (window_destroy_cb), gst_sink);
136
+
137
+#if defined(BUILD_FOR_GTK4)
138
+    gtk_window_set_child (GTK_WINDOW (
139
+#else
140
+    gtk_container_add (GTK_CONTAINER (
141
+#endif
142
+            gst_sink->window), toplevel);
143
+
144
+    gst_sink->window_destroy_id = g_signal_connect (
145
+#if defined(BUILD_FOR_GTK4)
146
+        GTK_WINDOW (gst_sink->window),
147
+#else
148
+        gst_sink->window,
149
+#endif
150
+        "destroy", G_CALLBACK (window_destroy_cb), gst_sink);
151
   }
152
 
153
   return TRUE;
154
@@ -411,7 +462,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink)
155
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
156
 
157
   if (gst_sink->window) {
158
+#if defined(BUILD_FOR_GTK4)
159
+    gtk_window_destroy (GTK_WINDOW (gst_sink->window));
160
+#else
161
     gtk_widget_destroy (gst_sink->window);
162
+#endif
163
     gst_sink->window = NULL;
164
     gst_sink->widget = NULL;
165
   }
166
@@ -432,10 +487,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink)
167
 }
168
 
169
 static void
170
-gst_gtk_widget_show_all_and_unref (GtkWidget * widget)
171
+gst_gtk_window_show_all_and_unref (GtkWidget * window)
172
 {
173
-  gtk_widget_show_all (widget);
174
-  g_object_unref (widget);
175
+#if defined(BUILD_FOR_GTK4)
176
+  gtk_window_present (GTK_WINDOW (window));
177
+#else
178
+  gtk_widget_show_all (window);
179
+#endif
180
+  g_object_unref (window);
181
 }
182
 
183
 static GstStateChangeReturn
184
@@ -463,7 +522,7 @@ gst_gtk_base_sink_change_state (GstElement * element, 
185
       GST_OBJECT_UNLOCK (gtk_sink);
186
 
187
       if (window)
188
-        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref,
189
+        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref,
190
             window);
191
 
192
       break;
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkbasesink.h (+31 lines)
Added Link Here
1
--- ext/gtk/gstgtkbasesink.h.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkbasesink.h
3
@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void);
4
 struct _GstGtkBaseSink
5
 {
6
   /* <private> */
7
-  GstVideoSink         parent;
8
+  GstVideoSink          parent;
9
 
10
-  GstVideoInfo         v_info;
11
+  GstVideoInfo          v_info;
12
 
13
   GtkGstBaseWidget     *widget;
14
 
15
   /* properties */
16
-  gboolean             force_aspect_ratio;
17
+  gboolean              force_aspect_ratio;
18
   GBinding             *bind_aspect_ratio;
19
 
20
   gint                  par_n;
21
@@ -73,8 +73,8 @@ struct _GstGtkBaseSink
22
   GBinding             *bind_ignore_alpha;
23
 
24
   GtkWidget            *window;
25
-  gulong               widget_destroy_id;
26
-  gulong               window_destroy_id;
27
+  gulong                widget_destroy_id;
28
+  gulong                window_destroy_id;
29
 };
30
 
31
 /**
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.c (+179 lines)
Added Link Here
1
--- ext/gtk/gstgtkglsink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkglsink.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -23,6 +24,12 @@
12
  * @title: gtkglsink
13
  */
14
 
15
+/**
16
+ * SECTION:element-gtk4glsink
17
+ * @title: gtk4glsink
18
+ */
19
+
20
+
21
 #ifdef HAVE_CONFIG_H
22
 #include "config.h"
23
 #endif
24
@@ -65,7 +72,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template =
25
 #define gst_gtk_gl_sink_parent_class parent_class
26
 G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink,
27
     GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink,
28
-        "gtkglsink", 0, "Gtk GL Video Sink"));
29
+    GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink"));
30
 GST_ELEMENT_REGISTER_DEFINE (gtkglsink, "gtkglsink", GST_RANK_NONE,
31
     GST_TYPE_GTK_GL_SINK);
32
 
33
@@ -101,7 +108,7 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
34
   gstbasesink_class->event = gst_gtk_gl_sink_event;
35
 
36
   gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new;
37
-  gstgtkbasesink_class->window_title = "Gtk+ GL renderer";
38
+  gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer";
39
 
40
   /**
41
    * gtkglsink:rotate-method:
42
@@ -117,9 +124,11 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
43
           GST_TYPE_VIDEO_ORIENTATION_METHOD, GST_VIDEO_ORIENTATION_IDENTITY,
44
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
45
 
46
-  gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink",
47
+  gst_element_class_set_metadata (gstelement_class,
48
+      GTKCONFIG_NAME " GL Video Sink",
49
       "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL",
50
-      "Matthew Waters <matthew@centricular.com>");
51
+      "Matthew Waters <matthew@centricular.com>, "
52
+      "Rafał Dzięgiel <rafostar.github@gmail.com>");
53
 
54
   gst_element_class_add_static_pad_template (gstelement_class,
55
       &gst_gtk_gl_sink_template);
56
@@ -202,16 +211,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery *
57
 }
58
 
59
 static void
60
-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle,
61
-    GstGtkGLSink * gtk_sink)
62
+_size_changed_cb (GtkWidget * widget, gint width,
63
+    gint height, GstGtkGLSink * gtk_sink)
64
 {
65
-  gint scale_factor, width, height;
66
   gboolean reconfigure;
67
 
68
-  scale_factor = gtk_widget_get_scale_factor (widget);
69
-  width = scale_factor * gtk_widget_get_allocated_width (widget);
70
-  height = scale_factor * gtk_widget_get_allocated_height (widget);
71
+  GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
72
 
73
+  /* Ignore size changes before widget is negotiated
74
+   * we are going to queue a resize after negotiation */
75
+  if (!base_widget->negotiated)
76
+    return;
77
+
78
   GST_OBJECT_LOCK (gtk_sink);
79
   reconfigure =
80
       (width != gtk_sink->display_width || height != gtk_sink->display_height);
81
@@ -220,7 +231,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
82
   GST_OBJECT_UNLOCK (gtk_sink);
83
 
84
   if (reconfigure) {
85
-    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad.");
86
+    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad");
87
     gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad,
88
         gst_event_new_reconfigure ());
89
   }
90
@@ -229,9 +240,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
91
 static void
92
 destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink)
93
 {
94
-  if (gtk_sink->size_allocate_sig_handler) {
95
-    g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler);
96
-    gtk_sink->size_allocate_sig_handler = 0;
97
+  if (gtk_sink->widget_resize_sig_handler) {
98
+    g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler);
99
+    gtk_sink->widget_resize_sig_handler = 0;
100
   }
101
 
102
   if (gtk_sink->widget_destroy_sig_handler) {
103
@@ -254,29 +265,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink)
104
   gst_widget = GTK_GST_GL_WIDGET (base_sink->widget);
105
 
106
   /* Track the allocation size */
107
-  gtk_sink->size_allocate_sig_handler =
108
-      g_signal_connect (gst_widget, "size-allocate",
109
-      G_CALLBACK (_size_changed_cb), gtk_sink);
110
+  if (!gtk_sink->widget_resize_sig_handler) {
111
+    gtk_sink->widget_resize_sig_handler =
112
+        g_signal_connect (gst_widget, "resize",
113
+        G_CALLBACK (_size_changed_cb), gtk_sink);
114
+  }
115
 
116
-  gtk_sink->widget_destroy_sig_handler =
117
-      g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
118
-      gtk_sink);
119
+  if (!gtk_sink->widget_destroy_sig_handler) {
120
+    gtk_sink->widget_destroy_sig_handler =
121
+        g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
122
+        gtk_sink);
123
+  }
124
 
125
-  _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink);
126
-
127
   if (!gtk_gst_gl_widget_init_winsys (gst_widget)) {
128
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
129
-            "Failed to initialize OpenGL with Gtk"), (NULL));
130
+            "Failed to initialize OpenGL with GTK"), (NULL));
131
     return FALSE;
132
   }
133
 
134
-  gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
135
-  gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
136
-  gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
137
+  if (!gtk_sink->display)
138
+    gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
139
+  if (!gtk_sink->context)
140
+    gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
141
+  if (!gtk_sink->gtk_context)
142
+    gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
143
 
144
   if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) {
145
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
146
-            "Failed to retrieve OpenGL context from Gtk"), (NULL));
147
+            "Failed to retrieve OpenGL context from GTK"), (NULL));
148
     return FALSE;
149
   }
150
 
151
@@ -290,7 +306,14 @@ static gboolean
152
 gst_gtk_gl_sink_stop (GstBaseSink * bsink)
153
 {
154
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink);
155
+  GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink);
156
 
157
+  if (gtk_sink->widget_resize_sig_handler) {
158
+    g_signal_handler_disconnect (base_sink->widget,
159
+        gtk_sink->widget_resize_sig_handler);
160
+    gtk_sink->widget_resize_sig_handler = 0;
161
+  }
162
+
163
   if (gtk_sink->display) {
164
     gst_object_unref (gtk_sink->display);
165
     gtk_sink->display = NULL;
166
@@ -432,10 +455,10 @@ gst_gtk_gl_sink_finalize (GObject * object)
167
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object);
168
   GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object);
169
 
170
-  if (gtk_sink->size_allocate_sig_handler) {
171
+  if (gtk_sink->widget_resize_sig_handler) {
172
     g_signal_handler_disconnect (base_sink->widget,
173
-        gtk_sink->size_allocate_sig_handler);
174
-    gtk_sink->size_allocate_sig_handler = 0;
175
+        gtk_sink->widget_resize_sig_handler);
176
+    gtk_sink->widget_resize_sig_handler = 0;
177
   }
178
 
179
   if (gtk_sink->widget_destroy_sig_handler) {
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtkglsink.h (+11 lines)
Added Link Here
1
--- ext/gtk/gstgtkglsink.h.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkglsink.h
3
@@ -57,7 +57,7 @@ struct _GstGtkGLSink
4
   gint                  display_width;
5
   gint                  display_height;
6
 
7
-  gulong                size_allocate_sig_handler;
8
+  gulong                widget_resize_sig_handler;
9
   gulong                widget_destroy_sig_handler;
10
 };
11
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstgtksink.c (+40 lines)
Added Link Here
1
--- ext/gtk/gstgtksink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtksink.c
3
@@ -19,15 +19,22 @@
4
  */
5
 
6
 /**
7
- * SECTION:element-gtkgstsink
8
- * @title: gtkgstsink
9
+ * SECTION:element-gtksink
10
+ * @title: gtksink
11
  *
12
  */
13
 
14
+/**
15
+ * SECTION:element-gtk4sink
16
+ * @title: gtk4sink
17
+ *
18
+ */
19
+
20
 #ifdef HAVE_CONFIG_H
21
 #include "config.h"
22
 #endif
23
 
24
+#include "gtkconfig.h"
25
 #include "gtkgstwidget.h"
26
 #include "gstgtksink.h"
27
 
28
@@ -64,9 +71,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass)
29
   base_class = (GstGtkBaseSinkClass *) klass;
30
 
31
   base_class->create_widget = gtk_gst_widget_new;
32
-  base_class->window_title = "Gtk+ Cairo renderer";
33
+  base_class->window_title = GTKCONFIG_NAME " Cairo Renderer";
34
 
35
-  gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink",
36
+  gst_element_class_set_metadata (gstelement_class,
37
+      GTKCONFIG_NAME " Video Sink",
38
       "Sink/Video", "A video sink that renders to a GtkWidget",
39
       "Matthew Waters <matthew@centricular.com>");
40
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gstplugin.c (+45 lines)
Added Link Here
1
--- ext/gtk/gstplugin.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstplugin.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -22,8 +23,10 @@
12
 #include "config.h"
13
 #endif
14
 
15
+#include "gtkconfig.h"
16
 #include "gstgtksink.h"
17
-#if defined(HAVE_GTK3_GL)
18
+
19
+#if defined(HAVE_GTK_GL)
20
 #include "gstgtkglsink.h"
21
 #endif
22
 
23
@@ -32,10 +35,10 @@ plugin_init (GstPlugin * plugin)
24
 {
25
   gboolean ret = FALSE;
26
 
27
-  ret |= GST_ELEMENT_REGISTER (gtksink, plugin);
28
+  ret |= GST_ELEMENT_REGISTER (GTKCONFIG_SINK, plugin);
29
 
30
-#if defined(HAVE_GTK3_GL)
31
-  ret |= GST_ELEMENT_REGISTER (gtkglsink, plugin);
32
+#if defined(HAVE_GTK_GL)
33
+  ret |= GST_ELEMENT_REGISTER (GTKCONFIG_GLSINK, plugin);
34
 #endif
35
 
36
   return ret;
37
@@ -43,7 +46,6 @@ plugin_init (GstPlugin * plugin)
38
 
39
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
40
     GST_VERSION_MINOR,
41
-    gtk,
42
-    "Gtk+ sink",
43
+    GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink",
44
     plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME,
45
     GST_PACKAGE_ORIGIN)
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkconfig.h (+34 lines)
Added Link Here
1
--- ext/gtk/gtkconfig.h.orig	2022-09-18 19:39:45 UTC
2
+++ ext/gtk/gtkconfig.h
3
@@ -0,0 +1,31 @@
4
+/*
5
+ * GStreamer
6
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
7
+ *
8
+ * This library is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU Library General Public
10
+ * License as published by the Free Software Foundation; either
11
+ * version 2 of the License, or (at your option) any later version.
12
+ *
13
+ * This library is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
+ * Library General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU Library General Public
19
+ * License along with this library; if not, write to the
20
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
21
+ * Boston, MA 02110-1301, USA.
22
+ */
23
+
24
+#if defined(BUILD_FOR_GTK4)
25
+#define GTKCONFIG_PLUGIN gtk4
26
+#define GTKCONFIG_NAME "GTK4"
27
+#define GTKCONFIG_SINK "gtk4sink"
28
+#define GTKCONFIG_GLSINK "gtk4glsink"
29
+#else
30
+#define GTKCONFIG_PLUGIN gtk
31
+#define GTKCONFIG_NAME "GTK"
32
+#define GTKCONFIG_SINK "gtksink"
33
+#define GTKCONFIG_GLSINK "gtkglsink"
34
+#endif
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.c (+257 lines)
Added Link Here
1
--- ext/gtk/gtkgstbasewidget.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gtkgstbasewidget.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -208,7 +209,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * 
12
     *natural = video_height;
13
 }
14
 
15
+#if defined(BUILD_FOR_GTK4)
16
 static void
17
+gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation,
18
+    gint for_size, gint * min, gint * natural,
19
+    gint * minimum_baseline, gint * natural_baseline)
20
+{
21
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
22
+    gtk_gst_base_widget_get_preferred_width (widget, min, natural);
23
+  else
24
+    gtk_gst_base_widget_get_preferred_height (widget, min, natural);
25
+
26
+  *minimum_baseline = -1;
27
+  *natural_baseline = -1;
28
+}
29
+#endif
30
+
31
+static void
32
 gtk_gst_base_widget_set_property (GObject * object, guint prop_id,
33
     const GValue * value, GParamSpec * pspec)
34
 {
35
@@ -281,22 +298,46 @@ _gdk_key_to_navigation_string (guint keyval)
36
   }
37
 }
38
 
39
+static GdkEvent *
40
+_get_current_event (GtkEventController * controller)
41
+{
42
+#if defined(BUILD_FOR_GTK4)
43
+  return gtk_event_controller_get_current_event (controller);
44
+#else
45
+  return gtk_get_current_event ();
46
+#endif
47
+}
48
+
49
+static void
50
+_gdk_event_free (GdkEvent * event)
51
+{
52
+#if !defined(BUILD_FOR_GTK4)
53
+  if (event)
54
+    gdk_event_free (event);
55
+#endif
56
+}
57
+
58
 static gboolean
59
-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event)
60
+gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller,
61
+    guint keyval, guint keycode, GdkModifierType state)
62
 {
63
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller);
64
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
65
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
66
   GstElement *element;
67
 
68
   if ((element = g_weak_ref_get (&base_widget->element))) {
69
     if (GST_IS_NAVIGATION (element)) {
70
-      const gchar *str = _gdk_key_to_navigation_string (event->keyval);
71
-      const gchar *key_type =
72
-          event->type == GDK_KEY_PRESS ? "key-press" : "key-release";
73
+      GdkEvent *event = _get_current_event (controller);
74
+      const gchar *str = _gdk_key_to_navigation_string (keyval);
75
 
76
-      if (!str)
77
-        str = event->string;
78
-
79
-      gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
80
+      if (str) {
81
+        const gchar *key_type =
82
+            gdk_event_get_event_type (event) ==
83
+            GDK_KEY_PRESS ? "key-press" : "key-release";
84
+        gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
85
+      }
86
+      _gdk_event_free (event);
87
     }
88
     g_object_unref (element);
89
   }
90
@@ -371,18 +412,38 @@ gtk_gst_base_widget_display_size_to_stream_size (GtkGs
91
 }
92
 
93
 static gboolean
94
-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event)
95
+gtk_gst_base_widget_button_event (
96
+#if defined(BUILD_FOR_GTK4)
97
+    GtkGestureClick * gesture,
98
+#else
99
+    GtkGestureMultiPress * gesture,
100
+#endif
101
+    gint n_press, gdouble x, gdouble y)
102
 {
103
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture);
104
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
105
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
106
   GstElement *element;
107
 
108
   if ((element = g_weak_ref_get (&base_widget->element))) {
109
     if (GST_IS_NAVIGATION (element)) {
110
+      GdkEvent *event = _get_current_event (controller);
111
       const gchar *key_type =
112
-          event->type ==
113
-          GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release";
114
+          gdk_event_get_event_type (event) == GDK_BUTTON_PRESS
115
+          ? "mouse-button-press" : "mouse-button-release";
116
+#if !defined(BUILD_FOR_GTK4)
117
+      guint button;
118
+      gdk_event_get_button (event, &button);
119
+#endif
120
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type,
121
-          event->button, event->x, event->y);
122
+#if defined(BUILD_FOR_GTK4)
123
+          /* Gesture is set to ignore other buttons so we do not have to check */
124
+          GDK_BUTTON_PRIMARY,
125
+#else
126
+          button,
127
+#endif
128
+          event->x, event->y);
129
+      _gdk_event_free (event);
130
     }
131
     g_object_unref (element);
132
   }
133
@@ -391,15 +452,18 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, 
134
 }
135
 
136
 static gboolean
137
-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event)
138
+gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller,
139
+    gdouble x, gdouble y)
140
 {
141
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller);
142
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
143
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
144
   GstElement *element;
145
 
146
   if ((element = g_weak_ref_get (&base_widget->element))) {
147
     if (GST_IS_NAVIGATION (element)) {
148
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move",
149
-          0, event->x, event->y);
150
+          0, x, y);
151
     }
152
     g_object_unref (element);
153
   }
154
@@ -490,24 +554,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass 
155
           "When enabled, alpha will be ignored and converted to black",
156
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
157
 
158
+#if defined(BUILD_FOR_GTK4)
159
+  widget_klass->measure = gtk_gst_base_widget_measure;
160
+#else
161
   widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width;
162
   widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height;
163
-  widget_klass->key_press_event = gtk_gst_base_widget_key_event;
164
-  widget_klass->key_release_event = gtk_gst_base_widget_key_event;
165
-  widget_klass->button_press_event = gtk_gst_base_widget_button_event;
166
-  widget_klass->button_release_event = gtk_gst_base_widget_button_event;
167
-  widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event;
168
-  widget_klass->scroll_event = gtk_gst_base_widget_scroll_event;
169
+#endif
170
 
171
   GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0,
172
-      "Gtk Video Base Widget");
173
+      "GTK Video Base Widget");
174
 }
175
 
176
 void
177
 gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
178
 {
179
-  int event_mask;
180
-
181
   widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO;
182
   widget->par_n = DEFAULT_DISPLAY_PAR_N;
183
   widget->par_d = DEFAULT_DISPLAY_PAR_D;
184
@@ -521,20 +581,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
185
   g_weak_ref_init (&widget->element, NULL);
186
   g_mutex_init (&widget->lock);
187
 
188
+  widget->key_controller = gtk_event_controller_key_new (
189
+#if !defined(BUILD_FOR_GTK4)
190
+      GTK_WIDGET (widget)
191
+#endif
192
+      );
193
+  g_signal_connect (widget->key_controller, "key-pressed",
194
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
195
+  g_signal_connect (widget->key_controller, "key-released",
196
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
197
+
198
+  widget->motion_controller = gtk_event_controller_motion_new (
199
+#if !defined(BUILD_FOR_GTK4)
200
+      GTK_WIDGET (widget)
201
+#endif
202
+      );
203
+  g_signal_connect (widget->motion_controller, "motion",
204
+      G_CALLBACK (gtk_gst_base_widget_motion_event), NULL);
205
+
206
+  widget->click_gesture =
207
+#if defined(BUILD_FOR_GTK4)
208
+      gtk_gesture_click_new ();
209
+#else
210
+      gtk_gesture_multi_press_new (GTK_WIDGET (widget));
211
+#endif
212
+  g_signal_connect (widget->click_gesture, "pressed",
213
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
214
+  g_signal_connect (widget->click_gesture, "released",
215
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
216
+
217
+#if defined(BUILD_FOR_GTK4)
218
+  /* Otherwise widget in grid will appear as a 1x1px
219
+   * video which might be misleading for users */
220
+  gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE);
221
+  gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE);
222
+
223
+  gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE);
224
+  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture),
225
+      GDK_BUTTON_PRIMARY);
226
+
227
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller);
228
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller);
229
+  gtk_widget_add_controller (GTK_WIDGET (widget),
230
+      GTK_EVENT_CONTROLLER (widget->click_gesture));
231
+#endif
232
+
233
   gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE);
234
-  event_mask = gtk_widget_get_events (GTK_WIDGET (widget));
235
-  event_mask |= GDK_KEY_PRESS_MASK
236
-      | GDK_KEY_RELEASE_MASK
237
-      | GDK_BUTTON_PRESS_MASK
238
-      | GDK_BUTTON_RELEASE_MASK
239
-      | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_SCROLL_MASK;
240
-  gtk_widget_set_events (GTK_WIDGET (widget), event_mask);
241
 }
242
 
243
 void
244
 gtk_gst_base_widget_finalize (GObject * object)
245
 {
246
   GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object);
247
+
248
+  /* GTK4 takes ownership of EventControllers
249
+   * while GTK3 still needs manual unref */
250
+#if !defined(BUILD_FOR_GTK4)
251
+  g_object_unref (widget->key_controller);
252
+  g_object_unref (widget->motion_controller);
253
+  g_object_unref (widget->click_gesture);
254
+#endif
255
 
256
   gst_buffer_replace (&widget->pending_buffer, NULL);
257
   gst_buffer_replace (&widget->buffer, NULL);
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstbasewidget.h (+53 lines)
Added Link Here
1
--- ext/gtk/gtkgstbasewidget.h
2
+++ ext/gtk/gtkgstbasewidget.h
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -25,6 +26,10 @@
12
 #include <gst/gst.h>
13
 #include <gst/video/video.h>
14
 
15
+#if !defined(BUILD_FOR_GTK4)
16
+#include <gdk/gdk.h>
17
+#endif
18
+
19
 #define GTK_GST_BASE_WIDGET(w)         ((GtkGstBaseWidget *)(w))
20
 #define GTK_GST_BASE_WIDGET_CLASS(k)   ((GtkGstBaseWidgetClass *)(k))
21
 #define GTK_GST_BASE_WIDGET_LOCK(w)    g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock)
22
@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget
23
 {
24
   union {
25
     GtkDrawingArea drawing_area;
26
-#if GTK_CHECK_VERSION(3, 15, 0)
27
     GtkGLArea gl_area;
28
-#endif
29
   } parent;
30
 
31
   /* properties */
32
@@ -67,6 +70,11 @@ struct _GtkGstBaseWidget
33
   GMutex lock;
34
   GWeakRef element;
35
 
36
+  /* event controllers */
37
+  GtkEventController *key_controller;
38
+  GtkEventController *motion_controller;
39
+  GtkGesture *click_gesture;
40
+
41
   /* Pending draw idles callback */
42
   guint draw_id;
43
 };
44
@@ -75,9 +83,7 @@ struct _GtkGstBaseWidgetClass
45
 {
46
   union {
47
     GtkDrawingAreaClass drawing_area_class;
48
-#if GTK_CHECK_VERSION(3, 15, 0)
49
     GtkGLAreaClass gl_area_class;
50
-#endif
51
   } parent_class;
52
 };
53
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstglwidget.c (+53 lines)
Added Link Here
1
--- ext/gtk/gtkgstglwidget.c
2
+++ ext/gtk/gtkgstglwidget.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -30,12 +31,20 @@
12
 #include <gst/video/video.h>
13
 
14
 #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11)
15
+#if defined(BUILD_FOR_GTK4)
16
+#include <gdk/x11/gdkx.h>
17
+#else
18
 #include <gdk/gdkx.h>
19
+#endif
20
 #include <gst/gl/x11/gstgldisplay_x11.h>
21
 #endif
22
 
23
 #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
24
+#if defined(BUILD_FOR_GTK4)
25
+#include <gdk/wayland/gdkwayland.h>
26
+#else
27
 #include <gdk/gdkwayland.h>
28
+#endif
29
 #include <gst/gl/wayland/gstgldisplay_wayland.h>
30
 #endif
31
 
32
@@ -78,8 +87,7 @@ static const GLfloat vertices[] = {
33
 G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA,
34
     G_ADD_PRIVATE (GtkGstGLWidget)
35
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0,
36
-        "Gtk Gst GL Widget");
37
-    );
38
+        "GTK Gst GL Widget"));
39
 
40
 static void
41
 gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget)
42
@@ -407,8 +415,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget)
43
 
44
   GST_INFO ("Created %" GST_PTR_FORMAT, priv->display);
45
 
46
+  /* GTK4 always has alpha */
47
+#if !defined(BUILD_FOR_GTK4)
48
   gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget),
49
       !base_widget->ignore_alpha);
50
+#endif
51
 }
52
 
53
 static void
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_gtkgstwidget.c (+83 lines)
Added Link Here
1
--- ext/gtk/gtkgstwidget.c
2
+++ ext/gtk/gtkgstwidget.c
3
@@ -38,17 +38,15 @@
4
 
5
 G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA);
6
 
7
-static gboolean
8
-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
9
+static void
10
+_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr,
11
+    gint widget_width, gint widget_height, gpointer data)
12
 {
13
+  GtkWidget *widget = GTK_WIDGET (da);
14
   GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget;
15
-  guint widget_width, widget_height;
16
   cairo_surface_t *surface;
17
   GstVideoFrame frame;
18
 
19
-  widget_width = gtk_widget_get_allocated_width (widget);
20
-  widget_height = gtk_widget_get_allocated_height (widget);
21
-
22
   GTK_GST_BASE_WIDGET_LOCK (gst_widget);
23
 
24
   /* There is not much to optimize in term of redisplay, so simply swap the
25
@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
26
       color.alpha = 1.0;
27
     } else {
28
       gtk_style_context_get_color (gtk_widget_get_style_context (widget),
29
-          GTK_STATE_FLAG_NORMAL, &color);
30
+#if !defined(BUILD_FOR_GTK4)
31
+          GTK_STATE_FLAG_NORMAL,
32
+#endif
33
+          &color);
34
     }
35
     gdk_cairo_set_source_rgba (cr, &color);
36
     cairo_rectangle (cr, 0, 0, widget_width, widget_height);
37
@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
38
   }
39
 
40
   GTK_GST_BASE_WIDGET_UNLOCK (gst_widget);
41
+}
42
+
43
+#if !defined(BUILD_FOR_GTK4)
44
+static gboolean
45
+gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
46
+{
47
+  gint width = gtk_widget_get_allocated_width (widget);
48
+  gint height = gtk_widget_get_allocated_height (widget);
49
+
50
+  _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL);
51
+
52
   return FALSE;
53
 }
54
+#endif
55
 
56
 static void
57
 gtk_gst_widget_finalize (GObject * object)
58
@@ -171,17 +184,25 @@ static void
59
 gtk_gst_widget_class_init (GtkGstWidgetClass * klass)
60
 {
61
   GObjectClass *gobject_klass = (GObjectClass *) klass;
62
+#if !defined(BUILD_FOR_GTK4)
63
   GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass;
64
+#endif
65
 
66
   gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass));
67
   gobject_klass->finalize = gtk_gst_widget_finalize;
68
+#if !defined(BUILD_FOR_GTK4)
69
   widget_klass->draw = gtk_gst_widget_draw;
70
+#endif
71
 }
72
 
73
 static void
74
 gtk_gst_widget_init (GtkGstWidget * widget)
75
 {
76
   gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget));
77
+#if defined(BUILD_FOR_GTK4)
78
+  gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget),
79
+      _drawing_area_draw, NULL, NULL);
80
+#endif
81
 }
82
 
83
 GtkWidget *
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-ext_gtk_meson.build (+118 lines)
Added Link Here
1
--- ext/gtk/meson.build
2
+++ ext/gtk/meson.build
3
@@ -1,3 +1,4 @@
4
+gtk_versions = [3, 4]
5
 gtk_sources = [
6
   'gstgtkbasesink.c',
7
   'gstgtksink.c',
8
@@ -6,54 +7,86 @@ gtk_sources = [
9
   'gtkgstbasewidget.c',
10
   'gtkgstwidget.c',
11
 ]
12
+gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
13
+gtk_optional_deps = []
14
 
15
-gtk_defines = []
16
-optional_deps = []
17
+gtk4_dep = dependency('gtk4', required : get_option('gtk4'))
18
+gtk4_optional_deps = []
19
 
20
-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
21
-if gtk_dep.found()
22
-  # FIXME: automagic
23
-  if have_gstgl and gtk_dep.version().version_compare('>=3.15.0')
24
-    have_gtk3_gl_windowing = false
25
+foreach gtk_ver : gtk_versions
26
+  gtkv = 'gtk' + gtk_ver.to_string()
27
+
28
+  gtk_state = get_option(gtkv)
29
+  if gtk_state.disabled()
30
+    continue
31
+  endif
32
+
33
+  min_ver = gtk_ver >= 4 ? '3.99.2'          : '3.24.0'
34
+  x11_str = gtk_ver >= 4 ? gtkv + '-x11'     : 'gtk+-x11-3.0'
35
+  way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0'
36
+  lib_dep = gtk_ver >= 4 ? gtk4_dep          : gtk_dep
37
+
38
+  if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver)
39
+    continue
40
+  endif
41
+
42
+  lib_sources = []
43
+  gtk_defines = []
44
+  optional_deps = []
45
+  have_gtk_gl_windowing = false
46
 
47
+  lib_sources += gtk_sources
48
+
49
+  if have_gstgl
50
     if gst_gl_have_window_x11 and gst_gl_have_platform_glx
51
       # FIXME: automagic
52
-      gtk_x11_dep = dependency('gtk+-x11-3.0', required : false)
53
+      gtk_x11_dep = dependency(x11_str, required : false)
54
       if gtk_x11_dep.found()
55
         optional_deps += [gtk_x11_dep, gstglx11_dep]
56
-        have_gtk3_gl_windowing = true
57
+        have_gtk_gl_windowing = true
58
       endif
59
     endif
60
 
61
     if gst_gl_have_window_wayland and gst_gl_have_platform_egl
62
       # FIXME: automagic
63
-      gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false)
64
+      gtk_wayland_dep = dependency(way_str, required : false)
65
       if gtk_wayland_dep.found()
66
         optional_deps += [gtk_wayland_dep, gstglegl_dep, gstglwayland_dep]
67
-        have_gtk3_gl_windowing = true
68
+        have_gtk_gl_windowing = true
69
       endif
70
     endif
71
+  endif
72
 
73
-    if have_gtk3_gl_windowing
74
-      gtk_sources += [
75
-        'gstgtkglsink.c',
76
-        'gtkgstglwidget.c',
77
-      ]
78
-      optional_deps += [gstgl_dep, gstglproto_dep]
79
-      gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL']
80
-    endif
81
+  if have_gtk_gl_windowing
82
+    lib_sources += [
83
+      'gstgtkglsink.c',
84
+      'gtkgstglwidget.c',
85
+    ]
86
+    optional_deps += [gstgl_dep, gstglproto_dep]
87
+    gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL']
88
+  endif
89
+
90
+  if gtk_ver == 3
91
+    gtk_optional_deps = optional_deps
92
+  elif gtk_ver == 4
93
+    gtk4_optional_deps = optional_deps
94
+    gtk_defines += '-DBUILD_FOR_GTK4'
95
+  endif
96
+
97
+  lib_name = 'gstgtk'
98
+  if gtk_ver > 3
99
+    lib_name += gtk_ver.to_string()
100
   endif
101
 
102
-  gstgtk = library('gstgtk',
103
-    gtk_sources,
104
+  gstgtk = library(lib_name,
105
+    lib_sources,
106
     c_args : gst_plugins_good_args + gtk_defines,
107
     link_args : noseh_link_args,
108
     include_directories : [configinc],
109
-    dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
110
+    dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
111
     install : true,
112
     install_dir : plugins_install_dir,
113
   )
114
   pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir)
115
   plugins += [gstgtk]
116
-endif
117
-
118
+endforeach
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-meson__options.txt (+10 lines)
Added Link Here
1
--- meson_options.txt
2
+++ meson_options.txt
3
@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', description : 'Digital IEEE13
4
 option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin')
5
 option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin')
6
 option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin')
7
+option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin')
8
 option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin')
9
 option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin')
10
 option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin')
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files4/patch-tests_examples_gtk_meson.build (+9 lines)
Added Link Here
1
--- tests/examples/gtk/meson.build
2
+++ tests/examples/gtk/meson.build
3
@@ -1,5 +1,5 @@
4
 executable('gtksink', 'gtksink.c',
5
-  dependencies: [gst_dep, gtk_dep, optional_deps],
6
+  dependencies: [gst_dep, gtk_dep, gtk_optional_deps],
7
   c_args: gst_plugins_good_args,
8
   include_directories: [configinc],
9
   install: false)
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-docs_gst__plugins__cache.json (+161 lines)
Added Link Here
1
--- docs/gst_plugins_cache.json.orig	2022-06-15 22:36:22 UTC
2
+++ docs/gst_plugins_cache.json
3
@@ -7087,10 +7087,10 @@
4
         "url": "Unknown package origin"
5
     },
6
     "gtk": {
7
-        "description": "Gtk+ sink",
8
+        "description": "GTK sink",
9
         "elements": {
10
             "gtkglsink": {
11
-                "author": "Matthew Waters <matthew@centricular.com>",
12
+                "author": "Matthew Waters <matthew@centricular.com>, Rafał Dzięgiel <rafostar.github@gmail.com>",
13
                 "description": "A video sink that renders to a GtkWidget using OpenGL",
14
                 "hierarchy": [
15
                     "GstGtkGLSink",
16
@@ -7106,7 +7106,7 @@
17
                     "GstNavigation"
18
                 ],
19
                 "klass": "Sink/Video",
20
-                "long-name": "Gtk GL Video Sink",
21
+                "long-name": "GTK GL Video Sink",
22
                 "pad-templates": {
23
                     "sink": {
24
                         "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",
25
@@ -7147,7 +7147,7 @@
26
                     "GstNavigation"
27
                 ],
28
                 "klass": "Sink/Video",
29
-                "long-name": "Gtk Video Sink",
30
+                "long-name": "GTK Video Sink",
31
                 "pad-templates": {
32
                     "sink": {
33
                         "caps": "video/x-raw:\n         format: { BGRx, BGRA }\n          width: [ 1, 2147483647 ]\n         height: [ 1, 2147483647 ]\n      framerate: [ 0/1, 2147483647/1 ]\n",
34
@@ -7224,6 +7224,127 @@
35
                         "default": "0/1",
36
                         "max": "2147483647/1",
37
                         "min": "0/2147483647",
38
+                        "mutable": "null",
39
+                        "readable": true,
40
+                        "type": "GstFraction",
41
+                        "writable": true
42
+                    },
43
+                    "widget": {
44
+                        "blurb": "The GtkWidget to place in the widget hierarchy (must only be get from the GTK main thread)",
45
+                        "conditionally-available": false,
46
+                        "construct": false,
47
+                        "construct-only": false,
48
+                        "controllable": false,
49
+                        "mutable": "null",
50
+                        "readable": true,
51
+                        "type": "GtkWidget",
52
+                        "writable": false
53
+                    }
54
+                }
55
+            }
56
+        },
57
+        "package": "GStreamer Good Plug-ins",
58
+        "source": "gst-plugins-good",
59
+        "tracers": {},
60
+        "url": "Unknown package origin"
61
+    },
62
+    "gtk4": {
63
+        "description": "GTK4 sink",
64
+        "elements": {
65
+            "gtk4glsink": {
66
+                "author": "Matthew Waters <matthew@centricular.com>, Rafał Dzięgiel <rafostar.github@gmail.com>",
67
+                "description": "A video sink that renders to a GtkWidget using OpenGL",
68
+                "hierarchy": [
69
+                    "GstGtkGLSink",
70
+                    "GstGtkBaseSink",
71
+                    "GstVideoSink",
72
+                    "GstBaseSink",
73
+                    "GstElement",
74
+                    "GstObject",
75
+                    "GInitiallyUnowned",
76
+                    "GObject"
77
+                ],
78
+                "interfaces": [
79
+                    "GstNavigation"
80
+                ],
81
+                "klass": "Sink/Video",
82
+                "long-name": "GTK4 GL Video Sink",
83
+                "pad-templates": {
84
+                    "sink": {
85
+                        "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",
86
+                        "direction": "sink",
87
+                        "presence": "always"
88
+                    }
89
+                },
90
+                "rank": "none"
91
+            },
92
+            "gtk4sink": {
93
+                "author": "Matthew Waters <matthew@centricular.com>",
94
+                "description": "A video sink that renders to a GtkWidget",
95
+                "hierarchy": [
96
+                    "GstGtkSink",
97
+                    "GstGtkBaseSink",
98
+                    "GstVideoSink",
99
+                    "GstBaseSink",
100
+                    "GstElement",
101
+                    "GstObject",
102
+                    "GInitiallyUnowned",
103
+                    "GObject"
104
+                ],
105
+                "interfaces": [
106
+                    "GstNavigation"
107
+                ],
108
+                "klass": "Sink/Video",
109
+                "long-name": "GTK4 Video Sink",
110
+                "pad-templates": {
111
+                    "sink": {
112
+                        "caps": "video/x-raw:\n         format: { BGRx, BGRA }\n          width: [ 1, 2147483647 ]\n         height: [ 1, 2147483647 ]\n      framerate: [ 0/1, 2147483647/1 ]\n",
113
+                        "direction": "sink",
114
+                        "presence": "always"
115
+                    }
116
+                },
117
+                "rank": "none"
118
+            }
119
+        },
120
+        "filename": "gstgtk4",
121
+        "license": "LGPL",
122
+        "other-types": {
123
+            "GstGtkBaseSink": {
124
+                "hierarchy": [
125
+                    "GstGtkBaseSink",
126
+                    "GstVideoSink",
127
+                    "GstBaseSink",
128
+                    "GstElement",
129
+                    "GstObject",
130
+                    "GInitiallyUnowned",
131
+                    "GObject"
132
+                ],
133
+                "interfaces": [
134
+                    "GstNavigation"
135
+                ],
136
+                "kind": "object",
137
+                "properties": {
138
+                    "force-aspect-ratio": {
139
+                        "blurb": "When enabled, scaling will respect original aspect ratio",
140
+                        "conditionally-available": false,
141
+                        "construct": false,
142
+                        "construct-only": false,
143
+                        "controllable": false,
144
+                        "default": "true",
145
+                        "mutable": "null",
146
+                        "readable": true,
147
+                        "type": "gboolean",
148
+                        "writable": true
149
+                    },
150
+                    "pixel-aspect-ratio": {
151
+                        "blurb": "The pixel aspect ratio of the device",
152
+                        "conditionally-available": false,
153
+                        "construct": false,
154
+                        "construct-only": false,
155
+                        "controllable": false,
156
+                        "default": "0/1",
157
+                        "max": "2147483647/1",
158
+                        "min": "0/1",
159
                         "mutable": "null",
160
                         "readable": true,
161
                         "type": "GstFraction",
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.c (+192 lines)
Added Link Here
1
--- ext/gtk/gstgtkbasesink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkbasesink.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -80,7 +81,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstGtkBaseSink, gst_
12
     G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
13
         gst_gtk_base_sink_navigation_interface_init);
14
     GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_sink,
15
-        "gtkbasesink", 0, "Gtk Video Sink base class"));
16
+        "gtkbasesink", 0, "GTK Video Sink base class"));
17
 
18
 
19
 static void
20
@@ -100,7 +101,7 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
21
   gobject_class->get_property = gst_gtk_base_sink_get_property;
22
 
23
   g_object_class_install_property (gobject_class, PROP_WIDGET,
24
-      g_param_spec_object ("widget", "Gtk Widget",
25
+      g_param_spec_object ("widget", "GTK Widget",
26
           "The GtkWidget to place in the widget hierarchy "
27
           "(must only be get from the GTK main thread)",
28
           GTK_TYPE_WIDGET,
29
@@ -135,10 +136,13 @@ gst_gtk_base_sink_class_init (GstGtkBaseSinkClass * kl
30
           G_MAXINT, G_MAXINT, 1, DEFAULT_VIDEO_PAR_N, DEFAULT_VIDEO_PAR_D,
31
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
32
 
33
+  /* Disabling alpha was removed in GTK4 */
34
+#if !defined(BUILD_FOR_GTK4)
35
   g_object_class_install_property (gobject_class, PROP_IGNORE_ALPHA,
36
       g_param_spec_boolean ("ignore-alpha", "Ignore Alpha",
37
           "When enabled, alpha will be ignored and converted to black",
38
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
39
+#endif
40
 
41
   gobject_class->finalize = gst_gtk_base_sink_finalize;
42
 
43
@@ -169,6 +173,8 @@ gst_gtk_base_sink_finalize (GObject * object)
44
 {
45
   GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object);
46
 
47
+  GST_DEBUG ("finalizing base sink");
48
+
49
   GST_OBJECT_LOCK (gtk_sink);
50
   if (gtk_sink->window && gtk_sink->window_destroy_id)
51
     g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id);
52
@@ -193,6 +199,14 @@ static void
53
 window_destroy_cb (GtkWidget * widget, GstGtkBaseSink * gtk_sink)
54
 {
55
   GST_OBJECT_LOCK (gtk_sink);
56
+  if (gtk_sink->widget) {
57
+    if (gtk_sink->widget_destroy_id) {
58
+      g_signal_handler_disconnect (gtk_sink->widget,
59
+          gtk_sink->widget_destroy_id);
60
+      gtk_sink->widget_destroy_id = 0;
61
+    }
62
+    g_clear_object (&gtk_sink->widget);
63
+  }
64
   gtk_sink->window = NULL;
65
   GST_OBJECT_UNLOCK (gtk_sink);
66
 }
67
@@ -205,7 +219,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
68
 
69
   /* Ensure GTK is initialized, this has no side effect if it was already
70
    * initialized. Also, we do that lazily, so the application can be first */
71
-  if (!gtk_init_check (NULL, NULL)) {
72
+  if (!gtk_init_check (
73
+#if !defined(BUILD_FOR_GTK4)
74
+          NULL, NULL
75
+#endif
76
+      )) {
77
     GST_INFO_OBJECT (gtk_sink, "Could not ensure GTK initialization.");
78
     return NULL;
79
   }
80
@@ -224,9 +242,11 @@ gst_gtk_base_sink_get_widget (GstGtkBaseSink * gtk_sin
81
       g_object_bind_property (gtk_sink, "video-aspect-ratio-override",
82
       gtk_sink->widget, "video-aspect-ratio-override",
83
       G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
84
+#if !defined(BUILD_FOR_GTK4)
85
   gtk_sink->bind_ignore_alpha =
86
       g_object_bind_property (gtk_sink, "ignore-alpha", gtk_sink->widget,
87
       "ignore-alpha", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
88
+#endif
89
 
90
   /* Take the floating ref, other wise the destruction of the container will
91
    * make this widget disappear possibly before we are done. */
92
@@ -372,6 +392,9 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
93
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
94
   GstGtkBaseSinkClass *klass = GST_GTK_BASE_SINK_GET_CLASS (bsink);
95
   GtkWidget *toplevel;
96
+#if defined(BUILD_FOR_GTK4)
97
+  GtkRoot *root;
98
+#endif
99
 
100
   if (gst_gtk_base_sink_get_widget (gst_sink) == NULL) {
101
     GST_ERROR_OBJECT (bsink, "Could not ensure GTK initialization.");
102
@@ -380,19 +403,47 @@ gst_gtk_base_sink_start_on_main (GstBaseSink * bsink)
103
 
104
   /* After this point, gtk_sink->widget will always be set */
105
 
106
+#if defined(BUILD_FOR_GTK4)
107
+  root = gtk_widget_get_root (GTK_WIDGET (gst_sink->widget));
108
+  if (!GTK_IS_ROOT (root)) {
109
+    GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (gst_sink->widget));
110
+    if (parent) {
111
+      GtkWidget *temp_parent;
112
+      while ((temp_parent = gtk_widget_get_parent (parent)))
113
+        parent = temp_parent;
114
+    }
115
+    toplevel = (parent) ? parent : GTK_WIDGET (gst_sink->widget);
116
+#else
117
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (gst_sink->widget));
118
   if (!gtk_widget_is_toplevel (toplevel)) {
119
+#endif
120
     /* sanity check */
121
     g_assert (klass->window_title);
122
 
123
     /* User did not add widget its own UI, let's popup a new GtkWindow to
124
      * make gst-launch-1.0 work. */
125
-    gst_sink->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
126
+    gst_sink->window = gtk_window_new (
127
+#if !defined(BUILD_FOR_GTK4)
128
+        GTK_WINDOW_TOPLEVEL
129
+#endif
130
+        );
131
     gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480);
132
     gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title);
133
-    gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel);
134
-    gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy",
135
-        G_CALLBACK (window_destroy_cb), gst_sink);
136
+
137
+#if defined(BUILD_FOR_GTK4)
138
+    gtk_window_set_child (GTK_WINDOW (
139
+#else
140
+    gtk_container_add (GTK_CONTAINER (
141
+#endif
142
+            gst_sink->window), toplevel);
143
+
144
+    gst_sink->window_destroy_id = g_signal_connect (
145
+#if defined(BUILD_FOR_GTK4)
146
+        GTK_WINDOW (gst_sink->window),
147
+#else
148
+        gst_sink->window,
149
+#endif
150
+        "destroy", G_CALLBACK (window_destroy_cb), gst_sink);
151
   }
152
 
153
   return TRUE;
154
@@ -411,7 +462,11 @@ gst_gtk_base_sink_stop_on_main (GstBaseSink * bsink)
155
   GstGtkBaseSink *gst_sink = GST_GTK_BASE_SINK (bsink);
156
 
157
   if (gst_sink->window) {
158
+#if defined(BUILD_FOR_GTK4)
159
+    gtk_window_destroy (GTK_WINDOW (gst_sink->window));
160
+#else
161
     gtk_widget_destroy (gst_sink->window);
162
+#endif
163
     gst_sink->window = NULL;
164
     gst_sink->widget = NULL;
165
   }
166
@@ -432,10 +487,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink)
167
 }
168
 
169
 static void
170
-gst_gtk_widget_show_all_and_unref (GtkWidget * widget)
171
+gst_gtk_window_show_all_and_unref (GtkWidget * window)
172
 {
173
-  gtk_widget_show_all (widget);
174
-  g_object_unref (widget);
175
+#if defined(BUILD_FOR_GTK4)
176
+  gtk_window_present (GTK_WINDOW (window));
177
+#else
178
+  gtk_widget_show_all (window);
179
+#endif
180
+  g_object_unref (window);
181
 }
182
 
183
 static GstStateChangeReturn
184
@@ -463,7 +522,7 @@ gst_gtk_base_sink_change_state (GstElement * element, 
185
       GST_OBJECT_UNLOCK (gtk_sink);
186
 
187
       if (window)
188
-        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref,
189
+        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_window_show_all_and_unref,
190
             window);
191
 
192
       break;
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkbasesink.h (+31 lines)
Added Link Here
1
--- ext/gtk/gstgtkbasesink.h.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkbasesink.h
3
@@ -51,14 +51,14 @@ GType gst_gtk_base_sink_get_type (void);
4
 struct _GstGtkBaseSink
5
 {
6
   /* <private> */
7
-  GstVideoSink         parent;
8
+  GstVideoSink          parent;
9
 
10
-  GstVideoInfo         v_info;
11
+  GstVideoInfo          v_info;
12
 
13
   GtkGstBaseWidget     *widget;
14
 
15
   /* properties */
16
-  gboolean             force_aspect_ratio;
17
+  gboolean              force_aspect_ratio;
18
   GBinding             *bind_aspect_ratio;
19
 
20
   gint                  par_n;
21
@@ -73,8 +73,8 @@ struct _GstGtkBaseSink
22
   GBinding             *bind_ignore_alpha;
23
 
24
   GtkWidget            *window;
25
-  gulong               widget_destroy_id;
26
-  gulong               window_destroy_id;
27
+  gulong                widget_destroy_id;
28
+  gulong                window_destroy_id;
29
 };
30
 
31
 /**
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.c (+186 lines)
Added Link Here
1
--- ext/gtk/gstgtkglsink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtkglsink.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -23,6 +24,11 @@
12
  * @title: gtkglsink
13
  */
14
 
15
+/**
16
+ * SECTION:element-gtk4glsink
17
+ * @title: gtk4glsink
18
+ */
19
+
20
 #ifdef HAVE_CONFIG_H
21
 #include "config.h"
22
 #endif
23
@@ -30,6 +36,7 @@
24
 #include <gst/gl/gstglfuncs.h>
25
 #include <gst/video/gstvideoaffinetransformationmeta.h>
26
 
27
+#include "gtkconfig.h"
28
 #include "gstgtkglsink.h"
29
 #include "gtkgstglwidget.h"
30
 
31
@@ -65,7 +72,7 @@ static GstStaticPadTemplate gst_gtk_gl_sink_template =
32
 #define gst_gtk_gl_sink_parent_class parent_class
33
 G_DEFINE_TYPE_WITH_CODE (GstGtkGLSink, gst_gtk_gl_sink,
34
     GST_TYPE_GTK_BASE_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_gl_sink,
35
-        "gtkglsink", 0, "Gtk GL Video Sink"));
36
+        GTKCONFIG_GLSINK, 0, GTKCONFIG_NAME " GL Video Sink"));
37
 GST_ELEMENT_REGISTER_DEFINE (gtkglsink, "gtkglsink", GST_RANK_NONE,
38
     GST_TYPE_GTK_GL_SINK);
39
 
40
@@ -101,7 +108,7 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
41
   gstbasesink_class->event = gst_gtk_gl_sink_event;
42
 
43
   gstgtkbasesink_class->create_widget = gtk_gst_gl_widget_new;
44
-  gstgtkbasesink_class->window_title = "Gtk+ GL renderer";
45
+  gstgtkbasesink_class->window_title = GTKCONFIG_NAME " GL Renderer";
46
 
47
   /**
48
    * gtkglsink:rotate-method:
49
@@ -117,9 +124,11 @@ gst_gtk_gl_sink_class_init (GstGtkGLSinkClass * klass)
50
           GST_TYPE_VIDEO_ORIENTATION_METHOD, GST_VIDEO_ORIENTATION_IDENTITY,
51
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
52
 
53
-  gst_element_class_set_metadata (gstelement_class, "Gtk GL Video Sink",
54
+  gst_element_class_set_metadata (gstelement_class,
55
+      GTKCONFIG_NAME " GL Video Sink",
56
       "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL",
57
-      "Matthew Waters <matthew@centricular.com>");
58
+      "Matthew Waters <matthew@centricular.com>, "
59
+      "Rafał Dzięgiel <rafostar.github@gmail.com>");
60
 
61
   gst_element_class_add_static_pad_template (gstelement_class,
62
       &gst_gtk_gl_sink_template);
63
@@ -202,16 +211,18 @@ gst_gtk_gl_sink_query (GstBaseSink * bsink, GstQuery *
64
 }
65
 
66
 static void
67
-_size_changed_cb (GtkWidget * widget, GdkRectangle * rectangle,
68
-    GstGtkGLSink * gtk_sink)
69
+_size_changed_cb (GtkWidget * widget, gint width,
70
+    gint height, GstGtkGLSink * gtk_sink)
71
 {
72
-  gint scale_factor, width, height;
73
   gboolean reconfigure;
74
 
75
-  scale_factor = gtk_widget_get_scale_factor (widget);
76
-  width = scale_factor * gtk_widget_get_allocated_width (widget);
77
-  height = scale_factor * gtk_widget_get_allocated_height (widget);
78
+  GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
79
 
80
+  /* Ignore size changes before widget is negotiated
81
+   * we are going to queue a resize after negotiation */
82
+  if (!base_widget->negotiated)
83
+    return;
84
+
85
   GST_OBJECT_LOCK (gtk_sink);
86
   reconfigure =
87
       (width != gtk_sink->display_width || height != gtk_sink->display_height);
88
@@ -220,7 +231,7 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
89
   GST_OBJECT_UNLOCK (gtk_sink);
90
 
91
   if (reconfigure) {
92
-    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad.");
93
+    GST_DEBUG_OBJECT (gtk_sink, "Sending reconfigure event on sinkpad");
94
     gst_pad_push_event (GST_BASE_SINK (gtk_sink)->sinkpad,
95
         gst_event_new_reconfigure ());
96
   }
97
@@ -229,9 +240,9 @@ _size_changed_cb (GtkWidget * widget, GdkRectangle * r
98
 static void
99
 destroy_cb (GtkWidget * widget, GstGtkGLSink * gtk_sink)
100
 {
101
-  if (gtk_sink->size_allocate_sig_handler) {
102
-    g_signal_handler_disconnect (widget, gtk_sink->size_allocate_sig_handler);
103
-    gtk_sink->size_allocate_sig_handler = 0;
104
+  if (gtk_sink->widget_resize_sig_handler) {
105
+    g_signal_handler_disconnect (widget, gtk_sink->widget_resize_sig_handler);
106
+    gtk_sink->widget_resize_sig_handler = 0;
107
   }
108
 
109
   if (gtk_sink->widget_destroy_sig_handler) {
110
@@ -254,29 +265,34 @@ gst_gtk_gl_sink_start (GstBaseSink * bsink)
111
   gst_widget = GTK_GST_GL_WIDGET (base_sink->widget);
112
 
113
   /* Track the allocation size */
114
-  gtk_sink->size_allocate_sig_handler =
115
-      g_signal_connect (gst_widget, "size-allocate",
116
-      G_CALLBACK (_size_changed_cb), gtk_sink);
117
+  if (!gtk_sink->widget_resize_sig_handler) {
118
+    gtk_sink->widget_resize_sig_handler =
119
+        g_signal_connect (gst_widget, "resize",
120
+        G_CALLBACK (_size_changed_cb), gtk_sink);
121
+  }
122
 
123
-  gtk_sink->widget_destroy_sig_handler =
124
-      g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
125
-      gtk_sink);
126
+  if (!gtk_sink->widget_destroy_sig_handler) {
127
+    gtk_sink->widget_destroy_sig_handler =
128
+        g_signal_connect (gst_widget, "destroy", G_CALLBACK (destroy_cb),
129
+        gtk_sink);
130
+  }
131
 
132
-  _size_changed_cb (GTK_WIDGET (gst_widget), NULL, gtk_sink);
133
-
134
   if (!gtk_gst_gl_widget_init_winsys (gst_widget)) {
135
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
136
-            "Failed to initialize OpenGL with Gtk"), (NULL));
137
+            "Failed to initialize OpenGL with GTK"), (NULL));
138
     return FALSE;
139
   }
140
 
141
-  gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
142
-  gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
143
-  gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
144
+  if (!gtk_sink->display)
145
+    gtk_sink->display = gtk_gst_gl_widget_get_display (gst_widget);
146
+  if (!gtk_sink->context)
147
+    gtk_sink->context = gtk_gst_gl_widget_get_context (gst_widget);
148
+  if (!gtk_sink->gtk_context)
149
+    gtk_sink->gtk_context = gtk_gst_gl_widget_get_gtk_context (gst_widget);
150
 
151
   if (!gtk_sink->display || !gtk_sink->context || !gtk_sink->gtk_context) {
152
     GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s",
153
-            "Failed to retrieve OpenGL context from Gtk"), (NULL));
154
+            "Failed to retrieve OpenGL context from GTK"), (NULL));
155
     return FALSE;
156
   }
157
 
158
@@ -290,7 +306,14 @@ static gboolean
159
 gst_gtk_gl_sink_stop (GstBaseSink * bsink)
160
 {
161
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (bsink);
162
+  GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (bsink);
163
 
164
+  if (gtk_sink->widget_resize_sig_handler) {
165
+    g_signal_handler_disconnect (base_sink->widget,
166
+        gtk_sink->widget_resize_sig_handler);
167
+    gtk_sink->widget_resize_sig_handler = 0;
168
+  }
169
+
170
   if (gtk_sink->display) {
171
     gst_object_unref (gtk_sink->display);
172
     gtk_sink->display = NULL;
173
@@ -432,10 +455,10 @@ gst_gtk_gl_sink_finalize (GObject * object)
174
   GstGtkGLSink *gtk_sink = GST_GTK_GL_SINK (object);
175
   GstGtkBaseSink *base_sink = GST_GTK_BASE_SINK (object);
176
 
177
-  if (gtk_sink->size_allocate_sig_handler) {
178
+  if (gtk_sink->widget_resize_sig_handler) {
179
     g_signal_handler_disconnect (base_sink->widget,
180
-        gtk_sink->size_allocate_sig_handler);
181
-    gtk_sink->size_allocate_sig_handler = 0;
182
+        gtk_sink->widget_resize_sig_handler);
183
+    gtk_sink->widget_resize_sig_handler = 0;
184
   }
185
 
186
   if (gtk_sink->widget_destroy_sig_handler) {
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtkglsink.h (+11 lines)
Added Link Here
1
--- ext/gtk/gstgtkglsink.h
2
+++ ext/gtk/gstgtkglsink.h
3
@@ -57,7 +57,7 @@ struct _GstGtkGLSink
4
   gint                  display_width;
5
   gint                  display_height;
6
 
7
-  gulong                size_allocate_sig_handler;
8
+  gulong                widget_resize_sig_handler;
9
   gulong                widget_destroy_sig_handler;
10
 };
11
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstgtksink.c (+40 lines)
Added Link Here
1
--- ext/gtk/gstgtksink.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstgtksink.c
3
@@ -19,15 +19,22 @@
4
  */
5
 
6
 /**
7
- * SECTION:element-gtkgstsink
8
- * @title: gtkgstsink
9
+ * SECTION:element-gtksink
10
+ * @title: gtksink
11
  *
12
  */
13
 
14
+/**
15
+ * SECTION:element-gtk4sink
16
+ * @title: gtk4sink
17
+ *
18
+ */
19
+
20
 #ifdef HAVE_CONFIG_H
21
 #include "config.h"
22
 #endif
23
 
24
+#include "gtkconfig.h"
25
 #include "gtkgstwidget.h"
26
 #include "gstgtksink.h"
27
 
28
@@ -64,9 +71,10 @@ gst_gtk_sink_class_init (GstGtkSinkClass * klass)
29
   base_class = (GstGtkBaseSinkClass *) klass;
30
 
31
   base_class->create_widget = gtk_gst_widget_new;
32
-  base_class->window_title = "Gtk+ Cairo renderer";
33
+  base_class->window_title = GTKCONFIG_NAME " Cairo Renderer";
34
 
35
-  gst_element_class_set_metadata (gstelement_class, "Gtk Video Sink",
36
+  gst_element_class_set_metadata (gstelement_class,
37
+      GTKCONFIG_NAME " Video Sink",
38
       "Sink/Video", "A video sink that renders to a GtkWidget",
39
       "Matthew Waters <matthew@centricular.com>");
40
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gstplugin.c (+45 lines)
Added Link Here
1
--- ext/gtk/gstplugin.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gstplugin.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -22,8 +23,10 @@
12
 #include "config.h"
13
 #endif
14
 
15
+#include "gtkconfig.h"
16
 #include "gstgtksink.h"
17
-#if defined(HAVE_GTK3_GL)
18
+
19
+#if defined(HAVE_GTK_GL)
20
 #include "gstgtkglsink.h"
21
 #endif
22
 
23
@@ -32,10 +35,10 @@ plugin_init (GstPlugin * plugin)
24
 {
25
   gboolean ret = FALSE;
26
 
27
-  ret |= GST_ELEMENT_REGISTER (gtksink, plugin);
28
+  ret |= GST_ELEMENT_REGISTER (GTKCONFIG_SINK, plugin);
29
 
30
-#if defined(HAVE_GTK3_GL)
31
-  ret |= GST_ELEMENT_REGISTER (gtkglsink, plugin);
32
+#if defined(HAVE_GTK_GL)
33
+  ret |= GST_ELEMENT_REGISTER (GTKCONFIG_GLSINK, plugin);
34
 #endif
35
 
36
   return ret;
37
@@ -43,7 +46,6 @@ plugin_init (GstPlugin * plugin)
38
 
39
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
40
     GST_VERSION_MINOR,
41
-    gtk,
42
-    "Gtk+ sink",
43
+    GTKCONFIG_PLUGIN, GTKCONFIG_NAME " sink",
44
     plugin_init, PACKAGE_VERSION, GST_LICENSE, GST_PACKAGE_NAME,
45
     GST_PACKAGE_ORIGIN)
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkconfig.h (+34 lines)
Added Link Here
1
--- /dev/null
2
+++ ext/gtk/gtkconfig.h
3
@@ -0,0 +1,31 @@
4
+/*
5
+ * GStreamer
6
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
7
+ *
8
+ * This library is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU Library General Public
10
+ * License as published by the Free Software Foundation; either
11
+ * version 2 of the License, or (at your option) any later version.
12
+ *
13
+ * This library is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
+ * Library General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU Library General Public
19
+ * License along with this library; if not, write to the
20
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
21
+ * Boston, MA 02110-1301, USA.
22
+ */
23
+
24
+#if defined(BUILD_FOR_GTK4)
25
+#define GTKCONFIG_PLUGIN gtk4
26
+#define GTKCONFIG_NAME "GTK4"
27
+#define GTKCONFIG_SINK "gtk4sink"
28
+#define GTKCONFIG_GLSINK "gtk4glsink"
29
+#else
30
+#define GTKCONFIG_PLUGIN gtk
31
+#define GTKCONFIG_NAME "GTK"
32
+#define GTKCONFIG_SINK "gtksink"
33
+#define GTKCONFIG_GLSINK "gtkglsink"
34
+#endif
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.c (+257 lines)
Added Link Here
1
--- ext/gtk/gtkgstbasewidget.c.orig	2022-06-15 22:36:22 UTC
2
+++ ext/gtk/gtkgstbasewidget.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -208,7 +209,23 @@ gtk_gst_base_widget_get_preferred_height (GtkWidget * 
12
     *natural = video_height;
13
 }
14
 
15
+#if defined(BUILD_FOR_GTK4)
16
 static void
17
+gtk_gst_base_widget_measure (GtkWidget * widget, GtkOrientation orientation,
18
+    gint for_size, gint * min, gint * natural,
19
+    gint * minimum_baseline, gint * natural_baseline)
20
+{
21
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
22
+    gtk_gst_base_widget_get_preferred_width (widget, min, natural);
23
+  else
24
+    gtk_gst_base_widget_get_preferred_height (widget, min, natural);
25
+
26
+  *minimum_baseline = -1;
27
+  *natural_baseline = -1;
28
+}
29
+#endif
30
+
31
+static void
32
 gtk_gst_base_widget_set_property (GObject * object, guint prop_id,
33
     const GValue * value, GParamSpec * pspec)
34
 {
35
@@ -281,22 +298,46 @@ _gdk_key_to_navigation_string (guint keyval)
36
   }
37
 }
38
 
39
+static GdkEvent *
40
+_get_current_event (GtkEventController * controller)
41
+{
42
+#if defined(BUILD_FOR_GTK4)
43
+  return gtk_event_controller_get_current_event (controller);
44
+#else
45
+  return gtk_get_current_event ();
46
+#endif
47
+}
48
+
49
+static void
50
+_gdk_event_free (GdkEvent * event)
51
+{
52
+#if !defined(BUILD_FOR_GTK4)
53
+  if (event)
54
+    gdk_event_free (event);
55
+#endif
56
+}
57
+
58
 static gboolean
59
-gtk_gst_base_widget_key_event (GtkWidget * widget, GdkEventKey * event)
60
+gtk_gst_base_widget_key_event (GtkEventControllerKey * key_controller,
61
+    guint keyval, guint keycode, GdkModifierType state)
62
 {
63
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (key_controller);
64
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
65
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
66
   GstElement *element;
67
 
68
   if ((element = g_weak_ref_get (&base_widget->element))) {
69
     if (GST_IS_NAVIGATION (element)) {
70
-      const gchar *str = _gdk_key_to_navigation_string (event->keyval);
71
-      const gchar *key_type =
72
-          event->type == GDK_KEY_PRESS ? "key-press" : "key-release";
73
+      GdkEvent *event = _get_current_event (controller);
74
+      const gchar *str = _gdk_key_to_navigation_string (keyval);
75
 
76
-      if (!str)
77
-        str = event->string;
78
-
79
-      gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
80
+      if (str) {
81
+        const gchar *key_type =
82
+            gdk_event_get_event_type (event) ==
83
+            GDK_KEY_PRESS ? "key-press" : "key-release";
84
+        gst_navigation_send_key_event (GST_NAVIGATION (element), key_type, str);
85
+      }
86
+      _gdk_event_free (event);
87
     }
88
     g_object_unref (element);
89
   }
90
@@ -371,18 +412,38 @@ gtk_gst_base_widget_display_size_to_stream_size (GtkGs
91
 }
92
 
93
 static gboolean
94
-gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event)
95
+gtk_gst_base_widget_button_event (
96
+#if defined(BUILD_FOR_GTK4)
97
+    GtkGestureClick * gesture,
98
+#else
99
+    GtkGestureMultiPress * gesture,
100
+#endif
101
+    gint n_press, gdouble x, gdouble y)
102
 {
103
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (gesture);
104
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
105
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
106
   GstElement *element;
107
 
108
   if ((element = g_weak_ref_get (&base_widget->element))) {
109
     if (GST_IS_NAVIGATION (element)) {
110
+      GdkEvent *event = _get_current_event (controller);
111
       const gchar *key_type =
112
-          event->type ==
113
-          GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release";
114
+          gdk_event_get_event_type (event) == GDK_BUTTON_PRESS
115
+          ? "mouse-button-press" : "mouse-button-release";
116
+#if !defined(BUILD_FOR_GTK4)
117
+      guint button;
118
+      gdk_event_get_button (event, &button);
119
+#endif
120
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type,
121
-          event->button, event->x, event->y);
122
+#if defined(BUILD_FOR_GTK4)
123
+          /* Gesture is set to ignore other buttons so we do not have to check */
124
+          GDK_BUTTON_PRIMARY,
125
+#else
126
+          button,
127
+#endif
128
+          event->x, event->y);
129
+      _gdk_event_free (event);
130
     }
131
     g_object_unref (element);
132
   }
133
@@ -391,15 +452,18 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, 
134
 }
135
 
136
 static gboolean
137
-gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event)
138
+gtk_gst_base_widget_motion_event (GtkEventControllerMotion * motion_controller,
139
+    gdouble x, gdouble y)
140
 {
141
+  GtkEventController *controller = GTK_EVENT_CONTROLLER (motion_controller);
142
+  GtkWidget *widget = gtk_event_controller_get_widget (controller);
143
   GtkGstBaseWidget *base_widget = GTK_GST_BASE_WIDGET (widget);
144
   GstElement *element;
145
 
146
   if ((element = g_weak_ref_get (&base_widget->element))) {
147
     if (GST_IS_NAVIGATION (element)) {
148
       gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move",
149
-          0, event->x, event->y);
150
+          0, x, y);
151
     }
152
     g_object_unref (element);
153
   }
154
@@ -490,24 +554,20 @@ gtk_gst_base_widget_class_init (GtkGstBaseWidgetClass 
155
           "When enabled, alpha will be ignored and converted to black",
156
           DEFAULT_IGNORE_ALPHA, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
157
 
158
+#if defined(BUILD_FOR_GTK4)
159
+  widget_klass->measure = gtk_gst_base_widget_measure;
160
+#else
161
   widget_klass->get_preferred_width = gtk_gst_base_widget_get_preferred_width;
162
   widget_klass->get_preferred_height = gtk_gst_base_widget_get_preferred_height;
163
-  widget_klass->key_press_event = gtk_gst_base_widget_key_event;
164
-  widget_klass->key_release_event = gtk_gst_base_widget_key_event;
165
-  widget_klass->button_press_event = gtk_gst_base_widget_button_event;
166
-  widget_klass->button_release_event = gtk_gst_base_widget_button_event;
167
-  widget_klass->motion_notify_event = gtk_gst_base_widget_motion_event;
168
-  widget_klass->scroll_event = gtk_gst_base_widget_scroll_event;
169
+#endif
170
 
171
   GST_DEBUG_CATEGORY_INIT (gst_debug_gtk_base_widget, "gtkbasewidget", 0,
172
-      "Gtk Video Base Widget");
173
+      "GTK Video Base Widget");
174
 }
175
 
176
 void
177
 gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
178
 {
179
-  int event_mask;
180
-
181
   widget->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO;
182
   widget->par_n = DEFAULT_DISPLAY_PAR_N;
183
   widget->par_d = DEFAULT_DISPLAY_PAR_D;
184
@@ -521,20 +581,66 @@ gtk_gst_base_widget_init (GtkGstBaseWidget * widget)
185
   g_weak_ref_init (&widget->element, NULL);
186
   g_mutex_init (&widget->lock);
187
 
188
+  widget->key_controller = gtk_event_controller_key_new (
189
+#if !defined(BUILD_FOR_GTK4)
190
+      GTK_WIDGET (widget)
191
+#endif
192
+      );
193
+  g_signal_connect (widget->key_controller, "key-pressed",
194
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
195
+  g_signal_connect (widget->key_controller, "key-released",
196
+      G_CALLBACK (gtk_gst_base_widget_key_event), NULL);
197
+
198
+  widget->motion_controller = gtk_event_controller_motion_new (
199
+#if !defined(BUILD_FOR_GTK4)
200
+      GTK_WIDGET (widget)
201
+#endif
202
+      );
203
+  g_signal_connect (widget->motion_controller, "motion",
204
+      G_CALLBACK (gtk_gst_base_widget_motion_event), NULL);
205
+
206
+  widget->click_gesture =
207
+#if defined(BUILD_FOR_GTK4)
208
+      gtk_gesture_click_new ();
209
+#else
210
+      gtk_gesture_multi_press_new (GTK_WIDGET (widget));
211
+#endif
212
+  g_signal_connect (widget->click_gesture, "pressed",
213
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
214
+  g_signal_connect (widget->click_gesture, "released",
215
+      G_CALLBACK (gtk_gst_base_widget_button_event), NULL);
216
+
217
+#if defined(BUILD_FOR_GTK4)
218
+  /* Otherwise widget in grid will appear as a 1x1px
219
+   * video which might be misleading for users */
220
+  gtk_widget_set_hexpand (GTK_WIDGET (widget), TRUE);
221
+  gtk_widget_set_vexpand (GTK_WIDGET (widget), TRUE);
222
+
223
+  gtk_widget_set_focusable (GTK_WIDGET (widget), TRUE);
224
+  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (widget->click_gesture),
225
+      GDK_BUTTON_PRIMARY);
226
+
227
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->key_controller);
228
+  gtk_widget_add_controller (GTK_WIDGET (widget), widget->motion_controller);
229
+  gtk_widget_add_controller (GTK_WIDGET (widget),
230
+      GTK_EVENT_CONTROLLER (widget->click_gesture));
231
+#endif
232
+
233
   gtk_widget_set_can_focus (GTK_WIDGET (widget), TRUE);
234
-  event_mask = gtk_widget_get_events (GTK_WIDGET (widget));
235
-  event_mask |= GDK_KEY_PRESS_MASK
236
-      | GDK_KEY_RELEASE_MASK
237
-      | GDK_BUTTON_PRESS_MASK
238
-      | GDK_BUTTON_RELEASE_MASK
239
-      | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_SCROLL_MASK;
240
-  gtk_widget_set_events (GTK_WIDGET (widget), event_mask);
241
 }
242
 
243
 void
244
 gtk_gst_base_widget_finalize (GObject * object)
245
 {
246
   GtkGstBaseWidget *widget = GTK_GST_BASE_WIDGET (object);
247
+
248
+  /* GTK4 takes ownership of EventControllers
249
+   * while GTK3 still needs manual unref */
250
+#if !defined(BUILD_FOR_GTK4)
251
+  g_object_unref (widget->key_controller);
252
+  g_object_unref (widget->motion_controller);
253
+  g_object_unref (widget->click_gesture);
254
+#endif
255
 
256
   gst_buffer_replace (&widget->pending_buffer, NULL);
257
   gst_buffer_replace (&widget->buffer, NULL);
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstbasewidget.h (+53 lines)
Added Link Here
1
--- ext/gtk/gtkgstbasewidget.h
2
+++ ext/gtk/gtkgstbasewidget.h
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -25,6 +26,10 @@
12
 #include <gst/gst.h>
13
 #include <gst/video/video.h>
14
 
15
+#if !defined(BUILD_FOR_GTK4)
16
+#include <gdk/gdk.h>
17
+#endif
18
+
19
 #define GTK_GST_BASE_WIDGET(w)         ((GtkGstBaseWidget *)(w))
20
 #define GTK_GST_BASE_WIDGET_CLASS(k)   ((GtkGstBaseWidgetClass *)(k))
21
 #define GTK_GST_BASE_WIDGET_LOCK(w)    g_mutex_lock(&((GtkGstBaseWidget*)(w))->lock)
22
@@ -39,9 +44,7 @@ struct _GtkGstBaseWidget
23
 {
24
   union {
25
     GtkDrawingArea drawing_area;
26
-#if GTK_CHECK_VERSION(3, 15, 0)
27
     GtkGLArea gl_area;
28
-#endif
29
   } parent;
30
 
31
   /* properties */
32
@@ -67,6 +70,11 @@ struct _GtkGstBaseWidget
33
   GMutex lock;
34
   GWeakRef element;
35
 
36
+  /* event controllers */
37
+  GtkEventController *key_controller;
38
+  GtkEventController *motion_controller;
39
+  GtkGesture *click_gesture;
40
+
41
   /* Pending draw idles callback */
42
   guint draw_id;
43
 };
44
@@ -75,9 +83,7 @@ struct _GtkGstBaseWidgetClass
45
 {
46
   union {
47
     GtkDrawingAreaClass drawing_area_class;
48
-#if GTK_CHECK_VERSION(3, 15, 0)
49
     GtkGLAreaClass gl_area_class;
50
-#endif
51
   } parent_class;
52
 };
53
 
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstglwidget.c (+53 lines)
Added Link Here
1
--- ext/gtk/gtkgstglwidget.c
2
+++ ext/gtk/gtkgstglwidget.c
3
@@ -1,6 +1,7 @@
4
 /*
5
  * GStreamer
6
  * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
7
+ * Copyright (C) 2020 Rafał Dzięgiel <rafostar.github@gmail.com>
8
  *
9
  * This library is free software; you can redistribute it and/or
10
  * modify it under the terms of the GNU Library General Public
11
@@ -30,12 +31,20 @@
12
 #include <gst/video/video.h>
13
 
14
 #if GST_GL_HAVE_WINDOW_X11 && defined (GDK_WINDOWING_X11)
15
+#if defined(BUILD_FOR_GTK4)
16
+#include <gdk/x11/gdkx.h>
17
+#else
18
 #include <gdk/gdkx.h>
19
+#endif
20
 #include <gst/gl/x11/gstgldisplay_x11.h>
21
 #endif
22
 
23
 #if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
24
+#if defined(BUILD_FOR_GTK4)
25
+#include <gdk/wayland/gdkwayland.h>
26
+#else
27
 #include <gdk/gdkwayland.h>
28
+#endif
29
 #include <gst/gl/wayland/gstgldisplay_wayland.h>
30
 #endif
31
 
32
@@ -78,8 +87,7 @@ static const GLfloat vertices[] = {
33
 G_DEFINE_TYPE_WITH_CODE (GtkGstGLWidget, gtk_gst_gl_widget, GTK_TYPE_GL_AREA,
34
     G_ADD_PRIVATE (GtkGstGLWidget)
35
     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "gtkgstglwidget", 0,
36
-        "Gtk Gst GL Widget");
37
-    );
38
+        "GTK Gst GL Widget"));
39
 
40
 static void
41
 gtk_gst_gl_widget_bind_buffer (GtkGstGLWidget * gst_widget)
42
@@ -407,8 +415,11 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * gst_widget)
43
 
44
   GST_INFO ("Created %" GST_PTR_FORMAT, priv->display);
45
 
46
+  /* GTK4 always has alpha */
47
+#if !defined(BUILD_FOR_GTK4)
48
   gtk_gl_area_set_has_alpha (GTK_GL_AREA (gst_widget),
49
       !base_widget->ignore_alpha);
50
+#endif
51
 }
52
 
53
 static void
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_gtkgstwidget.c (+83 lines)
Added Link Here
1
--- ext/gtk/gtkgstwidget.c
2
+++ ext/gtk/gtkgstwidget.c
3
@@ -38,17 +38,15 @@
4
 
5
 G_DEFINE_TYPE (GtkGstWidget, gtk_gst_widget, GTK_TYPE_DRAWING_AREA);
6
 
7
-static gboolean
8
-gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
9
+static void
10
+_drawing_area_draw (GtkDrawingArea * da, cairo_t * cr,
11
+    gint widget_width, gint widget_height, gpointer data)
12
 {
13
+  GtkWidget *widget = GTK_WIDGET (da);
14
   GtkGstBaseWidget *gst_widget = (GtkGstBaseWidget *) widget;
15
-  guint widget_width, widget_height;
16
   cairo_surface_t *surface;
17
   GstVideoFrame frame;
18
 
19
-  widget_width = gtk_widget_get_allocated_width (widget);
20
-  widget_height = gtk_widget_get_allocated_height (widget);
21
-
22
   GTK_GST_BASE_WIDGET_LOCK (gst_widget);
23
 
24
   /* There is not much to optimize in term of redisplay, so simply swap the
25
@@ -148,7 +146,10 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
26
       color.alpha = 1.0;
27
     } else {
28
       gtk_style_context_get_color (gtk_widget_get_style_context (widget),
29
-          GTK_STATE_FLAG_NORMAL, &color);
30
+#if !defined(BUILD_FOR_GTK4)
31
+          GTK_STATE_FLAG_NORMAL,
32
+#endif
33
+          &color);
34
     }
35
     gdk_cairo_set_source_rgba (cr, &color);
36
     cairo_rectangle (cr, 0, 0, widget_width, widget_height);
37
@@ -156,8 +157,20 @@ gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
38
   }
39
 
40
   GTK_GST_BASE_WIDGET_UNLOCK (gst_widget);
41
+}
42
+
43
+#if !defined(BUILD_FOR_GTK4)
44
+static gboolean
45
+gtk_gst_widget_draw (GtkWidget * widget, cairo_t * cr)
46
+{
47
+  gint width = gtk_widget_get_allocated_width (widget);
48
+  gint height = gtk_widget_get_allocated_height (widget);
49
+
50
+  _drawing_area_draw (GTK_DRAWING_AREA (widget), cr, width, height, NULL);
51
+
52
   return FALSE;
53
 }
54
+#endif
55
 
56
 static void
57
 gtk_gst_widget_finalize (GObject * object)
58
@@ -171,17 +184,25 @@ static void
59
 gtk_gst_widget_class_init (GtkGstWidgetClass * klass)
60
 {
61
   GObjectClass *gobject_klass = (GObjectClass *) klass;
62
+#if !defined(BUILD_FOR_GTK4)
63
   GtkWidgetClass *widget_klass = (GtkWidgetClass *) klass;
64
+#endif
65
 
66
   gtk_gst_base_widget_class_init (GTK_GST_BASE_WIDGET_CLASS (klass));
67
   gobject_klass->finalize = gtk_gst_widget_finalize;
68
+#if !defined(BUILD_FOR_GTK4)
69
   widget_klass->draw = gtk_gst_widget_draw;
70
+#endif
71
 }
72
 
73
 static void
74
 gtk_gst_widget_init (GtkGstWidget * widget)
75
 {
76
   gtk_gst_base_widget_init (GTK_GST_BASE_WIDGET (widget));
77
+#if defined(BUILD_FOR_GTK4)
78
+  gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (widget),
79
+      _drawing_area_draw, NULL, NULL);
80
+#endif
81
 }
82
 
83
 GtkWidget *
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-ext_gtk_meson.build (+118 lines)
Added Link Here
1
--- ext/gtk/meson.build
2
+++ ext/gtk/meson.build
3
@@ -1,3 +1,4 @@
4
+gtk_versions = [3, 4]
5
 gtk_sources = [
6
   'gstgtkbasesink.c',
7
   'gstgtksink.c',
8
@@ -6,54 +7,86 @@ gtk_sources = [
9
   'gtkgstbasewidget.c',
10
   'gtkgstwidget.c',
11
 ]
12
+gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
13
+gtk_optional_deps = []
14
 
15
-gtk_defines = []
16
-optional_deps = []
17
+gtk4_dep = dependency('gtk4', required : get_option('gtk4'))
18
+gtk4_optional_deps = []
19
 
20
-gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
21
-if gtk_dep.found()
22
-  # FIXME: automagic
23
-  if have_gstgl and gtk_dep.version().version_compare('>=3.15.0')
24
-    have_gtk3_gl_windowing = false
25
+foreach gtk_ver : gtk_versions
26
+  gtkv = 'gtk' + gtk_ver.to_string()
27
+
28
+  gtk_state = get_option(gtkv)
29
+  if gtk_state.disabled()
30
+    continue
31
+  endif
32
+
33
+  min_ver = gtk_ver >= 4 ? '3.99.2'          : '3.24.0'
34
+  x11_str = gtk_ver >= 4 ? gtkv + '-x11'     : 'gtk+-x11-3.0'
35
+  way_str = gtk_ver >= 4 ? gtkv + '-wayland' : 'gtk+-wayland-3.0'
36
+  lib_dep = gtk_ver >= 4 ? gtk4_dep          : gtk_dep
37
+
38
+  if not lib_dep.found() or not lib_dep.version().version_compare('>=' + min_ver)
39
+    continue
40
+  endif
41
+
42
+  lib_sources = []
43
+  gtk_defines = []
44
+  optional_deps = []
45
+  have_gtk_gl_windowing = false
46
 
47
+  lib_sources += gtk_sources
48
+
49
+  if have_gstgl
50
     if gst_gl_have_window_x11 and gst_gl_have_platform_glx
51
       # FIXME: automagic
52
-      gtk_x11_dep = dependency('gtk+-x11-3.0', required : false)
53
+      gtk_x11_dep = dependency(x11_str, required : false)
54
       if gtk_x11_dep.found()
55
         optional_deps += [gtk_x11_dep, gstglx11_dep]
56
-        have_gtk3_gl_windowing = true
57
+        have_gtk_gl_windowing = true
58
       endif
59
     endif
60
 
61
     if gst_gl_have_window_wayland and gst_gl_have_platform_egl
62
       # FIXME: automagic
63
-      gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : false)
64
+      gtk_wayland_dep = dependency(way_str, required : false)
65
       if gtk_wayland_dep.found()
66
         optional_deps += [gtk_wayland_dep, gstglegl_dep, gstglwayland_dep]
67
-        have_gtk3_gl_windowing = true
68
+        have_gtk_gl_windowing = true
69
       endif
70
     endif
71
+  endif
72
 
73
-    if have_gtk3_gl_windowing
74
-      gtk_sources += [
75
-        'gstgtkglsink.c',
76
-        'gtkgstglwidget.c',
77
-      ]
78
-      optional_deps += [gstgl_dep, gstglproto_dep]
79
-      gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK3_GL']
80
-    endif
81
+  if have_gtk_gl_windowing
82
+    lib_sources += [
83
+      'gstgtkglsink.c',
84
+      'gtkgstglwidget.c',
85
+    ]
86
+    optional_deps += [gstgl_dep, gstglproto_dep]
87
+    gtk_defines += ['-DGST_USE_UNSTABLE_API', '-DHAVE_GTK_GL']
88
+  endif
89
+
90
+  if gtk_ver == 3
91
+    gtk_optional_deps = optional_deps
92
+  elif gtk_ver == 4
93
+    gtk4_optional_deps = optional_deps
94
+    gtk_defines += '-DBUILD_FOR_GTK4'
95
+  endif
96
+
97
+  lib_name = 'gstgtk'
98
+  if gtk_ver > 3
99
+    lib_name += gtk_ver.to_string()
100
   endif
101
 
102
-  gstgtk = library('gstgtk',
103
-    gtk_sources,
104
+  gstgtk = library(lib_name,
105
+    lib_sources,
106
     c_args : gst_plugins_good_args + gtk_defines,
107
     link_args : noseh_link_args,
108
     include_directories : [configinc],
109
-    dependencies : [gtk_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
110
+    dependencies : [lib_dep, gstvideo_dep, gstbase_dep, libm] + optional_deps,
111
     install : true,
112
     install_dir : plugins_install_dir,
113
   )
114
   pkgconfig.generate(gstgtk, install_dir : plugins_pkgconfig_install_dir)
115
   plugins += [gstgtk]
116
-endif
117
-
118
+endforeach
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-meson__options.txt (+10 lines)
Added Link Here
1
--- meson_options.txt
2
+++ meson_options.txt
3
@@ -53,6 +53,7 @@ option('dv1394', type : 'feature', value : 'auto', description : 'Digital IEEE13
4
 option('flac', type : 'feature', value : 'auto', description : 'FLAC audio codec plugin')
5
 option('gdk-pixbuf', type : 'feature', value : 'auto', description : 'gdk-pixbuf image decoder, overlay, and sink plugin')
6
 option('gtk3', type : 'feature', value : 'auto', description : 'GTK+ video sink plugin')
7
+option('gtk4', type : 'feature', value : 'disabled', description : 'GTK4 video sink plugin')
8
 option('jack', type : 'feature', value : 'auto', description : 'JACK audio source/sink plugin')
9
 option('jpeg', type : 'feature', value : 'auto', description : 'JPEG image codec plugin')
10
 option('lame', type : 'feature', value : 'auto', description : 'LAME mp3 audio encoder plugin')
(-)b/x11-toolkits/gstreamer1-plugins-gtk4/files5/patch-tests_examples_gtk_meson.build (+9 lines)
Added Link Here
1
--- tests/examples/gtk/meson.build
2
+++ tests/examples/gtk/meson.build
3
@@ -1,5 +1,5 @@
4
 executable('gtksink', 'gtksink.c',
5
-  dependencies: [gst_dep, gtk_dep, optional_deps],
6
+  dependencies: [gst_dep, gtk_dep, gtk_optional_deps],
7
   c_args: gst_plugins_good_args,
8
   include_directories: [configinc],
9
   install: false)
(-)b/x11-toolkits/gstreamer1-plugins-pango/Makefile (-1 / +6 lines)
Lines 1-4 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	x11-toolkits
1
CATEGORIES=	x11-toolkits
3
2
4
COMMENT=	GStreamer pango textoverlay plugin
3
COMMENT=	GStreamer pango textoverlay plugin
Lines 8-11 DIST= base Link Here
8
7
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
8
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
9
10
PLIST=  ${.CURDIR}/pkg-plist
11
12
USE_GNOME=  cairo pango
13
USES=	xorg
14
USE_XORG=	x11 xext
15
11
.include "${MASTERDIR}/Makefile"
16
.include "${MASTERDIR}/Makefile"
(-)b/x11-toolkits/gstreamer1-plugins-pango/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstpango.so
(-)b/x11/gstreamer1-plugins-x/Makefile (-1 / +9 lines)
Lines 1-11 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	x11
1
CATEGORIES=	x11
3
2
4
COMMENT=	GStreamer X and Xvideo output plugins
3
COMMENT=	GStreamer X and Xvideo output plugins
5
4
6
GST_PLUGIN=	x
5
GST_PLUGIN=	x
6
7
BASE_GST_ENABLED_PLUGINS=	ximage \
8
											xvideo
7
DIST=		base
9
DIST=		base
8
10
9
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
10
12
13
PLIST=  ${.CURDIR}/pkg-plist
14
15
USES=   xorg
16
USE_XORG=   x11 xv xext
17
CONFIGURE_ARGS= -Dxvideo=enabled -Dxshm=enabled
18
11
.include "${MASTERDIR}/Makefile"
19
.include "${MASTERDIR}/Makefile"
(-)b/x11/gstreamer1-plugins-x/pkg-plist (+3 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstximagesink.so
2
lib/gstreamer-%%VERSION%%/libgstxvimagesink.so
3
(-)b/x11/gstreamer1-plugins-ximagesrc/Makefile (-2 / +11 lines)
Lines 1-12 Link Here
1
PORTREVISION=	2
2
CATEGORIES=	x11
1
CATEGORIES=	x11
3
PKGNAMESUFFIX=	1-plugins-ximagesrc
2
PKGNAMESUFFIX=	1-plugins-ximagesrc
4
3
5
COMMENT=	GStreamer X source plugin
4
COMMENT=	GStreamer X source plugin
6
5
7
GST_PLUGIN=	x
6
GST_PLUGIN=	ximagesrc
8
DIST=		good
7
DIST=		good
9
8
9
GOOD_GST_ENABLED_PLUGINS=	ximagesrc \
10
													ximagesrc-xshm \
11
													ximagesrc-xfixes \
12
													ximagesrc-xdamage
13
10
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
14
MASTERDIR=	${.CURDIR}/../../multimedia/gstreamer1-plugins
11
15
16
PLIST=  ${.CURDIR}/pkg-plist
17
18
USES=   xorg
19
USE_XORG=   x11 xfixes xdamage xext
20
12
.include "${MASTERDIR}/Makefile"
21
.include "${MASTERDIR}/Makefile"
(-)b/x11/gstreamer1-plugins-ximagesrc/pkg-plist (+1 lines)
Added Link Here
1
lib/gstreamer-%%VERSION%%/libgstximagesrc.so

Return to bug 261585