Upgrade to version 1.8.1

This commit is contained in:
Hans de Goede 2015-10-14 11:39:37 +02:00
parent c18f2b150e
commit 12489f06cf
4 changed files with 15 additions and 96 deletions

1
.gitignore vendored
View File

@ -9,3 +9,4 @@
/v4l-utils-1.4.0.tar.bz2
/v4l-utils-1.6.0.tar.bz2
/v4l-utils-1.6.2.tar.bz2
/v4l-utils-1.8.1.tar.bz2

View File

@ -1,91 +0,0 @@
From 757d7910ddf43d9a9187dddae4f51a57fb723e8d Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Thu, 20 Nov 2014 13:03:35 +0100
Subject: [PATCH] v4lconvert: Fix decoding of jpeg data with no vertical
sub-sampling
Our YUV output is always 2x subsampled in both vertical and horizontal
direction, but some cameras generate JPEG data which is only subsampled in
the horizontal direction.
Since averaging the extra UV data these JPEGs contains is seomwhat slow,
and UV data is not all that important anyways, we simple take every other
line. Or at least that is the intent.
But before this commit the code was not doing this properly, for each 16
Y input lines 1 - 16 we also get 16 UV input lines 1 - 16, but we only need
8 output lines. so we should store input line 1 or 2 in output line 1, input
line 3 or 4 in output line 2, etc. Instead we were storing input lines
9 - 16 into output lines 1 - 8, which leads to some unwanted color bleeding.
More over this also leads for 1920x1080 JPEG to us writing (1080 / 8 + 1) / 2
* 8 = 544 UV output lines rather then 540, this means that the last 4 U output
lines overwrite the first 4 V output lines, and worse that the last 4 V output
lines overrun the output buffer.
So far this only lead to some wrong colors in various places, but since that
we dynamically allocate the output buffer to just the right size this actually
causes a crash.
This commit fixes both the crash, and the wrong colors.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
lib/libv4lconvert/jpeg.c | 37 ++++++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/lib/libv4lconvert/jpeg.c b/lib/libv4lconvert/jpeg.c
index aa9cace..0142d44 100644
--- a/lib/libv4lconvert/jpeg.c
+++ b/lib/libv4lconvert/jpeg.c
@@ -242,23 +242,34 @@ static int decode_libjpeg_h_samp2(struct v4lconvert_data *data,
y_rows[y] = ydest;
ydest += width;
}
- for (y = 0; y < 8; y++) {
- u_rows[y] = udest;
- v_rows[y] = vdest;
- udest += width / 2;
- vdest += width / 2;
+ /*
+ * For v_samp == 1 were going to get 1 set of uv values per
+ * line, but we need only 1 set per 2 lines since our output
+ * has v_samp == 2. We store every 2 sets in 1 line,
+ * effectively using the second set for each output line.
+ */
+ if (v_samp == 1) {
+ for (y = 0; y < 8; y++) {
+ u_rows[y] = udest;
+ v_rows[y] = vdest;
+ y++;
+ u_rows[y] = udest;
+ v_rows[y] = vdest;
+ udest += width / 2;
+ vdest += width / 2;
+ }
+ } else { /* v_samp == 2 */
+ for (y = 0; y < 8; y++) {
+ u_rows[y] = udest;
+ v_rows[y] = vdest;
+ udest += width / 2;
+ vdest += width / 2;
+ }
}
+
y = jpeg_read_raw_data(cinfo, rows, 8 * v_samp);
if (y != 8 * v_samp)
return -1;
-
- /* For v_samp == 1 were going to get another set of uv values,
- but we need only 1 set since our output has v_samp == 2, so
- rewind u and vdest and overwrite the previous set. */
- if (cinfo->output_scanline % 16) {
- udest -= width * 8 / 2;
- vdest -= width * 8 / 2;
- }
}
return 0;
}
--
2.1.0

View File

@ -1 +1 @@
9cb3c178f937954e65bf30920af433ef v4l-utils-1.6.2.tar.bz2
f86d0938e46fde821dc10d4d2f6636e4 v4l-utils-1.8.1.tar.bz2

View File

@ -1,6 +1,6 @@
Name: v4l-utils
Version: 1.6.2
Release: 3%{?dist}
Version: 1.8.1
Release: 1%{?dist}
Summary: Utilities for video4linux and DVB devices
Group: Applications/System
# libdvbv5, dvbv5 utils, ir-keytable and v4l2-sysfs-path are GPLv2 only
@ -8,7 +8,7 @@ License: GPLv2+ and GPLv2
URL: http://www.linuxtv.org/downloads/v4l-utils/
Source0: http://linuxtv.org/downloads/v4l-utils/v4l-utils-%{version}.tar.bz2
BuildRequires: libjpeg-devel qt4-devel kernel-headers desktop-file-utils
BuildRequires: alsa-lib-devel doxygen
BuildRequires: alsa-lib-devel doxygen gettext
# For /lib/udev/rules.d ownership
Requires: udev
Requires: libv4l%{?_isa} = %{version}-%{release}
@ -116,6 +116,8 @@ 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
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/qv4l2.desktop
%find_lang %{name}
%find_lang libdvbv5
%post -n libv4l -p /sbin/ldconfig
@ -139,7 +141,7 @@ fi
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%files
%files -f %{name}.lang -f libdvbv5.lang
%doc README
%dir %{_sysconfdir}/rc_keymaps
%config(noreplace) %{_sysconfdir}/rc_maps.cfg
@ -154,11 +156,14 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/v4l2-ctl
%{_bindir}/v4l2-sysfs-path
%{_mandir}/man1/*.1*
%exclude %{_mandir}/man1/qv4l2.1*
%exclude %{_mandir}/man1/v4l2-compliance.1*
%files devel-tools
%doc README
%{_bindir}/decode_tm6000
%{_bindir}/v4l2-compliance
%{_mandir}/man1/v4l2-compliance.1*
%{_sbindir}/v4l2-dbg
%files -n qv4l2
@ -166,6 +171,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/qv4l2
%{_datadir}/applications/qv4l2.desktop
%{_datadir}/icons/hicolor/*/apps/qv4l2.*
%{_mandir}/man1/qv4l2.1*
%files -n libv4l
%doc COPYING.libv4l COPYING ChangeLog README.libv4l TODO
@ -190,6 +196,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%changelog
* Mon Oct 12 2015 Gregor Jasny <gjasny@googlemail.com> - 1.8.1-1
- Upgrade to version 1.8.1
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild