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

View File

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