Compare commits

..

27 commits

Author SHA1 Message Date
Fedora Release Engineering
40199e4eba Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 08:19:39 +00:00
Fedora Release Engineering
e37112d212 Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-17 19:44:53 +00:00
Yaakov Selkowitz
e55b183883 Disable doxygen manpages
This creates and installs manpages with non-unique and bizarre names,
including (with recent doxygen versions) a 'noname' manpage with no
section.
2026-01-13 00:36:14 -05:00
Peter Robinson
2ba4949d12 Update to 1.32.0 2025-10-06 20:12:16 +01:00
Fedora Release Engineering
af62197d35 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 19:55:35 +00:00
Sean Young
183ab9888b Separate rc core tools into its own package
We're in the process of replacing ir-ctl and ir-keytable with new tools.
If we separate this out the we can make it easier to replace them in
future.
2025-06-23 21:56:00 +01:00
Peter Robinson
ecc0f82364 Fix obsolete of edid-decode 2025-05-02 16:50:37 +01:00
Yanko Kaneti
261042cb4d Update to 1.30.1
edid-decode is now part of v4l-utils
2025-05-01 18:20:55 +03:00
Fedora Release Engineering
2812f488fe Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 14:02:31 +00:00
14ef59b007 Rebuilt for the bin-sbin merge (2nd attempt)
https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin
2025-01-12 14:43:14 +01:00
Peter Robinson
e8f8d271d8 1.28.1, Build f41+ with QT6 2024-07-26 09:54:20 +01:00
Peter Robinson
7fc54abfaf update gitignore 2024-07-22 13:00:18 +01:00
Peter Robinson
6f99221fb8 Update to 1.28.0
Cleanup/fix qt5 build process/deps/gating, add DVB conditionals
and move them all together, drop bpf conditionals as they're always
built,  general cleanups/fixes/deps etc. Upstream crash fix.
2024-07-22 12:40:57 +01:00
Fedora Release Engineering
c1154cb3b2 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 08:30:26 +00:00
1c7c2a69d8 Fix build when %_bindir==%_sbindir
Preparation for https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin.
2024-07-09 14:00:12 +02:00
Yaakov Selkowitz
d3309d7df0 Remove duplicate qvidcap.1 file entry
qvidcap and its manpage are in the qv4l2 subpackage.  For Fedora builds,
the manpage in the main package is a duplicate.  For ELN, this is now
failing because the manpage is no longer being installed when qvidcap is
disabled.
2024-05-03 11:48:47 -04:00
Peter Robinson
14af80ef1b Fix location of gconv conflicts 2024-04-24 15:24:44 +01:00
Peter Robinson
ffadabc174 Split dvb tools to it's own sub package 2024-04-24 08:14:49 +01:00
Fedora Release Engineering
5429cd4969 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 07:24:18 +00:00
Miroslav Suchý
11eba3b0eb Migrate to SPDX license (take two)
https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_2
2023-12-26 23:52:26 +00:00
Peter Robinson
34a18ca80d Update to 1.26.1 2023-12-13 14:48:30 +00:00
Peter Robinson
a84293a4c1 1.26.0 2023-12-04 13:10:17 +00:00
Niels De Graef
d029009dbc SPDX Migration 2023-10-13 11:21:07 +00:00
Yaakov Selkowitz
1efce8897a Disable qv4l2 in RHEL 10 builds
Qt5 is being dropped from RHEL 10, and qv4l2 is not shipped in RHEL.
2023-08-16 10:50:43 -04:00
Fedora Release Engineering
b613b26134 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 17:21:33 +00:00
Mauro Carvalho Chehab
d5ebe3b627 Enable BPF
There was an issue upstream with the BPF detection logic.
Now that this is fixed, enable it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2023-03-20 21:08:17 +01:00
Mauro Carvalho Chehab
f200839056 Bump to git's version, based on meson
v4l-utils now uses meson. Add support for it on rawhide.

Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2023-03-20 14:27:27 +01:00
9 changed files with 259 additions and 630 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
/v4l-utils-*.tar.bz2
/v4l-utils-*.tar.xz

View file

@ -1,51 +0,0 @@
From 9f799271e5e92cb84cbce002896ce7c25dad4fd8 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Mon, 27 Dec 2021 15:25:21 +0000
Subject: [PATCH] utils: v4l2 TPG: Update use of typeof
It seems the way to use typeof with newer gcc's is by using
__typeof__
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
utils/common/v4l2-tpg.h | 6 +++---
utils/common/v4l2-tpg.patch | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/utils/common/v4l2-tpg.h b/utils/common/v4l2-tpg.h
index ecdb6eba..ba351c28 100644
--- a/utils/common/v4l2-tpg.h
+++ b/utils/common/v4l2-tpg.h
@@ -46,9 +46,9 @@ static inline void *vzalloc(unsigned long size)
}
#define clamp(val, min, max) ({ \
- typeof(val) __val = (val); \
- typeof(min) __min = (min); \
- typeof(max) __max = (max); \
+ __typeof__(val) __val = (val); \
+ __typeof__(min) __min = (min); \
+ __typeof__(max) __max = (max); \
(void) (&__val == &__min); \
(void) (&__val == &__max); \
__val = __val < __min ? __min: __val; \
diff --git a/utils/common/v4l2-tpg.patch b/utils/common/v4l2-tpg.patch
index 2381ebd9..d7edc1f3 100644
--- a/utils/common/v4l2-tpg.patch
+++ b/utils/common/v4l2-tpg.patch
@@ -214,9 +214,9 @@ index 0b0ddb87..91da74ec 100644
+}
+
+#define clamp(val, min, max) ({ \
-+ typeof(val) __val = (val); \
-+ typeof(min) __min = (min); \
-+ typeof(max) __max = (max); \
++ __typeof__(val) __val = (val); \
++ __typeof__(min) __min = (min); \
++ __typeof__(max) __max = (max); \
+ (void) (&__val == &__min); \
+ (void) (&__val == &__max); \
+ __val = __val < __min ? __min: __val; \
--
2.33.1

View file

@ -1,168 +0,0 @@
From c5e108f7ef4f8ba7761ddc7bad8dc88f6cae82cc Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 16 Oct 2022 11:58:58 +0200
Subject: [PATCH v4l-utils 2/5] libv4lconvert: Fix
v4lconvert_yuv420_to_rgb/bgr24() not taking stride into account
The atomisp driver can generate V4L2_PIX_FMT_YUV420 buffers where
stride != width. Where as v4lconvert_yuv420_to_rgb/bgr24() assumed that
stride == width is always true.
Add a stride argument to v4lconvert_yuv420_to_rgb/bgr24() to fix this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
lib/libv4lconvert/libv4lconvert-priv.h | 4 ++--
lib/libv4lconvert/libv4lconvert.c | 12 +++++------
lib/libv4lconvert/rgbyuv.c | 30 ++++++++++++++++----------
3 files changed, 27 insertions(+), 19 deletions(-)
diff --git a/lib/libv4lconvert/libv4lconvert-priv.h b/lib/libv4lconvert/libv4lconvert-priv.h
index 6b9128ce..495f726d 100644
--- a/lib/libv4lconvert/libv4lconvert-priv.h
+++ b/lib/libv4lconvert/libv4lconvert-priv.h
@@ -118,10 +118,10 @@ void v4lconvert_rgb24_to_yuv420(const unsigned char *src, unsigned char *dest,
const struct v4l2_format *src_fmt, int bgr, int yvu, int bpp);
void v4lconvert_yuv420_to_rgb24(const unsigned char *src, unsigned char *dst,
- int width, int height, int yvu);
+ int width, int height, int stride, int yvu);
void v4lconvert_yuv420_to_bgr24(const unsigned char *src, unsigned char *dst,
- int width, int height, int yvu);
+ int width, int height, int stride, int yvu);
void v4lconvert_yuyv_to_rgb24(const unsigned char *src, unsigned char *dst,
int width, int height, int stride);
diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c
index e794ec00..e5d5ddde 100644
--- a/lib/libv4lconvert/libv4lconvert.c
+++ b/lib/libv4lconvert/libv4lconvert.c
@@ -905,11 +905,11 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
switch (dest_pix_fmt) {
case V4L2_PIX_FMT_RGB24:
v4lconvert_yuv420_to_rgb24(data->convert_pixfmt_buf, dest, width,
- height, yvu);
+ height, bytesperline, yvu);
break;
case V4L2_PIX_FMT_BGR24:
v4lconvert_yuv420_to_bgr24(data->convert_pixfmt_buf, dest, width,
- height, yvu);
+ height, bytesperline, yvu);
break;
}
break;
@@ -1398,11 +1398,11 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
switch (dest_pix_fmt) {
case V4L2_PIX_FMT_RGB24:
v4lconvert_yuv420_to_rgb24(src, dest, width,
- height, 0);
+ height, bytesperline, 0);
break;
case V4L2_PIX_FMT_BGR24:
v4lconvert_yuv420_to_bgr24(src, dest, width,
- height, 0);
+ height, bytesperline, 0);
break;
case V4L2_PIX_FMT_YUV420:
memcpy(dest, src, width * height * 3 / 2);
@@ -1422,11 +1422,11 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
switch (dest_pix_fmt) {
case V4L2_PIX_FMT_RGB24:
v4lconvert_yuv420_to_rgb24(src, dest, width,
- height, 1);
+ height, bytesperline, 1);
break;
case V4L2_PIX_FMT_BGR24:
v4lconvert_yuv420_to_bgr24(src, dest, width,
- height, 1);
+ height, bytesperline, 1);
break;
case V4L2_PIX_FMT_YUV420:
v4lconvert_swap_uv(src, dest, fmt);
diff --git a/lib/libv4lconvert/rgbyuv.c b/lib/libv4lconvert/rgbyuv.c
index b54b4577..1ca821ab 100644
--- a/lib/libv4lconvert/rgbyuv.c
+++ b/lib/libv4lconvert/rgbyuv.c
@@ -93,7 +93,7 @@ void v4lconvert_rgb24_to_yuv420(const unsigned char *src, unsigned char *dest,
#define CLIP(color) (unsigned char)(((color) > 0xFF) ? 0xff : (((color) < 0) ? 0 : (color)))
void v4lconvert_yuv420_to_bgr24(const unsigned char *src, unsigned char *dest,
- int width, int height, int yvu)
+ int width, int height, int stride, int yvu)
{
int i, j;
@@ -101,11 +101,11 @@ void v4lconvert_yuv420_to_bgr24(const unsigned char *src, unsigned char *dest,
const unsigned char *usrc, *vsrc;
if (yvu) {
- vsrc = src + width * height;
- usrc = vsrc + (width * height) / 4;
+ vsrc = src + stride * height;
+ usrc = vsrc + (stride * height) / 4;
} else {
- usrc = src + width * height;
- vsrc = usrc + (width * height) / 4;
+ usrc = src + stride * height;
+ vsrc = usrc + (stride * height) / 4;
}
for (i = 0; i < height; i++) {
@@ -138,16 +138,20 @@ void v4lconvert_yuv420_to_bgr24(const unsigned char *src, unsigned char *dest,
usrc++;
vsrc++;
}
+ ysrc += stride - width;
/* Rewind u and v for next line */
if (!(i & 1)) {
usrc -= width / 2;
vsrc -= width / 2;
+ } else {
+ usrc += (stride - width) / 2;
+ vsrc += (stride - width) / 2;
}
}
}
void v4lconvert_yuv420_to_rgb24(const unsigned char *src, unsigned char *dest,
- int width, int height, int yvu)
+ int width, int height, int stride, int yvu)
{
int i, j;
@@ -155,11 +159,11 @@ void v4lconvert_yuv420_to_rgb24(const unsigned char *src, unsigned char *dest,
const unsigned char *usrc, *vsrc;
if (yvu) {
- vsrc = src + width * height;
- usrc = vsrc + (width * height) / 4;
+ vsrc = src + stride * height;
+ usrc = vsrc + (stride * height) / 4;
} else {
- usrc = src + width * height;
- vsrc = usrc + (width * height) / 4;
+ usrc = src + stride * height;
+ vsrc = usrc + (stride * height) / 4;
}
for (i = 0; i < height; i++) {
@@ -192,10 +196,14 @@ void v4lconvert_yuv420_to_rgb24(const unsigned char *src, unsigned char *dest,
usrc++;
vsrc++;
}
+ ysrc += stride - width;
/* Rewind u and v for next line */
- if (!(i&1)) {
+ if (!(i & 1)) {
usrc -= width / 2;
vsrc -= width / 2;
+ } else {
+ usrc += (stride - width) / 2;
+ vsrc += (stride - width) / 2;
}
}
}
--
2.37.3

View file

@ -1,91 +0,0 @@
From e864210793795a50b88e77af5b7d29e6bad584e8 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 16 Oct 2022 15:40:02 +0200
Subject: [PATCH v4l-utils 3/5] libv4lconvert: Fix
v4lconvert_rgb565_to_rgb/bgr24() not taking stride into account
The atomisp driver can generate V4L2_PIX_FMT_RGB565 buffers where
stride != width. Where as v4lconvert_rgb565_to_rgb/bgr24() assumed that
stride == width is always true.
Add a stride argument to v4lconvert_rgb565_to_rgb/bgr24() to fix this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
lib/libv4lconvert/libv4lconvert-priv.h | 4 ++--
lib/libv4lconvert/libv4lconvert.c | 4 ++--
lib/libv4lconvert/rgbyuv.c | 6 ++++--
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/lib/libv4lconvert/libv4lconvert-priv.h b/lib/libv4lconvert/libv4lconvert-priv.h
index 495f726d..f87a43a4 100644
--- a/lib/libv4lconvert/libv4lconvert-priv.h
+++ b/lib/libv4lconvert/libv4lconvert-priv.h
@@ -178,10 +178,10 @@ int v4lconvert_y10b_to_yuv420(struct v4lconvert_data *data,
const unsigned char *src, unsigned char *dest, int width, int height);
void v4lconvert_rgb565_to_rgb24(const unsigned char *src, unsigned char *dest,
- int width, int height);
+ int width, int height, int stride);
void v4lconvert_rgb565_to_bgr24(const unsigned char *src, unsigned char *dest,
- int width, int height);
+ int width, int height, int stride);
void v4lconvert_rgb565_to_yuv420(const unsigned char *src, unsigned char *dest,
const struct v4l2_format *src_fmt, int yvu);
diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c
index e5d5ddde..77f9eca5 100644
--- a/lib/libv4lconvert/libv4lconvert.c
+++ b/lib/libv4lconvert/libv4lconvert.c
@@ -1282,10 +1282,10 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
}
switch (dest_pix_fmt) {
case V4L2_PIX_FMT_RGB24:
- v4lconvert_rgb565_to_rgb24(src, dest, width, height);
+ v4lconvert_rgb565_to_rgb24(src, dest, width, height, bytesperline);
break;
case V4L2_PIX_FMT_BGR24:
- v4lconvert_rgb565_to_bgr24(src, dest, width, height);
+ v4lconvert_rgb565_to_bgr24(src, dest, width, height, bytesperline);
break;
case V4L2_PIX_FMT_YUV420:
v4lconvert_rgb565_to_yuv420(src, dest, fmt, 0);
diff --git a/lib/libv4lconvert/rgbyuv.c b/lib/libv4lconvert/rgbyuv.c
index 1ca821ab..f9017016 100644
--- a/lib/libv4lconvert/rgbyuv.c
+++ b/lib/libv4lconvert/rgbyuv.c
@@ -511,7 +511,7 @@ void v4lconvert_swap_uv(const unsigned char *src, unsigned char *dest,
}
void v4lconvert_rgb565_to_rgb24(const unsigned char *src, unsigned char *dest,
- int width, int height)
+ int width, int height, int stride)
{
int j;
while (--height >= 0) {
@@ -525,11 +525,12 @@ void v4lconvert_rgb565_to_rgb24(const unsigned char *src, unsigned char *dest,
src += 2;
}
+ src += stride - 2 * width;
}
}
void v4lconvert_rgb565_to_bgr24(const unsigned char *src, unsigned char *dest,
- int width, int height)
+ int width, int height, int stride)
{
int j;
while (--height >= 0) {
@@ -543,6 +544,7 @@ void v4lconvert_rgb565_to_bgr24(const unsigned char *src, unsigned char *dest,
src += 2;
}
+ src += stride - 2 * width;
}
}
--
2.37.3

View file

@ -1,125 +0,0 @@
From 8cbe059875452301c61db309d3087fb496b7223d Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 16 Oct 2022 16:04:13 +0200
Subject: [PATCH v4l-utils 4/5] libv4lconvert: Fix v4lconvert_nv12_*() not
taking stride into account
The atomisp driver can generate V4L2_PIX_FMT_NV12 buffers where
stride != width. Where as v4lconvert_nv12_*() assumed that
stride == width is always true.
Add a stride argument to v4lconvert_nv12_*() to fix this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
lib/libv4lconvert/libv4lconvert-priv.h | 4 ++--
lib/libv4lconvert/libv4lconvert.c | 8 ++++----
lib/libv4lconvert/rgbyuv.c | 18 +++++++++++++-----
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/lib/libv4lconvert/libv4lconvert-priv.h b/lib/libv4lconvert/libv4lconvert-priv.h
index f87a43a4..f361f2a0 100644
--- a/lib/libv4lconvert/libv4lconvert-priv.h
+++ b/lib/libv4lconvert/libv4lconvert-priv.h
@@ -287,10 +287,10 @@ void v4lconvert_hsv_to_rgb24(const unsigned char *src, unsigned char *dest,
int width, int height, int bgr, int Xin, unsigned char hsv_enc);
void v4lconvert_nv12_to_rgb24(const unsigned char *src, unsigned char *dest,
- int width, int height, int bgr);
+ int width, int height, int stride, int bgr);
void v4lconvert_nv12_to_yuv420(const unsigned char *src, unsigned char *dest,
- int width, int height, int yvu);
+ int width, int height, int stride, int yvu);
void v4lconvert_rotate90(unsigned char *src, unsigned char *dest,
struct v4l2_format *fmt);
diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c
index 77f9eca5..d0d38286 100644
--- a/lib/libv4lconvert/libv4lconvert.c
+++ b/lib/libv4lconvert/libv4lconvert.c
@@ -937,16 +937,16 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
case V4L2_PIX_FMT_NV12:
switch (dest_pix_fmt) {
case V4L2_PIX_FMT_RGB24:
- v4lconvert_nv12_to_rgb24(src, dest, width, height, 0);
+ v4lconvert_nv12_to_rgb24(src, dest, width, height, bytesperline, 0);
break;
case V4L2_PIX_FMT_BGR24:
- v4lconvert_nv12_to_rgb24(src, dest, width, height, 1);
+ v4lconvert_nv12_to_rgb24(src, dest, width, height, bytesperline, 1);
break;
case V4L2_PIX_FMT_YUV420:
- v4lconvert_nv12_to_yuv420(src, dest, width, height, 0);
+ v4lconvert_nv12_to_yuv420(src, dest, width, height, bytesperline, 0);
break;
case V4L2_PIX_FMT_YVU420:
- v4lconvert_nv12_to_yuv420(src, dest, width, height, 1);
+ v4lconvert_nv12_to_yuv420(src, dest, width, height, bytesperline, 1);
break;
}
break;
diff --git a/lib/libv4lconvert/rgbyuv.c b/lib/libv4lconvert/rgbyuv.c
index f9017016..e9fe6df9 100644
--- a/lib/libv4lconvert/rgbyuv.c
+++ b/lib/libv4lconvert/rgbyuv.c
@@ -857,11 +857,11 @@ void v4lconvert_hsv_to_rgb24(const unsigned char *src, unsigned char *dest,
}
void v4lconvert_nv12_to_rgb24(const unsigned char *src, unsigned char *dest,
- int width, int height, int bgr)
+ int width, int height, int stride, int bgr)
{
int i, j;
const unsigned char *ysrc = src;
- const unsigned char *uvsrc = src + width * height;
+ const unsigned char *uvsrc = src + stride * height;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j ++) {
@@ -879,18 +879,21 @@ void v4lconvert_nv12_to_rgb24(const unsigned char *src, unsigned char *dest,
uvsrc += 2;
}
+ ysrc += stride - width;
/* Rewind u and v for next line */
if (!(i&1))
uvsrc -= width;
+ else
+ uvsrc += stride - width;
}
}
void v4lconvert_nv12_to_yuv420(const unsigned char *src, unsigned char *dest,
- int width, int height, int yvu)
+ int width, int height, int stride, int yvu)
{
int i, j;
const unsigned char *ysrc = src;
- const unsigned char *uvsrc = src + width * height;
+ const unsigned char *uvsrc = src + stride * height;
unsigned char *ydst = dest;
unsigned char *udst, *vdst;
@@ -902,7 +905,7 @@ void v4lconvert_nv12_to_yuv420(const unsigned char *src, unsigned char *dest,
vdst = udst + ((width / 2) * (height / 2));
}
- for (i = 0; i < height; i++)
+ for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
*ydst++ = *ysrc++;
if (((i % 2) == 0) && ((j % 2) == 0)) {
@@ -910,4 +913,9 @@ void v4lconvert_nv12_to_yuv420(const unsigned char *src, unsigned char *dest,
*vdst++ = *uvsrc++;
}
}
+
+ ysrc += stride - width;
+ if ((i % 2) == 0)
+ uvsrc += stride - width;
+ }
}
--
2.37.3

View file

@ -1,97 +0,0 @@
From 2cfd6dc33d7f7743843e9ad65d31baef5508f636 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 16 Oct 2022 16:15:53 +0200
Subject: [PATCH v4l-utils 5/5] libv4lconvert: Fix v4lconvert_nv16_to_yuyv()
not taking stride into account
The atomisp driver can generate V4L2_PIX_FMT_NV16 buffers where
stride != width. Where as v4lconvert_nv16_to_yuyv() assumed that
stride == width is always true.
Add a stride argument to v4lconvert_nv16_to_yuyv() to fix this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
lib/libv4lconvert/libv4lconvert-priv.h | 2 +-
lib/libv4lconvert/libv4lconvert.c | 8 ++++----
lib/libv4lconvert/rgbyuv.c | 16 ++++++++++------
3 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/lib/libv4lconvert/libv4lconvert-priv.h b/lib/libv4lconvert/libv4lconvert-priv.h
index f361f2a0..00a03f9e 100644
--- a/lib/libv4lconvert/libv4lconvert-priv.h
+++ b/lib/libv4lconvert/libv4lconvert-priv.h
@@ -133,7 +133,7 @@ void v4lconvert_yuyv_to_yuv420(const unsigned char *src, unsigned char *dst,
int width, int height, int stride, int yvu);
void v4lconvert_nv16_to_yuyv(const unsigned char *src, unsigned char *dest,
- int width, int height);
+ int width, int height, int stride);
void v4lconvert_yvyu_to_rgb24(const unsigned char *src, unsigned char *dst,
int width, int height, int stride);
diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c
index d0d38286..b07bf3ba 100644
--- a/lib/libv4lconvert/libv4lconvert.c
+++ b/lib/libv4lconvert/libv4lconvert.c
@@ -1445,10 +1445,10 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
if (!tmpbuf)
return v4lconvert_oom_error(data);
- v4lconvert_nv16_to_yuyv(src, tmpbuf, width, height);
+ v4lconvert_nv16_to_yuyv(src, tmpbuf, width, height, bytesperline);
src_pix_fmt = V4L2_PIX_FMT_YUYV;
src = tmpbuf;
- bytesperline = bytesperline * 2;
+ bytesperline = width * 2;
/* fall through */
}
case V4L2_PIX_FMT_YUYV:
@@ -1482,10 +1482,10 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
return v4lconvert_oom_error(data);
/* Note NV61 is NV16 with U and V swapped so this becomes yvyu. */
- v4lconvert_nv16_to_yuyv(src, tmpbuf, width, height);
+ v4lconvert_nv16_to_yuyv(src, tmpbuf, width, height, bytesperline);
src_pix_fmt = V4L2_PIX_FMT_YVYU;
src = tmpbuf;
- bytesperline = bytesperline * 2;
+ bytesperline = width * 2;
/* fall through */
}
case V4L2_PIX_FMT_YVYU:
diff --git a/lib/libv4lconvert/rgbyuv.c b/lib/libv4lconvert/rgbyuv.c
index e9fe6df9..ce31a1ba 100644
--- a/lib/libv4lconvert/rgbyuv.c
+++ b/lib/libv4lconvert/rgbyuv.c
@@ -304,17 +304,21 @@ void v4lconvert_yuyv_to_yuv420(const unsigned char *src, unsigned char *dest,
}
void v4lconvert_nv16_to_yuyv(const unsigned char *src, unsigned char *dest,
- int width, int height)
+ int width, int height, int stride)
{
const unsigned char *y, *cbcr;
- int count = 0;
+ int i, j;
y = src;
- cbcr = src + width*height;
+ cbcr = src + stride * height;
- while (count++ < width*height) {
- *dest++ = *y++;
- *dest++ = *cbcr++;
+ for (i = 0; i < height; i++) {
+ for (j = 0; j < width; j++) {
+ *dest++ = *y++;
+ *dest++ = *cbcr++;
+ }
+ y += stride - width;
+ cbcr += stride - width;
}
}
--
2.37.3

13
sbin-location.diff Normal file
View file

@ -0,0 +1,13 @@
diff --git v4l-utils-1.26.1/utils/v4l2-dbg/meson.build~ v4l-utils-1.26.1/utils/v4l2-dbg/meson.build
index c23bf8f351..bfbc10c616 100644
--- v4l-utils-1.26.1/utils/v4l2-dbg/meson.build~
+++ v4l-utils-1.26.1/utils/v4l2-dbg/meson.build
@@ -13,7 +13,7 @@ v4l2_dbg_sources = files(
v4l2_dbg = executable('v4l2-dbg',
v4l2_dbg_sources,
install : true,
- install_dir : 'sbin',
+ install_dir : get_option('sbindir'),
include_directories : [
v4l2_utils_incdir,
utils_common_incdir,

View file

@ -1 +1 @@
SHA512 (v4l-utils-1.22.1.tar.bz2) = 8a634d8995d13f453dfaf90ca5d0dfb26f2f4b10a0d200d76a949c46f77040d12fc0a5b35e05d7b1ba68bcfc85a445be5a5ab1d4a7d4eabfe3a254038ccc6170
SHA512 (v4l-utils-1.32.0.tar.xz) = 5bf24c28ec66a7ac1a0c9ee976521d825d4c2f8abbbeb59c7ac55e89db10dde6ebb643d238d217d636d79fda363244558fee1effe8c5e8c573c1a3e957fe391f

View file

@ -1,71 +1,67 @@
%bcond qt %[%{undefined rhel} || 0%{?rhel} < 10]
# Currently broken without DVB due to a bunch of random bits
# being built/installed even though they're DVB specific
%define with_dvb 1
Name: v4l-utils
Version: 1.22.1
Release: 5%{?dist}
Version: 1.32.0
Release: 4%{?dist}
Summary: Utilities for video4linux and DVB devices
# libdvbv5, dvbv5 utils, ir-keytable and v4l2-sysfs-path are GPLv2 only
License: GPLv2+ and GPLv2
# libdvbv5, dvbv5 utils, ir-keytable are GPL-2.0-only
# e.g. utils/cec-follower/cec-follower.cpp is (GPL-2.0-only OR BSD-3-Clause)
# utils/qvidcap/capture.cpp, paint.cpp are LicenseRef-Fedora-Public-Domain
# utils/v4l2-sysfs-path/v4l2-sysfs-path.c is HPND-sell-variant
License: GPL-2.0-or-later AND GPL-2.0-only AND (GPL-2.0-only OR BSD-3-Clause) AND LicenseRef-Fedora-Public-Domain AND HPND-sell-variant
URL: http://www.linuxtv.org/downloads/v4l-utils/
Source0: http://linuxtv.org/downloads/v4l-utils/v4l-utils-%{version}.tar.bz2
Patch0: 0001-utils-v4l2-TPG-Update-use-of-typeof.patch
Patch1: 0002-libv4lconvert-Fix-v4lconvert_yuv420_to_rgb-bgr24-not.patch
Patch2: 0003-libv4lconvert-Fix-v4lconvert_rgb565_to_rgb-bgr24-not.patch
Patch3: 0004-libv4lconvert-Fix-v4lconvert_nv12_-not-taking-stride.patch
Patch4: 0005-libv4lconvert-Fix-v4lconvert_nv16_to_yuyv-not-taking.patch
Source0: %{url}/v4l-utils-%{version}.tar.xz
# TODO: submit upstream
Patch0: sbin-location.diff
BuildRequires: alsa-lib-devel
BuildRequires: desktop-file-utils
BuildRequires: doxygen
BuildRequires: gettext
BuildRequires: json-c-devel
BuildRequires: kernel-headers
BuildRequires: libjpeg-devel
BuildRequires: make
BuildRequires: meson >= 0.56
BuildRequires: perl-interpreter
%if %{with qt}
BuildRequires: desktop-file-utils
%if 0%{?fedora} < 41 || 0%{?rhel}
BuildRequires: qt5-qtbase-devel
%else
BuildRequires: qt6-qtbase-devel
BuildRequires: qt6-qt5compat-devel
%endif
%endif
BuildRequires: systemd-devel
# For /usr/share/pkgconfig/udev.pc
BuildRequires: systemd
# BPF decoder dependencies
%define with_bpf 1
%if %{with_bpf}
BuildRequires: elfutils-libelf-devel clang
%endif
BuildRequires: clang
BuildRequires: elfutils-libelf-devel
BuildRequires: libbpf-devel
# For /lib/udev/rules.d ownership
Requires: systemd-udev
Requires: libv4l%{?_isa} = %{version}-%{release}
Provides: edid-decode = %{version}-%{release}
Obsoletes: edid-decode < 1
%description
v4l-utils is a collection of various video4linux (V4L) and DVB utilities. The
main v4l-utils package contains cx18-ctl, ir-keytable, ivtv-ctl, v4l2-ctl and
v4l2-sysfs-path.
%package devel-tools
Summary: Utilities for v4l2 / DVB driver development and debugging
# decode_tm6000 is GPLv2 only
License: GPLv2+ and GPLv2
Requires: libv4l%{?_isa} = %{version}-%{release}
%description devel-tools
Utilities for v4l2 / DVB driver authors: decode_tm6000, v4l2-compliance and
v4l2-dbg.
%package -n qv4l2
Summary: QT v4l2 test control and streaming test application
License: GPLv2+
Requires: libv4l%{?_isa} = %{version}-%{release}
%description -n qv4l2
QT v4l2 test control and streaming test application.
v4l-utils is a collection of various video4linux (V4L), RC core and DVB
utilities. The main v4l-utils package contains cx18-ctl, ivtv-ctl, v4l2-ctl
and v4l2-sysfs-path.
%package -n libv4l
Summary: Collection of video4linux support libraries
# Some of the decompression helpers are GPLv2, the rest is LGPLv2+
License: LGPLv2+ and GPLv2
# Some of the decompression helpers are GPL-2.0-or-later, the rest is LGPL-2.1-or-later
# lib/libv4lconvert/jidctflt.c and jpeg_memsrcdest.c are IJG-short
# lib/libv4lconvert/helper-funcs.h and libv4lsyscall-priv.h are BSD-2-Clause
License: LGPL-2.1-or-later AND GPL-2.0-or-later AND IJG-short AND BSD-2-Clause
URL: http://hansdegoede.livejournal.com/3636.html
%description -n libv4l
@ -86,17 +82,9 @@ libv4l2 offers the v4l2 API on top of v4l2 devices, while adding for the
application transparent libv4lconvert conversion where necessary.
%package -n libdvbv5
Summary: Libraries to control, scan and zap on Digital TV channels
License: GPLv2
%description -n libdvbv5
Libraries to control, scan and zap on Digital TV channels
%package -n libv4l-devel
Summary: Development files for libv4l
License: LGPLv2+
License: LGPL-2.1-or-later AND GPL-2.0-or-later AND IJG-short AND BSD-2-Clause
URL: http://hansdegoede.livejournal.com/3636.html
Requires: libv4l%{?_isa} = %{version}-%{release}
@ -105,9 +93,50 @@ The libv4l-devel package contains libraries and header files for
developing applications that use libv4l.
%package devel-tools
Summary: Utilities for v4l2 / DVB driver development and debugging
License: GPL-2.0-or-later AND GPL-2.0-only
Requires: libv4l%{?_isa} = %{version}-%{release}
%description devel-tools
Utilities for v4l2 driver authors: v4l2-compliance and
v4l2-dbg.
%if %{with qt}
%package -n qv4l2
Summary: QT v4l2 test control and streaming test application
# utils/qv4l2/qv4l2.svg is CC-BY-SA-3.0
License: GPL-2.0-or-later AND CC-BY-SA-3.0
Requires: libv4l%{?_isa} = %{version}-%{release}
%description -n qv4l2
QT v4l2 test control and streaming test application.
%endif
%if %{with dvb}
%package -n libdvbv5
Summary: Libraries to control, scan and zap on Digital TV channels
# /lib/include/libdvbv5/dvb-frontend.h is LGPL-2.1-or-later WITH Linux-syscall-note
License: LGPL-2.1-or-later AND LGPL-2.1-or-later WITH Linux-syscall-note
%description -n libdvbv5
Libraries to control, scan and zap on Digital TV channels
%package -n libdvbv5-gconv
Summary: Gconv files with the charsets For Digital TV.
License: LGPL-2.1-or-later
%description -n libdvbv5-gconv
Some digital TV standards define their own charsets. Add library
support for them: EN 300 468 and ARIB STD-B24
%package -n libdvbv5-devel
Summary: Development files for libdvbv5
License: GPLv2
License: LGPL-2.1-or-later AND LGPL-2.1-or-later WITH Linux-syscall-note
Requires: libdvbv5%{?_isa} = %{version}-%{release}
%description -n libdvbv5-devel
@ -115,27 +144,52 @@ The libdvbv5-devel package contains libraries and header
files for developing applications that use libdvbv5.
%package -n dvb-tools
Summary: Utilities for DVB driver
License: GPL-2.0-or-later AND GPL-2.0-only
Requires: libdvbv5%{?_isa} = %{version}-%{release}
Requires: libv4l%{?_isa} = %{version}-%{release}
Requires: v4l-utils%{?_isa} = %{version}-%{release}
%description -n dvb-tools
Utilities and tools for DVB receivers.
%endif
%package -n rc-tools
Summary: Utilities for RC core
License: GPL-2.0-or-later AND GPL-2.0-only
Requires: v4l-utils%{?_isa} = %{version}-%{release}
%description -n rc-tools
Utilities for Infrared receivers and transmitters using RC core.
%prep
%autosetup -p1
%build
export CXXFLAGS="-std=c++14 $RPM_OPT_FLAGS"
%configure --disable-static --enable-libdvbv5 --enable-doxygen-man
# Don't use rpath!
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
%make_build
make doxygen-run
%meson -Dbpf=auto \
-Ddoxygen-doc=disabled -Ddoxygen-man=false -Ddoxygen-html=false \
%{!?with_dvb:-Dlibdvbv5=disabled} \
%{!?with_qt:-Dqv4l2=disabled -Dqvidcap=disabled}
%meson_build
%install
%make_install
%meson_install
find $RPM_BUILD_ROOT -name '*.la' -delete
# Driver removed from upstream
rm -f $RPM_BUILD_ROOT%{_bindir}/decode_tm6000
rm -f $RPM_BUILD_ROOT%{_libdir}/{v4l1compat.so,v4l2convert.so}
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man3/
cp -arv %{_builddir}/%{name}-%{version}/doxygen-doc/man/man3 $RPM_BUILD_ROOT%{_mandir}/
rm $RPM_BUILD_ROOT%{_mandir}/man3/_*3
mkdir $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.d
mv $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.d/libdvbv5.conf
%if %{with qt}
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/qv4l2.desktop
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/qvidcap.desktop
%endif
%find_lang %{name}
%find_lang libdvbv5
@ -145,35 +199,48 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/qv4l2.desktop
%ldconfig_scriptlets -n libdvbv5
%files -f %{name}.lang
%doc README
%dir %{_sysconfdir}/rc_keymaps
%config(noreplace) %{_sysconfdir}/rc_maps.cfg
%{_udevrulesdir}/70-infrared.rules
%{_udevrulesdir}/../rc_keymaps/*
%{_bindir}/cx18-ctl
%{_bindir}/cec*
%{_bindir}/dvb*
%{_bindir}/ir-ctl
%{_bindir}/ir-keytable
%{_bindir}/ivtv-ctl
%doc README.md
%{_bindir}/cec-ctl
%{_bindir}/cec-follower
%{_bindir}/edid-decode
%{_bindir}/media-ctl
%{_bindir}/rds-ctl
%{_bindir}/v4l2-ctl
%{_bindir}/v4l2-sysfs-path
%{_mandir}/man1/*.1*
%{_mandir}/man5/*.5*
%exclude %{_mandir}/man1/qv4l2.1*
%{_bindir}/v4l2-tracer
%{_mandir}/man1/cec-ctl*.1*
%{_mandir}/man1/cec-follower*.1*
%{_mandir}/man1/edid-decode*.1*
%{_mandir}/man1/v4l*.1*
%exclude %{_mandir}/man1/v4l2-compliance.1*
%files devel-tools
%doc README
%{_bindir}/decode_tm6000
%doc README.md
%{_bindir}/cec-compliance
%{_bindir}/v4l2-compliance
%{_mandir}/man1/cec-compliance.1*
%{_mandir}/man1/v4l2-compliance.1*
%{_sbindir}/v4l2-dbg
%files -n libv4l
%license COPYING.libv4l COPYING
%doc README.libv4l
%dir %{_libdir}/libv4l
%{_libdir}/libv4l/v4l*
%{_libdir}/libv4l/plugins
%{_libdir}/libv4l*.so.*
%files -n libv4l-devel
%doc README.lib-multi-threading ChangeLog TODO
%{_includedir}/libv4l*.h
%{_libdir}/libv4l*.so
%{_libdir}/libv4l/ov*
%{_libdir}/libv4l/libv4l2tracer.so
%{_libdir}/pkgconfig/libv4l*.pc
%if %{with qt}
%files -n qv4l2
%doc README
%doc README.md
%{_bindir}/qv4l2
%{_bindir}/qvidcap
%{_datadir}/applications/qv4l2.desktop
@ -182,32 +249,112 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/qv4l2.desktop
%{_datadir}/icons/hicolor/*/apps/qvidcap.*
%{_mandir}/man1/qv4l2.1*
%{_mandir}/man1/qvidcap.1*
%endif
%files -n libv4l
%doc ChangeLog README.libv4l TODO
%license COPYING.libv4l COPYING
%{_libdir}/libv4l
%{_libdir}/libv4l*.so.*
%files -n libv4l-devel
%doc README.lib-multi-threading
%{_includedir}/libv4l*.h
%{_libdir}/libv4l*.so
%{_libdir}/pkgconfig/libv4l*.pc
%if %{with dvb}
%files -n libdvbv5 -f libdvbv5.lang
%doc ChangeLog lib/libdvbv5/README
%license COPYING
%license COPYING.libdvbv5 COPYING
%doc lib/libdvbv5/README
%{_libdir}/libdvbv5*.so.*
%files -n libdvbv5-gconv
%{_libdir}/gconv/*.so
%{_libdir}/gconv/gconv-modules.d/libdvbv5.conf
%files -n libdvbv5-devel
%{_includedir}/libdvbv5/*.h
%{_libdir}/libdvbv5*.so
%{_libdir}/pkgconfig/libdvbv5*.pc
%{_mandir}/man3/*.3*
%files -n dvb-tools
%{_bindir}/cx18-ctl
%{_bindir}/dvb*
%{_bindir}/ivtv-ctl
%{_mandir}/man1/dvb*.1*
%files -n rc-tools
%dir %{_sysconfdir}/rc_keymaps
%config(noreplace) %{_sysconfdir}/rc_maps.cfg
%{_udevrulesdir}/70-infrared.rules
%{_udevrulesdir}/../rc_keymaps/*
%{_bindir}/ir-ctl
%{_bindir}/ir-keytable
%{_mandir}/man1/ir*.1*
%{_mandir}/man5/rc_keymap*.5*
%endif
%changelog
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.32.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.32.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Tue Jan 13 2026 Yaakov Selkowitz <yselkowi@redhat.com> - 1.32.0-2
- Disable doxygen manpages
* Mon Oct 06 2025 Peter Robinson <pbrobinson@fedoraproject.org> - 1.32.0-1
- Update to 1.32.0
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.30.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Sat Jun 7 2025 Sean Young <sean@mes.org> - 1.30.1-3
- Move rc-tools into separate package so they can be replaced with new tools in the future.
* Fri May 02 2025 Peter Robinson <pbrobinson@fedoraproject.org> - 1.30.1-2
- Fix obsolete of edid-decode
* Thu May 1 2025 Yanko Kaneti <yaneti@decelra.com> - 1.30.1-1
- Update to 1.30.1
- Provides and obsoletes edid-decode which has moved to v4l-utils upstream
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.28.1-2
- Rebuilt for the bin-sbin merge (2nd attempt)
* Thu Jul 25 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 1.28.1-1
- Update to 1.28.1
- Build f41+ with QT6
* Mon Jul 22 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 1.28.0-1
- Update to 1.28.0
- spec file cleanups, fixes, minor reorg
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.26.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Tue Jul 09 2024 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.26.1-5
- Rebuilt for the bin-sbin merge
* Wed Apr 24 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 1.26.1-4
- Fix location of gconv conflicts
* Tue Apr 23 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 1.26.1-3
- Split dvb tools to it's own sub package
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.26.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Dec 13 2023 Peter Robinson <pbrobinson@fedoraproject.org> - 1.26.1-1
- Update to 1.26.1
* Mon Dec 04 2023 Peter Robinson <pbrobinson@fedoraproject.org> - 1.26.0-1
- Update to 1.26.0
* Wed Aug 16 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 1.25.0-4
- Disable qv4l2 in RHEL 10 builds
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.25.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon Mar 20 2023 Mauro Carvalho Chehab <mchehab+samsung@kernel.org> 1.25.0-1
- Updated to latest development branch
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.22.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild