* update v4l-utils to 1.28.1-2

This commit is contained in:
Alexander Baldeck 2025-01-03 10:48:35 +01:00
parent 70e1312451
commit b6b4f37fd1
3 changed files with 73 additions and 11 deletions

View File

@ -1,32 +1,35 @@
pkgbase = v4l-utils
pkgdesc = Userspace tools and conversion library for Video 4 Linux
pkgver = 1.28.1
pkgrel = 1
pkgrel = 2
url = https://linuxtv.org/
arch = x86_64
license = LGPL
makedepends = qt5-base
makedepends = qt6-base
makedepends = qt6-5compat
makedepends = alsa-lib
makedepends = meson
makedepends = clang
makedepends = doxygen
makedepends = libbpf
depends = hicolor-icon-theme
depends = gcc-libs
depends = libbpf
depends = libjpeg-turbo
depends = systemd-libs
depends = json-c
optdepends = qt5-base: for qv4l2 and qvidcap
optdepends = qt6-base: for qv4l2 and qvidcap
optdepends = qt6-5compat: for qv4l2
optdepends = alsa-lib: for qv4l2
optdepends = libbpf: for ir-keytable
provides = libv4l=1.28.1
conflicts = libv4l
replaces = libv4l
backup = etc/rc_maps.cfg
source = https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.28.1.tar.xz
source = https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.28.1.tar.xz.asc
source = v4l-utils-qt-6.7-compat.patch
validpgpkeys = 05D0169C26E41593418129DF199A64FADFB500FF
sha256sums = 0fa075ce59b6618847af6ea191b6155565ccaa44de0504581ddfed795a328a82
sha256sums = SKIP
sha256sums = 8f00f6af2ea090e472d1a4ac8c0aa824d8847894cdeb379a64b8bbef4c5d7ecc
pkgname = v4l-utils

View File

@ -2,7 +2,7 @@
# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=v4l-utils
pkgver=1.28.1
pkgrel=1.1
pkgrel=2
pkgdesc="Userspace tools and conversion library for Video 4 Linux"
arch=(x86_64 powerpc64le powerpc64 powerpc riscv64)
url="https://linuxtv.org/"
@ -11,18 +11,26 @@ replaces=('libv4l')
conflicts=('libv4l')
backup=(etc/rc_maps.cfg)
license=('LGPL')
depends=('hicolor-icon-theme' 'gcc-libs' 'libjpeg-turbo' 'systemd-libs' 'json-c')
makedepends=('qt5-base' 'alsa-lib' 'meson' 'clang' 'doxygen' 'libbpf')
optdepends=('qt5-base: for qv4l2 and qvidcap' 'alsa-lib: for qv4l2' 'libbpf: for ir-keytable')
source=(https://linuxtv.org/downloads/v4l-utils/${pkgname}-${pkgver}.tar.xz{,.asc})
depends=('hicolor-icon-theme' 'gcc-libs' 'libbpf' 'libjpeg-turbo' 'systemd-libs' 'json-c')
makedepends=('qt6-base' 'qt6-5compat' 'alsa-lib' 'meson' 'clang' 'doxygen')
optdepends=('qt6-base: for qv4l2 and qvidcap'
'qt6-5compat: for qv4l2'
'alsa-lib: for qv4l2')
source=(https://linuxtv.org/downloads/v4l-utils/${pkgname}-${pkgver}.tar.xz{,.asc}
v4l-utils-qt-6.7-compat.patch)
sha256sums=('0fa075ce59b6618847af6ea191b6155565ccaa44de0504581ddfed795a328a82'
'SKIP')
'SKIP'
'8f00f6af2ea090e472d1a4ac8c0aa824d8847894cdeb379a64b8bbef4c5d7ecc')
validpgpkeys=('05D0169C26E41593418129DF199A64FADFB500FF') # Gregor Jasny <gjasny@googlemail.com>
prepare() {
# HACK: inform upstream to make this configurable
cd "${pkgname}-${pkgver}"
sed -i 's/sbin/bin/' utils/v4l2-dbg/meson.build
# Fix compatibility with Qt >= 6.7
# https://github.com/gjasny/v4l-utils/commit/cb8d855fad89b89044bb5ae3812f86a6578d4955
patch -Np1 -i ../v4l-utils-qt-6.7-compat.patch
}
build() {

View File

@ -0,0 +1,51 @@
From cb8d855fad89b89044bb5ae3812f86a6578d4955 Mon Sep 17 00:00:00 2001
From: Hans Verkuil <hverkuil@xs4all.nl>
Date: Thu, 7 Nov 2024 16:54:51 +0100
Subject: [PATCH] qv4l2/qvidcap: bind shader program in paintGL()
Starting in Qt 6.7.0, vertex buffers and shader programs are unbound
just before calling QOpenGLWidget::paintGL(). In the case of qv4l2
and qvidcap this means that in order to stay compatible with Qt 6.7
the shader program has to be bound in paintGL each time, otherwise
nothing would be rendered.
In the case of qv4l2 it would still render (although I am not quite
sure how), but it would generate openGL errors, and in the case of
qvidcap nothing would be shown after the first frame was rendered.
Adding the extra bind calls fixes this issue.
Many thanks to Laurent Pinchart for pointing me to a similar fix in
libcamera.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
---
utils/qv4l2/capture-win-gl.cpp | 1 +
utils/qvidcap/paint.cpp | 2 ++
2 files changed, 3 insertions(+)
diff --git a/utils/qv4l2/capture-win-gl.cpp b/utils/qv4l2/capture-win-gl.cpp
index 5b635eb7e..5558365d0 100644
--- a/utils/qv4l2/capture-win-gl.cpp
+++ b/utils/qv4l2/capture-win-gl.cpp
@@ -622,6 +622,7 @@ void CaptureWinGLEngine::paintGL()
if (m_formatChange)
changeShader();
+ m_shaderProgram.bind();
if (m_frameData == NULL) {
paintFrame();
diff --git a/utils/qvidcap/paint.cpp b/utils/qvidcap/paint.cpp
index 0246de60e..8c62bcbde 100644
--- a/utils/qvidcap/paint.cpp
+++ b/utils/qvidcap/paint.cpp
@@ -116,6 +116,8 @@ void CaptureWin::paintGL()
if (!supportedFmt(m_v4l_fmt.g_pixelformat()))
return;
+ m_program->bind();
+
switch (m_v4l_fmt.g_pixelformat()) {
case V4L2_PIX_FMT_YUYV:
case V4L2_PIX_FMT_YVYU: