aboutsummaryrefslogtreecommitdiffstats
path: root/graphics/mozjpeg
diff options
context:
space:
mode:
authorantoine <antoine@FreeBSD.org>2015-09-14 04:37:04 +0800
committerantoine <antoine@FreeBSD.org>2015-09-14 04:37:04 +0800
commit8caef2a872aa21dade9d759ccc90d3e67643f3bb (patch)
treeec9500d43fe9c2216010324dc6f9918242101554 /graphics/mozjpeg
parent6946e74a09d5e2030c786601b8738600dcdbd79f (diff)
downloadfreebsd-ports-gnome-8caef2a872aa21dade9d759ccc90d3e67643f3bb.tar.gz
freebsd-ports-gnome-8caef2a872aa21dade9d759ccc90d3e67643f3bb.tar.zst
freebsd-ports-gnome-8caef2a872aa21dade9d759ccc90d3e67643f3bb.zip
Fix negative shift with IFAST FDCT and qual=100
This fixes regression tests with clang 3.7.0 PR: 202763 Obtained from: https://github.com/libjpeg-turbo/libjpeg-turbo/commit/4cfa3f4c39c2e46eca3a65c67411d15e08a3fc70 Submitted upstream in: https://github.com/mozilla/mozjpeg/pull/186 Approved by: maintainer timeout (2 weeks)
Diffstat (limited to 'graphics/mozjpeg')
-rw-r--r--graphics/mozjpeg/Makefile1
-rw-r--r--graphics/mozjpeg/files/patch-jcdctmgr.c41
2 files changed, 42 insertions, 0 deletions
diff --git a/graphics/mozjpeg/Makefile b/graphics/mozjpeg/Makefile
index cf290a7a6645..0047c0bd7f77 100644
--- a/graphics/mozjpeg/Makefile
+++ b/graphics/mozjpeg/Makefile
@@ -4,6 +4,7 @@
PORTNAME= mozjpeg
PORTVERSION= 3.1
DISTVERSIONPREFIX= v
+PORTREVISION= 1
CATEGORIES= graphics
MAINTAINER= horia@racoviceanu.com
diff --git a/graphics/mozjpeg/files/patch-jcdctmgr.c b/graphics/mozjpeg/files/patch-jcdctmgr.c
new file mode 100644
index 000000000000..ab9513cd625e
--- /dev/null
+++ b/graphics/mozjpeg/files/patch-jcdctmgr.c
@@ -0,0 +1,41 @@
+--- jcdctmgr.c.orig 2015-05-18 14:28:09 UTC
++++ jcdctmgr.c
+@@ -6,7 +6,7 @@
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 1999-2006, MIYASAKA Masaru.
+ * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
+- * Copyright (C) 2011, 2014 D. R. Commander
++ * Copyright (C) 2011, 2014-2015 D. R. Commander
+ * mozjpeg Modifications:
+ * Copyright (C) 2014, Mozilla Corporation.
+ * For conditions of distribution and use, see the accompanying README file.
+@@ -185,6 +185,19 @@ compute_reciprocal (UINT16 divisor, DCTE
+ UDCTELEM c;
+ int b, r;
+
++ if (divisor == 1) {
++ /* divisor == 1 means unquantized, so these reciprocal/correction/shift
++ * values will cause the C quantization algorithm to act like the
++ * identity function. Since only the C quantization algorithm is used in
++ * these cases, the scale value is irrelevant.
++ */
++ dtbl[DCTSIZE2 * 0] = (DCTELEM) 1; /* reciprocal */
++ dtbl[DCTSIZE2 * 1] = (DCTELEM) 0; /* correction */
++ dtbl[DCTSIZE2 * 2] = (DCTELEM) 1; /* scale */
++ dtbl[DCTSIZE2 * 3] = (DCTELEM) (-sizeof(DCTELEM) * 8); /* shift */
++ return 0;
++ }
++
+ b = flss(divisor) - 1;
+ r = sizeof(DCTELEM) * 8 + b;
+
+@@ -589,7 +602,8 @@ quantize (JCOEFPTR coef_block, DCTELEM *
+
+ #if BITS_IN_JSAMPLE == 8
+
+- UDCTELEM recip, corr, shift;
++ UDCTELEM recip, corr;
++ int shift;
+ UDCTELEM2 product;
+
+ for (i = 0; i < DCTSIZE2; i++) {