forked from libjpeg-turbo/libjpeg-turbo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SSE2 SIMD implementation of Huffman encoding
Full-color compression speedups relative to libjpeg-turbo 1.4.2: 2.8 GHz Intel Xeon W3530, Linux, 64-bit: 2.2-18% (avg. 9.5%) 2.8 GHz Intel Xeon W3530, Linux, 32-bit: 10-25% (avg. 17%) 2.3 GHz AMD A10-4600M APU, Linux, 64-bit: 4.9-17% (avg. 11%) 2.3 GHz AMD A10-4600M APU, Linux, 32-bit: 8.8-19% (avg. 15%) 3.0 GHz Intel Core i7, OS X, 64-bit: 3.5-16% (avg. 10%) 3.0 GHz Intel Core i7, OS X, 32-bit: 4.8-14% (avg. 11%) 2.6 GHz AMD Athlon 64 X2 5050e: Performance-neutral (give or take a few percent) Full-color compression speedups relative to IPP: 2.8 GHz Intel Xeon W3530, Linux, 64-bit: 4.8-34% (avg. 19%) 2.8 GHz Intel Xeon W3530, Linux, 32-bit: -19%-7.0% (avg. -7.0%) Refer to libjpeg-turbo#42 for discussion. Numerous other approaches were attempted, but this one proved to be the most performant across all platforms. This commit also fixes libjpeg-turbo#3 (works around, really-- the clang-compiled version of jchuff.c still performs 20% worse than its GCC-compiled counterpart, but that code is now bypassed by the new SSE2 Huffman algorithm.) Based on: mayeut@2cb4d41 mayeut@36c94e0
- Loading branch information
1 parent
eb59b6e
commit f3a8684
Showing
18 changed files
with
5,157 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,13 +3,16 @@ | |
* | ||
* Copyright 2009 Pierre Ossman <[email protected]> for Cendio AB | ||
* Copyright 2011, 2014 D. R. Commander | ||
* Copyright 2015 Matthieu Darbois | ||
* | ||
* Based on the x86 SIMD extension for IJG JPEG library, | ||
* Copyright (C) 1999-2006, MIYASAKA Masaru. | ||
* For conditions of distribution and use, see copyright notice in jsimdext.inc | ||
* | ||
*/ | ||
|
||
#include "jchuff.h" /* Declarations shared with jcphuff.c */ | ||
|
||
EXTERN(int) jsimd_can_rgb_ycc (void); | ||
EXTERN(int) jsimd_can_rgb_gray (void); | ||
EXTERN(int) jsimd_can_ycc_rgb (void); | ||
|
@@ -82,3 +85,9 @@ EXTERN(void) jsimd_h2v2_merged_upsample | |
EXTERN(void) jsimd_h2v1_merged_upsample | ||
(j_decompress_ptr cinfo, JSAMPIMAGE input_buf, | ||
JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf); | ||
|
||
EXTERN(int) jsimd_can_huff_encode_one_block (void); | ||
|
||
EXTERN(JOCTET*) jsimd_huff_encode_one_block | ||
(void * state, JOCTET *buffer, JCOEFPTR block, int last_dc_val, | ||
c_derived_tbl *dctbl, c_derived_tbl *actbl); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,7 @@ | |
* | ||
* Copyright 2009 Pierre Ossman <[email protected]> for Cendio AB | ||
* Copyright 2009-2011, 2014 D. R. Commander | ||
* Copyright 2015 Matthieu Darbois | ||
* | ||
* Based on the x86 SIMD extension for IJG JPEG library, | ||
* Copyright (C) 1999-2006, MIYASAKA Masaru. | ||
|
@@ -387,3 +388,16 @@ jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr, | |
{ | ||
} | ||
|
||
GLOBAL(int) | ||
jsimd_can_huff_encode_one_block (void) | ||
{ | ||
return 0; | ||
} | ||
|
||
GLOBAL(JOCTET*) | ||
jsimd_huff_encode_one_block (void * state, JOCTET *buffer, JCOEFPTR block, | ||
int last_dc_val, c_derived_tbl *dctbl, | ||
c_derived_tbl *actbl) | ||
{ | ||
return NULL; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.