summaryrefslogtreecommitdiff
path: root/jddctmgr.c
diff options
context:
space:
mode:
authorAlex Naidis <alex.naidis@linux.com>2016-10-16 23:10:08 +0200
committerAlex Naidis <alex.naidis@linux.com>2016-10-23 15:24:06 +0200
commit6eb7d3798b5a79347c62825fc4c16f7ce673bdd0 (patch)
tree1434d2258d7fe0588e35d359c21f21259d005453 /jddctmgr.c
parente7bf3c56cadcd76c624a9bd1798d64c03c2a1210 (diff)
libjpeg-turbo: Upgrade to 1.5.1
The changes from 1.4.2 to 1.5.1 include a big amount of fixes and huge performance improvements. As highlights there is a full ARM 64-bit (ARMv8) NEON SIMD implementation which improves compression of full-color JPEGs by about 2-2.5x on average on Cortex-A53 and Cortex-A57 cores. Also SIMD acceleration for Huffman encoding on NEON-capable ARM 32-bit and 64-bit platforms was added. Performance on x86/x86_64 was also improved by adding better optimized SSE2 routines. For the full changelog, please see the ChangeLog.md file. Partial decoding optimizations, the security fix to adress b/27494207 and the fix for the AARCH64 conformance issueare present in the release. The README.android file was edited to reflect this. The configuration files were regenerated and all Android specific changes were applied. BUG:28268702 Change-Id: I538291d894df1da01d3f733771647df1fb61ec42 Signed-off-by: Alex Naidis <alex.naidis@linux.com>
Diffstat (limited to 'jddctmgr.c')
-rw-r--r--jddctmgr.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/jddctmgr.c b/jddctmgr.c
index 6cc3310..3a5ba7e 100644
--- a/jddctmgr.c
+++ b/jddctmgr.c
@@ -6,9 +6,10 @@
* Modified 2002-2010 by Guido Vollbeding.
* libjpeg-turbo Modifications:
* Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
- * Copyright (C) 2010, D. R. Commander.
- * Copyright (C) 2013, MIPS Technologies, Inc., California
- * For conditions of distribution and use, see the accompanying README file.
+ * Copyright (C) 2010, 2015, D. R. Commander.
+ * Copyright (C) 2013, MIPS Technologies, Inc., California.
+ * For conditions of distribution and use, see the accompanying README.ijg
+ * file.
*
* This file contains the inverse-DCT management logic.
* This code selects a particular IDCT implementation to be used,
@@ -58,7 +59,7 @@ typedef struct {
int cur_method[MAX_COMPONENTS];
} my_idct_controller;
-typedef my_idct_controller * my_idct_ptr;
+typedef my_idct_controller *my_idct_ptr;
/* Allocated multiplier tables: big enough for any supported variant */
@@ -100,7 +101,7 @@ start_pass (j_decompress_ptr cinfo)
jpeg_component_info *compptr;
int method = 0;
inverse_DCT_method_ptr method_ptr = NULL;
- JQUANT_TBL * qtbl;
+ JQUANT_TBL *qtbl;
for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
ci++, compptr++) {
@@ -245,7 +246,7 @@ start_pass (j_decompress_ptr cinfo)
/* For LL&M IDCT method, multipliers are equal to raw quantization
* coefficients, but are stored as ints to ensure access efficiency.
*/
- ISLOW_MULT_TYPE * ismtbl = (ISLOW_MULT_TYPE *) compptr->dct_table;
+ ISLOW_MULT_TYPE *ismtbl = (ISLOW_MULT_TYPE *) compptr->dct_table;
for (i = 0; i < DCTSIZE2; i++) {
ismtbl[i] = (ISLOW_MULT_TYPE) qtbl->quantval[i];
}
@@ -262,7 +263,7 @@ start_pass (j_decompress_ptr cinfo)
* For integer operation, the multiplier table is to be scaled by
* IFAST_SCALE_BITS.
*/
- IFAST_MULT_TYPE * ifmtbl = (IFAST_MULT_TYPE *) compptr->dct_table;
+ IFAST_MULT_TYPE *ifmtbl = (IFAST_MULT_TYPE *) compptr->dct_table;
#define CONST_BITS 14
static const INT16 aanscales[DCTSIZE2] = {
/* precomputed values scaled up by 14 bits */
@@ -279,8 +280,8 @@ start_pass (j_decompress_ptr cinfo)
for (i = 0; i < DCTSIZE2; i++) {
ifmtbl[i] = (IFAST_MULT_TYPE)
- DESCALE(MULTIPLY16V16((INT32) qtbl->quantval[i],
- (INT32) aanscales[i]),
+ DESCALE(MULTIPLY16V16((JLONG) qtbl->quantval[i],
+ (JLONG) aanscales[i]),
CONST_BITS-IFAST_SCALE_BITS);
}
}
@@ -294,7 +295,7 @@ start_pass (j_decompress_ptr cinfo)
* scalefactor[0] = 1
* scalefactor[k] = cos(k*PI/16) * sqrt(2) for k=1..7
*/
- FLOAT_MULT_TYPE * fmtbl = (FLOAT_MULT_TYPE *) compptr->dct_table;
+ FLOAT_MULT_TYPE *fmtbl = (FLOAT_MULT_TYPE *) compptr->dct_table;
int row, col;
static const double aanscalefactor[DCTSIZE] = {
1.0, 1.387039845, 1.306562965, 1.175875602,