[packages/gstreamer-plugins-bad] - added aja plugin; updated vpl bcond to use libvpl

qboosh qboosh at pld-linux.org
Thu Mar 21 19:58:11 CET 2024


commit 0b0f7f176ca9e9cdb03d02eede0d5d57a08f2414
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Thu Mar 21 19:40:23 2024 +0100

    - added aja plugin; updated vpl bcond to use libvpl

 gstreamer-plugins-bad-aja-update.patch | 76 +++++++++++++++++++++++++++++++
 gstreamer-plugins-bad.spec             | 82 +++++++++++++++++++++-------------
 2 files changed, 127 insertions(+), 31 deletions(-)
---
diff --git a/gstreamer-plugins-bad.spec b/gstreamer-plugins-bad.spec
index 6accf01..5f30903 100644
--- a/gstreamer-plugins-bad.spec
+++ b/gstreamer-plugins-bad.spec
@@ -1,5 +1,4 @@
 # TODO:
-# - ajantv2
 # - magicleap (ml_audio/lumin SDK - is it available on Linux?)
 # - fix opencv
 #   /usr/include/opencv4/opencv2/tracking/tracking_internals.hpp:18:10: fatal error: opencv2/video/detail/tracking.private.hpp: No such file or directory
@@ -8,6 +7,7 @@
 # - OpenSLES (when available on pure Linux, not Android)
 #
 # Conditional build:
+%bcond_without	aja		# AJA NTV2 input/output plugin
 %bcond_without	amr		# amrwbenc output plugin
 %bcond_without	apidocs		# API documentation
 %bcond_without	bs2b		# bs2b headphone stereo improvement plugin
@@ -41,7 +41,7 @@
 %bcond_without	svthevc		# SvtHevc encoder plugin
 %bcond_without	tinyalsa	# ALSA audiosink using tinyalsa library
 %bcond_without	uvch264		# uvch264 cameras plugin
-%bcond_with	vpl		# oneVPL instead of MFX in Intel MediaSDK plugin (x86_64 only)
+%bcond_with	vpl		# VPL instead of MFX in Intel MediaSDK plugin
 %bcond_without	vulkan		# Vulkan library and videosink/upload plugin
 %bcond_without	wayland		# Wayland videosink plugin, Wayland EGL support
 %bcond_without	wpe		# WebKit based web browser plugin
@@ -55,9 +55,6 @@
 %undefine with_wayland
 %undefine with_wpe
 %endif
-%ifnarch %{x8664}
-%undefine	with_vpl
-%endif
 %if %{without mfx} && %{without vpl}
 %undefine	with_msdk
 %endif
@@ -84,6 +81,7 @@ Source0:	https://gstreamer.freedesktop.org/src/gst-plugins-bad/%{gstname}-%{vers
 # Source0-md5:	22982dd1f7baffa6435551cbe156b888
 Patch0:		musepack.patch
 Patch1:		%{name}-gs-c++17.patch
+Patch2:		%{name}-aja-update.patch
 URL:		https://gstreamer.freedesktop.org/
 BuildRequires:	docbook-dtd412-xml
 BuildRequires:	gettext-tools >= 0.17
@@ -143,6 +141,7 @@ BuildRequires:	json-glib-devel >= 1.6.6
 %{?with_ladspa:BuildRequires:	ladspa-devel >= 1.12}
 BuildRequires:	lcms2-devel >= 2.7
 %{?with_ldac:BuildRequires:	ldacBT-devel}
+%{?with_aja:BuildRequires:	libajantv2-devel}
 BuildRequires:	libass-devel >= 0.10.2
 BuildRequires:	libavtp-devel >= 0.2.0
 %{?with_bs2b:BuildRequires:	libbs2b-devel >= 3.1.0}
@@ -174,7 +173,7 @@ BuildRequires:	libssh2-devel >= 1.4.3
 %if %{with zxing} || %{with gcloud}
 BuildRequires:	libstdc++-devel >= 6:7
 %else
-# C++11 for decklink, modplug, nvcodec, soundtouch
+# C++11 for aja, decklink, modplug, nvcodec, soundtouch
 # C++14 for nvcodec
 BuildRequires:	libstdc++-devel >= 6:5
 %endif
@@ -183,6 +182,7 @@ BuildRequires:	libtheora-devel >= 1.0
 BuildRequires:	libusrsctp-devel
 BuildRequires:	libva-devel >= 1.15
 BuildRequires:	libva-drm-devel >= 1.12
+%{?with_vpl:BuildRequires:	libvpl-devel >= 2.2}
 BuildRequires:	libvpx-devel
 BuildRequires:	libwebp-devel >= 0.2.1
 %{?with_x265:BuildRequires:	libx265-devel}
@@ -198,7 +198,6 @@ BuildRequires:	libxml2-devel >= 1:2.9.2
 %{?with_neon:BuildRequires:	neon-devel < 0.34}
 # for hls, could also use libgcrypt>=1.2.0 or openssl
 BuildRequires:	nettle-devel >= 3.0
-%{?with_vpl:BuildRequires:	oneVPL-devel >= 2.2}
 %if %{with opencv}
 BuildRequires:	opencv-devel >= 1:3.0.0
 %endif
@@ -380,6 +379,21 @@ GStreamer AES encryption/decryption plugin.
 %description -n gstreamer-aes -l pl.UTF-8
 Wtyczka szyfrująca/odszyfrowująca AES dla GStreamera.
 
+%package -n gstreamer-aja
+Summary:	GStreamer AJA source/sink plugin
+Summary(pl.UTF-8):	Wtyczka źródła/wyjścia AJA dla GStreamera
+Group:		Libraries
+Requires:	gstreamer >= %{gst_ver}
+Requires:	gstreamer-plugins-base >= %{gstpb_ver}
+
+%description -n gstreamer-aja
+GStreamer AJA audio/video source/sink plugin based on libajantv2
+library.
+
+%description -n gstreamer-aja -l pl.UTF-8
+Oparta na bibliotece libajantv2 wtyczka źródła/wyjścia dźwięku/obrazu
+GStreamera.
+
 %package -n gstreamer-amrwbenc
 Summary:	GStreamer plugin for AMR-WB audio encoding
 Summary(pl.UTF-8):	Wtyczka GStreamera do kodowania dźwięku w formacie AMR-WB
@@ -761,21 +775,6 @@ GStreamer plugin to encode and decode audio using iSAC codec.
 Wtyczka GStreamera do kodowania i dekodowania dźwięku przy użyciu
 kodeka iSAC.
 
-%package -n gstreamer-videosink-kms
-Summary:	GStreamer KMS output plugin
-Summary(pl.UTF-8):	Wtyczka wyjścia obrazu KMS dla GStreamera
-Group:		Libraries
-Requires:	gstreamer >= %{gst_ver}
-Requires:	gstreamer-plugins-base >= %{gstpb_ver}
-Requires:	libdrm >= 2.4.104
-Provides:	gstreamer-videosink = %{version}
-
-%description -n gstreamer-videosink-kms
-GStreamer KMS output plugin.
-
-%description -n gstreamer-videosink-kms -l pl.UTF-8
-Wtyczka wyjścia obrazu KMS dla GStreamera.
-
 %package -n gstreamer-ladspa
 Summary:	GStreamer wrapper for LADSPA plugins
 Summary(pl.UTF-8):	Wrapper do wtyczek LADSPA dla GStreamera
@@ -897,6 +896,7 @@ Requires:	%{name} = %{version}-%{release}
 Requires:	gstreamer >= %{gst_ver}
 Requires:	gstreamer-plugins-base >= %{gstpb_ver}
 Requires:	libdrm >= 2.4.104
+%{?with_vpl:Requires:	libvpl >= 2.2}
 
 %description -n gstreamer-msdk
 GStreamer video decoder/encoder based on Intel MediaSDK (MFX) library.
@@ -1410,6 +1410,21 @@ Plugin for sending output to the GTK+ on Wayland architecture.
 %description -n gstreamer-videosink-gtkwayland -l pl.UTF-8
 Wtyczka przekazująca wyjście do architektury GTK+ na Wayland.
 
+%package -n gstreamer-videosink-kms
+Summary:	GStreamer KMS output plugin
+Summary(pl.UTF-8):	Wtyczka wyjścia obrazu KMS dla GStreamera
+Group:		Libraries
+Requires:	gstreamer >= %{gst_ver}
+Requires:	gstreamer-plugins-base >= %{gstpb_ver}
+Requires:	libdrm >= 2.4.104
+Provides:	gstreamer-videosink = %{version}
+
+%description -n gstreamer-videosink-kms
+GStreamer KMS output plugin.
+
+%description -n gstreamer-videosink-kms -l pl.UTF-8
+Wtyczka wyjścia obrazu KMS dla GStreamera.
+
 %package -n gstreamer-videosink-wayland
 Summary:	GStreamer plugin for outputing to GTK+/Wayland
 Summary(pl.UTF-8):	Wtyczka wyjścia GTK+/Wayland dla GStreamera
@@ -1584,6 +1599,7 @@ Wtyczka GStreamera ZXing wykrywająca kody kreskowe.
 %setup -q -n %{gstname}-%{version}
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 # disable SCTP debugging (even though gst_debug is enabled by default)
 # (SCTP_DEBUG requires libusrsctp built with debugging)
@@ -1592,6 +1608,7 @@ Wtyczka GStreamera ZXing wykrywająca kody kreskowe.
 %build
 %meson build \
 	--default-library=shared \
+	%{!?with_aja:-Daja=disabled} \
 	%{!?with_bluez:-Dbluez=disabled} \
 	%{!?with_bs2b:-Dbs2b=disabled} \
 	%{!?with_directfb:-Ddirectfb=disabled} \
@@ -2163,6 +2180,13 @@ rm -rf $RPM_BUILD_ROOT
 # R: openssl >= 1.1.0
 %attr(755,root,root) %{gstlibdir}/libgstaes.so
 
+%if %{with aja}
+%files -n gstreamer-aja
+%defattr(644,root,root,755)
+# R: libajantv2 libstdc++
+%attr(755,root,root) %{gstlibdir}/libgstaja.so
+%endif
+
 %files -n gstreamer-aom
 %defattr(644,root,root,755)
 %attr(755,root,root) %{gstlibdir}/libgstaom.so
@@ -2295,14 +2319,6 @@ rm -rf $RPM_BUILD_ROOT
 # R: webrtc-audio-processing1 >= 1.0
 %attr(755,root,root) %{gstlibdir}/libgstisac.so
 
-%files -n gstreamer-videosink-gtkwayland
-%defattr(644,root,root,755)
-%attr(755,root,root) %{gstlibdir}/libgstgtkwayland.so
-
-%files -n gstreamer-videosink-kms
-%defattr(644,root,root,755)
-%attr(755,root,root) %{gstlibdir}/libgstkms.so
-
 %if %{with ladspa}
 %files -n gstreamer-ladspa
 %defattr(644,root,root,755)
@@ -2352,7 +2368,7 @@ rm -rf $RPM_BUILD_ROOT
 %if %{with msdk}
 %files -n gstreamer-msdk
 %defattr(644,root,root,755)
-# R: %{?with_mfx:mfx_dispatch} %{?with_vpl:oneVPL}
+# R: %{?with_mfx:mfx_dispatch} %{?with_vpl:libvpl}
 %attr(755,root,root) %{gstlibdir}/libgstmsdk.so
 %endif
 
@@ -2533,6 +2549,10 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %attr(755,root,root) %{gstlibdir}/libgstgtkwayland.so
 
+%files -n gstreamer-videosink-kms
+%defattr(644,root,root,755)
+%attr(755,root,root) %{gstlibdir}/libgstkms.so
+
 %if %{with wayland}
 %files -n gstreamer-videosink-wayland
 %defattr(644,root,root,755)
diff --git a/gstreamer-plugins-bad-aja-update.patch b/gstreamer-plugins-bad-aja-update.patch
new file mode 100644
index 0000000..3f6f921
--- /dev/null
+++ b/gstreamer-plugins-bad-aja-update.patch
@@ -0,0 +1,76 @@
+--- gst-plugins-bad-1.24.0/sys/aja/gstajasrc.cpp.orig	2024-03-05 00:51:42.000000000 +0100
++++ gst-plugins-bad-1.24.0/sys/aja/gstajasrc.cpp	2024-03-21 06:03:23.822345459 +0100
+@@ -1058,9 +1058,9 @@ static gboolean gst_aja_src_configure(Gs
+       // their framebuffers/muxers, and muxers from their framebuffers
+       for (auto iter = connections.begin(); iter != connections.end(); iter++) {
+         if (iter->first == NTV2_XptFrameBuffer1Input ||
+-            iter->first == NTV2_XptFrameBuffer1BInput ||
++            iter->first == NTV2_XptFrameBuffer1DS2Input ||
+             iter->first == NTV2_XptFrameBuffer2Input ||
+-            iter->first == NTV2_XptFrameBuffer2BInput ||
++            iter->first == NTV2_XptFrameBuffer2DS2Input ||
+             iter->second == NTV2_Xpt425Mux1AYUV ||
+             iter->second == NTV2_Xpt425Mux1BYUV ||
+             iter->second == NTV2_Xpt425Mux2AYUV ||
+@@ -1078,10 +1078,8 @@ static gboolean gst_aja_src_configure(Gs
+     } else if (self->channel == NTV2_CHANNEL1) {
+       for (auto iter = connections.begin(); iter != connections.end(); iter++) {
+         if (iter->first == NTV2_XptFrameBuffer1Input ||
+-            iter->first == NTV2_XptFrameBuffer1BInput ||
+             iter->first == NTV2_XptFrameBuffer1DS2Input ||
+             iter->first == NTV2_XptFrameBuffer2Input ||
+-            iter->first == NTV2_XptFrameBuffer2BInput ||
+             iter->first == NTV2_XptFrameBuffer2DS2Input ||
+             iter->second == NTV2_Xpt425Mux1AYUV ||
+             iter->second == NTV2_Xpt425Mux1BYUV ||
+@@ -1104,10 +1102,8 @@ static gboolean gst_aja_src_configure(Gs
+     } else if (self->channel == NTV2_CHANNEL5) {
+       for (auto iter = connections.begin(); iter != connections.end(); iter++) {
+         if (iter->first == NTV2_XptFrameBuffer5Input ||
+-            iter->first == NTV2_XptFrameBuffer5BInput ||
+             iter->first == NTV2_XptFrameBuffer5DS2Input ||
+             iter->first == NTV2_XptFrameBuffer6Input ||
+-            iter->first == NTV2_XptFrameBuffer6BInput ||
+             iter->first == NTV2_XptFrameBuffer6DS2Input ||
+             iter->second == NTV2_Xpt425Mux3AYUV ||
+             iter->second == NTV2_Xpt425Mux3BYUV ||
+@@ -1208,9 +1204,9 @@ static gboolean gst_aja_src_configure(Gs
+   if (self->quad_mode) {
+     if (self->input_source >= GST_AJA_INPUT_SOURCE_HDMI1 &&
+         self->input_source <= GST_AJA_INPUT_SOURCE_HDMI4) {
+-      router.AddConnection(NTV2_XptFrameBuffer1BInput, NTV2_Xpt425Mux1BYUV);
++      router.AddConnection(NTV2_XptFrameBuffer1DS2Input, NTV2_Xpt425Mux1BYUV);
+       router.AddConnection(NTV2_XptFrameBuffer2Input, NTV2_Xpt425Mux2AYUV);
+-      router.AddConnection(NTV2_XptFrameBuffer2BInput, NTV2_Xpt425Mux2BYUV);
++      router.AddConnection(NTV2_XptFrameBuffer2DS2Input, NTV2_Xpt425Mux2BYUV);
+ 
+       router.AddConnection(NTV2_Xpt425Mux1AInput, NTV2_XptHDMIIn1);
+       router.AddConnection(NTV2_Xpt425Mux1BInput, NTV2_XptHDMIIn1Q2);
+@@ -1250,11 +1246,11 @@ static gboolean gst_aja_src_configure(Gs
+           // TSI?
+         } else {
+           if (self->channel == NTV2_CHANNEL1) {
+-            router.AddConnection(NTV2_XptFrameBuffer1BInput,
++            router.AddConnection(NTV2_XptFrameBuffer1DS2Input,
+                                  NTV2_Xpt425Mux1BYUV);
+             router.AddConnection(NTV2_XptFrameBuffer2Input,
+                                  NTV2_Xpt425Mux2AYUV);
+-            router.AddConnection(NTV2_XptFrameBuffer2BInput,
++            router.AddConnection(NTV2_XptFrameBuffer2DS2Input,
+                                  NTV2_Xpt425Mux2BYUV);
+ 
+             router.AddConnection(NTV2_Xpt425Mux1AInput, NTV2_XptSDIIn1);
+@@ -1262,11 +1258,11 @@ static gboolean gst_aja_src_configure(Gs
+             router.AddConnection(NTV2_Xpt425Mux2AInput, NTV2_XptSDIIn3);
+             router.AddConnection(NTV2_Xpt425Mux2BInput, NTV2_XptSDIIn4);
+           } else if (self->channel == NTV2_CHANNEL5) {
+-            router.AddConnection(NTV2_XptFrameBuffer5BInput,
++            router.AddConnection(NTV2_XptFrameBuffer5DS2Input,
+                                  NTV2_Xpt425Mux3BYUV);
+             router.AddConnection(NTV2_XptFrameBuffer6Input,
+                                  NTV2_Xpt425Mux4AYUV);
+-            router.AddConnection(NTV2_XptFrameBuffer6BInput,
++            router.AddConnection(NTV2_XptFrameBuffer6DS2Input,
+                                  NTV2_Xpt425Mux4BYUV);
+ 
+             router.AddConnection(NTV2_Xpt425Mux3AInput, NTV2_XptSDIIn5);
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/gstreamer-plugins-bad.git/commitdiff/0b0f7f176ca9e9cdb03d02eede0d5d57a08f2414



More information about the pld-cvs-commit mailing list