$ git diff --patch-with-stat --summary b90e11c65c94e505bd714d5e882cc7161d76e4a2..a9e075bc11268c571df406f5c34f7039c7879e15
.abf.yml | 2 +-
v4l-utils-1.20.0-qt-gles.patch | 60 ++++++++++++++
v4l-utils.spec | 176 ++++++++++++++++++++++++++++++++++++++---
3 files changed, 224 insertions(+), 14 deletions(-)
create mode 100644 v4l-utils-1.20.0-qt-gles.patch
diff --git a/.abf.yml b/.abf.yml
index 1fcff50..ad03ce5 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- v4l-utils-1.16.8.tar.bz2: 22df83d180f3af034559786b77caba1423047162
+ v4l-utils-1.20.0.tar.bz2: 91128695040c694c3998540ca3b710ca9c8262e1
diff --git a/v4l-utils-1.20.0-qt-gles.patch b/v4l-utils-1.20.0-qt-gles.patch
new file mode 100644
index 0000000..e83ccac
--- /dev/null
+++ b/v4l-utils-1.20.0-qt-gles.patch
@@ -0,0 +1,60 @@
+diff -up v4l-utils-1.20.0/utils/qvidcap/paint.cpp.omv~ v4l-utils-1.20.0/utils/qvidcap/paint.cpp
+--- v4l-utils-1.20.0/utils/qvidcap/paint.cpp.omv~ 2020-09-13 18:21:12.993667857 +0200
++++ v4l-utils-1.20.0/utils/qvidcap/paint.cpp 2020-09-13 18:31:04.021442468 +0200
+@@ -24,6 +24,10 @@
+
+ #include "v4l2-info.h"
+
++#ifdef HAVE_QTGLES
++#include <GL/gl.h>
++#endif
++
+ void CaptureWin::initializeGL()
+ {
+ initializeOpenGLFunctions();
+diff -up v4l-utils-1.20.0/configure.ac.omv~ v4l-utils-1.20.0/configure.ac
+--- v4l-utils-1.20.0/configure.ac.omv~ 2020-09-13 18:32:46.372727599 +0200
++++ v4l-utils-1.20.0/configure.ac 2020-09-13 18:32:30.869531424 +0200
+@@ -272,12 +272,16 @@ if test "x$qt_pkgconfig" = "xtrue"; then
+ QT_VERSION="v5 with QtGL"
+ fi
+ else
++ QTGL_CFLAGS="$QT5GL_CFLAGS -fPIC"
++ QTGL_LIBS="$QT5GL_LIBS"
++ AC_SUBST(QTGL_CFLAGS)
++ AC_SUBST(QTGL_LIBS)
++ AC_DEFINE([HAVE_QTGLES], [1], [qt has opengl ES support])
+ if test "x$qt54_pkgconfig" = "xtrue"; then
+- QT_VERSION="v5.4"
++ QT_VERSION="v5.4 with QtGLES"
+ else
+- QT_VERSION="v5"
++ QT_VERSION="v5 with QtGLES"
+ fi
+- AC_MSG_WARN(Qt5 Desktop OpenGL is not available)
+ fi
+ else
+ AC_MSG_WARN(Qt5 or higher is not available)
+@@ -538,7 +542,7 @@ AM_CONDITIONAL([WITH_DVBV5_REMOTE], [tes
+ AM_CONDITIONAL([WITH_DYN_LIBV4L], [test x$enable_dyn_libv4l != xno])
+ AM_CONDITIONAL([WITH_V4LUTILS], [test x$enable_v4l_utils != xno -a x$linux_os = xyes])
+ AM_CONDITIONAL([WITH_QV4L2], [test x${qt_pkgconfig} = xtrue -a x$enable_qv4l2 != xno])
+-AM_CONDITIONAL([WITH_QVIDCAP], [test x${qt_desktop_opengl} = xyes -a x$enable_qvidcap != xno])
++AM_CONDITIONAL([WITH_QVIDCAP], [test x${qt_pkgconfig} = xtrue -a x$enable_qvidcap != xno])
+ AM_CONDITIONAL([WITH_V4L_PLUGINS], [test x$enable_dyn_libv4l != xno -a x$enable_shared != xno])
+ AM_CONDITIONAL([WITH_V4L_WRAPPERS], [test x$enable_dyn_libv4l != xno -a x$enable_shared != xno])
+ AM_CONDITIONAL([WITH_QTGL], [test x${qt_desktop_opengl} = xyes])
+diff -up v4l-utils-1.20.0/configure.ac.omv~ v4l-utils-1.20.0/configure.ac
+diff -up v4l-utils-1.20.0/utils/Makefile.am.omv~ v4l-utils-1.20.0/utils/Makefile.am
+diff -up v4l-utils-1.20.0/utils/qvidcap/Makefile.am.omv~ v4l-utils-1.20.0/utils/qvidcap/Makefile.am
+--- v4l-utils-1.20.0/utils/qvidcap/Makefile.am.omv~ 2020-09-13 18:38:24.869113238 +0200
++++ v4l-utils-1.20.0/utils/qvidcap/Makefile.am 2020-09-13 18:38:42.822350138 +0200
+@@ -6,7 +6,7 @@ qvidcap_SOURCES = qvidcap.cpp qvidcap.h
+ nodist_qvidcap_SOURCES = qrc_qvidcap.cpp moc_capture.cpp v4l2-convert.h
+ qvidcap_LDADD = ../../lib/libv4l2/libv4l2.la ../../lib/libv4lconvert/libv4lconvert.la ../libv4l2util/libv4l2util.la \
+ ../libmedia_dev/libmedia_dev.la
+-qvidcap_CPPFLAGS = -I\$(top_srcdir)/utils/common
++qvidcap_CPPFLAGS = -I$(top_srcdir)/utils/common
+
+ qvidcap_CPPFLAGS += $(QTGL_CFLAGS)
+ qvidcap_LDFLAGS = $(QTGL_LIBS)
diff --git a/v4l-utils.spec b/v4l-utils.spec
index bc3ef56..e8bf55e 100644
--- a/v4l-utils.spec
+++ b/v4l-utils.spec
@@ -1,15 +1,23 @@
+# libv4l2 is used by ffmpeg, ffmpeg is used by wine
+%ifarch %{x86_64}
+%bcond_without compat32
+%endif
+
%define major 0
%define libname %mklibname v4l %{major}
%define develname %mklibname v4l -d
%define wrappersname %mklibname v4l-wrappers
+%define lib32name %mklib32name v4l %{major}
+%define devel32name %mklib32name v4l -d
+%define wrappers32name %mklib32name v4l-wrappers
%define _disable_rebuild_configure 1
%define _disable_ld_no_undefined 1
%define _disable_lto 1
%bcond_without graphics
Name: v4l-utils
-Version: 1.16.8
-Release: 1
+Version: 1.20.0
+Release: 2
Summary: Linux V4L2 and DVB API utilities
License: LGPLv2+
Group: System/Libraries
@@ -18,6 +26,7 @@ Source0: http://linuxtv.org/downloads/v4l-utils/%{name}-%{version}.tar.bz2
Source100: %{name}.rpmlintrc
Patch0: v4l-utils-1.12.3-pthread.patch
Patch1: v4l-utils-1.8.0-use-system-jpeg.patch
+Patch2: v4l-utils-1.20.0-qt-gles.patch
BuildRequires: pkgconfig(libjpeg)
BuildRequires: sysfsutils-devel
BuildRequires: pkgconfig(libelf)
@@ -39,6 +48,16 @@ Requires: %{wrappersname} >= %{version}-%{release}
%define oldname %mklibname v4l 0
Obsoletes: %{oldname} < %{EVRD}
+%if %{with compat32}
+BuildRequires: devel(libjpeg)
+BuildRequires: devel(libelf)
+BuildRequires: devel(libX11)
+BuildRequires: devel(libGL)
+BuildRequires: devel(libGLU)
+BuildRequires: devel(libasound)
+BuildRequires: devel(libudev)
+%endif
+
%description
v4l-utils is the combination of various v4l and dvb utilities which
used to be part of the v4l-dvb mercurial kernel tree.
@@ -55,12 +74,32 @@ used to be part of the v4l-dvb mercurial kernel tree.
%define v4l2rdsd %mklibname v4l2rds -d
%define v4lconvertd %mklibname v4lconvert -d
+%define dvbv532 %mklib32name dvbv5 %{major}
+%define v4l132 %mklib32name v4l1 %{major}
+%define v4l232 %mklib32name v4l2 %{major}
+%define v4l2rds32 %mklib32name v4l2rds %{major}
+%define v4lconvert32 %mklib32name v4lconvert %{major}
+
+%define dvbv5d32 %mklib32name dvbv5 -d
+%define v4l1d32 %mklib32name v4l1 -d
+%define v4l2d32 %mklib32name v4l2 -d
+%define v4l2rdsd32 %mklib32name v4l2rds -d
+%define v4lconvertd32 %mklib32name v4lconvert -d
+
%libpackage dvbv5 %{major}
%libpackage v4l1 %{major}
%libpackage v4l2 %{major}
%libpackage v4l2rds %{major}
%libpackage v4lconvert %{major}
+%if %{with compat32}
+%lib32package dvbv5 %{major}
+%lib32package v4l1 %{major}
+%lib32package v4l2 %{major}
+%lib32package v4l2rds %{major}
+%lib32package v4lconvert %{major}
+%endif
+
%package -n v4l-utils-qt5
Summary: Qt5 tools for v4l applications
Group: System/Libraries
@@ -181,29 +220,138 @@ Provides: libv4l-devel = %{version}-%{release}
This package contains the development files needed to build
programs that use libv4l.
+%if %{with compat32}
+%package -n %{dvbv5d32}
+Summary: Development files for libdvbv5 (32-bit)
+Group: Development/C
+Requires: %{dvbv532} = %{EVRD}
+
+%description -n %{dvbv5d32}
+Development files for libdvbv5
+
+%files -n %{dvbv5d32}
+%{_prefix}/lib/libdvbv5.so
+%{_prefix}/lib/pkgconfig/libdvbv5.pc
+
+%package -n %{v4l1d32}
+Summary: Development files for libv4l1 (32-bit)
+Group: Development/C
+Requires: %{v4l132} = %{EVRD}
+
+%description -n %{v4l1d32}
+Development files for libv4l1
+
+%files -n %{v4l1d32}
+%{_prefix}/lib/libv4l1.so
+%{_prefix}/lib/pkgconfig/libv4l1.pc
+
+%package -n %{v4l2d32}
+Summary: Development files for libv4l2 (32-bit)
+Group: Development/C
+Requires: %{v4l232} = %{EVRD}
+
+%description -n %{v4l2d32}
+Development files for libv4l2
+
+%files -n %{v4l2d32}
+%{_prefix}/lib/libv4l2.so
+%{_prefix}/lib/pkgconfig/libv4l2.pc
+
+%package -n %{v4l2rdsd32}
+Summary: Development files for libv4l2rds (32-bit)
+Group: Development/C
+Requires: %{v4l2rds32} = %{EVRD}
+
+%description -n %{v4l2rdsd32}
+Development files for libv4l2rds
+
+%files -n %{v4l2rdsd32}
+%{_prefix}/lib/libv4l2rds.so
+%{_prefix}/lib/pkgconfig/libv4l2rds.pc
+
+%package -n %{v4lconvertd32}
+Summary: Development files for libv4lconvert (32-bit)
+Group: Development/C
+Requires: %{v4lconvert32} = %{EVRD}
+
+%description -n %{v4lconvertd32}
+Development files for libv4lconvert
+
+%files -n %{v4lconvertd32}
+%{_prefix}/lib/libv4lconvert.so
+%{_prefix}/lib/pkgconfig/libv4lconvert.pc
+
+%package -n %{devel32name}
+Summary: Development files from libv4l (32-bit)
+Group: Development/C
+Requires: %{dvbv5d32} = %{EVRD}
+Requires: %{v4l1d32} = %{EVRD}
+Requires: %{v4l2d32} = %{EVRD}
+Requires: %{v4l2rdsd32} = %{EVRD}
+Requires: %{v4lconvertd32} = %{EVRD}
+
+%description -n %{devel32name}
+This package contains the development files needed to build
+programs that use libv4l.
+
+%package -n %{wrappers32name}
+Summary: Wrappers for v4l applications
+Group: System/Libraries
+
+%description -n %{wrappers32name}
+This package contains wrapper libraries that adds v4l2 device
+compatibility for v4l1 applications and support for various
+pixelformats to v4l2 applications.
+
+%files -n %{wrappers32name}
+%dir %{_prefix}/lib/libv4l
+%dir %{_prefix}/lib/libv4l/plugins
+%{_prefix}/lib/v4l1compat.so
+%{_prefix}/lib/v4l2convert.so
+%{_prefix}/lib/libv4l/v4l1compat.so
+%{_prefix}/lib/libv4l/v4l2convert.so
+%{_prefix}/lib/libv4l/*-decomp
+%{_prefix}/lib/libv4l/plugins/libv4l-mplane.so
+%endif
+
%prep
%autosetup -p1
+autoheader
+autoconf
+export CONFIGURE_TOP="$(pwd)"
+%if %{with compat32}
+mkdir build32
+cd build32
+%configure32 \
+ --enable-libdvbv5 \
+ --with-libudev
+cd ..
+%endif
-%build
+mkdir build
+cd build
CXXFLAGS="%{optflags} -std=gnu++14" %configure \
--enable-libdvbv5 \
- --with-libudev \
- --disable-static
+ --with-libudev
+
+%build
+%if %{with compat32}
+%make_build -C build32
+%endif
# ir-ctl makes heavy use of nested functions.
# build it with gcc for now...
-cd utils/ir-ctl
-%make_build CC=gcc
-cd -
+%make_build -C build/utils/ir-ctl CC=gcc
# (tpg) another one with VLAIS
-cd utils/keytable
-%make_build CC=gcc
-cd -
+%make_build -C build/utils/keytable CC=gcc
-%make_build
+%make_build -C build
%install
-%make_install PREFIX="%{_prefix}" LIBDIR="%{_libdir}"
+%if %{with compat32}
+%make_install -C build32 PREFIX="%{_prefix}" LIBDIR="%{_prefix}/lib"
+%endif
+%make_install -C build PREFIX="%{_prefix}" LIBDIR="%{_libdir}"
# already provided by ivtv-utils package, more uptodate/complete there
rm -f %{buildroot}%{_bindir}/ivtv-ctl
@@ -217,6 +365,7 @@ cat *.lang >%{name}-all.lang
%config(noreplace) /lib/udev/rules.d/70-infrared.rules
%dir /lib/udev/rc_keymaps
/lib/udev/rc_keymaps/*
+/lib/systemd/system/systemd-udevd.service.d/50-rc_keymap.conf
%{_bindir}/cec-compliance
%{_bindir}/cec-ctl
%{_bindir}/cec-follower
@@ -246,6 +395,7 @@ cat *.lang >%{name}-all.lang
%{_mandir}/man1/cec-ctl.1*
%{_mandir}/man1/cec-follower.1*
%{_mandir}/man1/ir-ctl.1*
+%{_mandir}/man5/rc_keymap.5*
%files -n v4l-utils-qt5
%if %{with graphics}