Compare commits

...

255 Commits
1.2.0 ... 1.3.1

Author SHA1 Message Date
DRC
c8b0226d91 git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1202 632fc199-4ca6-4c93-a231-07263d6284db 2014-03-22 20:42:01 +00:00
DRC
7a9faaefb4 Since we're now maintaining our own Cygwin pseudo-repository directories instead of recommending that users install these packages from a local source, it makes more sense to name the packages according to Cygwin specs, so they can be copied as-is into the pseudo-repository.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1195 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-21 23:34:53 +00:00
DRC
3064cf7410 RHEL 6 (and probably other platforms as well) sets _defaultdocdir=%{_datadir}/doc, which screws things up, since we're overriding _datadir. Since we intend _defaultdocdir to be /usr/share/doc, just be explicit about it.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1193 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-21 11:00:00 +00:00
DRC
fc9995e4c9 Prevent svn:mergeinfo from being modified on Makefile.am and simd/jsimd*.c every time a merge is done.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1192 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-21 09:35:53 +00:00
DRC
506a742193 Fix compiler warning about unused function when building with the libjpeg v6b API/ABI
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1189 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-21 09:29:28 +00:00
DRC
ad64b5a4c9 Fix compiler warning ("always_inline function might not be inlinable") when building with recent versions of GCC
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1187 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-21 09:22:21 +00:00
DRC
c7e10b21e8 Enable silent build (can be overridden with 'make V=1') if the version of autotools being used is new enough.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1185 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-21 08:36:06 +00:00
DRC
2ae7918a8e Fix an error that occurred when trying to use the lossless transform feature without specifying -quiet; formatting tweak
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1181 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-17 10:14:18 +00:00
DRC
88f260c78c Move the garbage collection of the JPEG tiles into the decompression function to increase the chances that tiled decompression of large images will succeed without an OutOfMemoryError.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1179 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-17 10:12:11 +00:00
DRC
40a0a023fa Update (C) year
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1175 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-16 19:33:23 +00:00
DRC
695b6e8680 Don't use deprecated constructor
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1174 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-16 19:33:07 +00:00
DRC
aa255e2946 Doc tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1173 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-16 18:43:42 +00:00
DRC
bcb5f02392 Go ahead and deprecate the old constructor in 1.3.1 instead of in 1.4, since it uses a deprecated method
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1172 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-16 18:00:59 +00:00
DRC
c33347c0aa Add @Deprecated to the deprecated Java methods, so javac will actually print deprecation warnings, as opposed to just listing the methods as deprecated in javadoc; remove the use of the deprecated methods by our own test programs.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1171 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-15 13:25:11 +00:00
DRC
df42b3cdf5 Whitespace tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1160 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-13 08:32:11 +00:00
DRC
dd59233dd4 Fix a segfault that would occur in decompress-only mode if -alloc was specified without -tile.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1155 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-12 06:15:51 +00:00
DRC
a15f19f2d2 Wordsmithing & formatting tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1154 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-11 09:46:50 +00:00
DRC
d4b453c26e Back-port the -subsamp option from 1.4 rather than use the hackish approach of replacing 4:2:2 with 4:4:0. This has the added advantage of allowing the user to test only a specific level of subsampling.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1153 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-11 08:28:47 +00:00
DRC
db0e2791e0 Oops. This was apparently the victim of an overly aggressive search/replace.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1152 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-11 08:25:59 +00:00
DRC
5eb1efa3d2 Silence warning in CMake 2.8.12 and later
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1150 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-11 06:30:21 +00:00
DRC
d45c54992b Fix the build of the Java classes when using MSVC 2010 and later. Something in the recesses of my brain is telling me that I tried this before and it failed under some circumstances, but it must have been a bug in an older CMake implementation. CMake 2.8.8 and later seem to work fine with this patch. This patch also updates the minimum required version to 2.8.8, because 2.8.8 fixed another issue that was preventing the SIMD code from building under MSVC 2010 and later.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1148 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-11 06:21:46 +00:00
DRC
05d24e826d Fix Windows build
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1147 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-10 21:38:11 +00:00
DRC
42aeac3ee2 Formatting tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1146 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-10 21:37:54 +00:00
DRC
4798b7e806 Add a blank line before the alpha-enabled colorspace tests in order to improve readability
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1140 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-08 20:31:31 +00:00
DRC
84c25cbec9 Oops. We need to call start_pass() on the color converter in order to allocate the conversion tables used by the plain C code.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1136 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-06 19:51:29 +00:00
DRC
50cfc464b8 Oops. We need to call start_pass() on the color converter in order to allocate the conversion tables used by the plain C code.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1137 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-06 20:03:37 +00:00
DRC
ea657b2f74 Fix regression introduced in r1128 that caused SIMD detection to malfunction for ARM platforms (and probably ARM64 and MIPS as well.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1135 632fc199-4ca6-4c93-a231-07263d6284db
2014-03-06 09:29:25 +00:00
DRC
e2ce3b5eb0 Remove unused code (the destination manager is not used during YUV encoding, there are no virtual arrays to realize, and jinit_c_prep_controller() is unnecessary because we are not using smoothing.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1129 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-28 05:27:55 +00:00
DRC
ffa5e59218 Fix autoconf warnings
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1128 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-28 05:26:24 +00:00
DRC
5aec4afc62 Use C-style comments
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1127 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-28 05:23:26 +00:00
DRC
c7a32466a6 Remove unused code (the destination manager is not used during YUV encoding, there are no virtual arrays to realize, and jinit_c_prep_controller() is unnecessary because we are not using smoothing.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1126 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-28 05:19:43 +00:00
DRC
693f4a5600 Fix an issue that prevented tjEncodeYUV2() and TJCompressor.encodeYUV() from working properly if the source image was very tiny. Basically, jpeg_start_compress() was attempting to write the JPEG headers, which was overrunning the YUV buffer. This patch removes the call to jpeg_start_compress() in tjEncodeYUV2() and replaces it with calls to the individual routines that are necessary to initialize the color converter and downsampler. TJUnitTest has also been modified to test for this condition (the buffer size regression test now works in YUV mode.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1121 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-11 10:16:42 +00:00
DRC
2c0c807fcc Fix an issue that prevented tjEncodeYUV2() and TJCompressor.encodeYUV() from working properly if the source image was very tiny. Basically, jpeg_start_compress() was attempting to write the JPEG headers, which was overrunning the YUV buffer. This patch removes the call to jpeg_start_compress() in tjEncodeYUV2() and replaces it with calls to the individual routines that are necessary to initialize the color converter and downsampler. TJUnitTest has also been modified to test for this condition (the buffer size regression test now works in YUV mode.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1120 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-11 09:56:12 +00:00
DRC
2885cf5830 Further examination of the code reveals that this change is unnecessary. The histogram stores a count of each color in the image, so it will always contain at least one non-zero element, and thus the total can never be zero. Since the histogram is generated from the image data and not read from the header, there is no chance that header corruption would affect it.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1116 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-07 19:06:03 +00:00
DRC
d4ab63d191 Fix several potential overflow issues identified by the community.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1114 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-06 19:31:50 +00:00
DRC
88dee5863a Formatting tweak
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1113 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-06 19:31:23 +00:00
DRC
e189ec7a48 Remove trailing space
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1111 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-06 19:15:03 +00:00
DRC
3e00f03aea Formatting tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1107 632fc199-4ca6-4c93-a231-07263d6284db
2014-02-05 07:40:00 +00:00
DRC
8d55c88cda Include instructions for building iOS binaries using Xcode 4.6.x and Xcode 5.0.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1102 632fc199-4ca6-4c93-a231-07263d6284db
2014-01-29 19:32:23 +00:00
DRC
b3a028e356 Per the conventions of the image compression and digital video communities, use "YCbCr" to describe the JPEG colorspace and "YUV" to describe an image format consisting of Y, Cb, and Cr planes (this partially reverts r959.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1092 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-25 21:08:47 +00:00
DRC
5a7e9e5baa Per the conventions of the image compression and digital video communities, use "YCbCr" to describe the JPEG colorspace and "YUV" to describe an image format consisting of Y, Cb, and Cr planes (this partially reverts r959.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1091 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-25 20:30:12 +00:00
DRC
43d8cf4d45 Fix CVE-2013-6629 and CVE-2013-6630
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1090 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-21 18:34:39 +00:00
DRC
7ebf2941a9 Fix CVE-2013-6629 and CVE-2013-6630
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1089 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-21 18:32:48 +00:00
DRC
cb92dccf0d Make documentation viewable directly from http://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1086 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-19 02:08:23 +00:00
DRC
e163653f99 Back-port code from jpeg-8 that removes unpopulated (and unneeded) tables for AC and DC coefficients when generating progressive JPEG files with arithmetic coding. This should make such files bitwise compatible with jpeg-8, barring any other mathematical differences (such as the different subsampling algorithm used in jpeg-8.) Add regression tests for progressive+arithmetic JPEG files.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1082 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-06 07:45:39 +00:00
DRC
c44750e50e Fix an issue that resulted in an error ("Invalid SOS parameters for sequential JPEG. Didn't expect more than one scan.") when decoding progressive+arithmetic JPEGs generated by libjpeg-turbo.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1081 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-06 07:37:01 +00:00
DRC
4b509280ce Back-port code from jpeg-8 that removes unpopulated (and unneeded) tables for AC and DC coefficients when generating progressive JPEG files with arithmetic coding. This should make such files bitwise compatible with jpeg-8, barring any other mathematical differences listed in README-turbo.txt. Add regression tests for progressive+arithmetic JPEG files.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1080 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-06 06:55:28 +00:00
DRC
4ac8700537 Remove unnecessary whitespace
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1078 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-06 06:02:26 +00:00
DRC
5aa6c9a553 Remove unnecessary whitespace
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1077 632fc199-4ca6-4c93-a231-07263d6284db
2013-11-06 05:58:38 +00:00
DRC
6cef2b1059 Fix a really subtle issue whereby an invalid free() could occur if a program called tjInitDecompress() and then accidentally passed the handle to tjEncodeYUV2(), or if a program called tjInitCompress() and then accidentally passed the handle to tjDecompressToYUV().
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1064 632fc199-4ca6-4c93-a231-07263d6284db
2013-10-30 22:12:37 +00:00
DRC
f57a22de55 Fix logic error from r1039
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1063 632fc199-4ca6-4c93-a231-07263d6284db
2013-10-26 00:32:23 +00:00
DRC
c45653e471 Fix a couple of issues with return value checking. JFREAD(), which wraps fread(), will never return -1. fread() will instead return 0 or a short object count if an error occurs, and ferror() will return 1 in that case. The second issue was that we were assigning the return value of ftell() to an unsigned long prior to checking the value, so the value would never be < 0 if an error occurred. It would instead be (unsigned long)-1.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1061 632fc199-4ca6-4c93-a231-07263d6284db
2013-10-12 21:52:48 +00:00
DRC
a6ef282a49 Some of the IJG headers say "Modified by", so clarify that our "Modifications" are not referring to these.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1053 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-28 03:23:49 +00:00
DRC
cadabd4239 Actually, the second bug was hidden by the first, so the initial ChangeLog entry was correct from the user's point of view.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1050 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-28 03:10:31 +00:00
DRC
e8be2c612a Fix an issue that resulted in an error ("Invalid SOS parameters for sequential JPEG. Didn't expect more than one scan.") when decoding progressive+arithmetic JPEGs generated by libjpeg-turbo.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1049 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-28 03:04:01 +00:00
DRC
94b6c02d7d Name the package *cygwin64.tar.bz2 when building on Cygwin64.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1043 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-26 07:27:56 +00:00
DRC
f369f17f8a Due to the way in which the configure script silently falls back to a non-SIMD build if SIMD can't be enabled, we accidentally released iOS ARM v7 and v7s binaries in 1.3.0 that did not contain NEON SIMD code, because gas-preprocessor.pl wasn't in the PATH. In order to prevent this from happening again, specifying --with-simd now has the effect of forcing a SIMD build, and if this argument is specified, any issues encountered while enabling SIMD are treated as fatal.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1039 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-25 05:24:46 +00:00
DRC
5d2514b86f We can't enable optimized entropy coding unless we're using Huffman coding. This fixes a bug whereby attempting to create a progressive JPEG with arithmetic coding would fail.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1036 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-24 03:39:51 +00:00
DRC
2c63c003be Clarify that the bug affects cjpeg as well as jpegtran.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1035 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-24 03:38:32 +00:00
DRC
ba923a8529 Fix I/O suspension. This little nugget of code was introduced in r30 as part of an early attempt to make buffered I/O work with the optimized Huffman codec. Ultimately, r32 reverted a lot of that mess and introduced much of the logic we now use, rendering this code unnecessary, but it was never reverted because it only causes problems when I/O suspension is used, and apparently no one has tried to do that with libjpeg-turbo until now.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@1033 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-24 03:26:47 +00:00
DRC
1370f10326 We can't enable optimized entropy coding unless we're using Huffman coding. This fixes a bug whereby attempting to create a progressive JPEG with arithmetic coding would fail.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1032 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-24 03:21:38 +00:00
DRC
24f11a73f2 The connect.apple.com alias has apparently been down for about a month
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1030 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-23 18:38:20 +00:00
DRC
6eb29ddb6f Oops. We need to delete the new copy of turbojpeg.dll in the binary directory. Also add quotes to InstDir to allow installing under "c:\Program Files\", and remove unnecessary quotes in the Delete directives.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1028 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-20 01:11:40 +00:00
DRC
4d877931ab In the Windows installer packages, place a duplicate copy of turbojpeg.dll in c:\libjpeg-turbo[-gcc][64]\bin. This is mainly to give installers an easy way to find the DLL for the purposes of bundling it. Specifically, this was necessary for TurboVNC, becuase 32-bit CMake running on 64-bit Windows cannot ever access the "real" c:\windows\system32 directory.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1026 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-19 22:55:57 +00:00
DRC
7ef26165cc 1.3.1
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1025 632fc199-4ca6-4c93-a231-07263d6284db
2013-09-19 09:36:03 +00:00
DRC
ae92418cc1 Add note regarding the fact that 4:4:0 lacks full SIMD support; Add an option for benchmarking 4:4:0 subsampling in TJBench; Wordsmithing; Disable timestamp in generated HTML files to make diffing and merging easier
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1016 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-18 10:47:07 +00:00
DRC
ca866c48f0 Disable timestamp in generated HTML files to make diffing and merging easier.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1012 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-18 09:37:48 +00:00
DRC
7657726d38 Wordsmithing
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1010 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-18 09:28:09 +00:00
DRC
07796da4e5 Add note regarding the fact that 4:4:0 lacks full SIMD support; Add an option for benchmarking 4:4:0 subsampling in tjbench.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1008 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-18 09:13:00 +00:00
DRC
bcda6834d6 Upgrade to Doxygen 1.8.3.1; Add note regarding the fact that 4:4:0 lacks full SIMD support.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1007 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-18 09:02:42 +00:00
DRC
71ccb39d1e Upgrade to Doxygen 1.8.3.1
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1006 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-18 09:00:15 +00:00
DRC
1520ee2986 Remove stray closing bracket that prevented the use of this header in a C++ application
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1003 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-12 21:36:10 +00:00
DRC
dadebe97e4 Document previous commit in the change log
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1000 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-11 23:04:34 +00:00
DRC
c32e0c23c0 By default, install the libraries into /opt/libjpeg-turbo/lib32 on any 32-bit system, not just x86, and into /opt/libjpeg-turbo/lib64 on any 64-bit system, not just x86-64. In particular, this addresses an issue with building TurboVNC and VirtualGL on ARM systems.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@999 632fc199-4ca6-4c93-a231-07263d6284db
2013-08-11 22:57:19 +00:00
DRC
b92710377b Fix lintian warning about missing maintainer address when installing on recent Debian-based systems
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@992 632fc199-4ca6-4c93-a231-07263d6284db
2013-07-07 04:43:49 +00:00
DRC
d3eb40b97a Use ELF64 object format on 64-bit kFreeBSD systems.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@990 632fc199-4ca6-4c93-a231-07263d6284db
2013-07-03 14:22:09 +00:00
DRC
6e0bbbf7e6 1.3.0
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@983 632fc199-4ca6-4c93-a231-07263d6284db
2013-05-10 22:08:53 +00:00
DRC
49df783743 Clean up the output of tjunittest and TJUnitTest
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@980 632fc199-4ca6-4c93-a231-07263d6284db
2013-05-04 23:31:32 +00:00
DRC
04e0a0293a Make sure the RPM provides "libjpeg-turbo" as well, for backward compatibility (the TurboVNC RPM build, in particular, checks for this.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@978 632fc199-4ca6-4c93-a231-07263d6284db
2013-05-01 06:03:53 +00:00
DRC
bb9e147872 Fix backward compatibility between the Java classes and the 1.2.x JNI library (as long as the 1.3 Java features are not used.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@973 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-27 22:48:08 +00:00
DRC
1d29c5f97b Correct misuse of the word "pitch" + more code formatting tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@970 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-27 20:54:44 +00:00
DRC
67bee8683d Code formatting tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@968 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-27 12:36:07 +00:00
DRC
65d4a46d3b Java doc tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@966 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-27 01:06:52 +00:00
DRC
c6eedebc6a Oops
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@964 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-26 23:41:51 +00:00
DRC
0c83e5af00 Not that it matters, because JNI uses dlopen()/dlsym() to load symbols, but for bookkeeping purposes, move the JNI symbols introduced in libjpeg-turbo 1.3 into a new section.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@963 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-26 23:39:23 +00:00
DRC
d8522a7587 Wordsmithing
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@961 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-26 08:54:10 +00:00
DRC
01fdcc391a Further doc tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@959 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-26 08:41:25 +00:00
DRC
9ce1a21ea7 Subtle point, but since libjpeg-turbo 1.3 now supports scaling factors > 1, the width and height specified in tjDecompress2() are not necessarily smaller than the JPEG width/height.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@957 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-26 05:32:32 +00:00
DRC
0bb37a5d5f Create 1.3.x branch
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@955 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-25 09:37:19 +00:00
DRC
4c17a453d1 Fix I/O suspension. This little nugget of code was introduced in r30 as part of an early attempt to make buffered I/O work with the optimized Huffman codec. Ultimately, r32 reverted a lot of that mess and introduced much of the logic we now use, rendering this code unnecessary, but it was never reverted because it only causes problems when I/O suspension is used, and apparently no one has tried to do that with libjpeg-turbo until now.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@954 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-25 08:55:31 +00:00
DRC
4578953843 For consistency, allow the name of the Mac and Cygwin packages to be overridden as well.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@953 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-24 23:39:37 +00:00
DRC
d7a642b571 Minor doc tweaks + ChangeLog update
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@951 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-24 06:40:25 +00:00
DRC
00400a0a58 In order to avoid a functional regression with previous releases, the JAR file needs to be able to load either the 64-bit or 32-bit JNI library on Un*x systems.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@950 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-24 06:21:24 +00:00
DRC
441308cffa Move the TurboJPEG DLLs back into the system directory on Windows platforms. For Windows, it doesn't really simplify the build system to install these libraries in c:\libjpeg-turbo*, and it introduces potential problems with loading the JNI library. Specifically, if a user linked their Java app against the 64-bit libjpeg-turbo SDK and then used a 32-bit JVM at run time, they would not be able to load the 32-bit turbojpeg.dll without manipulating java.library.path or the PATH environment (and vice versa for building against the 32-bit libjpeg-turbo SDK and using a 64-bit JVM at run time.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@949 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-24 05:26:42 +00:00
DRC
4b357abb6d Older versions of automake don't support multiple _JAVA primaries, but we don't actually have to specify a "dist" primary, since the Java sources are already included under EXTRA_DIST.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@948 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-24 03:36:30 +00:00
DRC
94f7ac929a Fix 'make dist'
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@947 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-24 03:15:23 +00:00
DRC
7175e51792 Further enhancements/fixes to the packaging system:
-- The Mac and Cygwin packages will now be created with the directory structure defined by the configure variables "prefix", "bindir", "libdir", etc., with the exception that the docs are always installed under /usr/share/doc/{package_name}-{version} on Cygwin and /Library/Documentation/{package_name} on Mac.
-- Fixed a duplicate filename warning when generating RPMs with the default prefix of /opt/libjpeg-turbo.
-- Moved the TurboJPEG libraries out of the system directory on Windows and Mac.  It is no longer necessary to put them there, since we are not trying to be backward compatible with TurboJPEG/IPP anymore.
-- Fixed an issue whereby building the "installer" target on Windows would not build the Java JAR file, thus causing an error if the JAR had not been previously built.
-- Building the "install" target on Windows will now install libjpeg-turbo into c:\libjpeg-turbo[-gcc][64] (the same directories used by the installers.)  This can be overridden by setting CMAKE_INSTALL_PREFIX.
-- The Java classes on all platforms will now look for the JNI library in the directory under which the build/packaging system installs it.


git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@946 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-23 22:29:00 +00:00
DRC
764e1e23aa Overhaul Linux/Unix packaging system, primarily to avoid conflicts with vendor-supplied libjpeg-turbo packages (such as in Fedora and RHEL 6.) This also streamlines the packaging system somewhat, since it is no longer necessary to move the TurboJPEG libraries into the system library directory. Relocating those libraries was originally done to provide backward compatibility with TurboJPEG/IPP, but that package is long obsolete, and the software that formerly used it has been linking statically with libjpeg-turbo for quite some time.
If the default prefix (/opt/libjpeg-turbo) is used, then we now always install 32-bit libraries in /opt/libjpeg-turbo/lib32 and 64-bit libraries in /opt/libjpeg-turbo/lib64 instead of trying to conform to the Debian or Red Hat conventions.  The RPM and DEB packages will now be created with the directory structure defined by the configure variables "prefix", "bindir", "libdir", etc., with the exception that the docs are always installed under /usr/share/doc/{package_name}-{version}.


git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@944 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-19 04:25:14 +00:00
DRC
0ddff3b059 Formatting tweaks
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@943 632fc199-4ca6-4c93-a231-07263d6284db
2013-04-11 05:17:53 +00:00
DRC
7eced19feb Remove unneeded headers (cdef.h isn't available on all platforms) and change u_int32_t to unsigned int, since u_int32_t isn't available on all platforms. This fixes build issues on Solaris.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@942 632fc199-4ca6-4c93-a231-07263d6284db
2013-03-30 20:54:15 +00:00
DRC
08769b32f6 Grammar police
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@941 632fc199-4ca6-4c93-a231-07263d6284db
2013-03-23 21:35:41 +00:00
DRC
f32640e8cb Document issues encountered when building on OS X 10.7 and later.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@939 632fc199-4ca6-4c93-a231-07263d6284db
2013-03-23 09:57:03 +00:00
DRC
6cd1ec4b09 It's more correct to say "The Independent JPEG Group's software", since libjpeg-turbo emulates both the command-line and application programming interfaces.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@932 632fc199-4ca6-4c93-a231-07263d6284db
2013-03-23 05:35:37 +00:00
DRC
7ed0aebdba Add note about how to obtain PackageMaker if using recent Xcode releases.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@931 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-24 20:39:30 +00:00
DRC
5e96c9bfe0 Bump version for post-beta pre-releases
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@930 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-22 06:58:31 +00:00
DRC
5a84a0e1b3 git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@929 632fc199-4ca6-4c93-a231-07263d6284db 2013-02-14 07:31:35 +00:00
DRC
fde862ba1d Trying to build ARM v7/v7s iOS binaries from the "official" libjpeg-turbo tarball (generated on RHEL4/autoconf 2.59/automake 1.9.2/libtool 1.5.6) using either Xcode 3.2.x or 4.5.x produces an error: "libtool: compile: unable to infer tagged configuration". Further study is warranted, but the most expedient way around it at the moment is to re-run autoconf on the OS X machine that is being used to generate the iOS binaries.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@928 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-11 03:38:53 +00:00
DRC
292fb8425e Fix 'make dist'
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@927 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-06 23:55:59 +00:00
DRC
0bf58f2145 Include a C version of md5cmp rather than depending on an external md5sum binary, since md5sum is not available on all platforms (specifically, it doesn't exist on FreeBSD, and it has to be installed via MacPorts on OS X.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@926 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-06 23:51:08 +00:00
DRC
a35de7cc08 Fix line break
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@925 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-04 23:46:52 +00:00
DRC
a2a2cd60e5 Include ARM v7s (iPhone 5, iPad 4) support in the universal libjpeg/libturbojpeg libraries distributed with our official binary package for OS X.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@923 632fc199-4ca6-4c93-a231-07263d6284db
2013-02-04 22:29:57 +00:00
DRC
189ee81b58 Oops. Separate .def file is not needed when compiling with jpeg-8 API/ABI emulation.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@922 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-27 15:54:59 +00:00
DRC
0f7ff719a1 Wordsmith the project description
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@921 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-23 01:32:25 +00:00
DRC
bdfcb74d50 Actually, turbojpeg.c works with libjpeg as well
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@920 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-22 13:56:34 +00:00
DRC
5039d734d5 Eliminated the awkward and confusing "TurboJPEG/OSS" designation, since there are no other active implementations of the TurboJPEG API anymore; don't refer to the libjpeg API library as "libjpeg-turbo" anymore, since that can be confusing; ARM v7s build instructions
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@919 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-21 23:42:12 +00:00
DRC
98ca1c35d7 ImageIO.read() returns null if the input image type is not supported (which occurs when trying to read a PPM file), so output a friendly error instead of letting the next line throw a null pointer exception.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@918 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-19 06:43:27 +00:00
DRC
2e22eb6ea2 New year, new copyright message
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@917 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-19 01:16:38 +00:00
DRC
6da61db278 Fix several issues with SRPM generation: (1) ensure that all relevant configure arguments get passed down to the configure command line in the generated spec file, (2) adjust the file manifest in the spec to accommodate the differing "age" version whenever the in-memory source/dest managers are used, and (3) fix an issue with the value of SO_MAJOR_VERSION passed down to the configure command line in the generated spec file (SO_MAJOR_VERSION has to remain pure, so we use a different variable to pass down the combined "current+age" value to libtool in Makefile.am.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@916 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-19 01:06:46 +00:00
DRC
dc4645d422 Since Windows doesn't use lazy loading, clarify that a Windows application that uses jpeg_mem_dest() or jpeg_mem_src() must use the DLL containing those functions at run time. Other wordsmithing
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@915 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-19 00:13:57 +00:00
DRC
736fb06278 Compiler warnings on Windows
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@914 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-18 23:45:06 +00:00
DRC
ab70623eb2 Implement in-memory source/destination managers even when not emulating the libjpeg v8 API/ABI
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@913 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-18 23:42:31 +00:00
DRC
b87136c2c7 Include justification for not supporting SmartScale, DCT scaling, and the libjpeg v9 ABI
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@912 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-18 06:12:51 +00:00
DRC
eff4f956fe Subtle point, but the libjpeg v7+ API is not backward incompatible. That is, programs that were built against jpeg-6b can still build against jpeg-7+ with no issues. It's only the ABI that is backward incompatible, so the primary justification for implementing the emulation feature was to provide run-time (ABI) compatibility.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@911 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-18 06:02:10 +00:00
DRC
e2394fc58a Subtle point, but the libjpeg v7+ API is not backward incompatible. That is, programs that were built against jpeg-6b can still build against jpeg-7+ with no issues. It's only the ABI that is backward incompatible, so the primary justification for implementing the emulation feature was to provide run-time (ABI) compatibility.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@910 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-18 05:54:06 +00:00
DRC
cb2036fd11 Say "do not include" rather than "omit", to be consistent with the CMake build system and the output of the configure script.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@909 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-17 21:48:11 +00:00
DRC
7c39e3a766 Include full readme for nightshot_iso_100
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@908 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 21:11:50 +00:00
DRC
1f4cc446fe The GNU version of md5sum is picky about the spacing
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@907 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 12:49:57 +00:00
DRC
b87a0b4687 Fix the x86 build with NASM 0.98. Since NASM 0.98 is the default version on OS X, we want to at least allow people to build 32-bit code with it, even though it can't properly build 64-bit code.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@906 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 12:15:58 +00:00
DRC
00c2cf3632 Fix the x86 build with NASM 0.98. Since NASM 0.98 is the default version on OS X, we want to at least allow people to build 32-bit code with it, even though it can't properly build 64-bit code.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@905 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 12:12:53 +00:00
DRC
0f43551e08 Fix 'make dist'
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@904 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 11:40:58 +00:00
DRC
c5052c7701 Acknowledge the source of nightshot_iso_100.bmp
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@903 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 11:30:12 +00:00
DRC
211d1e7463 Consolidate the MD5 sums into one location and add a --without-turbojpeg switch to the Un*x build to allow building libjpeg-turbo without the TurboJPEG/OSS wrapper library. These modifications were supposed to lay the ground work for adding compile-time-selectable 12-bit JPEG support, but unfortunately there are deeper issues that prevent the implementation of that feature right now (namely, some of the modifications made to the C code to support the SIMD code are apparently not 12-bit-friendly.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@902 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 11:25:20 +00:00
DRC
5815699bff In all fairness, breaking backward ABI compatibility was necessary in jpeg-7 and jpeg-8 due to the fact that the caller allocates the struct.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@901 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 11:05:25 +00:00
DRC
f29ffd3eed Modify 'make test' so that it uses MD5 sums instead of reference images. This eliminates the need to check most of the test images into the repository, which keeps the source tarball to a reasonable size.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@900 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 03:00:25 +00:00
DRC
2f12d7a486 Also remove mention of install.txt and filelist.txt in the build system and README.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@899 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 01:19:09 +00:00
DRC
6f96153c67 install.txt contains no information relevant to libjpeg-turbo, and filelist.txt does not give any information that can't be gleaned by looking at the headers in the various source files.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@898 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-13 01:17:08 +00:00
DRC
e54d31affe git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@897 632fc199-4ca6-4c93-a231-07263d6284db 2013-01-12 07:30:58 +00:00
DRC
6b638a6d58 git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@896 632fc199-4ca6-4c93-a231-07263d6284db 2013-01-12 07:29:53 +00:00
DRC
d211effa01 git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@895 632fc199-4ca6-4c93-a231-07263d6284db 2013-01-12 07:28:35 +00:00
DRC
dad4d2e76c git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@894 632fc199-4ca6-4c93-a231-07263d6284db 2013-01-11 11:07:37 +00:00
DRC
d5e964c980 Wordsmithing; Remove mention of TurboJPEG/IPP-- it is no longer a relevant comparison, since the version of IPP on which TurboJPEG/IPP was based is now quite old, and TurboJPEG/IPP is no longer distributed or supported by The VirtualGL Project; Include information about mathematical incompatibilities with jpeg-8
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@893 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-10 11:47:39 +00:00
DRC
c168d9641c Prevent compiler warning on Windows if jmorecfg.h is included after the Windows headers, which also define FAR.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@892 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-06 18:00:20 +00:00
DRC
6a32d04d23 Prevent compiler warning on Windows if jmorecfg.h is included after the Windows headers, which also define FAR.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@891 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-06 17:59:42 +00:00
DRC
28701317d2 Spacing tweak
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@890 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 11:41:44 +00:00
DRC
d7ca17b73d We support arithmetic coding, which is a feature of libjpeg v7/v8
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@889 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 11:41:13 +00:00
DRC
ac51438b66 Indicate our support for some of the jpeg-8d features, as well as arithmetic coding
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@888 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 11:39:04 +00:00
DRC
966d8b77ef Undocument ansi2knr.c, since we don't include it
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@887 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 11:12:20 +00:00
DRC
c137f0f1cf Merge some of the README changes from jpeg-8d and change the copyright and version strings to reflect that we use some of that code.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@886 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:56:38 +00:00
DRC
f37e4daf94 Port RGB-to-Grayscale color transform from jpeg-8d
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@885 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:52:29 +00:00
DRC
251db636f8 Further changes to the copyright/attribution notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@884 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:51:16 +00:00
DRC
a9d39ce09d Further changes to the copyright/attribution notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@883 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:50:59 +00:00
DRC
e0634b15c3 We now support the additional decompression scaling factors from jpeg-7
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@882 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:47:02 +00:00
DRC
8cbf8939bb Port the width/height force feature from jpegtran v8d.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@881 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:44:00 +00:00
DRC
f73a27ca5b Add cjpeg -rgb option from jpeg-8d
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@880 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:25:43 +00:00
DRC
b5f2e450ac Minor modifications from jpeg-8d
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@879 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:17:03 +00:00
DRC
b24a7228ed Further changes to the copyright/attribution notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@878 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:13:34 +00:00
DRC
6d6e37df18 Further changes to the copyright/attribution notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@877 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 10:12:34 +00:00
DRC
cf763c0cd8 Further changes to the copyright/attribution notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@876 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 09:51:37 +00:00
DRC
03badeab66 Further changes to the copyright/attribution notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@875 632fc199-4ca6-4c93-a231-07263d6284db
2013-01-01 09:49:47 +00:00
DRC
84f7122ba6 1.2.90 (1.3 beta1)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@874 632fc199-4ca6-4c93-a231-07263d6284db
2012-12-31 09:44:31 +00:00
DRC
a73e870ad0 Change the copyright notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@873 632fc199-4ca6-4c93-a231-07263d6284db
2012-12-31 02:52:30 +00:00
DRC
0bfb78051d Change the copyright notices to make it clear that our modified files are not part of the IJG's software.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@872 632fc199-4ca6-4c93-a231-07263d6284db
2012-12-31 02:42:18 +00:00
DRC
2dcd4b5353 Fix bug in unused code
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@871 632fc199-4ca6-4c93-a231-07263d6284db
2012-12-01 22:33:54 +00:00
DRC
152e4c5ee4 Fix bug in unused code
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@870 632fc199-4ca6-4c93-a231-07263d6284db
2012-12-01 22:33:25 +00:00
DRC
75cf49798d Use a more robust method of obtaining the build timestamp on Windows. 'wmic os get LocalDateTime' will always return the timestamp in the format we want (YYYYMMDD), whereas date /t is sensitive to locale. If wmic fails, then we fall back to using date /t, even though this means that the BUILD variable will end up in the incorrect format on some systems.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@868 632fc199-4ca6-4c93-a231-07263d6284db
2012-10-12 10:18:37 +00:00
DRC
5e3bb3e9c8 Use a more robust method of obtaining the build timestamp on Windows. 'wmic os get LocalDateTime' will always return the timestamp in the format we want (YYYYMMDD), whereas date /t is sensitive to locale. If wmic fails, then we fall back to using date /t, even though this means that the BUILD variable will end up in the incorrect format on some systems.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.1.x@869 632fc199-4ca6-4c93-a231-07263d6284db
2012-10-12 10:19:09 +00:00
DRC
de924b8587 Use a more robust method of obtaining the build timestamp on Windows. 'wmic os get LocalDateTime' will always return the timestamp in the format we want (YYYYMMDD), whereas date /t is sensitive to locale. If wmic fails, then we fall back to using date /t, even though this means that the BUILD variable will end up in the incorrect format on some systems.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@867 632fc199-4ca6-4c93-a231-07263d6284db
2012-10-12 09:29:44 +00:00
DRC
bc2e66cb43 Fix MinGW build and remove duplication of effort
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@864 632fc199-4ca6-4c93-a231-07263d6284db
2012-10-02 06:47:37 +00:00
DRC
d9d1d67d7c git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@863 632fc199-4ca6-4c93-a231-07263d6284db 2012-10-02 04:20:43 +00:00
DRC
fac3bea8da Add a Java version of TJBench and extend the TurboJPEG Java API to support it (this involved adding a polymorphic method in TJCompressor that accepts x and y offsets into a larger buffer, similar to the previous modification that had been done to TJDecompressor.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@862 632fc199-4ca6-4c93-a231-07263d6284db
2012-09-24 02:27:55 +00:00
DRC
61e1341f11 If libturbojpeg.jnilib is not found on Mac systems, specifically look for it under /usr/lib, since /usr/lib isn't part of the default java.library.path on that platform.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@861 632fc199-4ca6-4c93-a231-07263d6284db
2012-08-24 02:44:39 +00:00
DRC
29d8f253f8 Fix build issues that occurred whenever the source directory contained the letters "col", "mer", or "gra".
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@860 632fc199-4ca6-4c93-a231-07263d6284db
2012-08-07 21:59:59 +00:00
DRC
8fd7221dc1 Fix build issues that occurred whenever the source directory contained the letters "col", "mer", or "gra".
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@859 632fc199-4ca6-4c93-a231-07263d6284db
2012-08-07 21:59:28 +00:00
DRC
a394bf752a Allow the libjpeg-turbo32 package to be used on MultiArch-compatible systems without overriding the linker path or LD_LIBRARY_PATH.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@858 632fc199-4ca6-4c93-a231-07263d6284db
2012-08-07 18:44:24 +00:00
DRC
0a0f8d14e2 Allow the libjpeg-turbo32 package to be used on MultiArch-compatible systems without overriding the linker path or LD_LIBRARY_PATH.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@857 632fc199-4ca6-4c93-a231-07263d6284db
2012-08-07 18:42:07 +00:00
DRC
2186809a45 Oops. Add support for TJFLAG_FASTDCT to tjDecompressToYUV() as well.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@856 632fc199-4ca6-4c93-a231-07263d6284db
2012-07-03 20:02:49 +00:00
DRC
e0419b530b Oops. Add support for TJFLAG_FASTDCT to tjDecompressToYUV() as well.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@855 632fc199-4ca6-4c93-a231-07263d6284db
2012-07-03 20:01:31 +00:00
DRC
3367f407fe 1.2.2
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@854 632fc199-4ca6-4c93-a231-07263d6284db
2012-07-03 20:00:35 +00:00
DRC
cc336e7bd2 Cosmetic fixes to argument lists
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@852 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-29 23:51:35 +00:00
DRC
73d74c132b Add flags to the TurboJPEG API that allow the caller to force the use of either the fast or the accurate DCT/IDCT algorithms in the underlying codec.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@851 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-29 23:46:38 +00:00
DRC
e0a0151761 Re-generate docs to pick up new API version
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@850 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-29 23:17:03 +00:00
DRC
fd3aba3590 Added flags to the TurboJPEG API that allow the caller to force the use of either the fast or the accurate DCT/IDCT algorithms in the underlying codec.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@849 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-29 23:14:48 +00:00
DRC
112a0bb968 More recent versions of autoconf add -traditional-cpp to the CPP flags, which causes jsimdcfg.inc.h to not preprocess correctly unless we expand all of the instances of the #definev macro.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@848 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-28 23:25:34 +00:00
DRC
ea505e777a More recent versions of autoconf add -traditional-cpp to the CPP flags, which causes jsimdcfg.inc.h to not preprocess correctly unless we expand all of the instances of the #definev macro.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@847 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-28 23:24:29 +00:00
DRC
5950c5d4f9 Later versions of autoconf (specifically, the one shipped with Xcode 4.3) default to building x86-64, so it is necessary to override the host_alias to get a 32-bit build.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@846 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-28 23:22:03 +00:00
DRC
ea7bb7b651 Later versions of autoconf (specifically, the one shipped with Xcode 4.3) default to building x86-64, so it is necessary to override the host_alias to get a 32-bit build.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@845 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-28 23:21:13 +00:00
DRC
98eecb8605 Fixed regression caused by a bug in the 32-bit strict memory access code in jdmrgss2.asm (contributed by Chromium to stop valgrind from whining whenever the output buffer size was not evenly divisible by 16 bytes.) On Linux/x86, this regression caused incorrect pixels on the right-hand side of images whose rows were not 16-byte aligned, whenever fancy upsampling was used and when decompressing to a 32-bit (RGBX, etc.) buffer.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.1.x@844 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-18 00:18:04 +00:00
DRC
13c318da4f Fixed regression caused by a bug in the 32-bit strict memory access code in jdmrgss2.asm (contributed by Chromium to stop valgrind from whining whenever the output buffer size was not evenly divisible by 16 bytes.) On Linux/x86, this regression caused incorrect pixels on the right-hand side of images whose rows were not 16-byte aligned, whenever fancy upsampling was used and when decompressing to a 32-bit (RGBX, etc.) buffer.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.0.x@843 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-18 00:16:15 +00:00
DRC
14e8225391 Provide further details about the regression
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@842 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-18 00:09:19 +00:00
DRC
de37e07716 Provide further details about the regression
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@841 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-18 00:08:18 +00:00
DRC
575317bb54 Acknowledge the existence of 1.2.1
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@840 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-15 22:00:47 +00:00
DRC
df0babcfc2 Fixed regression caused by a bug in the 32-bit strict memory access code in jdmrgss2.asm (contributed by Chromium to stop valgrind from whining whenever the output buffer size was not evenly divisible by 16 bytes.) On Linux/x86, this regression caused incorrect pixels on the right-hand side of images whose rows were not 16-byte aligned, whenever fancy upsampling was used. This patch also enables the strict memory access code on all platforms, not just Linux (it does no harm on other platforms) and removes a couple of pcmpeqb instructions that were rendered unnecessary by r836.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@839 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-15 21:58:06 +00:00
DRC
8126d0c5a5 Fixed regression caused by a bug in the 32-bit strict memory access code in jdmrgss2.asm (contributed by Chromium to stop valgrind from whining whenever the output buffer size was not evenly divisible by 16 bytes.) On Linux/x86, this regression generated incorrect pixels on the right-hand side of images whose rows were not 16-byte aligned, whenever fancy upsampling was used. This patch also enables the strict memory access code on all platforms, not just Linux (it does no harm on other platforms) and removes a couple of pcmpeqb instructions that were rendered unnecessary by r835.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@838 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-15 21:54:45 +00:00
DRC
316617faf4 Accelerated 4:2:2 upsampling routine for ARM (improves performance ~20-30% when decompressing 4:2:2 JPEGs using fancy upsampling)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@837 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-13 05:17:03 +00:00
DRC
66fe68b0b2 Eliminate the use of the MASKMOVDQU instruction, to speed up decompression performance by 10x on AMD Bobcat embedded processors (and ~5% on AMD desktop processors.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@836 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-13 01:23:09 +00:00
DRC
69799275be Eliminate the use of the MASKMOVDQU instruction, to speed up decompression performance by 10x on AMD Bobcat embedded processors (and ~5% on AMD desktop processors.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@835 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-13 01:21:29 +00:00
DRC
b2fc846e44 Add new JNI functions to mapfile so they will be visible on Linux
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@834 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-08 08:25:17 +00:00
DRC
dc31f0bc41 Fix array size calculations
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@833 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-07 09:38:57 +00:00
DRC
f659f43f93 Add x, y parameters to TJDecompressor so that it can be used to decompress to an arbitrary position in the destination image (TurboVNC needs this.)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@832 632fc199-4ca6-4c93-a231-07263d6284db
2012-06-06 08:41:06 +00:00
DRC
dd2b651243 Guard against num_components being a ridiculous value due to a corrupt header
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@831 632fc199-4ca6-4c93-a231-07263d6284db
2012-05-30 20:36:42 +00:00
DRC
e93d94b9ad Guard against num_components being a ridiculous value due to a corrupt header
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@830 632fc199-4ca6-4c93-a231-07263d6284db
2012-05-30 20:34:42 +00:00
DRC
4f24016bde Preserve all 128 bits of xmm6 and xmm7
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@829 632fc199-4ca6-4c93-a231-07263d6284db
2012-04-26 19:50:37 +00:00
DRC
4ef9c9549b Preserve all 128 bits of xmm6 and xmm7
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@828 632fc199-4ca6-4c93-a231-07263d6284db
2012-04-26 19:48:33 +00:00
DRC
ea3396a945 Fix memory leak in the colorspace emulation code
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@827 632fc199-4ca6-4c93-a231-07263d6284db
2012-04-26 03:18:49 +00:00
DRC
9ba64bbbcf Provide the legacy unversioned libturbojpeg.so resource so that RPMs that dependended on older libjpeg-turbo distributions will still work.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@826 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-29 21:29:36 +00:00
DRC
afc06929e0 Emulate colorspace extensions if they are not present in the libjpeg API. This allows the TurboJPEG wrapper to be used with libjpeg rather than libjpeg-turbo. Not useful within the context of our project, but other projects prefer to include the TurboJPEG wrapper in-tree, and this allows them to be linked against either libjpeg-turbo or libjpeg.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@825 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 19:47:57 +00:00
DRC
6dd6b3a74c Get rid of the Solaris packaging system. Solaris packages are obsolete, only a handful of people were downloading those binaries, and maintaining the system was proving to be a pain.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@824 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 19:44:54 +00:00
DRC
d4c15e103c Whitespace tweak
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@823 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 19:39:14 +00:00
DRC
8ad24924ea Ensure that tjDecompress2() exits cleanly if setDecompDefaults() fails
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@822 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 19:37:40 +00:00
DRC
2eda8212e4 Ensure that tjDecompress2() exits cleanly if setDecompDefaults() fails
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@821 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 19:32:38 +00:00
DRC
fd407776ba Add a dummy version number to the TurboJPEG dynamic library on Unix systems so Linux distro maintainers will not reject it out of hand.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@820 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 03:24:39 +00:00
DRC
f52682e277 Get rid of the Solaris packaging system. Solaris packages are obsolete, only a handful of people were downloading those binaries, and maintaining the system was proving to be a pain.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@819 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 03:17:41 +00:00
DRC
0559e94c72 "Sun Studio"="Oracle Solaris Studio"
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@818 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 03:12:35 +00:00
DRC
21cc62bccb "Sun Studio"="Oracle Solaris Studio"
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@817 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 03:11:12 +00:00
DRC
7c6ae034da Fix universal DMG build
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@816 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 00:51:56 +00:00
DRC
c2f89f131d Fix universal DMG build
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@815 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-23 00:50:09 +00:00
DRC
68071bd2e4 1.2.1
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@814 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-22 22:05:09 +00:00
DRC
8015a30308 Visual Studio 2010 doesn't like the wildcard at compile time, so let CMake expand it instead.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@813 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-17 14:32:38 +00:00
DRC
6bc5938482 Visual Studio 2010 doesn't like the wildcard, so let CMake expand it instead.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@812 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-17 14:32:05 +00:00
DRC
cac105133e Fix the behavior of the alpha-enabled colorspace constants whenever libjpeg-turbo is built without SIMD support and merged upsampling is used.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@811 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-16 14:37:36 +00:00
DRC
ffe4fc182f Fix the behavior of the alpha-enabled colorspace constants whenever libjpeg-turbo is built without SIMD support and merged upsampling is used.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@810 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-16 14:30:46 +00:00
DRC
a9b646c202 Allow RGB JPEG files to be created/decoded when using the LJT colorspace extensions
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.2.x@809 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-11 22:06:54 +00:00
DRC
0586d41d1b Allow RGB JPEG files to be created/decoded when using the LJT colorspace extensions
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@808 632fc199-4ca6-4c93-a231-07263d6284db
2012-03-11 22:05:25 +00:00
DRC
09e4575789 Oops
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@806 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 05:31:03 +00:00
DRC
086c9ab549 Move build dir. variables back into makemacpkg to avoid messing up the Solaris packaging system.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@803 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 03:39:43 +00:00
DRC
0989088530 Don't include documentation in 32-bit supplemental package
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@802 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 03:18:41 +00:00
DRC
ed839d5905 Fix 'make dist'
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@800 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 01:55:28 +00:00
DRC
c052646b34 iOS universal package was promoted to a 1.2 feature
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@798 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 01:44:55 +00:00
DRC
99bebdd0aa RPM spec no longer uses %{_srcdir}
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@795 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 01:39:28 +00:00
DRC
02cd567fb9 Install docs when doing 'make install' on Unix; Fix 'install' target on Windows; Include wizard.txt, example.c, and structure.txt in installed docs
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@794 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 01:37:20 +00:00
DRC
bbaf4c94cd 'make iosdmg' now works with 32-bit builds as well
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@792 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 01:24:26 +00:00
DRC
166c5ec0b9 Clean up the iOS packaging mechanism so that ARM architectures can be added to i386-only builds as well.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@791 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-10 01:07:59 +00:00
DRC
1fbae8467f Infrastructure for producing a universal x86-64/i386/ARM version of libjpeg.a and libturbojpeg.a on OS X, so that the same library can be used to build OS X and iOS apps
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@789 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-09 09:23:30 +00:00
DRC
1256fbade9 Merge description from README-turbo.txt into packages
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@787 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-08 09:18:42 +00:00
DRC
3d40ad5f6e git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@779 632fc199-4ca6-4c93-a231-07263d6284db 2012-02-07 20:39:33 +00:00
DRC
00b327b8f8 Wordsmithing and grammar
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@778 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-07 00:15:42 +00:00
DRC
bdbcd14057 Several clarifications regarding v7/v8 API/ABI support
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@775 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-03 08:55:36 +00:00
DRC
c8fb758bc2 Fix issue whereby libjpeg-turbo would report "fractional sampling not implemented" when attempting to use decompression scaling with a non-power-of-2 scaling ratio and a JPEG file that was compressed using an odd form of subsampling, such as 3x2.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@774 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-03 06:55:26 +00:00
DRC
be12e1dec5 Accelerated 4:2:2 upsampling routine for ARM (improves performance ~20-30% when decompressing 4:2:2 JPEGs using fancy upsampling)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@773 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-02 22:32:45 +00:00
DRC
cf775bf789 Oops. Need to use -nosmooth so that the output matches the reference images generated by jpeg-8
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@772 632fc199-4ca6-4c93-a231-07263d6284db
2012-02-01 02:49:10 +00:00
DRC
cb6157be7a Add more extensive TurboJPEG regression tests
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@771 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 11:38:13 +00:00
DRC
0af8d67bd5 Add tests for the additional scaling factors
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@770 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 11:09:11 +00:00
DRC
7ccb00701f Fix 'make dist'
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@769 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 10:49:23 +00:00
DRC
4a2cdc26be Merge copyright messages into one string and change the run-time messages to avoid confusion (we are not technically based on the latest libjpeg, although we do borrow some code from it)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@768 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 10:47:02 +00:00
DRC
3a5e362bd3 Combine all of the scaling tests using a for loop
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@767 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 10:43:56 +00:00
DRC
66a69f04c6 Incorporate a few upstream doc changes; grammar police; wordsmithing; Move -arithmetic into "switches for advanced users"; Additional documentation for IDCT scaling extensions
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@765 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 10:19:29 +00:00
DRC
7ab0364a37 Move test images into their own subdirectory
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@761 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 05:47:07 +00:00
DRC
fb6c27e4e2 Compiler warnings
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@760 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-31 05:27:41 +00:00
DRC
ab2df6ea1b Expose new scaling factors in TurboJPEG API
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@757 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-28 06:49:56 +00:00
DRC
33eca7e4f2 Document the new scaling factors
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@756 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-28 06:49:22 +00:00
DRC
313a09b4b7 Oops. Height of output buffer should equal scaled height, not JPEG height.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@754 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-28 06:31:21 +00:00
DRC
27fb3fc589 Support additional scaling factors when decompressing
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@753 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-28 01:48:07 +00:00
DRC
8660bcba72 Oops. Need to handle cases in which num_components > n
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@752 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-28 01:19:52 +00:00
DRC
bf0bdac1d3 Bump version to 1.2.80 (1.3 alpha1) to prepare for receiving new features
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@750 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-27 22:12:49 +00:00
DRC
ed5430ce9a Be clear that we are only emulating the libjpeg v7/v8 API/ABI, not the library itself.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@748 632fc199-4ca6-4c93-a231-07263d6284db
2012-01-27 09:52:20 +00:00
261 changed files with 11789 additions and 5771 deletions

View File

@@ -1,5 +1,5 @@
******************************************************************************* *******************************************************************************
** Building on Unix Platforms (including Cygwin) ** Building on Un*x Platforms (including Cygwin and OS X)
******************************************************************************* *******************************************************************************
@@ -10,6 +10,9 @@ Build Requirements
-- autoconf 2.56 or later -- autoconf 2.56 or later
-- automake 1.7 or later -- automake 1.7 or later
-- libtool 1.4 or later -- libtool 1.4 or later
* If using Xcode 4.3 or later on OS X, autoconf and automake are no longer
provided. The easiest way to obtain them is from MacPorts
(http://www.macports.org/).
-- NASM (if building x86 or x86-64 SIMD extensions) -- NASM (if building x86 or x86-64 SIMD extensions)
* 0.98, or 2.01 or later is required for a 32-bit build * 0.98, or 2.01 or later is required for a 32-bit build
@@ -33,14 +36,26 @@ Build Requirements
NOTE: the NASM build will fail if texinfo is not installed. NOTE: the NASM build will fail if texinfo is not installed.
-- GCC v4.1 or later recommended for best performance -- GCC v4.1 or later recommended for best performance
* Beginning with Xcode 4, Apple stopped distributing GCC and switched to
the LLVM compiler. Xcode v4.0 through v4.6 provides a GCC front end
called LLVM-GCC. Unfortunately, as of this writing, neither LLVM-GCC nor
the LLVM (clang) compiler produces optimal performance with libjpeg-turbo.
Building libjpeg-turbo with LLVM-GCC v4.2 results in a 10% performance
degradation when compressing using 64-bit code, relative to building
libjpeg-turbo with GCC v4.2. Building libjpeg-turbo with LLVM (clang)
results in a 20% performance degradation when compressing using 64-bit
code, relative to building libjpeg-turbo with GCC v4.2. If you are
running Snow Leopard or earlier, it is suggested that you continue to use
Xcode v3.2.6, which provides GCC v4.2. If you are using Lion or later, it
is suggested that you install Apple GCC v4.2 through MacPorts.
-- If building the TurboJPEG/OSS Java wrapper, JDK or OpenJDK 1.5 or later is -- If building the TurboJPEG Java wrapper, JDK or OpenJDK 1.5 or later is
required. Some systems, such as OS X 10.4, Solaris 10 and later, and Red required. Some systems, such as OS X 10.4, Solaris 10 and later, and Red
Hat Enterprise Linux 5 and later, have this pre-installed. On OS X 10.5 and Hat Enterprise Linux 5 and later, have this pre-installed. On OS X 10.5 and
later, it will be necessary to install the Java Developer Package, which can later, it will be necessary to install the Java Developer Package, which can
be downloaded from http://connect.apple.com. For systems that do not have a be downloaded from http://developer.apple.com/downloads (Apple ID required.)
JDK installed, you can obtain the Oracle Java Development Kit from For systems that do not have a JDK installed, you can obtain the Oracle Java
http://www.java.com. Development Kit from http://www.java.com.
================== ==================
@@ -61,9 +76,9 @@ directory. For in-tree builds, these directories are the same.
Building libjpeg-turbo Building libjpeg-turbo
====================== ======================
The following procedure will build libjpeg-turbo on Linux, FreeBSD, 32-bit The following procedure will build libjpeg-turbo on Linux, FreeBSD, Cygwin, and
OS X, Cygwin, and Solaris/x86 systems (on Solaris, this generates a 32-bit Solaris/x86 systems (on Solaris, this generates a 32-bit library. See below
library. See below for 64-bit build instructions.) for 64-bit build instructions.)
cd {source_directory} cd {source_directory}
autoreconf -fiv autoreconf -fiv
@@ -71,40 +86,44 @@ library. See below for 64-bit build instructions.)
sh {source_directory}/configure [additional configure flags] sh {source_directory}/configure [additional configure flags]
make make
NOTE: Running autoreconf in the source directory is only necessary if building NOTE: Running autoreconf in the source directory is usually only necessary if
libjpeg-turbo from the SVN repository. building libjpeg-turbo from the SVN repository.
This will generate the following files under .libs/ This will generate the following files under .libs/
libjpeg.a libjpeg.a
Static link library for libjpeg-turbo Static link library for the libjpeg API
libjpeg.so.{version} (Linux, Solaris) libjpeg.so.{version} (Linux, Unix)
libjpeg.{version}.dylib (OS X) libjpeg.{version}.dylib (OS X)
cygjpeg-{version}.dll (Cygwin) cygjpeg-{version}.dll (Cygwin)
Shared library for libjpeg-turbo Shared library for the libjpeg API
libjpeg.so (Linux, Solaris) By default, {version} is 62.1.0, 7.1.0, or 8.0.2, depending on whether
libjpeg v6b (default), v7, or v8 emulation is enabled. If using Cygwin,
{version} is 62, 7, or 8.
libjpeg.so (Linux, Unix)
libjpeg.dylib (OS X) libjpeg.dylib (OS X)
Development symlink for the libjpeg API
libjpeg.dll.a (Cygwin) libjpeg.dll.a (Cygwin)
Development stub for libjpeg-turbo shared library Import library for the libjpeg API
libturbojpeg.a libturbojpeg.a
Static link library for TurboJPEG/OSS Static link library for the TurboJPEG API
libturbojpeg.so (Linux, Solaris) libturbojpeg.so.0.0.0 (Linux, Unix)
libturbojpeg.0.0.0.dylib (OS X)
cygturbojpeg-0.dll (Cygwin)
Shared library for the TurboJPEG API
libturbojpeg.so (Linux, Unix)
libturbojpeg.dylib (OS X) libturbojpeg.dylib (OS X)
Shared library and development stub for TurboJPEG/OSS Development symlink for the TurboJPEG API
cygturbojpeg.dll (Cygwin)
Shared library for TurboJPEG/OSS
libturbojpeg.dll.a (Cygwin) libturbojpeg.dll.a (Cygwin)
Development stub for TurboJPEG/OSS shared library Import library for the TurboJPEG API
{version} is 62.0.0, 7.0.0, or 8.0.2, depending on whether libjpeg v6b
(default), v7, or v8 emulation is enabled. If using Cygwin, {version} is
62, 7, or 8.
libjpeg v7 or v8 API/ABI Emulation libjpeg v7 or v8 API/ABI Emulation
@@ -117,6 +136,16 @@ API/ABI-compatible with libjpeg v8. See README-turbo.txt for more information
on libjpeg v7 and v8 emulation. on libjpeg v7 and v8 emulation.
In-Memory Source/Destination Managers
-------------------------------------
When using libjpeg v6b or v7 API/ABI emulation, add --without-mem-srcdst to the
configure command line to build a version of libjpeg-turbo that lacks the
jpeg_mem_src() and jpeg_mem_dest() functions. These functions were not part of
the original libjpeg v6b and v7 APIs, so removing them ensures strict
conformance with those APIs. See README-turbo.txt for more information.
Arithmetic Coding Support Arithmetic Coding Support
------------------------- -------------------------
@@ -129,13 +158,12 @@ add --without-arith-enc or --without-arith-dec to the configure command line to
disable encoding or decoding (respectively.) disable encoding or decoding (respectively.)
TurboJPEG/OSS Java Wrapper TurboJPEG Java Wrapper
-------------------------- ----------------------
Add --with-java to the configure command line to incorporate an optional Java Add --with-java to the configure command line to incorporate an optional Java
Native Interface wrapper into the TurboJPEG/OSS dynamic library and build the Native Interface wrapper into the TurboJPEG shared library and build the Java
Java front-end classes to support it. This allows the TurboJPEG/OSS dynamic front-end classes to support it. This allows the TurboJPEG shared library to
library to be used directly from Java applications. See java/README for more be used directly from Java applications. See java/README for more details.
details.
You can set the JAVAC, JAR, and JAVA configure variables to specify You can set the JAVAC, JAR, and JAVA configure variables to specify
alternate commands for javac, jar, and java (respectively.) You can also alternate commands for javac, jar, and java (respectively.) You can also
@@ -161,13 +189,14 @@ For example,
will install the header files in /usr/local/include and the library files in will install the header files in /usr/local/include and the library files in
/usr/local/lib64. If 'prefix' and 'libdir' are not specified, then the default /usr/local/lib64. If 'prefix' and 'libdir' are not specified, then the default
is to install the header files in /opt/libjpeg-turbo/include and the library is to install the header files in /opt/libjpeg-turbo/include and the library
files in /opt/libjpeg-turbo/lib. files in /opt/libjpeg-turbo/lib32 (32-bit) or /opt/libjpeg-turbo/lib64
(64-bit.)
NOTE: You can specify a prefix of /usr and a libdir of, for instance, NOTE: You can specify a prefix of /usr and a libdir of, for instance,
/usr/lib64 to overwrite the system's version of libjpeg. If you do this, /usr/lib64 to overwrite the system's version of libjpeg. If you do this,
however, then be sure to BACK UP YOUR SYSTEM'S INSTALLATION OF LIBJPEG before however, then be sure to BACK UP YOUR SYSTEM'S INSTALLATION OF LIBJPEG before
overwriting it. It is recommended that you instead install libjpeg-turbo into overwriting it. It is recommended that you instead install libjpeg-turbo into
a non-system directory and manipulate the LD_LIBRARY_PATH or create sym links a non-system directory and manipulate the LD_LIBRARY_PATH or create symlinks
to force applications to use libjpeg-turbo instead of libjpeg. See to force applications to use libjpeg-turbo instead of libjpeg. See
README-turbo.txt for more information. README-turbo.txt for more information.
@@ -177,8 +206,8 @@ Build Recipes
============= =============
32-bit Library Build on 64-bit Linux 32-bit Build on 64-bit Linux
------------------------------------ ----------------------------
Add Add
@@ -187,8 +216,8 @@ Add
to the configure command line. to the configure command line.
64-bit Library Build on 64-bit OS X 64-bit Build on 64-bit OS X
----------------------------------- ---------------------------
Add Add
@@ -198,18 +227,18 @@ to the configure command line. NASM 2.07 or later from MacPorts must be
installed. installed.
32-bit Library Build on 64-bit OS X 32-bit Build on 64-bit OS X
----------------------------------- ---------------------------
Add Add
CFLAGS='-O3 -m32' LDFLAGS=-m32 --host i686-apple-darwin CFLAGS='-O3 -m32' LDFLAGS=-m32
to the configure command line. to the configure command line.
64-bit Backward-Compatible Library Build on 64-bit OS X 64-bit Backward-Compatible Build on 64-bit OS X
------------------------------------------------------- -----------------------------------------------
Add Add
@@ -223,12 +252,13 @@ to the configure command line. The OS X 10.4 SDK, and NASM 2.07 or later from
MacPorts, must be installed. MacPorts, must be installed.
32-bit Backward-Compatible Library Build on OS X 32-bit Backward-Compatible Build on OS X
------------------------------------------------ ----------------------------------------
Add Add
CFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk \ --host i686-apple-darwin \
CFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk \
-mmacosx-version-min=10.4 -O3 -m32' \ -mmacosx-version-min=10.4 -O3 -m32' \
LDFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk \ LDFLAGS='-isysroot /Developer/SDKs/MacOSX10.4u.sdk \
-mmacosx-version-min=10.4 -m32' -mmacosx-version-min=10.4 -m32'
@@ -246,8 +276,8 @@ Add
to the configure command line. to the configure command line.
32-bit Library Build on 64-bit FreeBSD 32-bit Build on 64-bit FreeBSD
-------------------------------------- ------------------------------
Add Add
@@ -258,8 +288,8 @@ to the configure command line. NASM 2.07 or later from FreeBSD ports must be
installed. installed.
Sun Studio Oracle Solaris Studio
---------- ---------------------
Add Add
@@ -268,7 +298,7 @@ Add
to the configure command line. libjpeg-turbo will automatically be built with to the configure command line. libjpeg-turbo will automatically be built with
the maximum optimization level (-xO5) unless you override CFLAGS. the maximum optimization level (-xO5) unless you override CFLAGS.
To build a 64-bit version of libjpeg-turbo using Sun Studio, add To build a 64-bit version of libjpeg-turbo using Oracle Solaris Studio, add
--host x86_64-pc-solaris CC=cc CFLAGS='-xO5 -m64' LDFLAGS=-m64 --host x86_64-pc-solaris CC=cc CFLAGS='-xO5 -m64' LDFLAGS=-m64
@@ -303,20 +333,48 @@ examples accordingly.
Additional build requirements: Additional build requirements:
gas-preprocessor.pl (https://github.com/yuvi/gas-preprocessor) should be gas-preprocessor.pl
installed in your PATH. (https://sourceforge.net/p/libjpeg-turbo/code/HEAD/tree/gas-preprocessor)
should be installed in your PATH.
Set the following shell variables for simplicity: Set the following shell variables for simplicity:
IOS_PLATFORMDIR="/Developer/Platforms/iPhoneOS.platform" Xcode 3.2.x / iOS 4.3 SDK:
IOS_SYSROOT="$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS4.3.sdk" IOS_PLATFORMDIR=/Developer/Platforms/iPhoneOS.platform
IOS_GCC="$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2" IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS4.3.sdk
IOS_GCC=$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
Xcode 4.5.x / iOS 6.0 SDK:
IOS_PLATFORMDIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS6.0.sdk
IOS_GCC=$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
Xcode 4.6.x / iOS 6.1 SDK:
IOS_PLATFORMDIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS6.1.sdk
IOS_GCC=$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
Xcode 5.0.x / iOS 7.0 SDK:
IOS_PLATFORMDIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS7.0.sdk
IOS_GCC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
ARM v6 only (up to and including iPhone 3G): ARM v6 only (up to and including iPhone 3G):
[NOTE: Requires Xcode 4.4.x or earlier]
IOS_CFLAGS="-march=armv6 -mcpu=arm1176jzf-s -mfpu=vfp" IOS_CFLAGS="-march=armv6 -mcpu=arm1176jzf-s -mfpu=vfp"
ARM v7 only (iPhone 3GS and newer, iPad): ARM v7 only (iPhone 3GS-4S, iPad 1st-3rd Generation):
GCC:
IOS_CFLAGS="-march=armv7 -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon" IOS_CFLAGS="-march=armv7 -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon"
Clang:
IOS_CFLAGS="-arch armv7 -no-integrated-as"
ARM v7s only (iPhone 5, iPad 4th Generation):
[NOTE: Requires Xcode 4.5 or later]
GCC
IOS_CFLAGS="-march=armv7s -mcpu=swift -mtune=swift -mfpu=neon"
Clang:
IOS_CFLAGS="-arch armv7s -no-integrated-as"
Follow the procedure under "Building libjpeg-turbo" above, adding Follow the procedure under "Building libjpeg-turbo" above, adding
@@ -327,8 +385,14 @@ Follow the procedure under "Building libjpeg-turbo" above, adding
to the configure command line. to the configure command line.
Once built, lipo can be used to combine the ARM v6 and v7 variants into a Once built, lipo can be used to combine the ARM v6, v7, and/or v7s variants
universal library. into a universal library.
NOTE: If you are building libjpeg-turbo from the "official" project tarball,
then it is highly likely that you will need to run 'autoreconf -fiv' in the
source tree prior to building ARM v7 or v7s iOS binaries using the techniques
described above. Otherwise, you may get a libtool error such as "unable to
infer tagged configuration."
******************************************************************************* *******************************************************************************
@@ -372,8 +436,8 @@ Build Requirements
-- NASM (http://www.nasm.us/) 0.98 or later (NASM 2.05 or later is required for -- NASM (http://www.nasm.us/) 0.98 or later (NASM 2.05 or later is required for
a 64-bit build) a 64-bit build)
-- If building the TurboJPEG/OSS Java wrapper, JDK 1.5 or later is required. -- If building the TurboJPEG Java wrapper, JDK 1.5 or later is required. This
This can be downloaded from http://www.java.com. can be downloaded from http://www.java.com.
================== ==================
@@ -408,17 +472,17 @@ on which version of cl.exe is in the PATH.
The following files will be generated under {build_directory}: The following files will be generated under {build_directory}:
jpeg-static.lib jpeg-static.lib
Static link library for libjpeg-turbo Static link library for the libjpeg API
sharedlib/jpeg{version}.dll sharedlib/jpeg{version}.dll
DLL for libjpeg-turbo DLL for the libjpeg API
sharedlib/jpeg.lib sharedlib/jpeg.lib
Import library for libjpeg-turbo DLL Import library for the libjpeg API
turbojpeg-static.lib turbojpeg-static.lib
Static link library for TurboJPEG/OSS Static link library for the TurboJPEG API
turbojpeg.dll turbojpeg.dll
DLL for TurboJPEG/OSS DLL for the TurboJPEG API
turbojpeg.lib turbojpeg.lib
Import library for TurboJPEG/OSS DLL Import library for the TurboJPEG API
{version} is 62, 7, or 8, depending on whether libjpeg v6b (default), v7, or {version} is 62, 7, or 8, depending on whether libjpeg v6b (default), v7, or
v8 emulation is enabled. v8 emulation is enabled.
@@ -441,17 +505,17 @@ build of libjpeg-turbo.
This will generate the following files under {build_directory}: This will generate the following files under {build_directory}:
{configuration}/jpeg-static.lib {configuration}/jpeg-static.lib
Static link library for libjpeg-turbo Static link library for the libjpeg API
sharedlib/{configuration}/jpeg{version}.dll sharedlib/{configuration}/jpeg{version}.dll
DLL for libjpeg-turbo DLL for the libjpeg API
sharedlib/{configuration}/jpeg.lib sharedlib/{configuration}/jpeg.lib
Import library for libjpeg-turbo DLL Import library for the libjpeg API
{configuration}/turbojpeg-static.lib {configuration}/turbojpeg-static.lib
Static link library for TurboJPEG/OSS Static link library for the TurboJPEG API
{configuration}/turbojpeg.dll {configuration}/turbojpeg.dll
DLL for TurboJPEG/OSS DLL for the TurboJPEG API
{configuration}/turbojpeg.lib {configuration}/turbojpeg.lib
Import library for TurboJPEG/OSS DLL Import library for the TurboJPEG API
{configuration} is Debug, Release, RelWithDebInfo, or MinSizeRel, depending on {configuration} is Debug, Release, RelWithDebInfo, or MinSizeRel, depending on
the configuration you built in the IDE, and {version} is 62, 7, or 8, the configuration you built in the IDE, and {version} is 62, 7, or 8,
@@ -468,17 +532,17 @@ MinGW
This will generate the following files under {build_directory} This will generate the following files under {build_directory}
libjpeg.a libjpeg.a
Static link library for libjpeg-turbo Static link library for the libjpeg API
sharedlib/libjpeg-{version}.dll sharedlib/libjpeg-{version}.dll
DLL for libjpeg-turbo DLL for the libjpeg API
sharedlib/libjpeg.dll.a sharedlib/libjpeg.dll.a
Import library for libjpeg-turbo DLL Import library for the libjpeg API
libturbojpeg.a libturbojpeg.a
Static link library for TurboJPEG/OSS Static link library for the TurboJPEG API
libturbojpeg.dll libturbojpeg.dll
DLL for TurboJPEG/OSS DLL for the TurboJPEG API
libturbojpeg.dll.a libturbojpeg.dll.a
Import library for TurboJPEG/OSS DLL Import library for the TurboJPEG API
{version} is 62, 7, or 8, depending on whether libjpeg v6b (default), v7, or {version} is 62, 7, or 8, depending on whether libjpeg v6b (default), v7, or
v8 emulation is enabled. v8 emulation is enabled.
@@ -502,6 +566,16 @@ API/ABI-compatible with libjpeg v8. See README-turbo.txt for more information
on libjpeg v7 and v8 emulation. on libjpeg v7 and v8 emulation.
In-Memory Source/Destination Managers
-------------------------------------
When using libjpeg v6b or v7 API/ABI emulation, add -DWITH_MEM_SRCDST=0 to the
CMake command line to build a version of libjpeg-turbo that lacks the
jpeg_mem_src() and jpeg_mem_dest() functions. These functions were not part of
the original libjpeg v6b and v7 APIs, so removing them ensures strict
conformance with those APIs. See README-turbo.txt for more information.
Arithmetic Coding Support Arithmetic Coding Support
------------------------- -------------------------
@@ -514,13 +588,12 @@ add "-DWITH_ARITH_ENC=0" or "-DWITH_ARITH_DEC=0" to the cmake command line to
disable encoding or decoding (respectively.) disable encoding or decoding (respectively.)
TurboJPEG/OSS Java Wrapper TurboJPEG Java Wrapper
-------------------------- ----------------------
Add "-DWITH_JAVA=1" to the cmake command line to incorporate an optional Java Add "-DWITH_JAVA=1" to the cmake command line to incorporate an optional Java
Native Interface wrapper into the TurboJPEG/OSS dynamic library and build the Native Interface wrapper into the TurboJPEG shared library and build the Java
Java front-end classes to support it. This allows the TurboJPEG/OSS dynamic front-end classes to support it. This allows the TurboJPEG shared library to
library to be used directly from Java applications. See java/README for more be used directly from Java applications. See java/README for more details.
details.
If you are using CMake 2.8, you can set the Java_JAVAC_EXECUTABLE, If you are using CMake 2.8, you can set the Java_JAVAC_EXECUTABLE,
Java_JAVA_EXECUTABLE, and Java_JAR_EXECUTABLE CMake variables to specify Java_JAVA_EXECUTABLE, and Java_JAR_EXECUTABLE CMake variables to specify
@@ -621,8 +694,8 @@ MinGW Build on Linux
The following commands can be used to create various types of release packages: The following commands can be used to create various types of release packages:
Unix Unix/Linux
---- ----------
make rpm make rpm
@@ -641,6 +714,9 @@ make dmg
Create Macintosh package/disk image. This requires the PackageMaker Create Macintosh package/disk image. This requires the PackageMaker
application, which must be installed in /Developer/Applications/Utilities. application, which must be installed in /Developer/Applications/Utilities.
Note that PackageMaker is not included in recent releases of Xcode, but it
can be obtained by downloading the "Auxiliary Tools for Xcode" package from
http://developer.apple.com/downloads.
make udmg [BUILDDIR32={32-bit build directory}] make udmg [BUILDDIR32={32-bit build directory}]
@@ -655,35 +731,24 @@ make udmg [BUILDDIR32={32-bit build directory}]
make iosdmg [BUILDDIR32={32-bit build directory}] \ make iosdmg [BUILDDIR32={32-bit build directory}] \
[BUILDDIRARMV6={ARM v6 build directory}] \ [BUILDDIRARMV6={ARM v6 build directory}] \
[BUILDDIRARMV7={ARM v7 build directory}] \ [BUILDDIRARMV7={ARM v7 build directory}] \
[BUILDDIRARMV7S={ARM v7s build directory}]
On OS X systems, this creates a Macintosh package and disk image in which the On OS X systems, this creates a Macintosh package and disk image in which the
libjpeg-turbo static libraries contain ARM architectures necessary to build libjpeg-turbo static libraries contain ARM architectures necessary to build
iOS applications. If building on an x86-64 system, the binaries will also iOS applications. If building on an x86-64 system, the binaries will also
contain the i386 architecture, as with 'make udmg' above. You should first contain the i386 architecture, as with 'make udmg' above. You should first
configure ARM v6 and ARM v7 out-of-tree builds of libjpeg-turbo (see configure ARM v6, ARM v7, and/or ARM v7s out-of-tree builds of libjpeg-turbo
"Building libjpeg-turbo for iOS" above.) If you are building an x86-64 (see "Building libjpeg-turbo for iOS" above.) If you are building an x86-64
version of libjpeg-turbo, you should configure a 32-bit out-of-tree build as version of libjpeg-turbo, you should configure a 32-bit out-of-tree build as
well. Next, build libjpeg-turbo as you would normally, using an out-of-tree well. Next, build libjpeg-turbo as you would normally, using an out-of-tree
build. When it is built, run 'make iosdmg' from the build directory. The build. When it is built, run 'make iosdmg' from the build directory. The
build system will look for the ARM v6 build under {source_directory}/iosarmv6 build system will look for the ARM v6 build under {source_directory}/iosarmv6
by default, the ARM v7 build under {source_directory}/iosarmv7 by default, by default, the ARM v7 build under {source_directory}/iosarmv7 by default,
and (if applicable) the 32-bit build under {source_directory}/osxx86 by the ARM v7s build under {source_directory}/iosarmv7s by default, and (if
default, but you can override this by setting the BUILDDIR32, BUILDDIRARMV6, applicable) the 32-bit build under {source_directory}/osxx86 by default, but
and/or BUILDDIRARMV7 variables on the make command line as shown above. you can override this by setting the BUILDDIR32, BUILDDIRARMV6,
BUILDDIRARMV7, and/or BUILDDIRARMV7S variables on the make command line as
make sunpkg shown above.
Build a Solaris package. This requires pkgmk, pkgtrans, and bzip2.
make csunpkg [BUILDDIR32={32-bit build directory}]
On 64-bit Solaris systems, this creates a combined package that contains
both 32-bit and 64-bit libraries. You should first configure a 32-bit
out-of-tree build of libjpeg-turbo, then configure a 64-bit out-of-tree
build, then run 'make csunpkg' from the 64-bit build directory. The build
system will look for the 32-bit build under {source_directory}/solx86 by
default, but you can override this by setting the BUILDDIR32 variable on the
make command line as shown above.
make cygwinpkg make cygwinpkg
@@ -732,11 +797,11 @@ Invoking 'make testclean' or 'nmake testclean' (if using NMake) or building
the 'testclean' target (if using the Visual Studio IDE) will clean up the the 'testclean' target (if using the Visual Studio IDE) will clean up the
output images generated by 'make test'. output images generated by 'make test'.
On Unix/Linux platforms, more extensive tests of the TurboJPEG/OSS C and Java On Unix/Linux platforms, more extensive tests of the TurboJPEG C and Java
wrappers can be run by invoking 'make tjtest'. These extended TurboJPEG tests wrappers can be run by invoking 'make tjtest'. These extended TurboJPEG tests
essentially iterate through all of the available features of the TurboJPEG APIs essentially iterate through all of the available features of the TurboJPEG APIs
that are not covered by the TurboJPEG unit tests (this includes the lossless that are not covered by the TurboJPEG unit tests (this includes the lossless
transform options) and compare the images generated by each feature to images transform options) and compare the images generated by each feature to images
generated using the equivalent feature in the libjpeg API. The extended generated using the equivalent feature in the libjpeg API. The extended
TurboJPEG tests are meant to test for regressions in the TurboJPEG wrappers, TurboJPEG tests are meant to test for regressions in the TurboJPEG wrappers,
not in the underlying libjpeg-turbo library. not in the underlying libjpeg API library.

View File

@@ -2,18 +2,25 @@
# Setup # Setup
# #
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 2.8.8)
cmake_policy(SET CMP0022 OLD)
project(libjpeg-turbo C) project(libjpeg-turbo C)
set(VERSION 1.2.0) set(VERSION 1.3.1)
if(MINGW OR CYGWIN) if(MINGW OR CYGWIN)
execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD) execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD)
string(REGEX REPLACE "\n" "" BUILD ${BUILD}) string(REGEX REPLACE "\n" "" BUILD ${BUILD})
elseif(WIN32) elseif(WIN32)
execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmakescripts/getdate.bat" execute_process(COMMAND "wmic.exe" "os" "get" "LocalDateTime" OUTPUT_VARIABLE
OUTPUT_VARIABLE BUILD) BUILD)
string(REGEX REPLACE "\n" "" BUILD ${BUILD}) string(REGEX REPLACE "[^0-9]" "" BUILD "${BUILD}")
if (BUILD STREQUAL "")
execute_process(COMMAND "cmd.exe" "/C" "DATE" "/T" OUTPUT_VARIABLE BUILD)
string(REGEX REPLACE ".*[ ]([0-9]*)[/.]([0-9]*)[/.]([0-9]*).*" "\\3\\2\\1" BUILD "${BUILD}")
else()
string(SUBSTRING "${BUILD}" 0 8 BUILD)
endif()
else() else()
message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.") message(FATAL_ERROR "Platform not supported by this build system. Use autotools instead.")
endif() endif()
@@ -39,7 +46,8 @@ option(WITH_ARITH_ENC "Include arithmetic encoding support" TRUE)
option(WITH_ARITH_DEC "Include arithmetic decoding support" TRUE) option(WITH_ARITH_DEC "Include arithmetic decoding support" TRUE)
option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE) option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE) option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b)" FALSE)
option(WITH_JAVA "Build Java wrapper for the TurboJPEG/OSS library" FALSE) option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI" TRUE)
option(WITH_JAVA "Build Java wrapper for the TurboJPEG library" FALSE)
if(WITH_ARITH_ENC) if(WITH_ARITH_ENC)
set(C_ARITH_CODING_SUPPORTED 1) set(C_ARITH_CODING_SUPPORTED 1)
@@ -56,14 +64,19 @@ else()
endif() endif()
if(WITH_JAVA) if(WITH_JAVA)
message(STATUS "TurboJPEG/OSS Java wrapper enabled") message(STATUS "TurboJPEG Java wrapper enabled")
else() else()
message(STATUS "TurboJPEG/OSS Java wrapper disabled") message(STATUS "TurboJPEG Java wrapper disabled")
endif()
set(SO_AGE 0)
if(WITH_MEM_SRCDST)
set(SO_AGE 1)
endif() endif()
set(JPEG_LIB_VERSION 62) set(JPEG_LIB_VERSION 62)
set(DLL_VERSION ${JPEG_LIB_VERSION}) set(DLL_VERSION ${JPEG_LIB_VERSION})
set(FULLVERSION ${DLL_VERSION}.0.0) set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
if(WITH_JPEG8) if(WITH_JPEG8)
set(JPEG_LIB_VERSION 80) set(JPEG_LIB_VERSION 80)
set(DLL_VERSION 8) set(DLL_VERSION 8)
@@ -72,10 +85,17 @@ if(WITH_JPEG8)
elseif(WITH_JPEG7) elseif(WITH_JPEG7)
set(JPEG_LIB_VERSION 70) set(JPEG_LIB_VERSION 70)
set(DLL_VERSION 7) set(DLL_VERSION 7)
set(FULLVERSION ${DLL_VERSION}.0.0) set(FULLVERSION ${DLL_VERSION}.${SO_AGE}.0)
message(STATUS "Emulating libjpeg v7 API/ABI") message(STATUS "Emulating libjpeg v7 API/ABI")
endif(WITH_JPEG8) endif(WITH_JPEG8)
if(WITH_MEM_SRCDST)
set(MEM_SRCDST_SUPPORTED 1)
message(STATUS "In-memory source/destination managers enabled")
else()
message(STATUS "In-memory source/destination managers disabled")
endif()
if(MSVC) if(MSVC)
# Use the static C library for all build types # Use the static C library for all build types
foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
@@ -103,6 +123,22 @@ else()
message(STATUS "32-bit build") message(STATUS "32-bit build")
endif() endif()
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
if(MSVC)
set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME})
else()
set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_PROJECT_NAME}-gcc)
endif()
if(64BIT)
set(CMAKE_INSTALL_PREFIX_DEFAULT ${CMAKE_INSTALL_PREFIX_DEFAULT}64)
endif()
set(CMAKE_INSTALL_PREFIX "c:/${CMAKE_INSTALL_PREFIX_DEFAULT}" CACHE PATH
"Directory into which to install libjpeg-turbo (default: c:/${CMAKE_INSTALL_PREFIX_DEFAULT})"
FORCE)
endif()
message(STATUS "Install directory = ${CMAKE_INSTALL_PREFIX}")
configure_file(win/jconfig.h.in jconfig.h) configure_file(win/jconfig.h.in jconfig.h)
configure_file(win/config.h.in config.h) configure_file(win/config.h.in config.h)
@@ -243,6 +279,40 @@ else()
endif() endif()
enable_testing() enable_testing()
set(MD5_JPEG_INT 9a68f56bc76e466aa7e52f415d0f4a5f)
set(MD5_JPEG_FAST 0e1502e7fa421835e376a314fac2a39f)
set(MD5_JPEG_FAST_100 7bf72a8e741d64eecb960c97323af77c)
set(MD5_JPEG_FLOAT d1623885ffafcd40c684af09e3d65cd5)
set(MD5_JPEG_FLOAT_NOSIMD fb4884c35f8273f498cb32879de5c455)
set(MD5_JPEG_INT_GRAY 72b51f894b8f4a10b3ee3066770aa38d)
set(MD5_PPM_INT d1ed0d11f076b842525271647716aeb8)
set(MD5_PPM_FAST 048298a2d2410261c0533cb97bcfef23)
set(MD5_PPM_FLOAT 7f5b446ee36b2630e06785b8d42af15f)
set(MD5_PPM_FLOAT_NOSIMD 64072f1dbdc5b3a187777788604971a5)
set(MD5_PPM_INT_2_1 9f9de8c0612f8d06869b960b05abf9c9)
set(MD5_PPM_INT_15_8 b6875bc070720b899566cc06459b63b7)
set(MD5_PPM_INT_7_4 06a177eae05f164fac57f7a2c346ee87)
set(MD5_PPM_INT_13_8 bc3452573c8152f6ae552939ee19f82f)
set(MD5_PPM_INT_3_2 f5a8b88a8a7f96016f04d259cf82ed67)
set(MD5_PPM_INT_11_8 d8cc73c0aaacd4556569b59437ba00a5)
set(MD5_PPM_INT_5_4 32775dd9ad2ab90f4c5b219b53e0c86c)
set(MD5_PPM_INT_9_8 d25e61bc7eac0002f5b393aa223747b6)
set(MD5_PPM_INT_7_8 ddb564b7c74a09494016d6cd7502a946)
set(MD5_PPM_INT_3_4 8ed8e68808c3fbc4ea764fc9d2968646)
set(MD5_PPM_INT_5_8 a3363274999da2366a024efae6d16c9b)
set(MD5_PPM_INT_1_2 e692a315cea26b988c8e8b29a5dbcd81)
set(MD5_PPM_INT_3_8 79eca9175652ced755155c90e785a996)
set(MD5_PPM_INT_1_4 79cd778f8bf1a117690052cacdd54eca)
set(MD5_PPM_INT_1_8 391b3d4aca640c8567d6f8745eb2142f)
set(MD5_PPM_FAST_1_2 f30bcf6d32ccd44cbdd9aeaacbd9454f)
set(MD5_BMP_256 4980185e3776e89bd931736e1cddeee6)
set(MD5_JPEG_ARI e986fb0a637a8d833d96e8a6d6d84ea1)
set(MD5_PPM_ARI 72b59a99bcf1de24c5b27d151bde2437)
set(MD5_JPEG_PROG 1c4afddc05c0a43489ee54438a482d92)
set(MD5_JPEG_PROG_ARI 0a8f1c8f66e113c3cf635df0a475a617)
set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d)
if(WITH_JAVA) if(WITH_JAVA)
add_test(TJUnitTest ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest) add_test(TJUnitTest ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest)
add_test(TJUnitTest-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -yuv) add_test(TJUnitTest-yuv ${JAVA_RUNTIME} -cp java/${OBJDIR}turbojpeg.jar -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} TJUnitTest -yuv)
@@ -253,121 +323,115 @@ add_test(tjunittest tjunittest)
add_test(tjunittest-alloc tjunittest -alloc) add_test(tjunittest-alloc tjunittest -alloc)
add_test(tjunittest-yuv tjunittest -yuv) add_test(tjunittest-yuv tjunittest -yuv)
add_test(cjpeg-int sharedlib/cjpeg -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-int sharedlib/cjpeg -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg testoutint.jpg) add_test(cjpeg-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutint.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-fast sharedlib/cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-fast sharedlib/cjpeg -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst.jpg testoutfst.jpg) add_test(cjpeg-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST} -DFILE=testoutfst.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-fast-100 sharedlib/cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-fast-100 sharedlib/cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-fast-100-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst100.jpg testoutfst100.jpg) add_test(cjpeg-fast-100-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST_100} -DFILE=testoutfst100.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-float sharedlib/cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-float sharedlib/cjpeg -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
if(WITH_SIMD) if(WITH_SIMD)
add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgflt.jpg testoutflt.jpg) add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
else() else()
add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgflt-nosimd.jpg testoutflt.jpg) add_test(cjpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT_NOSIMD} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endif() endif()
add_test(cjpeg-int-gray sharedlib/cjpeg -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-int-gray sharedlib/cjpeg -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-int-gray-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimggray.jpg testoutgray.jpg) add_test(cjpeg-int-gray-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT_GRAY} -DFILE=testoutgray.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-int sharedlib/djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-int sharedlib/djpeg -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.ppm testoutint.ppm) add_test(djpeg-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT} -DFILE=testoutint.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-fast sharedlib/djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-fast sharedlib/djpeg -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst.ppm testoutfst.ppm) add_test(djpeg-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST} -DFILE=testoutfst.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-float sharedlib/djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-float sharedlib/djpeg -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
if(WITH_SIMD) if(WITH_SIMD)
add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgflt.ppm testoutflt.ppm) add_test(djpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
else() else()
add_test(djpeg-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm testoutflt.ppm) add_test(djpeg-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT_NOSIMD} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endif() endif()
add_test(djpeg-int-1_2 sharedlib/djpeg -dct int -scale 1/2 -ppm -outfile testoutint1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) foreach(scale 2_1 15_8 7_4 13_8 3_2 11_8 5_4 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8)
add_test(djpeg-int-1_2-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint1_2.ppm testoutint1_2.ppm) string(REGEX REPLACE "_" "/" scalearg ${scale})
add_test(djpeg-int-${scale} sharedlib/djpeg -dct int -nosmooth -scale ${scalearg} -ppm -outfile testoutint${scale}.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-int-${scale}-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT_${scale}} -DFILE=testoutint${scale}.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endforeach()
add_test(djpeg-fast-1_2 sharedlib/djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-fast-1_2 sharedlib/djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-fast-1_2-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst1_2.ppm testoutfst1_2.ppm) add_test(djpeg-fast-1_2-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST_1_2} -DFILE=testoutfst1_2.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-int-1_4 sharedlib/djpeg -dct int -scale 1/4 -ppm -outfile testoutint1_4.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-int-1_4-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint1_4.ppm testoutint1_4.ppm)
add_test(djpeg-fast-1_4 sharedlib/djpeg -dct fast -scale 1/4 -ppm -outfile testoutfst1_4.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-fast-1_4-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst1_4.ppm testoutfst1_4.ppm)
add_test(djpeg-int-1_8 sharedlib/djpeg -dct int -scale 1/8 -ppm -outfile testoutint1_8.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-int-1_8-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint1_8.ppm testoutint1_8.ppm)
add_test(djpeg-fast-1_8 sharedlib/djpeg -dct fast -scale 1/8 -ppm -outfile testoutfst1_8.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-fast-1_8-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst1_8.ppm testoutfst1_8.ppm)
add_test(djpeg-256 sharedlib/djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-256 sharedlib/djpeg -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimg.bmp testout.bmp) add_test(djpeg-256-cmp ${CMAKE_COMMAND} -DMD5=${MD5_BMP_256} -DFILE=testout.bmp -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-prog sharedlib/cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-prog sharedlib/cjpeg -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgp.jpg testoutp.jpg) add_test(cjpeg-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG} -DFILE=testoutp.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(jpegtran-prog sharedlib/jpegtran -outfile testoutt.jpg testoutp.jpg) add_test(jpegtran-prog sharedlib/jpegtran -outfile testoutt.jpg testoutp.jpg)
add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg testoutt.jpg) add_test(jpegtran-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
if(WITH_ARITH_ENC) if(WITH_ARITH_ENC)
add_test(cjpeg-ari sharedlib/cjpeg -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-ari sharedlib/cjpeg -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg testoutari.jpg) add_test(cjpeg-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testoutari.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
add_test(jpegtran-toari sharedlib/jpegtran -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg) add_test(jpegtran-toari sharedlib/jpegtran -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
add_test(jpegtran-toari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg testouta.jpg) add_test(jpegtran-toari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-prog-ari sharedlib/cjpeg -dct int -progressive -arithmetic -sample 1x1 -outfile testoutpa.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-prog-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG_ARI} -DFILE=testoutpa.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
endif() endif()
if(WITH_ARITH_DEC) if(WITH_ARITH_DEC)
add_test(djpeg-ari sharedlib/djpeg -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg) add_test(djpeg-ari sharedlib/djpeg -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
add_test(djpeg-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgari.ppm testoutari.ppm) add_test(djpeg-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_ARI} -DFILE=testoutari.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(jpegtran-fromari sharedlib/jpegtran -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg) add_test(jpegtran-fromari sharedlib/jpegtran -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
add_test(jpegtran-fromari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg testouta.jpg) add_test(jpegtran-fromari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endif() endif()
add_test(jpegtran-crop sharedlib/jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(jpegtran-crop sharedlib/jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(jpegtran-crop-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgcrop.jpg testoutcrop.jpg) add_test(jpegtran-crop-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testoutcrop.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(tjunittest-static tjunittest-static) add_test(tjunittest-static tjunittest-static)
add_test(tjunittest-static-alloc tjunittest-static -alloc) add_test(tjunittest-static-alloc tjunittest-static -alloc)
add_test(tjunittest-static-yuv tjunittest-static -yuv) add_test(tjunittest-static-yuv tjunittest-static -yuv)
add_test(cjpeg-static-int cjpeg-static -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-int cjpeg-static -dct int -outfile testoutint.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg testoutint.jpg) add_test(cjpeg-static-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutint.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-static-fast cjpeg-static -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-fast cjpeg-static -dct fast -opt -outfile testoutfst.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst.jpg testoutfst.jpg) add_test(cjpeg-static-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST} -DFILE=testoutfst.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-static-fast-100 cjpeg-static -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-fast-100 cjpeg-static -dct fast -quality 100 -opt -outfile testoutfst100.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-fast-100-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst100.jpg testoutfst100.jpg) add_test(cjpeg-static-fast-100-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FAST_100} -DFILE=testoutfst100.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-static-float cjpeg-static -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-float cjpeg-static -dct float -outfile testoutflt.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
if(WITH_SIMD) if(WITH_SIMD)
add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgflt.jpg testoutflt.jpg) add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
else() else()
add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgflt-nosimd.jpg testoutflt.jpg) add_test(cjpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_FLOAT_NOSIMD} -DFILE=testoutflt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endif() endif()
add_test(cjpeg-static-int-gray cjpeg-static -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-int-gray cjpeg-static -dct int -grayscale -outfile testoutgray.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-int-gray-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimggray.jpg testoutgray.jpg) add_test(cjpeg-static-int-gray-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT_GRAY} -DFILE=testoutgray.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-static-int djpeg-static -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-static-int djpeg-static -dct int -fast -ppm -outfile testoutint.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-int-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.ppm testoutint.ppm) add_test(djpeg-static-int-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT} -DFILE=testoutint.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-static-fast djpeg-static -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-static-fast djpeg-static -dct fast -ppm -outfile testoutfst.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-fast-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst.ppm testoutfst.ppm) add_test(djpeg-static-fast-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST} -DFILE=testoutfst.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-static-float djpeg-static -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-static-float djpeg-static -dct float -ppm -outfile testoutflt.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
if(WITH_SIMD) if(WITH_SIMD)
add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgflt.ppm testoutflt.ppm) add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
else() else()
add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm testoutflt.ppm) add_test(djpeg-static-float-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FLOAT_NOSIMD} -DFILE=testoutflt.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endif() endif()
add_test(djpeg-static-int-1_2 djpeg-static -dct int -scale 1/2 -ppm -outfile testoutint1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) foreach(scale 2_1 15_8 7_4 13_8 3_2 11_8 5_4 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8)
add_test(djpeg-static-int-1_2-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint1_2.ppm testoutint1_2.ppm) string(REGEX REPLACE "_" "/" scalearg ${scale})
add_test(djpeg-static-int-${scale} djpeg-static -dct int -nosmooth -scale ${scalearg} -ppm -outfile testoutint${scale}.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-int-${scale}-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_INT_${scale}} -DFILE=testoutint${scale}.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endforeach()
add_test(djpeg-static-fast-1_2 djpeg-static -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-static-fast-1_2 djpeg-static -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-fast-1_2-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst1_2.ppm testoutfst1_2.ppm) add_test(djpeg-static-fast-1_2-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_FAST_1_2} -DFILE=testoutfst1_2.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(djpeg-static-int-1_4 djpeg-static -dct int -scale 1/4 -ppm -outfile testoutint1_4.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-int-1_4-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint1_4.ppm testoutint1_4.ppm)
add_test(djpeg-static-fast-1_4 djpeg-static -dct fast -scale 1/4 -ppm -outfile testoutfst1_4.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-fast-1_4-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst1_4.ppm testoutfst1_4.ppm)
add_test(djpeg-static-int-1_8 djpeg-static -dct int -scale 1/8 -ppm -outfile testoutint1_8.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-int-1_8-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint1_8.ppm testoutint1_8.ppm)
add_test(djpeg-static-fast-1_8 djpeg-static -dct fast -scale 1/8 -ppm -outfile testoutfst1_8.ppm ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-fast-1_8-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgfst1_8.ppm testoutfst1_8.ppm)
add_test(djpeg-static-256 djpeg-static -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(djpeg-static-256 djpeg-static -dct int -bmp -colors 256 -outfile testout.bmp ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(djpeg-static-256-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimg.bmp testout.bmp) add_test(djpeg-static-256-cmp ${CMAKE_COMMAND} -DMD5=${MD5_BMP_256} -DFILE=testout.bmp -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-static-prog cjpeg-static -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-prog cjpeg-static -dct int -progressive -outfile testoutp.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgp.jpg testoutp.jpg) add_test(cjpeg-static-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG} -DFILE=testoutp.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(jpegtran-static-prog jpegtran-static -outfile testoutt.jpg testoutp.jpg) add_test(jpegtran-static-prog jpegtran-static -outfile testoutt.jpg testoutp.jpg)
add_test(jpegtran-static-prog-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg testoutt.jpg) add_test(jpegtran-static-prog-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testoutt.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
if(WITH_ARITH_ENC) if(WITH_ARITH_ENC)
add_test(cjpeg-static-ari cjpeg-static -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm) add_test(cjpeg-static-ari cjpeg-static -dct int -arithmetic -outfile testoutari.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg testoutari.jpg) add_test(cjpeg-static-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testoutari.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
add_test(jpegtran-static-toari jpegtran-static -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg) add_test(jpegtran-static-toari jpegtran-static -arithmetic -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg)
add_test(jpegtran-static-toari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg testouta.jpg) add_test(jpegtran-static-toari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_ARI} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(cjpeg-static-prog-ari cjpeg-static -dct int -progressive -arithmetic -sample 1x1 -outfile testoutpa.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.ppm)
add_test(cjpeg-static-prog-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_PROG_ARI} -DFILE=testoutpa.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake )
endif() endif()
if(WITH_ARITH_DEC) if(WITH_ARITH_DEC)
add_test(djpeg-static-ari djpeg-static -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg) add_test(djpeg-static-ari djpeg-static -dct int -fast -ppm -outfile testoutari.ppm ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
add_test(djpeg-static-ari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgari.ppm testoutari.ppm) add_test(djpeg-static-ari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_PPM_ARI} -DFILE=testoutari.ppm -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_test(jpegtran-static-fromari jpegtran-static -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg) add_test(jpegtran-static-fromari jpegtran-static -outfile testouta.jpg ${CMAKE_SOURCE_DIR}/testimages/testimgari.jpg)
add_test(jpegtran-static-fromari-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgint.jpg testouta.jpg) add_test(jpegtran-static-fromari-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_INT} -DFILE=testouta.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
endif() endif()
add_test(jpegtran-static-crop jpegtran-static -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg) add_test(jpegtran-static-crop jpegtran-static -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg ${CMAKE_SOURCE_DIR}/testimages/testorig.jpg)
add_test(jpegtran-static-crop-cmp ${CMAKE_COMMAND} -E compare_files ${CMAKE_SOURCE_DIR}/testimages/testimgcrop.jpg testoutcrop.jpg) add_test(jpegtran-static-crop-cmp ${CMAKE_COMMAND} -DMD5=${MD5_JPEG_CROP} -DFILE=testoutcrop.jpg -P ${CMAKE_SOURCE_DIR}/cmakescripts/md5cmp.cmake)
add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake) ${CMAKE_SOURCE_DIR}/cmakescripts/testclean.cmake)
@@ -380,18 +444,18 @@ add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P
if(MSVC) if(MSVC)
set(INST_PLATFORM "Visual C++") set(INST_PLATFORM "Visual C++")
set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc) set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc)
set(INST_DIR ${CMAKE_PROJECT_NAME}) set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
elseif(MINGW) elseif(MINGW)
set(INST_PLATFORM GCC) set(INST_PLATFORM GCC)
set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc) set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc)
set(INST_DIR ${CMAKE_PROJECT_NAME}-gcc) set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc)
set(INST_DEFS -DGCC) set(INST_DEFS -DGCC)
endif() endif()
if(64BIT) if(64BIT)
set(INST_PLATFORM "${INST_PLATFORM} 64-bit") set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
set(INST_NAME ${INST_NAME}64) set(INST_NAME ${INST_NAME}64)
set(INST_DIR ${INST_DIR}64) set(INST_REG_NAME ${INST_DIR}64)
set(INST_DEFS ${INST_DEFS} -DWIN64) set(INST_DEFS ${INST_DEFS} -DWIN64)
endif() endif()
@@ -405,12 +469,17 @@ else()
set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=") set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
endif() endif()
STRING(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY) configure_file(release/libjpeg-turbo.nsi.in libjpeg-turbo.nsi @ONLY)
if(WITH_JAVA)
set(JAVA_DEPEND java)
endif()
add_custom_target(installer add_custom_target(installer
makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi makensis -nocd ${INST_DEFS} libjpeg-turbo.nsi
DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom
cjpeg djpeg jpegtran tjbench cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND}
SOURCES libjpeg-turbo.nsi) SOURCES libjpeg-turbo.nsi)
install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom tjbench install(TARGETS jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom tjbench

View File

@@ -1,3 +1,187 @@
1.3.1
=====
[1] On Un*x systems, 'make install' now installs the libjpeg-turbo libraries
into /opt/libjpeg-turbo/lib32 by default on any 32-bit system, not just x86,
and into /opt/libjpeg-turbo/lib64 by default on any 64-bit system, not just
x86-64. You can override this by overriding either the 'prefix' or 'libdir'
configure variables.
[2] The Windows installer now places a copy of the TurboJPEG DLLs in the same
directory as the rest of the libjpeg-turbo binaries. This was mainly done
to support TurboVNC 1.3, which bundles the DLLs in its Windows installation.
When using a 32-bit version of CMake on 64-bit Windows, it is impossible to
access the c:\WINDOWS\system32 directory, which made it impossible for the
TurboVNC build scripts to bundle the 64-bit TurboJPEG DLL.
[3] Fixed a bug whereby attempting to encode a progressive JPEG with arithmetic
entropy coding (by passing arguments of -progressive -arithmetic to cjpeg or
jpegtran, for instance) would result in an error, "Requested feature was
omitted at compile time".
[4] Fixed a couple of issues whereby malformed JPEG images would cause
libjpeg-turbo to use uninitialized memory during decompression.
[5] Fixed an error ("Buffer passed to JPEG library is too small") that occurred
when calling the TurboJPEG YUV encoding function with a very small (< 5x5)
source image, and added a unit test to check for this error.
[6] The Java classes should now build properly under Visual Studio 2010 and
later.
[7] Fixed an issue that prevented SRPMs generated using the in-tree packaging
tools from being rebuilt on certain newer Linux distributions.
[8] Numerous minor fixes to eliminate compilation and build/packaging system
warnings, fix cosmetic issues, improve documentation clarity, and other general
source cleanup.
1.3.0
=====
[1] 'make test' now works properly on FreeBSD, and it no longer requires the
md5sum executable to be present on other Un*x platforms.
[2] Overhauled the packaging system:
-- To avoid conflict with vendor-supplied libjpeg-turbo packages, the
official RPMs and DEBs for libjpeg-turbo have been renamed to
"libjpeg-turbo-official".
-- The TurboJPEG libraries are now located under /opt/libjpeg-turbo in the
official Linux and Mac packages, to avoid conflict with vendor-supplied
packages and also to streamline the packaging system.
-- Release packages are now created with the directory structure defined
by the configure variables "prefix", "bindir", "libdir", etc. (Un*x) or by the
CMAKE_INSTALL_PREFIX variable (Windows.) The exception is that the docs are
always located under the system default documentation directory on Un*x and Mac
systems, and on Windows, the TurboJPEG DLL is always located in the Windows
system directory.
-- To avoid confusion, official libjpeg-turbo packages on Linux/Unix platforms
(except for Mac) will always install the 32-bit libraries in
/opt/libjpeg-turbo/lib32 and the 64-bit libraries in /opt/libjpeg-turbo/lib64.
-- Fixed an issue whereby, in some cases, the libjpeg-turbo executables on Un*x
systems were not properly linking with the shared libraries installed by the
same package.
-- Fixed an issue whereby building the "installer" target on Windows when
WITH_JAVA=1 would fail if the TurboJPEG JAR had not been previously built.
-- Building the "install" target on Windows now installs files into the same
places that the installer does.
[3] Fixed a Huffman encoder bug that prevented I/O suspension from working
properly.
1.2.90 (1.3 beta1)
==================
[1] Added support for additional scaling factors (3/8, 5/8, 3/4, 7/8, 9/8, 5/4,
11/8, 3/2, 13/8, 7/4, 15/8, and 2) when decompressing. Note that the IDCT will
not be SIMD-accelerated when using any of these new scaling factors.
[2] The TurboJPEG dynamic library is now versioned. It was not strictly
necessary to do so, because TurboJPEG uses versioned symbols, and if a function
changes in an ABI-incompatible way, that function is renamed and a legacy
function is provided to maintain backward compatibility. However, certain
Linux distro maintainers have a policy against accepting any library that isn't
versioned.
[3] Extended the TurboJPEG Java API so that it can be used to compress a JPEG
image from and decompress a JPEG image to an arbitrary position in a large
image buffer.
[4] The tjDecompressToYUV() function now supports the TJFLAG_FASTDCT flag.
[5] The 32-bit supplementary package for amd64 Debian systems now provides
symlinks in /usr/lib/i386-linux-gnu for the TurboJPEG libraries in /usr/lib32.
This allows those libraries to be used on MultiArch-compatible systems (such as
Ubuntu 11 and later) without setting the linker path.
[6] The TurboJPEG Java wrapper should now find the JNI library on Mac systems
without having to pass -Djava.library.path=/usr/lib to java.
[7] TJBench has been ported to Java to provide a convenient way of validating
the performance of the TurboJPEG Java API. It can be run with
'java -cp turbojpeg.jar TJBench'.
[8] cjpeg can now be used to generate JPEG files with the RGB colorspace
(feature ported from jpeg-8d.)
[9] The width and height in the -crop argument passed to jpegtran can now be
suffixed with "f" to indicate that, when the upper left corner of the cropping
region is automatically moved to the nearest iMCU boundary, the bottom right
corner should be moved by the same amount. In other words, this feature causes
jpegtran to strictly honor the specified width/height rather than the specified
bottom right corner (feature ported from jpeg-8d.)
[10] JPEG files using the RGB colorspace can now be decompressed into grayscale
images (feature ported from jpeg-8d.)
[11] Fixed a regression caused by 1.2.1[7] whereby the build would fail with
multiple "Mismatch in operand sizes" errors when attempting to build the x86
SIMD code with NASM 0.98.
[12] The in-memory source/destination managers (jpeg_mem_src() and
jpeg_mem_dest()) are now included by default when building libjpeg-turbo with
libjpeg v6b or v7 emulation, so that programs can take advantage of these
functions without requiring the use of the backward-incompatible libjpeg v8
ABI. The "age number" of the libjpeg-turbo library on Un*x systems has been
incremented by 1 to reflect this. You can disable this feature with a
configure/CMake switch in order to retain strict API/ABI compatibility with the
libjpeg v6b or v7 API/ABI (or with previous versions of libjpeg-turbo.) See
README-turbo.txt for more details.
[13] Added ARM v7s architecture to libjpeg.a and libturbojpeg.a in the official
libjpeg-turbo binary package for OS X, so that those libraries can be used to
build applications that leverage the faster CPUs in the iPhone 5 and iPad 4.
1.2.1
=====
[1] Creating or decoding a JPEG file that uses the RGB colorspace should now
properly work when the input or output colorspace is one of the libjpeg-turbo
colorspace extensions.
[2] When libjpeg-turbo was built without SIMD support and merged (non-fancy)
upsampling was used along with an alpha-enabled colorspace during
decompression, the unused byte of the decompressed pixels was not being set to
0xFF. This has been fixed. TJUnitTest has also been extended to test for the
correct behavior of the colorspace extensions when merged upsampling is used.
[3] Fixed a bug whereby the libjpeg-turbo SSE2 SIMD code would not preserve the
upper 64 bits of xmm6 and xmm7 on Win64 platforms, which violated the Win64
calling conventions.
[4] Fixed a regression caused by 1.2.0[6] whereby decompressing corrupt JPEG
images (specifically, images in which the component count was erroneously set
to a large value) would cause libjpeg-turbo to segfault.
[5] Worked around a severe performance issue with "Bobcat" (AMD Embedded APU)
processors. The MASKMOVDQU instruction, which was used by the libjpeg-turbo
SSE2 SIMD code, is apparently implemented in microcode on AMD processors, and
it is painfully slow on Bobcat processors in particular. Eliminating the use
of this instruction improved performance by an order of magnitude on Bobcat
processors and by a small amount (typically 5%) on AMD desktop processors.
[6] Added SIMD acceleration for performing 4:2:2 upsampling on NEON-capable ARM
platforms. This speeds up the decompression of 4:2:2 JPEGs by 20-25% on such
platforms.
[7] Fixed a regression caused by 1.2.0[2] whereby, on Linux/x86 platforms
running the 32-bit SSE2 SIMD code in libjpeg-turbo, decompressing a 4:2:0 or
4:2:2 JPEG image into a 32-bit (RGBX, BGRX, etc.) buffer without using fancy
upsampling would produce several incorrect columns of pixels at the right-hand
side of the output image if each row in the output image was not evenly
divisible by 16 bytes.
[8] Fixed an issue whereby attempting to build the SIMD extensions with Xcode
4.3 on OS X platforms would cause NASM to return numerous errors of the form
"'%define' expects a macro identifier".
[9] Added flags to the TurboJPEG API that allow the caller to force the use of
either the fast or the accurate DCT/IDCT algorithms in the underlying codec.
1.2.0 1.2.0
===== =====
@@ -30,8 +214,8 @@ are in violation of the spec, other JPEG implementations handle them
correctly. correctly.
[7] Added ARM v6 and ARM v7 architectures to libjpeg.a and libturbojpeg.a in [7] Added ARM v6 and ARM v7 architectures to libjpeg.a and libturbojpeg.a in
the official OS X distribution package, so that those libraries can be used to the official libjpeg-turbo binary package for OS X, so that those libraries can
build both OS X and iOS applications. be used to build both OS X and iOS applications.
1.1.90 (1.2 beta1) 1.1.90 (1.2 beta1)
@@ -77,7 +261,7 @@ NEON instructions.
TurboJPEG 1.2 API uses pixel formats to define the size and component order of TurboJPEG 1.2 API uses pixel formats to define the size and component order of
the uncompressed source/destination images, and it includes a more efficient the uncompressed source/destination images, and it includes a more efficient
version of TJBUFSIZE() that computes a worst-case JPEG size based on the level version of TJBUFSIZE() that computes a worst-case JPEG size based on the level
of chrominance subsampling. The refactored implementation of TurboJPEG/OSS of chrominance subsampling. The refactored implementation of the TurboJPEG API
now uses the libjpeg memory source and destination managers, which allows the now uses the libjpeg memory source and destination managers, which allows the
TurboJPEG compressor to grow the JPEG buffer as necessary. TurboJPEG compressor to grow the JPEG buffer as necessary.
@@ -153,12 +337,12 @@ and libjpeg-turbo should now produce identical output to libjpeg v6b in all
cases. cases.
[2] Despite the above, the fast integer forward DCT still degrades somewhat for [2] Despite the above, the fast integer forward DCT still degrades somewhat for
JPEG qualities greater than 95, so TurboJPEG/OSS will now automatically use the JPEG qualities greater than 95, so the TurboJPEG wrapper will now automatically
slow integer forward DCT when generating JPEG images of quality 96 or greater. use the slow integer forward DCT when generating JPEG images of quality 96 or
This reduces compression performance by as much as 15% for these high-quality greater. This reduces compression performance by as much as 15% for these
images but is necessary to ensure that the images are perceptually lossless. high-quality images but is necessary to ensure that the images are perceptually
It also ensures that the library can avoid the performance pitfall created by lossless. It also ensures that the library can avoid the performance pitfall
[1]. created by [1].
[3] Ported jpgtest.cxx to pure C to avoid the need for a C++ compiler. [3] Ported jpgtest.cxx to pure C to avoid the need for a C++ compiler.
@@ -231,7 +415,7 @@ INCOMPLETE_TYPES_BROKEN macro should be defined.
[1] 2983700: Further FreeBSD build tweaks (no longer necessary to specify [1] 2983700: Further FreeBSD build tweaks (no longer necessary to specify
--host when configuring on a 64-bit system) --host when configuring on a 64-bit system)
[2] Created sym. links in the Unix/Linux packages so that the TurboJPEG [2] Created symlinks in the Unix/Linux packages so that the TurboJPEG
include file can always be found in /opt/libjpeg-turbo/include, the 32-bit include file can always be found in /opt/libjpeg-turbo/include, the 32-bit
static libraries can always be found in /opt/libjpeg-turbo/lib32, and the static libraries can always be found in /opt/libjpeg-turbo/lib32, and the
64-bit static libraries can always be found in /opt/libjpeg-turbo/lib64. 64-bit static libraries can always be found in /opt/libjpeg-turbo/lib64.

View File

@@ -1,9 +1,16 @@
lib_LTLIBRARIES = libjpeg.la libturbojpeg.la lib_LTLIBRARIES = libjpeg.la
libjpeg_la_LDFLAGS = -version-info ${SO_MAJOR_VERSION}:${SO_MINOR_VERSION} -no-undefined libjpeg_la_LDFLAGS = -version-info ${LIBTOOL_CURRENT}:${SO_MINOR_VERSION}:${SO_AGE} -no-undefined
libturbojpeg_la_LDFLAGS = -avoid-version -no-undefined include_HEADERS = jerror.h jmorecfg.h jpeglib.h
include_HEADERS = jerror.h jmorecfg.h jpeglib.h turbojpeg.h
if WITH_TURBOJPEG
lib_LTLIBRARIES += libturbojpeg.la
libturbojpeg_la_LDFLAGS = -version-info 0:0 -no-undefined
include_HEADERS += turbojpeg.h
endif
nodist_include_HEADERS = jconfig.h nodist_include_HEADERS = jconfig.h
HDRS = jchuff.h jdct.h jdhuff.h jerror.h jinclude.h jmemsys.h jmorecfg.h \ HDRS = jchuff.h jdct.h jdhuff.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
jpegint.h jpeglib.h jversion.h jsimd.h jsimddct.h jpegcomp.h jpegint.h jpeglib.h jversion.h jsimd.h jsimddct.h jpegcomp.h
@@ -17,28 +24,26 @@ libjpeg_la_SOURCES = $(HDRS) jcapimin.c jcapistd.c jccoefct.c jccolor.c \
jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c
if WITH_ARITH if WITH_ARITH
libjpeg_la_SOURCES += jaricom.c libjpeg_la_SOURCES += jaricom.c
endif endif
if WITH_ARITH_ENC if WITH_ARITH_ENC
libjpeg_la_SOURCES += jcarith.c libjpeg_la_SOURCES += jcarith.c
endif endif
if WITH_ARITH_DEC if WITH_ARITH_DEC
libjpeg_la_SOURCES += jdarith.c libjpeg_la_SOURCES += jdarith.c
endif endif
SUBDIRS = java
if WITH_TURBOJPEG
libturbojpeg_la_SOURCES = $(libjpeg_la_SOURCES) turbojpeg.c turbojpeg.h \ libturbojpeg_la_SOURCES = $(libjpeg_la_SOURCES) turbojpeg.c turbojpeg.h \
transupp.c transupp.h jdatadst-tj.c jdatasrc-tj.c transupp.c transupp.h jdatadst-tj.c jdatasrc-tj.c
SUBDIRS = java
if WITH_JAVA if WITH_JAVA
libturbojpeg_la_SOURCES += turbojpeg-jni.c libturbojpeg_la_SOURCES += turbojpeg-jni.c
@@ -54,12 +59,17 @@ endif
libturbojpeg_la_SOURCES += $(TJMAPFILE) libturbojpeg_la_SOURCES += $(TJMAPFILE)
if VERSION_SCRIPT if VERSION_SCRIPT
libturbojpeg_la_LDFLAGS += $(VERSION_SCRIPT_FLAG)$(srcdir)/$(TJMAPFILE) libturbojpeg_la_LDFLAGS += $(VERSION_SCRIPT_FLAG)$(srcdir)/$(TJMAPFILE)
libjpeg_la_LDFLAGS += $(VERSION_SCRIPT_FLAG)libjpeg.map endif
endif endif
if VERSION_SCRIPT
libjpeg_la_LDFLAGS += $(VERSION_SCRIPT_FLAG)libjpeg.map
endif
if WITH_SIMD if WITH_SIMD
SUBDIRS += simd SUBDIRS += simd
@@ -72,8 +82,16 @@ libjpeg_la_SOURCES += jsimd_none.c
endif endif
bin_PROGRAMS = cjpeg djpeg jpegtran rdjpgcom wrjpgcom tjbench
noinst_PROGRAMS = tjunittest jcstest bin_PROGRAMS = cjpeg djpeg jpegtran rdjpgcom wrjpgcom
noinst_PROGRAMS = jcstest
if WITH_TURBOJPEG
bin_PROGRAMS += tjbench
noinst_PROGRAMS += tjunittest
tjbench_SOURCES = tjbench.c bmp.h bmp.c tjutil.h tjutil.c rdbmp.c rdppm.c \ tjbench_SOURCES = tjbench.c bmp.h bmp.c tjutil.h tjutil.c rdbmp.c rdppm.c \
wrbmp.c wrppm.c wrbmp.c wrppm.c
@@ -86,6 +104,9 @@ tjunittest_SOURCES = tjunittest.c tjutil.h tjutil.c
tjunittest_LDADD = libturbojpeg.la tjunittest_LDADD = libturbojpeg.la
endif
cjpeg_SOURCES = cdjpeg.h cderror.h cdjpeg.c cjpeg.c rdbmp.c rdgif.c \ cjpeg_SOURCES = cdjpeg.h cderror.h cdjpeg.c cjpeg.c rdbmp.c rdgif.c \
rdppm.c rdswitch.c rdtarga.c rdppm.c rdswitch.c rdtarga.c
@@ -120,8 +141,8 @@ jcstest_LDADD = libjpeg.la
dist_man1_MANS = cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 wrjpgcom.1 dist_man1_MANS = cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 wrjpgcom.1
DOCS= install.txt coderules.txt filelist.txt jconfig.txt change.log \ DOCS= coderules.txt jconfig.txt change.log rdrle.c wrrle.c BUILDING.txt \
rdrle.c wrrle.c BUILDING.txt ChangeLog.txt ChangeLog.txt
docdir = $(datadir)/doc docdir = $(datadir)/doc
dist_doc_DATA = README README-turbo.txt libjpeg.txt structure.txt usage.txt \ dist_doc_DATA = README README-turbo.txt libjpeg.txt structure.txt usage.txt \
@@ -139,7 +160,43 @@ dist-hook:
rm -rf `find $(distdir) -name .svn` rm -rf `find $(distdir) -name .svn`
SUBDIRS += md5
MD5_JPEG_INT = 9a68f56bc76e466aa7e52f415d0f4a5f
MD5_JPEG_FAST = 0e1502e7fa421835e376a314fac2a39f
MD5_JPEG_FAST_100 = 7bf72a8e741d64eecb960c97323af77c
MD5_JPEG_FLOAT = d1623885ffafcd40c684af09e3d65cd5
MD5_JPEG_FLOAT_NOSIMD = fb4884c35f8273f498cb32879de5c455
MD5_JPEG_INT_GRAY = 72b51f894b8f4a10b3ee3066770aa38d
MD5_PPM_INT = d1ed0d11f076b842525271647716aeb8
MD5_PPM_FAST = 048298a2d2410261c0533cb97bcfef23
MD5_PPM_FLOAT = 7f5b446ee36b2630e06785b8d42af15f
MD5_PPM_FLOAT_NOSIMD = 64072f1dbdc5b3a187777788604971a5
MD5_PPM_INT_2_1 = 9f9de8c0612f8d06869b960b05abf9c9
MD5_PPM_INT_15_8 = b6875bc070720b899566cc06459b63b7
MD5_PPM_INT_7_4 = 06a177eae05f164fac57f7a2c346ee87
MD5_PPM_INT_13_8 = bc3452573c8152f6ae552939ee19f82f
MD5_PPM_INT_3_2 = f5a8b88a8a7f96016f04d259cf82ed67
MD5_PPM_INT_11_8 = d8cc73c0aaacd4556569b59437ba00a5
MD5_PPM_INT_5_4 = 32775dd9ad2ab90f4c5b219b53e0c86c
MD5_PPM_INT_9_8 = d25e61bc7eac0002f5b393aa223747b6
MD5_PPM_INT_7_8 = ddb564b7c74a09494016d6cd7502a946
MD5_PPM_INT_3_4 = 8ed8e68808c3fbc4ea764fc9d2968646
MD5_PPM_INT_5_8 = a3363274999da2366a024efae6d16c9b
MD5_PPM_INT_1_2 = e692a315cea26b988c8e8b29a5dbcd81
MD5_PPM_INT_3_8 = 79eca9175652ced755155c90e785a996
MD5_PPM_INT_1_4 = 79cd778f8bf1a117690052cacdd54eca
MD5_PPM_INT_1_8 = 391b3d4aca640c8567d6f8745eb2142f
MD5_PPM_FAST_1_2 = f30bcf6d32ccd44cbdd9aeaacbd9454f
MD5_BMP_256 = 4980185e3776e89bd931736e1cddeee6
MD5_JPEG_ARI = e986fb0a637a8d833d96e8a6d6d84ea1
MD5_PPM_ARI = 72b59a99bcf1de24c5b27d151bde2437
MD5_JPEG_PROG = 1c4afddc05c0a43489ee54438a482d92
MD5_JPEG_PROG_ARI = 0a8f1c8f66e113c3cf635df0a475a617
MD5_JPEG_CROP = b4197f377e621c4e9b1d20471432610d
test: testclean all test: testclean all
if WITH_TURBOJPEG
if WITH_JAVA if WITH_JAVA
$(JAVA) -cp java/turbojpeg.jar -Djava.library.path=.libs TJUnitTest $(JAVA) -cp java/turbojpeg.jar -Djava.library.path=.libs TJUnitTest
$(JAVA) -cp java/turbojpeg.jar -Djava.library.path=.libs TJUnitTest -bi $(JAVA) -cp java/turbojpeg.jar -Djava.library.path=.libs TJUnitTest -bi
@@ -149,62 +206,85 @@ endif
./tjunittest ./tjunittest
./tjunittest -alloc ./tjunittest -alloc
./tjunittest -yuv ./tjunittest -yuv
endif
./cjpeg -dct int -outfile testoutint.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct int -outfile testoutint.jpg $(srcdir)/testimages/testorig.ppm
cmp $(srcdir)/testimages/testimgint.jpg testoutint.jpg md5/md5cmp $(MD5_JPEG_INT) testoutint.jpg
./cjpeg -dct fast -opt -outfile testoutfst.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct fast -opt -outfile testoutfst.jpg $(srcdir)/testimages/testorig.ppm
cmp $(srcdir)/testimages/testimgfst.jpg testoutfst.jpg md5/md5cmp $(MD5_JPEG_FAST) testoutfst.jpg
./cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct fast -quality 100 -opt -outfile testoutfst100.jpg $(srcdir)/testimages/testorig.ppm
cmp $(srcdir)/testimages/testimgfst100.jpg testoutfst100.jpg md5/md5cmp $(MD5_JPEG_FAST_100) testoutfst100.jpg
./cjpeg -dct float -outfile testoutflt.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct float -outfile testoutflt.jpg $(srcdir)/testimages/testorig.ppm
if WITH_SSE_FLOAT_DCT if WITH_SSE_FLOAT_DCT
cmp $(srcdir)/testimages/testimgflt.jpg testoutflt.jpg md5/md5cmp $(MD5_JPEG_FLOAT) testoutflt.jpg
else else
cmp $(srcdir)/testimages/testimgflt-nosimd.jpg testoutflt.jpg md5/md5cmp $(MD5_JPEG_FLOAT_NOSIMD) testoutflt.jpg
endif endif
./cjpeg -dct int -grayscale -outfile testoutgray.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct int -grayscale -outfile testoutgray.jpg $(srcdir)/testimages/testorig.ppm
cmp $(srcdir)/testimages/testimggray.jpg testoutgray.jpg md5/md5cmp $(MD5_JPEG_INT_GRAY) testoutgray.jpg
./djpeg -dct int -fast -ppm -outfile testoutint.ppm $(srcdir)/testimages/testorig.jpg ./djpeg -dct int -fast -ppm -outfile testoutint.ppm $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgint.ppm testoutint.ppm md5/md5cmp $(MD5_PPM_INT) testoutint.ppm
./djpeg -dct fast -ppm -outfile testoutfst.ppm $(srcdir)/testimages/testorig.jpg ./djpeg -dct fast -ppm -outfile testoutfst.ppm $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgfst.ppm testoutfst.ppm md5/md5cmp $(MD5_PPM_FAST) testoutfst.ppm
./djpeg -dct float -ppm -outfile testoutflt.ppm $(srcdir)/testimages/testorig.jpg ./djpeg -dct float -ppm -outfile testoutflt.ppm $(srcdir)/testimages/testorig.jpg
if WITH_SSE_FLOAT_DCT if WITH_SSE_FLOAT_DCT
cmp $(srcdir)/testimages/testimgflt.ppm testoutflt.ppm md5/md5cmp $(MD5_PPM_FLOAT) testoutflt.ppm
else else
cmp $(srcdir)/testimages/testorig.ppm testoutflt.ppm md5/md5cmp $(MD5_PPM_FLOAT_NOSIMD) testoutflt.ppm
endif endif
./djpeg -dct int -scale 1/2 -ppm -outfile testoutint1_2.ppm $(srcdir)/testimages/testorig.jpg ./djpeg -dct int -nosmooth -scale 2/1 -ppm -outfile testoutint2_1.ppm $(srcdir)/testimages/testorig.jpg;
cmp $(srcdir)/testimages/testimgint1_2.ppm testoutint1_2.ppm md5/md5cmp $(MD5_PPM_INT_2_1) testoutint2_1.ppm;
./djpeg -dct int -nosmooth -scale 15/8 -ppm -outfile testoutint15_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_15_8) testoutint15_8.ppm;
./djpeg -dct int -nosmooth -scale 7/4 -ppm -outfile testoutint7_4.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_7_4) testoutint7_4.ppm;
./djpeg -dct int -nosmooth -scale 13/8 -ppm -outfile testoutint13_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_13_8) testoutint13_8.ppm;
./djpeg -dct int -nosmooth -scale 3/2 -ppm -outfile testoutint3_2.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_3_2) testoutint3_2.ppm;
./djpeg -dct int -nosmooth -scale 11/8 -ppm -outfile testoutint11_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_11_8) testoutint11_8.ppm;
./djpeg -dct int -nosmooth -scale 5/4 -ppm -outfile testoutint5_4.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_5_4) testoutint5_4.ppm;
./djpeg -dct int -nosmooth -scale 9/8 -ppm -outfile testoutint9_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_9_8) testoutint9_8.ppm;
./djpeg -dct int -nosmooth -scale 7/8 -ppm -outfile testoutint7_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_7_8) testoutint7_8.ppm;
./djpeg -dct int -nosmooth -scale 3/4 -ppm -outfile testoutint3_4.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_3_4) testoutint3_4.ppm;
./djpeg -dct int -nosmooth -scale 5/8 -ppm -outfile testoutint5_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_5_8) testoutint5_8.ppm;
./djpeg -dct int -nosmooth -scale 1/2 -ppm -outfile testoutint1_2.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_1_2) testoutint1_2.ppm;
./djpeg -dct int -nosmooth -scale 3/8 -ppm -outfile testoutint3_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_3_8) testoutint3_8.ppm;
./djpeg -dct int -nosmooth -scale 1/4 -ppm -outfile testoutint1_4.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_1_4) testoutint1_4.ppm;
./djpeg -dct int -nosmooth -scale 1/8 -ppm -outfile testoutint1_8.ppm $(srcdir)/testimages/testorig.jpg;
md5/md5cmp $(MD5_PPM_INT_1_8) testoutint1_8.ppm;
./djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm $(srcdir)/testimages/testorig.jpg ./djpeg -dct fast -scale 1/2 -ppm -outfile testoutfst1_2.ppm $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgfst1_2.ppm testoutfst1_2.ppm md5/md5cmp $(MD5_PPM_FAST_1_2) testoutfst1_2.ppm
./djpeg -dct int -scale 1/4 -ppm -outfile testoutint1_4.ppm $(srcdir)/testimages/testorig.jpg ./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgint1_4.ppm testoutint1_4.ppm md5/md5cmp $(MD5_BMP_256) testout.bmp
./djpeg -dct fast -scale 1/4 -ppm -outfile testoutfst1_4.ppm $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgfst1_4.ppm testoutfst1_4.ppm
./djpeg -dct int -scale 1/8 -ppm -outfile testoutint1_8.ppm $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgint1_8.ppm testoutint1_8.ppm
./djpeg -dct fast -scale 1/8 -ppm -outfile testoutfst1_8.ppm $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgfst1_8.ppm testoutfst1_8.ppm
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimg.bmp testout.bmp
if WITH_ARITH_ENC if WITH_ARITH_ENC
./cjpeg -dct int -arithmetic -outfile testoutari.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct int -arithmetic -outfile testoutari.jpg $(srcdir)/testimages/testorig.ppm
cmp $(srcdir)/testimages/testimgari.jpg testoutari.jpg md5/md5cmp $(MD5_JPEG_ARI) testoutari.jpg
./jpegtran -arithmetic -outfile testouta.jpg $(srcdir)/testimages/testimgint.jpg ./jpegtran -arithmetic -outfile testouta.jpg $(srcdir)/testimages/testimgint.jpg
cmp $(srcdir)/testimages/testimgari.jpg testouta.jpg md5/md5cmp $(MD5_JPEG_ARI) testouta.jpg
./cjpeg -dct int -progressive -arithmetic -sample 1x1 -outfile testoutpa.jpg $(srcdir)/testimages/testorig.ppm
md5/md5cmp $(MD5_JPEG_PROG_ARI) testoutpa.jpg
endif endif
if WITH_ARITH_DEC if WITH_ARITH_DEC
./djpeg -dct int -fast -ppm -outfile testoutari.ppm $(srcdir)/testimages/testimgari.jpg ./djpeg -dct int -fast -ppm -outfile testoutari.ppm $(srcdir)/testimages/testimgari.jpg
cmp $(srcdir)/testimages/testimgari.ppm testoutari.ppm md5/md5cmp $(MD5_PPM_ARI) testoutari.ppm
./jpegtran -outfile testouta.jpg $(srcdir)/testimages/testimgari.jpg ./jpegtran -outfile testouta.jpg $(srcdir)/testimages/testimgari.jpg
cmp $(srcdir)/testimages/testimgint.jpg testouta.jpg md5/md5cmp $(MD5_JPEG_INT) testouta.jpg
endif endif
./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testimages/testorig.ppm ./cjpeg -dct int -progressive -outfile testoutp.jpg $(srcdir)/testimages/testorig.ppm
cmp $(srcdir)/testimages/testimgp.jpg testoutp.jpg md5/md5cmp $(MD5_JPEG_PROG) testoutp.jpg
./jpegtran -outfile testoutt.jpg testoutp.jpg ./jpegtran -outfile testoutt.jpg testoutp.jpg
cmp $(srcdir)/testimages/testimgint.jpg testoutt.jpg md5/md5cmp $(MD5_JPEG_INT) testoutt.jpg
./jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg $(srcdir)/testimages/testorig.jpg ./jpegtran -crop 120x90+20+50 -transpose -perfect -outfile testoutcrop.jpg $(srcdir)/testimages/testorig.jpg
cmp $(srcdir)/testimages/testimgcrop.jpg testoutcrop.jpg md5/md5cmp $(MD5_JPEG_CROP) testoutcrop.jpg
testclean: testclean:
@@ -239,93 +319,87 @@ testclean:
tjtest: tjtest:
sh ./tjbenchtest sh ./tjbenchtest
if WITH_JAVA if WITH_JAVA
sh ./tjexampletest sh ./tjbenchtest.java
endif endif
if X86_64 pkgscripts/libjpeg-turbo.spec: pkgscripts/libjpeg-turbo.spec.tmpl
cat pkgscripts/libjpeg-turbo.spec.tmpl | sed s@%{__prefix}@$(prefix)@g | \
sed s@%{__bindir}@$(bindir)@g | sed s@%{__datadir}@$(datadir)@g | \
sed s@%{__docdir}@$(docdir)@g | sed s@%{__includedir}@$(includedir)@g | \
sed s@%{__libdir}@$(libdir)@g | sed s@%{__mandir}@$(mandir)@g \
> pkgscripts/libjpeg-turbo.spec
install-exec-hook: rpm: all pkgscripts/libjpeg-turbo.spec
__PREFIX=`echo ${prefix} | sed -e 's@\/*$$@@'`; \
if [ "$$__PREFIX" = "/opt/libjpeg-turbo" ]; then \
cd $(DESTDIR)/${prefix}; \
if [ -d lib -a ! -d lib64 -a ! -h lib64 ]; then \
$(LN_S) lib lib64; \
fi \
fi
else
install-exec-hook:
__PREFIX=`echo ${prefix} | sed -e 's@\/*$$@@'`; \
if [ "$$__PREFIX" = "/opt/libjpeg-turbo" ]; then \
cd $(DESTDIR)/${prefix}; \
if [ -d lib -a ! -d lib32 -a ! -h lib32 ]; then \
$(LN_S) lib lib32; \
fi \
fi
endif
rpm: all
TMPDIR=`mktemp -d /tmp/${PACKAGE_NAME}-build.XXXXXX`; \ TMPDIR=`mktemp -d /tmp/${PACKAGE_NAME}-build.XXXXXX`; \
mkdir -p $$TMPDIR/RPMS; \ mkdir -p $$TMPDIR/RPMS; \
ln -fs `pwd` $$TMPDIR/BUILD; \ ln -fs `pwd` $$TMPDIR/BUILD; \
rm -f ${PACKAGE_NAME}-${VERSION}.${RPMARCH}.rpm; \ rm -f ${PKGNAME}-${VERSION}.${RPMARCH}.rpm; \
rpmbuild -bb --define "_blddir $$TMPDIR/buildroot" \ rpmbuild -bb --define "_blddir $$TMPDIR/buildroot" \
--define "_topdir $$TMPDIR" \ --define "_topdir $$TMPDIR" \
--target ${RPMARCH} pkgscripts/libjpeg-turbo.spec; \ --target ${RPMARCH} pkgscripts/libjpeg-turbo.spec; \
cp $$TMPDIR/RPMS/${RPMARCH}/${PACKAGE_NAME}-${VERSION}-${BUILD}.${RPMARCH}.rpm \ cp $$TMPDIR/RPMS/${RPMARCH}/${PKGNAME}-${VERSION}-${BUILD}.${RPMARCH}.rpm \
${PACKAGE_NAME}-${VERSION}.${RPMARCH}.rpm; \ ${PKGNAME}-${VERSION}.${RPMARCH}.rpm; \
rm -rf $$TMPDIR rm -rf $$TMPDIR
srpm: dist-gzip srpm: dist-gzip pkgscripts/libjpeg-turbo.spec
TMPDIR=`mktemp -d /tmp/${PACKAGE_NAME}-build.XXXXXX`; \ TMPDIR=`mktemp -d /tmp/${PACKAGE_NAME}-build.XXXXXX`; \
mkdir -p $$TMPDIR/RPMS; \ mkdir -p $$TMPDIR/RPMS; \
mkdir -p $$TMPDIR/SRPMS; \ mkdir -p $$TMPDIR/SRPMS; \
mkdir -p $$TMPDIR/BUILD; \ mkdir -p $$TMPDIR/BUILD; \
mkdir -p $$TMPDIR/SOURCES; \ mkdir -p $$TMPDIR/SOURCES; \
mkdir -p $$TMPDIR/SPECS; \ mkdir -p $$TMPDIR/SPECS; \
rm -f ${PACKAGE_NAME}-${VERSION}.src.rpm; \ rm -f ${PKGNAME}-${VERSION}.src.rpm; \
cp ${PACKAGE_NAME}-${VERSION}.tar.gz $$TMPDIR/SOURCES; \ cp ${PACKAGE_NAME}-${VERSION}.tar.gz $$TMPDIR/SOURCES; \
cat pkgscripts/libjpeg-turbo.spec | sed s/%{_blddir}/%{_tmppath}/g \ cat pkgscripts/libjpeg-turbo.spec | sed s/%{_blddir}/%{_tmppath}/g \
| sed s/#--\>//g \ | sed s/#--\>//g \
> $$TMPDIR/SPECS/libjpeg-turbo.spec; \ > $$TMPDIR/SPECS/libjpeg-turbo.spec; \
rpmbuild -bs --define "_topdir $$TMPDIR" $$TMPDIR/SPECS/libjpeg-turbo.spec; \ rpmbuild -bs --define "_topdir $$TMPDIR" $$TMPDIR/SPECS/libjpeg-turbo.spec; \
cp $$TMPDIR/SRPMS/${PACKAGE_NAME}-${VERSION}-${BUILD}.src.rpm \ cp $$TMPDIR/SRPMS/${PKGNAME}-${VERSION}-${BUILD}.src.rpm \
${PACKAGE_NAME}-${VERSION}.src.rpm; \ ${PKGNAME}-${VERSION}.src.rpm; \
rm -rf $$TMPDIR rm -rf $$TMPDIR
deb: all pkgscripts/makedpkg: pkgscripts/makedpkg.tmpl
cat pkgscripts/makedpkg.tmpl | sed s@%{__prefix}@$(prefix)@g | \
sed s@%{__docdir}@$(docdir)@g | sed s@%{__libdir}@$(libdir)@g \
> pkgscripts/makedpkg
deb: all pkgscripts/makedpkg
sh pkgscripts/makedpkg sh pkgscripts/makedpkg
pkgscripts/uninstall: pkgscripts/uninstall.tmpl
cat pkgscripts/uninstall.tmpl | sed s@%{__prefix}@$(prefix)@g | \
sed s@%{__bindir}@$(bindir)@g | sed s@%{__datadir}@$(datadir)@g | \
sed s@%{__includedir}@$(includedir)@g | sed s@%{__libdir}@$(libdir)@g | \
sed s@%{__mandir}@$(mandir)@g > pkgscripts/uninstall
pkgscripts/makemacpkg: pkgscripts/makemacpkg.tmpl
cat pkgscripts/makemacpkg.tmpl | sed s@%{__prefix}@$(prefix)@g | \
sed s@%{__bindir}@$(bindir)@g | sed s@%{__docdir}@$(docdir)@g | \
sed s@%{__libdir}@$(libdir)@g > pkgscripts/makemacpkg
if X86_64 if X86_64
udmg: all udmg: all pkgscripts/makemacpkg pkgscripts/uninstall
sh pkgscripts/makemacpkg -builddir32 ${BUILDDIR32} sh pkgscripts/makemacpkg -build32 ${BUILDDIR32}
iosdmg: all iosdmg: all pkgscripts/makemacpkg pkgscripts/uninstall
sh pkgscripts/makemacpkg -builddir32 ${BUILDDIR32} -builddirarmv6 ${BUILDDIRARMV6} -builddirarmv7 ${BUILDDIRARMV7} sh pkgscripts/makemacpkg -build32 ${BUILDDIR32} -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S}
else else
iosdmg: all iosdmg: all pkgscripts/makemacpkg pkgscripts/uninstall
sh pkgscripts/makemacpkg -builddirarmv6 ${BUILDDIRARMV6} -builddirarmv7 ${BUILDDIRARMV7} sh pkgscripts/makemacpkg -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S}
endif endif
dmg: all dmg: all pkgscripts/makemacpkg pkgscripts/uninstall
sh pkgscripts/makemacpkg sh pkgscripts/makemacpkg
if X86_64 pkgscripts/makecygwinpkg: pkgscripts/makecygwinpkg.tmpl
cat pkgscripts/makecygwinpkg.tmpl | sed s@%{__prefix}@$(prefix)@g | \
sed s@%{__docdir}@$(docdir)@g | sed s@%{__libdir}@$(libdir)@g \
> pkgscripts/makecygwinpkg
csunpkg: all cygwinpkg: all pkgscripts/makecygwinpkg
sh pkgscripts/makesunpkg combined ${BUILDDIR32}
endif
sunpkg: all
sh pkgscripts/makesunpkg
cygwinpkg: all
sh pkgscripts/makecygwinpkg sh pkgscripts/makecygwinpkg

36
README
View File

@@ -1,8 +1,8 @@
libjpeg-turbo note: This file contains portions of the libjpeg v6b and v8 libjpeg-turbo note: This file has been modified by The libjpeg-turbo Project
README files, with additional wordsmithing by The libjpeg-turbo Project. to include only information relevant to libjpeg-turbo, to wordsmith certain
It is included only for reference, as some parts of it may not apply to sections, and to remove impolitic language that existed in the libjpeg v8
libjpeg-turbo. Please see README-turbo.txt for information specific to README. It is included only for reference. Please see README-turbo.txt for
libjpeg-turbo. information specific to libjpeg-turbo.
The Independent JPEG Group's JPEG software The Independent JPEG Group's JPEG software
@@ -17,7 +17,8 @@ Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson,
Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers,
and other members of the Independent JPEG Group. and other members of the Independent JPEG Group.
IJG is not affiliated with the official ISO JPEG standards committee. IJG is not affiliated with the ISO/IEC JTC1/SC29/WG1 standards committee
(also known as JPEG, together with ITU-T SG16).
DOCUMENTATION ROADMAP DOCUMENTATION ROADMAP
@@ -45,7 +46,6 @@ Programmer and internal documentation:
libjpeg.txt How to use the JPEG library in your own programs. libjpeg.txt How to use the JPEG library in your own programs.
example.c Sample code for calling the JPEG library. example.c Sample code for calling the JPEG library.
structure.txt Overview of the JPEG library's internal structure. structure.txt Overview of the JPEG library's internal structure.
filelist.txt Road map of IJG files.
coderules.txt Coding style rules --- please read if you contribute code. coderules.txt Coding style rules --- please read if you contribute code.
Please read at least the files install.txt and usage.txt. Some information Please read at least the files install.txt and usage.txt. Some information
@@ -129,7 +129,7 @@ with respect to this software, its quality, accuracy, merchantability, or
fitness for a particular purpose. This software is provided "AS IS", and you, fitness for a particular purpose. This software is provided "AS IS", and you,
its user, assume the entire risk as to its quality and accuracy. its user, assume the entire risk as to its quality and accuracy.
This software is copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding. This software is copyright (C) 1991-2012, Thomas G. Lane, Guido Vollbeding.
All Rights Reserved except as specified below. All Rights Reserved except as specified below.
Permission is hereby granted to use, copy, modify, and distribute this Permission is hereby granted to use, copy, modify, and distribute this
@@ -160,15 +160,6 @@ commercial products, provided that all warranty or liability claims are
assumed by the product vendor. assumed by the product vendor.
ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
ansi2knr.c is NOT covered by the above copyright and conditions, but instead
by the usual distribution terms of the Free Software Foundation; principally,
that you must include source code if you redistribute it. (See the file
ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
of any program generated from the IJG code, this does not limit you more than
the foregoing paragraphs do.
The Unix configuration script "configure" was produced with GNU Autoconf. The Unix configuration script "configure" was produced with GNU Autoconf.
It is copyright by the Free Software Foundation but is freely distributable. It is copyright by the Free Software Foundation but is freely distributable.
The same holds for its supporting scripts (config.guess, config.sub, The same holds for its supporting scripts (config.guess, config.sub,
@@ -274,11 +265,12 @@ with body
FILE FORMAT WARS FILE FORMAT WARS
================ ================
The ISO JPEG standards committee actually promotes different formats like The ISO/IEC JTC1/SC29/WG1 standards committee (also known as JPEG, together
"JPEG 2000" or "JPEG XR", which are incompatible with original DCT-based with ITU-T SG16) currently promotes different formats containing the name
JPEG. IJG therefore does not support these formats (see REFERENCES). Indeed, "JPEG" which are incompatible with original DCT-based JPEG. IJG therefore does
one of the original reasons for developing this free software was to help not support these formats (see REFERENCES). Indeed, one of the original
force convergence on common, interoperable format standards for JPEG files. reasons for developing this free software was to help force convergence on
common, interoperable format standards for JPEG files.
Don't use an incompatible file format! Don't use an incompatible file format!
(In any case, our decoder will remain capable of reading existing JPEG (In any case, our decoder will remain capable of reading existing JPEG
image files indefinitely.) image files indefinitely.)

View File

@@ -2,24 +2,26 @@
** Background ** Background
******************************************************************************* *******************************************************************************
libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, libjpeg-turbo is a JPEG image codec that uses SIMD instructions (MMX, SSE2,
SSE2, NEON) to accelerate baseline JPEG compression and decompression on x86, NEON) to accelerate baseline JPEG compression and decompression on x86, x86-64,
x86-64, and ARM systems. On such systems, libjpeg-turbo is generally 2-4x as and ARM systems. On such systems, libjpeg-turbo is generally 2-4x as fast as
fast as the unmodified version of libjpeg, all else being equal. libjpeg, all else being equal. On other types of systems, libjpeg-turbo can
still outperform libjpeg by a significant amount, by virtue of its
highly-optimized Huffman coding routines. In many cases, the performance of
libjpeg-turbo rivals that of proprietary high-speed JPEG codecs.
libjpeg-turbo was originally based on libjpeg/SIMD by Miyasaka Masaru, but libjpeg-turbo implements both the traditional libjpeg API as well as the less
the TigerVNC and VirtualGL projects made numerous enhancements to the codec in powerful but more straightforward TurboJPEG API. libjpeg-turbo also features
2009, including improved support for Mac OS X, 64-bit support, support for colorspace extensions that allow it to compress from/decompress to 32-bit and
32-bit and big-endian pixel formats (RGBX, XBGR, etc.), accelerated Huffman big-endian pixel buffers (RGBX, XBGR, etc.), as well as a full-featured Java
encoding/decoding, and various bug fixes. The goal was to produce a fully interface.
open-source codec that could replace the partially closed-source TurboJPEG/IPP
codec used by VirtualGL and TurboVNC. libjpeg-turbo generally achieves 80-120%
of the performance of TurboJPEG/IPP. It is faster in some areas but slower in
others.
In early 2010, libjpeg-turbo spun off into its own independent project, with libjpeg-turbo was originally based on libjpeg/SIMD, an MMX-accelerated
the goal of making high-speed JPEG compression/decompression technology derivative of libjpeg v6b developed by Miyasaka Masaru. The TigerVNC and
available to a broader range of users and developers. VirtualGL projects made numerous enhancements to the codec in 2009, and in
early 2010, libjpeg-turbo spun off into an independent project, with the goal
of making high-speed JPEG compression/decompression technology available to a
broader range of users and developers.
******************************************************************************* *******************************************************************************
@@ -27,7 +29,7 @@ available to a broader range of users and developers.
******************************************************************************* *******************************************************************************
Most of libjpeg-turbo inherits the non-restrictive, BSD-style license used by Most of libjpeg-turbo inherits the non-restrictive, BSD-style license used by
libjpeg (see README.) The TurboJPEG/OSS wrapper (both C and Java versions) and libjpeg (see README.) The TurboJPEG wrapper (both C and Java versions) and
associated test programs bear a similar license, which is reproduced below: associated test programs bear a similar license, which is reproduced below:
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
@@ -71,16 +73,32 @@ JPEG images:
libjpeg API: This is the de facto industry-standard API for compressing and libjpeg API: This is the de facto industry-standard API for compressing and
decompressing JPEG images. It is more difficult to use than the TurboJPEG decompressing JPEG images. It is more difficult to use than the TurboJPEG
API but also more powerful. libjpeg-turbo is both API/ABI-compatible and API but also more powerful. The libjpeg API implementation in libjpeg-turbo
mathematically compatible with libjpeg v6b. It can also optionally be is both API/ABI-compatible and mathematically compatible with libjpeg v6b.
configured to be API/ABI-compatible with libjpeg v7 and v8 (see below.) It can also optionally be configured to be API/ABI-compatible with libjpeg v7
and v8 (see below.)
There is no significant performance advantage to either API when both are used
to perform similar operations.
======================
Installation Directory
======================
This document assumes that libjpeg-turbo will be installed in the default
directory (/opt/libjpeg-turbo on Un*x and Mac systems and
c:\libjpeg-turbo[-gcc][64] on Windows systems. If your installation of
libjpeg-turbo resides in a different directory, then adjust the instructions
accordingly.
============================= =============================
Replacing libjpeg at Run Time Replacing libjpeg at Run Time
============================= =============================
If a Unix application is dynamically linked with libjpeg, then you can replace Un*x
----
If a Un*x application is dynamically linked with libjpeg, then you can replace
libjpeg with libjpeg-turbo at run time by manipulating LD_LIBRARY_PATH. libjpeg with libjpeg-turbo at run time by manipulating LD_LIBRARY_PATH.
For instance: For instance:
@@ -97,67 +115,51 @@ For instance:
user 0m0.029s user 0m0.029s
sys 0m0.010s sys 0m0.010s
NOTE: {lib} can be lib, lib32, lib64, or lib/64, depending on the O/S and ({lib} = lib32 or lib64, depending on whether you wish to use the 32-bit or the
architecture. 64-bit version of libjpeg-turbo.)
System administrators can also replace the libjpeg sym links in /usr/{lib} with System administrators can also replace the libjpeg symlinks in /usr/lib* with
links to the libjpeg-turbo dynamic library located in /opt/libjpeg-turbo/{lib}. links to the libjpeg-turbo dynamic library located in /opt/libjpeg-turbo/{lib}.
This will effectively accelerate every application that uses the libjpeg This will effectively accelerate every application that uses the libjpeg
dynamic library on the system. dynamic library on the system.
The libjpeg-turbo SDK for Visual C++ installs the libjpeg-turbo DLL Windows
(jpeg62.dll, jpeg7.dll, or jpeg8.dll, depending on whether it was built with -------
libjpeg v6b, v7, or v8 emulation) into c:\libjpeg-turbo[64]\bin, and the PATH
environment variable can be modified such that this directory is searched
before any others that might contain a libjpeg DLL. However, if a libjpeg
DLL exists in an application's install directory, then Windows will load this
DLL first whenever the application is launched. Thus, if an application ships
with jpeg62.dll, jpeg7.dll, or jpeg8.dll, then back up the application's
version of this DLL and copy c:\libjpeg-turbo[64]\bin\jpeg*.dll into the
application's install directory to accelerate it.
The version of the libjpeg-turbo DLL distributed in the libjpeg-turbo SDK for If a Windows application is dynamically linked with libjpeg, then you can
Visual C++ requires the Visual C++ 2008 C run-time DLL (msvcr90.dll). replace libjpeg with libjpeg-turbo at run time by backing up the application's
copy of jpeg62.dll, jpeg7.dll, or jpeg8.dll (assuming the application has its
own local copy of this library) and copying the corresponding DLL from
libjpeg-turbo into the application's install directory. The official
libjpeg-turbo binary packages only provide jpeg62.dll. If the application uses
jpeg7.dll or jpeg8.dll instead, then it will be necessary to build
libjpeg-turbo from source (see "libjpeg v7 and v8 API/ABI Emulation" below.)
The following information is specific to the official libjpeg-turbo binary
packages for Visual C++:
-- jpeg62.dll requires the Visual C++ 2008 C run-time DLL (msvcr90.dll).
msvcr90.dll ships with more recent versions of Windows, but users of older msvcr90.dll ships with more recent versions of Windows, but users of older
Windows releases can obtain it from the Visual C++ 2008 Redistributable Windows releases can obtain it from the Visual C++ 2008 Redistributable
Package, which is available as a free download from Microsoft's web site. Package, which is available as a free download from Microsoft's web site.
NOTE: Features of libjpeg that require passing a C run-time structure, such -- Features of the libjpeg API that require passing a C run-time structure,
as a file handle, from an application to libjpeg will probably not work with such as a file handle, from an application to the library will probably not
the version of the libjpeg-turbo DLL distributed in the libjpeg-turbo SDK for work with jpeg62.dll, unless the application is also built to use the Visual
Visual C++, unless the application is also built to use the Visual C++ 2008 C C++ 2008 C run-time DLL. In particular, this affects jpeg_stdio_dest() and
run-time DLL. In particular, this affects jpeg_stdio_dest() and
jpeg_stdio_src(). jpeg_stdio_src().
Mac
---
Mac applications typically embed their own copies of the libjpeg dylib inside Mac applications typically embed their own copies of the libjpeg dylib inside
the (hidden) application bundle, so it is not possible to globally replace the (hidden) application bundle, so it is not possible to globally replace
libjpeg on OS X systems. If an application uses a shared library version of libjpeg on OS X systems. Replacing the application's version of the libjpeg
libjpeg, then it may be possible to replace the application's version of it. dylib would generally involve copying libjpeg.*.dylib from libjpeg-turbo into
This would generally involve copying libjpeg.*.dylib from libjpeg-turbo into
the appropriate place in the application bundle and using install_name_tool to the appropriate place in the application bundle and using install_name_tool to
repoint the dylib to the new directory. This requires an advanced knowledge of repoint the libjpeg-turbo dylib to its new directory. This requires an
OS X and would not survive an upgrade or a re-install of the application. advanced knowledge of OS X and would not survive an upgrade or a re-install of
Thus, it is not recommended for most users. the application. Thus, it is not recommended for most users.
=======================
Replacing TurboJPEG/IPP
=======================
libjpeg-turbo is a drop-in replacement for the TurboJPEG/IPP SDK used by
VirtualGL 2.1.x and TurboVNC 0.6 (and prior.) libjpeg-turbo contains a wrapper
library (TurboJPEG/OSS) that emulates the TurboJPEG API using libjpeg-turbo
instead of the closed-source Intel Performance Primitives. You can replace the
TurboJPEG/IPP package on Linux systems with the libjpeg-turbo package in order
to make existing releases of VirtualGL 2.1.x and TurboVNC 0.x use the new codec
at run time. Note that the 64-bit libjpeg-turbo packages contain only 64-bit
binaries, whereas the TurboJPEG/IPP 64-bit packages contained both 64-bit and
32-bit binaries. Thus, to replace a TurboJPEG/IPP 64-bit package, install
both the 64-bit and 32-bit versions of libjpeg-turbo.
You can also build the VirtualGL 2.1.x and TurboVNC 0.6 source code with
the libjpeg-turbo SDK instead of TurboJPEG/IPP. It should work identically.
libjpeg-turbo also includes static library versions of TurboJPEG/OSS, which
are used to build VirtualGL 2.2 and TurboVNC 1.0 and later.
======================================== ========================================
Using libjpeg-turbo in Your Own Programs Using libjpeg-turbo in Your Own Programs
@@ -165,8 +167,8 @@ Using libjpeg-turbo in Your Own Programs
For the most part, libjpeg-turbo should work identically to libjpeg, so in For the most part, libjpeg-turbo should work identically to libjpeg, so in
most cases, an application can be built against libjpeg and then run against most cases, an application can be built against libjpeg and then run against
libjpeg-turbo. On Unix systems (including Cygwin), you can build against libjpeg-turbo. On Un*x systems and Cygwin, you can build against libjpeg-turbo
libjpeg-turbo instead of libjpeg by setting instead of libjpeg by setting
CPATH=/opt/libjpeg-turbo/include CPATH=/opt/libjpeg-turbo/include
and and
@@ -183,20 +185,20 @@ If using MinGW, then set
Building against libjpeg-turbo is useful, for instance, if you want to build an Building against libjpeg-turbo is useful, for instance, if you want to build an
application that leverages the libjpeg-turbo colorspace extensions (see below.) application that leverages the libjpeg-turbo colorspace extensions (see below.)
On Linux and Solaris systems, you would still need to manipulate On Un*x systems, you would still need to manipulate LD_LIBRARY_PATH or create
LD_LIBRARY_PATH or create appropriate sym links to use libjpeg-turbo at run appropriate symlinks to use libjpeg-turbo at run time. On such systems, you
time. On such systems, you can pass -R /opt/libjpeg-turbo/{lib} to the linker can pass -R /opt/libjpeg-turbo/{lib} to the linker to force the use of
to force the use of libjpeg-turbo at run time rather than libjpeg (also useful libjpeg-turbo at run time rather than libjpeg (also useful if you want to
if you want to leverage the colorspace extensions), or you can link against the leverage the colorspace extensions), or you can link against the libjpeg-turbo
libjpeg-turbo static library. static library.
To force a Linux, Solaris, or MinGW application to link against the static To force a Un*x or MinGW application to link against the static version of
version of libjpeg-turbo, you can use the following linker options: libjpeg-turbo, you can use the following linker options:
-Wl,-Bstatic -ljpeg -Wl,-Bdynamic -Wl,-Bstatic -ljpeg -Wl,-Bdynamic
On OS X, simply add /opt/libjpeg-turbo/lib/libjpeg.a to the linker command On OS X, simply add /opt/libjpeg-turbo/lib/libjpeg.a to the linker command
line (this also works on Linux and Solaris.) line.
To build Visual C++ applications using libjpeg-turbo, add To build Visual C++ applications using libjpeg-turbo, add
c:\libjpeg-turbo[64]\include to the system or user INCLUDE environment c:\libjpeg-turbo[64]\include to the system or user INCLUDE environment
@@ -234,8 +236,10 @@ time with:
#ifdef JCS_EXTENSIONS #ifdef JCS_EXTENSIONS
At run time, attempting to use these extensions with a version of libjpeg At run time, attempting to use these extensions with a libjpeg implementation
that doesn't support them will result in a "Bogus input colorspace" error. that does not support them will result in a "Bogus input colorspace" error.
Applications can trap this error in order to test whether run-time support is
available for the colorspace extensions.
When using the RGBX, BGRX, XBGR, and XRGB colorspaces during decompression, the When using the RGBX, BGRX, XBGR, and XRGB colorspaces during decompression, the
X byte is undefined, and in order to ensure the best performance, libjpeg-turbo X byte is undefined, and in order to ensure the best performance, libjpeg-turbo
@@ -252,34 +256,47 @@ extensions at compile time with:
jcstest.c, located in the libjpeg-turbo source tree, demonstrates how to check jcstest.c, located in the libjpeg-turbo source tree, demonstrates how to check
for the existence of the colorspace extensions at compile time and run time. for the existence of the colorspace extensions at compile time and run time.
================================= ===================================
libjpeg v7 and v8 API/ABI support libjpeg v7 and v8 API/ABI Emulation
================================= ===================================
With libjpeg v7 and v8, new features were added that necessitated extending the With libjpeg v7 and v8, new features were added that necessitated extending the
compression and decompression structures. Unfortunately, due to the exposed compression and decompression structures. Unfortunately, due to the exposed
nature of those structures, extending them also necessitated breaking backward nature of those structures, extending them also necessitated breaking backward
ABI compatibility with previous libjpeg releases. Thus, programs that are ABI compatibility with previous libjpeg releases. Thus, programs that were
built to use libjpeg v7 or v8 did not work with libjpeg-turbo, since it is built to use libjpeg v7 or v8 did not work with libjpeg-turbo, since it is
based on the libjpeg v6b code base. Although libjpeg v7 and v8 are still not based on the libjpeg v6b code base. Although libjpeg v7 and v8 are still not
as widely used as v6b, enough programs (including a few Linux distros) have as widely used as v6b, enough programs (including a few Linux distros) made
made the switch that it was desirable to provide support for the libjpeg v7/v8 the switch that there was a demand to emulate the libjpeg v7 and v8 ABIs
API/ABI in libjpeg-turbo. Although libjpeg-turbo can now be configured as a in libjpeg-turbo. It should be noted, however, that this feature was added
drop-in replacement for libjpeg v7 or v8, it should be noted that not all of primarily so that applications that had already been compiled to use libjpeg
the features in libjpeg v7 and v8 are supported (see below.) v7+ could take advantage of accelerated baseline JPEG encoding/decoding
without recompiling. libjpeg-turbo does not claim to support all of the
libjpeg v7+ features, nor to produce identical output to libjpeg v7+ in all
cases (see below.)
By passing an argument of --with-jpeg7 or --with-jpeg8 to configure, or an By passing an argument of --with-jpeg7 or --with-jpeg8 to configure, or an
argument of -DWITH_JPEG7=1 or -DWITH_JPEG8=1 to cmake, you can build a version argument of -DWITH_JPEG7=1 or -DWITH_JPEG8=1 to cmake, you can build a version
of libjpeg-turbo that emulates the libjpeg v7 or v8 API/ABI, so that programs of libjpeg-turbo that emulates the libjpeg v7 or v8 ABI, so that programs
that are built against libjpeg v7 or v8 can be run with libjpeg-turbo. The that are built against libjpeg v7 or v8 can be run with libjpeg-turbo. The
following section describes which libjpeg v7+ features are supported and which following section describes which libjpeg v7+ features are supported and which
aren't. aren't.
libjpeg v7 and v8 Features: Support for libjpeg v7 and v8 Features:
--------------------------- ---------------------------------------
Fully supported: Fully supported:
-- libjpeg: IDCT scaling extensions in decompressor
libjpeg-turbo supports IDCT scaling with scaling factors of 1/8, 1/4, 3/8,
1/2, 5/8, 3/4, 7/8, 9/8, 5/4, 11/8, 3/2, 13/8, 7/4, 15/8, and 2/1 (only 1/4
and 1/2 are SIMD-accelerated.)
-- libjpeg: arithmetic coding
-- libjpeg: In-memory source and destination managers
See notes below.
-- cjpeg: Separate quality settings for luminance and chrominance -- cjpeg: Separate quality settings for luminance and chrominance
Note that the libpjeg v7+ API was extended to accommodate this feature only Note that the libpjeg v7+ API was extended to accommodate this feature only
for convenience purposes. It has always been possible to implement this for convenience purposes. It has always been possible to implement this
@@ -287,38 +304,47 @@ Fully supported:
-- cjpeg: 32-bit BMP support -- cjpeg: 32-bit BMP support
-- cjpeg: -rgb option
-- jpegtran: lossless cropping -- jpegtran: lossless cropping
-- jpegtran: -perfect option -- jpegtran: -perfect option
-- jpegtran: forcing width/height when performing lossless crop
-- rdjpgcom: -raw option -- rdjpgcom: -raw option
-- rdjpgcom: locale awareness -- rdjpgcom: locale awareness
Fully supported when using libjpeg v7/v8 emulation:
-- libjpeg: In-memory source and destination managers
Not supported: Not supported:
NOTE: As of this writing, extensive research has been conducted into the
usefulness of DCT scaling as a means of data reduction and SmartScale as a
means of quality improvement. The reader is invited to peruse the research at
http://www.libjpeg-turbo.org/About/SmartScale and draw his/her own conclusions,
but it is the general belief of our project that these features have not
demonstrated sufficient usefulness to justify inclusion in libjpeg-turbo.
-- libjpeg: DCT scaling in compressor -- libjpeg: DCT scaling in compressor
cinfo.scale_num and cinfo.scale_denom are silently ignored. cinfo.scale_num and cinfo.scale_denom are silently ignored.
There is no technical reason why DCT scaling cannot be supported, but There is no technical reason why DCT scaling could not be supported when
without the SmartScale extension (see below), it would only be able to emulating the libjpeg v7+ API/ABI, but without the SmartScale extension (see
down-scale using ratios of 1/2, 8/15, 4/7, 8/13, 2/3, 8/11, 4/5, and 8/9, below), only scaling factors of 1/2, 8/15, 4/7, 8/13, 2/3, 8/11, 4/5, and
which is of limited usefulness. 8/9 would be available, which is of limited usefulness.
-- libjpeg: SmartScale -- libjpeg: SmartScale
cinfo.block_size is silently ignored. cinfo.block_size is silently ignored.
SmartScale is an extension to the JPEG format that allows for DCT block SmartScale is an extension to the JPEG format that allows for DCT block
sizes other than 8x8. It would be difficult to support this feature while sizes other than 8x8. Providing support for this new format would be
retaining backward compatibility with libjpeg v6b. feasible (particularly without full acceleration.) However, until/unless
the format becomes either an official industry standard or, at minimum, an
-- libjpeg: IDCT scaling extensions in decompressor accepted solution in the community, we are hesitant to implement it, as
libjpeg-turbo still supports IDCT scaling with scaling factors of 1/2, 1/4, there is no sense of whether or how it might change in the future. It is
and 1/8 (same as libjpeg v6b.) our belief that SmartScale has not demonstrated sufficient usefulness as a
lossless format nor as a means of quality enhancement, and thus, our primary
interest in providing this feature would be as a means of supporting
additional DCT scaling factors.
-- libjpeg: Fancy downsampling in compressor -- libjpeg: Fancy downsampling in compressor
cinfo.do_fancy_downsampling is silently ignored. cinfo.do_fancy_downsampling is silently ignored.
@@ -331,9 +357,97 @@ Not supported:
-- Lossless RGB JPEG files -- Lossless RGB JPEG files
This requires the SmartScale feature, which is not supported. This requires the SmartScale feature, which is not supported.
What About libjpeg v9?
----------------------
libjpeg v9 introduced yet another field to the JPEG compression structure
(color_transform), thus making the ABI backward incompatible with that of
libjpeg v8. This new field was introduced solely for the purpose of supporting
lossless SmartScale encoding. Further, there was actually no reason to extend
the API in this manner, as the color transform could have just as easily been
activated by way of a new JPEG colorspace constant, thus preserving backward
ABI compatibility.
Our research (see link above) has shown that lossless SmartScale does not
generally accomplish anything that can't already be accomplished better with
existing, standard lossless formats. Thus, at this time, it is our belief that
there is not sufficient technical justification for software to upgrade from
libjpeg v8 to libjpeg v9, and therefore, not sufficient technical justification
for us to emulate the libjpeg v9 ABI.
=====================================
In-Memory Source/Destination Managers
=====================================
By default, libjpeg-turbo 1.3 and later includes the jpeg_mem_src() and
jpeg_mem_dest() functions, even when not emulating the libjpeg v8 API/ABI.
Previously, it was necessary to build libjpeg-turbo from source with libjpeg v8
API/ABI emulation in order to use the in-memory source/destination managers,
but several projects requested that those functions be included when emulating
the libjpeg v6b API/ABI as well. This allows the use of those functions by
programs that need them without breaking ABI compatibility for programs that
don't, and it allows those functions to be provided in the "official"
libjpeg-turbo binaries.
Those who are concerned about maintaining strict conformance with the libjpeg
v6b or v7 API can pass an argument of --without-mem-srcdst to configure or
an argument of -DWITH_MEM_SRCDST=0 to CMake prior to building libjpeg-turbo.
This will restore the pre-1.3 behavior, in which jpeg_mem_src() and
jpeg_mem_dest() are only included when emulating the libjpeg v8 API/ABI.
On Un*x systems, including the in-memory source/destination managers changes
the dynamic library version from 62.0.0 to 62.1.0 if using libjpeg v6b API/ABI
emulation and from 7.0.0 to 7.1.0 if using libjpeg v7 API/ABI emulation.
Note that, on most Un*x systems, the dynamic linker will not look for a
function in a library until that function is actually used. Thus, if a program
is built against libjpeg-turbo 1.3+ and uses jpeg_mem_src() or jpeg_mem_dest(),
that program will not fail if run against an older version of libjpeg-turbo or
against libjpeg v7- until the program actually tries to call jpeg_mem_src() or
jpeg_mem_dest(). Such is not the case on Windows. If a program is built
against the libjpeg-turbo 1.3+ DLL and uses jpeg_mem_src() or jpeg_mem_dest(),
then it must use the libjpeg-turbo 1.3+ DLL at run time.
Both cjpeg and djpeg have been extended to allow testing the in-memory
source/destination manager functions. See their respective man pages for more
details.
******************************************************************************* *******************************************************************************
** Performance pitfalls ** Mathematical Compatibility
*******************************************************************************
For the most part, libjpeg-turbo should produce identical output to libjpeg
v6b. The one exception to this is when using the floating point DCT/IDCT, in
which case the outputs of libjpeg v6b and libjpeg-turbo are not guaranteed to
be identical (the accuracy of the floating point DCT/IDCT is constant when
using libjpeg-turbo's SIMD extensions, but otherwise, it can depend heavily on
the compiler and compiler settings.)
While libjpeg-turbo does emulate the libjpeg v8 API/ABI, under the hood, it is
still using the same algorithms as libjpeg v6b, so there are several specific
cases in which libjpeg-turbo cannot be expected to produce the same output as
libjpeg v8:
-- When decompressing using scaling factors of 1/2 and 1/4, because libjpeg v8
implements those scaling algorithms a bit differently than libjpeg v6b does,
and libjpeg-turbo's SIMD extensions are based on the libjpeg v6b behavior.
-- When using chrominance subsampling, because libjpeg v8 implements this
with its DCT/IDCT scaling algorithms rather than with a separate
downsampling/upsampling algorithm.
-- When using the floating point IDCT, for the reasons stated above and also
because the floating point IDCT algorithm was modified in libjpeg v8a to
improve accuracy.
-- When decompressing using a scaling factor > 1 and merged (AKA "non-fancy" or
"non-smooth") chrominance upsampling, because libjpeg v8 does not support
merged upsampling with scaling factors > 1.
*******************************************************************************
** Performance Pitfalls
******************************************************************************* *******************************************************************************
=============== ===============

View File

@@ -40,7 +40,7 @@ case "$host_os" in
;; ;;
esac esac
;; ;;
freebsd* | netbsd* | openbsd*) kfreebsd* | freebsd* | netbsd* | openbsd*)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
objfmt='BSD-a.out' objfmt='BSD-a.out'
else else
@@ -144,26 +144,26 @@ AC_DEFUN([AC_CHECK_COMPATIBLE_ARM_ASSEMBLER_IFELSE],[
ac_save_CFLAGS="$CFLAGS" ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CCASFLAGS -x assembler-with-cpp" CFLAGS="$CCASFLAGS -x assembler-with-cpp"
CC="$CCAS" CC="$CCAS"
AC_COMPILE_IFELSE([[ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
.text .text
.fpu neon .fpu neon
.arch armv7a .arch armv7a
.object_arch armv4 .object_arch armv4
.arm .arm
pld [r0] pld [r0]
vmovn.u16 d0, q0]], ac_good_gnu_arm_assembler=yes) vmovn.u16 d0, q0]])], ac_good_gnu_arm_assembler=yes)
ac_use_gas_preprocessor=no ac_use_gas_preprocessor=no
if test "x$ac_good_gnu_arm_assembler" = "xno" ; then if test "x$ac_good_gnu_arm_assembler" = "xno" ; then
CC="gas-preprocessor.pl $CCAS" CC="gas-preprocessor.pl $CCAS"
AC_COMPILE_IFELSE([[ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
.text .text
.fpu neon .fpu neon
.arch armv7a .arch armv7a
.object_arch armv4 .object_arch armv4
.arm .arm
pld [r0] pld [r0]
vmovn.u16 d0, q0]], ac_use_gas_preprocessor=yes) vmovn.u16 d0, q0]])], ac_use_gas_preprocessor=yes)
fi fi
CFLAGS="$ac_save_CFLAGS" CFLAGS="$ac_save_CFLAGS"
CC="$ac_save_CC" CC="$ac_save_CC"

6
bmp.c
View File

@@ -169,7 +169,7 @@ int loadbmp(char *filename, unsigned char **buf, int *w, int *h,
nlines); nlines);
} }
cinfo.next_scanline+=nlines; cinfo.next_scanline+=nlines;
} }
(*src->finish_input)(&cinfo, src); (*src->finish_input)(&cinfo, src);
@@ -236,7 +236,7 @@ int savebmp(char *filename, unsigned char *buf, int w, int h, int srcpf,
_throw("savebmp(): Could not initialize PPM writer"); _throw("savebmp(): Could not initialize PPM writer");
} }
dst->output_file=file; dst->output_file=file;
(*dst->start_output)(&dinfo, dst); (*dst->start_output)(&dinfo, dst);
(*dinfo.mem->realize_virt_arrays)((j_common_ptr)&dinfo); (*dinfo.mem->realize_virt_arrays)((j_common_ptr)&dinfo);
@@ -258,7 +258,7 @@ int savebmp(char *filename, unsigned char *buf, int w, int h, int srcpf,
} }
(*dst->put_pixel_rows)(&dinfo, dst, nlines); (*dst->put_pixel_rows)(&dinfo, dst, nlines);
dinfo.output_scanline+=nlines; dinfo.output_scanline+=nlines;
} }
(*dst->finish_output)(&dinfo, dst); (*dst->finish_output)(&dinfo, dst);

4
bmp.h
View File

@@ -39,8 +39,4 @@ int savebmp(char *filename, unsigned char *buf, int w, int h, int pf,
const char *bmpgeterr(void); const char *bmpgeterr(void);
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@@ -1,6 +1,21 @@
NOTE: This file was modified by The libjpeg-turbo Project to include only
information relevant to libjpeg-turbo.
CHANGE LOG for Independent JPEG Group's JPEG software CHANGE LOG for Independent JPEG Group's JPEG software
Version 8d 15-Jan-2012
-----------------------
Add cjpeg -rgb option to create RGB JPEG files.
Using this switch suppresses the conversion from RGB
colorspace input to the default YCbCr JPEG colorspace.
Thank to Michael Koch for the initial suggestion.
Add option to disable the region adjustment in the transupp crop code.
Thank to Jeffrey Friedl for the suggestion.
Version 8b 16-May-2010 Version 8b 16-May-2010
----------------------- -----------------------
@@ -31,6 +46,9 @@ Thank to Roberto Boni from Italy for the suggestion.
Version 7 27-Jun-2009 Version 7 27-Jun-2009
---------------------- ----------------------
New scaled DCTs implemented.
djpeg now supports scalings N/8 with all N from 1 to 16.
cjpeg -quality option has been extended for support of separate quality cjpeg -quality option has been extended for support of separate quality
settings for luminance and chrominance (or in general, for every provided settings for luminance and chrominance (or in general, for every provided
quantization table slot). quantization table slot).

16
cjpeg.1
View File

@@ -1,4 +1,4 @@
.TH CJPEG 1 "31 January 2012" .TH CJPEG 1 "18 January 2013"
.SH NAME .SH NAME
cjpeg \- compress an image file to a JPEG file cjpeg \- compress an image file to a JPEG file
.SH SYNOPSIS .SH SYNOPSIS
@@ -49,6 +49,11 @@ By saying
.BR \-grayscale , .BR \-grayscale ,
you'll get a smaller JPEG file that takes less time to process. you'll get a smaller JPEG file that takes less time to process.
.TP .TP
.B \-rgb
Create RGB JPEG file.
Using this switch suppresses the conversion from RGB
colorspace input to the default YCbCr JPEG colorspace.
.TP
.B \-optimize .B \-optimize
Perform optimization of entropy encoding parameters. Without this, default Perform optimization of entropy encoding parameters. Without this, default
encoding parameters are used. encoding parameters are used.
@@ -190,6 +195,11 @@ selects 4000000 bytes. If more space is needed, temporary files will be used.
.BI \-outfile " name" .BI \-outfile " name"
Send output image to the named file, not to standard output. Send output image to the named file, not to standard output.
.TP .TP
.BI \-memdst
Compress to memory instead of a file. This feature was implemented mainly as a
way of testing the in-memory destination manager (jpeg_mem_dest()), but it is
also useful for benchmarking, since it reduces the I/O overhead.
.TP
.B \-verbose .B \-verbose
Enable debug printout. More Enable debug printout. More
.BR \-v 's .BR \-v 's
@@ -308,6 +318,10 @@ Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44. Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
.SH AUTHOR .SH AUTHOR
Independent JPEG Group Independent JPEG Group
.PP
This file was modified by The libjpeg-turbo Project to include only information
relevant to libjpeg-turbo, to wordsmith certain sections, and to describe
features not present in libjpeg.
.SH BUGS .SH BUGS
Support for GIF input files was removed in cjpeg v6b due to concerns over Support for GIF input files was removed in cjpeg v6b due to concerns over
the Unisys LZW patent. Although this patent expired in 2006, cjpeg still the Unisys LZW patent. Although this patent expired in 2006, cjpeg still

84
cjpeg.c
View File

@@ -1,10 +1,11 @@
/* /*
* cjpeg.c * cjpeg.c
* *
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1998, Thomas G. Lane. * Copyright (C) 1991-1998, Thomas G. Lane.
* Modified 2003-2008 by Guido Vollbeding. * Modified 2003-2011 by Guido Vollbeding.
* Copyright (C) 2010, D. R. Commander. * libjpeg-turbo Modifications:
* This file is part of the Independent JPEG Group's software. * Copyright (C) 2010, 2013, D. R. Commander.
* For conditions of distribution and use, see the accompanying README file. * For conditions of distribution and use, see the accompanying README file.
* *
* This file contains a command-line user interface for the JPEG compressor. * This file contains a command-line user interface for the JPEG compressor.
@@ -138,6 +139,7 @@ select_file_type (j_compress_ptr cinfo, FILE * infile)
static const char * progname; /* program name for error messages */ static const char * progname; /* program name for error messages */
static char * outfilename; /* for -outfile switch */ static char * outfilename; /* for -outfile switch */
boolean memdst; /* for -memdst switch */
LOCAL(void) LOCAL(void)
@@ -154,6 +156,7 @@ usage (void)
fprintf(stderr, "Switches (names may be abbreviated):\n"); fprintf(stderr, "Switches (names may be abbreviated):\n");
fprintf(stderr, " -quality N[,...] Compression quality (0..100; 5-95 is useful range)\n"); fprintf(stderr, " -quality N[,...] Compression quality (0..100; 5-95 is useful range)\n");
fprintf(stderr, " -grayscale Create monochrome JPEG file\n"); fprintf(stderr, " -grayscale Create monochrome JPEG file\n");
fprintf(stderr, " -rgb Create RGB JPEG file\n");
#ifdef ENTROPY_OPT_SUPPORTED #ifdef ENTROPY_OPT_SUPPORTED
fprintf(stderr, " -optimize Optimize Huffman table (smaller file, but slow compression)\n"); fprintf(stderr, " -optimize Optimize Huffman table (smaller file, but slow compression)\n");
#endif #endif
@@ -185,6 +188,9 @@ usage (void)
#endif #endif
fprintf(stderr, " -maxmemory N Maximum memory to use (in kbytes)\n"); fprintf(stderr, " -maxmemory N Maximum memory to use (in kbytes)\n");
fprintf(stderr, " -outfile name Specify name for output file\n"); fprintf(stderr, " -outfile name Specify name for output file\n");
#if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
fprintf(stderr, " -memdst Compress to memory instead of file (useful for benchmarking)\n");
#endif
fprintf(stderr, " -verbose or -debug Emit debug output\n"); fprintf(stderr, " -verbose or -debug Emit debug output\n");
fprintf(stderr, "Switches for wizards:\n"); fprintf(stderr, "Switches for wizards:\n");
fprintf(stderr, " -baseline Force baseline quantization tables\n"); fprintf(stderr, " -baseline Force baseline quantization tables\n");
@@ -226,6 +232,7 @@ parse_switches (j_compress_ptr cinfo, int argc, char **argv,
simple_progressive = FALSE; simple_progressive = FALSE;
is_targa = FALSE; is_targa = FALSE;
outfilename = NULL; outfilename = NULL;
memdst = FALSE;
cinfo->err->trace_level = 0; cinfo->err->trace_level = 0;
/* Scan command line options, adjust parameters */ /* Scan command line options, adjust parameters */
@@ -278,7 +285,7 @@ parse_switches (j_compress_ptr cinfo, int argc, char **argv,
fprintf(stderr, "%s version %s (build %s)\n", fprintf(stderr, "%s version %s (build %s)\n",
PACKAGE_NAME, VERSION, BUILD); PACKAGE_NAME, VERSION, BUILD);
fprintf(stderr, "%s\n\n", JCOPYRIGHT); fprintf(stderr, "%s\n\n", JCOPYRIGHT);
fprintf(stderr, "Emulating The Independent JPEG Group's libjpeg, version %s\n\n", fprintf(stderr, "Emulating The Independent JPEG Group's software, version %s\n\n",
JVERSION); JVERSION);
printed_version = TRUE; printed_version = TRUE;
} }
@@ -288,6 +295,10 @@ parse_switches (j_compress_ptr cinfo, int argc, char **argv,
/* Force a monochrome JPEG file to be generated. */ /* Force a monochrome JPEG file to be generated. */
jpeg_set_colorspace(cinfo, JCS_GRAYSCALE); jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);
} else if (keymatch(arg, "rgb", 3)) {
/* Force an RGB JPEG file to be generated. */
jpeg_set_colorspace(cinfo, JCS_RGB);
} else if (keymatch(arg, "maxmemory", 3)) { } else if (keymatch(arg, "maxmemory", 3)) {
/* Maximum memory in Kb (or Mb with 'm'). */ /* Maximum memory in Kb (or Mb with 'm'). */
long lval; long lval;
@@ -306,7 +317,7 @@ parse_switches (j_compress_ptr cinfo, int argc, char **argv,
#ifdef ENTROPY_OPT_SUPPORTED #ifdef ENTROPY_OPT_SUPPORTED
cinfo->optimize_coding = TRUE; cinfo->optimize_coding = TRUE;
#else #else
fprintf(stderr, "%s: sorry, entropy optimization was not compiled\n", fprintf(stderr, "%s: sorry, entropy optimization was not compiled in\n",
progname); progname);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
#endif #endif
@@ -323,11 +334,21 @@ parse_switches (j_compress_ptr cinfo, int argc, char **argv,
simple_progressive = TRUE; simple_progressive = TRUE;
/* We must postpone execution until num_components is known. */ /* We must postpone execution until num_components is known. */
#else #else
fprintf(stderr, "%s: sorry, progressive output was not compiled\n", fprintf(stderr, "%s: sorry, progressive output was not compiled in\n",
progname); progname);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
#endif #endif
} else if (keymatch(arg, "memdst", 2)) {
/* Use in-memory destination manager */
#if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
memdst = TRUE;
#else
fprintf(stderr, "%s: sorry, in-memory destination manager was not compiled in\n",
progname);
exit(EXIT_FAILURE);
#endif
} else if (keymatch(arg, "quality", 1)) { } else if (keymatch(arg, "quality", 1)) {
/* Quality ratings (quantization table scaling factors). */ /* Quality ratings (quantization table scaling factors). */
if (++argn >= argc) /* advance to next argument */ if (++argn >= argc) /* advance to next argument */
@@ -388,7 +409,7 @@ parse_switches (j_compress_ptr cinfo, int argc, char **argv,
scansarg = argv[argn]; scansarg = argv[argn];
/* We must postpone reading the file in case -progressive appears. */ /* We must postpone reading the file in case -progressive appears. */
#else #else
fprintf(stderr, "%s: sorry, multi-scan output was not compiled\n", fprintf(stderr, "%s: sorry, multi-scan output was not compiled in\n",
progname); progname);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
#endif #endif
@@ -467,7 +488,9 @@ main (int argc, char **argv)
int file_index; int file_index;
cjpeg_source_ptr src_mgr; cjpeg_source_ptr src_mgr;
FILE * input_file; FILE * input_file;
FILE * output_file; FILE * output_file = NULL;
unsigned char *outbuffer = NULL;
unsigned long outsize = 0;
JDIMENSION num_scanlines; JDIMENSION num_scanlines;
/* On Mac, fetch a command line. */ /* On Mac, fetch a command line. */
@@ -510,19 +533,21 @@ main (int argc, char **argv)
file_index = parse_switches(&cinfo, argc, argv, 0, FALSE); file_index = parse_switches(&cinfo, argc, argv, 0, FALSE);
#ifdef TWO_FILE_COMMANDLINE #ifdef TWO_FILE_COMMANDLINE
/* Must have either -outfile switch or explicit output file name */ if (!memdst) {
if (outfilename == NULL) { /* Must have either -outfile switch or explicit output file name */
if (file_index != argc-2) { if (outfilename == NULL) {
fprintf(stderr, "%s: must name one input and one output file\n", if (file_index != argc-2) {
progname); fprintf(stderr, "%s: must name one input and one output file\n",
usage(); progname);
} usage();
outfilename = argv[file_index+1]; }
} else { outfilename = argv[file_index+1];
if (file_index != argc-1) { } else {
fprintf(stderr, "%s: must name one input and one output file\n", if (file_index != argc-1) {
progname); fprintf(stderr, "%s: must name one input and one output file\n",
usage(); progname);
usage();
}
} }
} }
#else #else
@@ -550,7 +575,7 @@ main (int argc, char **argv)
fprintf(stderr, "%s: can't open %s\n", progname, outfilename); fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} else { } else if (!memdst) {
/* default output file is stdout */ /* default output file is stdout */
output_file = write_stdout(); output_file = write_stdout();
} }
@@ -573,7 +598,12 @@ main (int argc, char **argv)
file_index = parse_switches(&cinfo, argc, argv, 0, TRUE); file_index = parse_switches(&cinfo, argc, argv, 0, TRUE);
/* Specify data destination for compression */ /* Specify data destination for compression */
jpeg_stdio_dest(&cinfo, output_file); #if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
if (memdst)
jpeg_mem_dest(&cinfo, &outbuffer, &outsize);
else
#endif
jpeg_stdio_dest(&cinfo, output_file);
/* Start compressor */ /* Start compressor */
jpeg_start_compress(&cinfo, TRUE); jpeg_start_compress(&cinfo, TRUE);
@@ -592,13 +622,19 @@ main (int argc, char **argv)
/* Close files, if we opened them */ /* Close files, if we opened them */
if (input_file != stdin) if (input_file != stdin)
fclose(input_file); fclose(input_file);
if (output_file != stdout) if (output_file != stdout && output_file != NULL)
fclose(output_file); fclose(output_file);
#ifdef PROGRESS_REPORT #ifdef PROGRESS_REPORT
end_progress_monitor((j_common_ptr) &cinfo); end_progress_monitor((j_common_ptr) &cinfo);
#endif #endif
if (memdst) {
fprintf(stderr, "Compressed size: %lu bytes\n", outsize);
if (outbuffer != NULL)
free(outbuffer);
}
/* All done. */ /* All done. */
exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS); exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS);
return 0; /* suppress no-return-value warnings */ return 0; /* suppress no-return-value warnings */

View File

@@ -1,3 +0,0 @@
@echo off
for /f "tokens=1-4 eol=/ DELIMS=/ " %%i in ('date /t') do set BUILD=%%l%%j%%k
echo %BUILD%

15
cmakescripts/md5cmp.cmake Normal file
View File

@@ -0,0 +1,15 @@
if(NOT MD5)
message(FATAL_ERROR "MD5 not specified")
endif()
if(NOT FILE)
message(FATAL_ERROR "FILE not specified")
endif()
file(MD5 ${FILE} MD5FILE)
if(NOT MD5 STREQUAL MD5FILE)
message(FATAL_ERROR "MD5 of ${FILE} should be ${MD5}, not ${MD5FILE}.")
else()
message(STATUS "${MD5}: OK")
endif()

View File

@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ([2.56]) AC_PREREQ([2.56])
AC_INIT([libjpeg-turbo], [1.2.0]) AC_INIT([libjpeg-turbo], [1.3.1])
BUILD=`date +%Y%m%d` BUILD=`date +%Y%m%d`
AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2]) AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2])
@@ -11,22 +11,71 @@ AC_PREFIX_DEFAULT(/opt/libjpeg-turbo)
# Always build with prototypes # Always build with prototypes
AC_DEFINE([HAVE_PROTOTYPES], 1, [Define if your compiler supports prototypes]) AC_DEFINE([HAVE_PROTOTYPES], 1, [Define if your compiler supports prototypes])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# Checks for programs. # Checks for programs.
SAVED_CFLAGS=${CFLAGS} SAVED_CFLAGS=${CFLAGS}
SAVED_CPPFLAGS=${CPPFLAGS} SAVED_CPPFLAGS=${CPPFLAGS}
AC_PROG_CPP AC_PROG_CPP
AC_PROG_CC AC_PROG_CC
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AM_PROG_AS AM_PROG_AS
AM_PROG_CC_C_O
AC_PROG_INSTALL AC_PROG_INSTALL
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
AC_PROG_LN_S AC_PROG_LN_S
# When the prefix is /opt/libjpeg-turbo, we assume that an "official" binary is
# being created, and thus we install things into specific locations.
old_prefix=${prefix}
if test "x$prefix" = "xNONE" -a "x$ac_default_prefix" != "x"; then
prefix=$ac_default_prefix
fi
DATADIR=`eval echo ${datadir}`
DATADIR=`eval echo $DATADIR`
if test "$DATADIR" = "/opt/libjpeg-turbo/share"; then
datadir='${prefix}'
fi
DATADIR=`eval echo ${datarootdir}`
DATADIR=`eval echo $DATADIR`
if test "$DATADIR" = "/opt/libjpeg-turbo/share"; then
datarootdir='${prefix}'
fi
old_exec_prefix=${exec_prefix}
if test "x$exec_prefix" = "xNONE"; then
exec_prefix=${prefix}
fi
if test "x${libdir}" = 'x${exec_prefix}/lib' -o "x${libdir}" = 'x${prefix}/lib'; then
LIBDIR=`eval echo ${libdir}`
LIBDIR=`eval echo $LIBDIR`
if test "$LIBDIR" = "/opt/libjpeg-turbo/lib"; then
case $host_os in
darwin*)
;;
*)
AC_CHECK_SIZEOF(long)
if test "${ac_cv_sizeof_long}" = "8"; then
libdir='${exec_prefix}/lib64'
elif test "${ac_cv_sizeof_long}" = "4"; then
libdir='${exec_prefix}/lib32'
fi
;;
esac
fi
fi
exec_prefix=${old_exec_prefix}
prefix=${old_prefix}
# Check whether compiler supports pointers to undefined structures # Check whether compiler supports pointers to undefined structures
AC_MSG_CHECKING(whether compiler supports pointers to undefined structures) AC_MSG_CHECKING(whether compiler supports pointers to undefined structures)
AC_TRY_COMPILE([ typedef struct undefined_structure * undef_struct_ptr; ], , AC_TRY_COMPILE([ typedef struct undefined_structure * undef_struct_ptr; ], ,
AC_MSG_RESULT(yes), AC_MSG_RESULT(yes),
[AC_MSG_RESULT(no) [AC_MSG_RESULT(no)
AC_DEFINE([INCOMPLETE_TYPES_BROKEN],[1],[Compiler does not support pointers to undefined structures.])]) AC_DEFINE([INCOMPLETE_TYPES_BROKEN], [1],
[Compiler does not support pointers to undefined structures.])])
if test "x${GCC}" = "xyes"; then if test "x${GCC}" = "xyes"; then
if test "x${SAVED_CFLAGS}" = "x"; then if test "x${SAVED_CFLAGS}" = "x"; then
@@ -49,7 +98,8 @@ fi
# Checks for header files. # Checks for header files.
AC_HEADER_STDC AC_HEADER_STDC
AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
AC_CHECK_HEADER([sys/types.h], AC_DEFINE([NEED_SYS_TYPES_H], 1, [Define if you have sys/types.h])) AC_CHECK_HEADER([sys/types.h],
AC_DEFINE([NEED_SYS_TYPES_H], 1, [Define if you have sys/types.h]))
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST AC_C_CONST
@@ -60,85 +110,118 @@ AC_CHECK_TYPES([unsigned char, unsigned short])
AC_MSG_CHECKING([if right shift is signed]) AC_MSG_CHECKING([if right shift is signed])
AC_TRY_RUN( AC_TRY_RUN(
[#include <stdio.h> [#include <stdio.h>
int is_shifting_signed (long arg) { int is_shifting_signed (long arg) {
long res = arg >> 4; long res = arg >> 4;
if (res == -0x7F7E80CL) if (res == -0x7F7E80CL)
return 1; /* right shift is signed */ return 1; /* right shift is signed */
/* see if unsigned-shift hack will fix it. */ /* see if unsigned-shift hack will fix it. */
/* we can't just test exact value since it depends on width of long... */ /* we can't just test exact value since it depends on width of long... */
res |= (~0L) << (32-4); res |= (~0L) << (32-4);
if (res == -0x7F7E80CL) if (res == -0x7F7E80CL)
return 0; /* right shift is unsigned */ return 0; /* right shift is unsigned */
printf("Right shift isn't acting as I expect it to.\n"); printf("Right shift isn't acting as I expect it to.\n");
printf("I fear the JPEG software will not work at all.\n\n"); printf("I fear the JPEG software will not work at all.\n\n");
return 0; /* try it with unsigned anyway */ return 0; /* try it with unsigned anyway */
} }
int main (void) { int main (void) {
exit(is_shifting_signed(-0x7F7E80B1L)); exit(is_shifting_signed(-0x7F7E80B1L));
}], }],
[AC_MSG_RESULT(no) [AC_MSG_RESULT(no)
AC_DEFINE([RIGHT_SHIFT_IS_UNSIGNED], 1, [Define if shift is unsigned])], AC_DEFINE([RIGHT_SHIFT_IS_UNSIGNED], 1, [Define if shift is unsigned])],
[AC_MSG_RESULT(yes)], [AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(Assuming that right shift is signed on target machine.)]) [AC_MSG_RESULT(Assuming that right shift is signed on target machine.)])
# test whether global names are unique to at least 15 chars # test whether global names are unique to at least 15 chars
AC_MSG_CHECKING([for short external names]) AC_MSG_CHECKING([for short external names])
AC_TRY_LINK( AC_TRY_LINK(
[int possibly_duplicate_function () { return 0; } [int possibly_duplicate_function () { return 0; }
int possibly_dupli_function () { return 1; }], [ ], int possibly_dupli_function () { return 1; }], [ ],
[AC_MSG_RESULT(ok)], [AC_MSG_RESULT(ok)],
[AC_MSG_RESULT(short) [AC_MSG_RESULT(short)
AC_DEFINE([NEED_SHORT_EXTERNAL_NAMES], 1, [Define if you need short function names])]) AC_DEFINE([NEED_SHORT_EXTERNAL_NAMES], 1,
[Define if you need short function names])])
# Checks for library functions. # Checks for library functions.
AC_CHECK_FUNCS([memset memcpy], [], AC_CHECK_FUNCS([memset memcpy], [],
[AC_DEFINE([NEED_BSD_STRINGS], 1, [AC_DEFINE([NEED_BSD_STRINGS], 1,
[Define if you have BSD-like bzero and bcopy])]) [Define if you have BSD-like bzero and bcopy])])
AC_MSG_CHECKING([libjpeg API version]) AC_MSG_CHECKING([libjpeg API version])
AC_ARG_VAR(JPEG_LIB_VERSION, [libjpeg API version (62, 70, or 80)]) AC_ARG_VAR(JPEG_LIB_VERSION, [libjpeg API version (62, 70, or 80)])
if test "x$JPEG_LIB_VERSION" = "x"; then if test "x$JPEG_LIB_VERSION" = "x"; then
AC_ARG_WITH([jpeg7], AC_ARG_WITH([jpeg7],
AC_HELP_STRING([--with-jpeg7], [Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b.)])) AC_HELP_STRING([--with-jpeg7],
AC_ARG_WITH([jpeg8], [Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b.)]))
AC_HELP_STRING([--with-jpeg8], [Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b.)])) AC_ARG_WITH([jpeg8],
if test "x${with_jpeg8}" = "xyes"; then AC_HELP_STRING([--with-jpeg8],
JPEG_LIB_VERSION=80 [Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward incompatible with libjpeg v6b.)]))
if test "x${with_jpeg8}" = "xyes"; then
JPEG_LIB_VERSION=80
else
if test "x${with_jpeg7}" = "xyes"; then
JPEG_LIB_VERSION=70
else else
if test "x${with_jpeg7}" = "xyes"; then JPEG_LIB_VERSION=62
JPEG_LIB_VERSION=70
else
JPEG_LIB_VERSION=62
fi
fi fi
fi
fi fi
JPEG_LIB_VERSION_DECIMAL=`expr $JPEG_LIB_VERSION / 10`.`expr $JPEG_LIB_VERSION % 10` JPEG_LIB_VERSION_DECIMAL=`expr $JPEG_LIB_VERSION / 10`.`expr $JPEG_LIB_VERSION % 10`
AC_SUBST(JPEG_LIB_VERSION_DECIMAL) AC_SUBST(JPEG_LIB_VERSION_DECIMAL)
AC_MSG_RESULT([$JPEG_LIB_VERSION_DECIMAL]) AC_MSG_RESULT([$JPEG_LIB_VERSION_DECIMAL])
AC_DEFINE_UNQUOTED(JPEG_LIB_VERSION, [$JPEG_LIB_VERSION], [libjpeg API version]) AC_DEFINE_UNQUOTED(JPEG_LIB_VERSION, [$JPEG_LIB_VERSION],
[libjpeg API version])
AC_MSG_CHECKING([libjpeg shared library version]) AC_ARG_VAR(SO_MAJOR_VERSION,
AC_ARG_VAR(SO_MAJOR_VERSION, [Major version of the libjpeg-turbo shared library (default is determined by the API version)]) [Major version of the libjpeg-turbo shared library (default is determined by the API version)])
AC_ARG_VAR(SO_MINOR_VERSION, [Minor version of the libjpeg-turbo shared library (default is determined by the API version)]) AC_ARG_VAR(SO_MINOR_VERSION,
[Minor version of the libjpeg-turbo shared library (default is determined by the API version)])
if test "x$SO_MAJOR_VERSION" = "x"; then if test "x$SO_MAJOR_VERSION" = "x"; then
case "$JPEG_LIB_VERSION" in case "$JPEG_LIB_VERSION" in
62) SO_MAJOR_VERSION=$JPEG_LIB_VERSION ;; 62) SO_MAJOR_VERSION=$JPEG_LIB_VERSION ;;
*) SO_MAJOR_VERSION=`expr $JPEG_LIB_VERSION / 10` ;; *) SO_MAJOR_VERSION=`expr $JPEG_LIB_VERSION / 10` ;;
esac esac
fi fi
if test "x$SO_MINOR_VERSION" = "x"; then if test "x$SO_MINOR_VERSION" = "x"; then
case "$JPEG_LIB_VERSION" in case "$JPEG_LIB_VERSION" in
80) SO_MINOR_VERSION=2 ;; 80) SO_MINOR_VERSION=2 ;;
*) SO_MINOR_VERSION=0 ;; *) SO_MINOR_VERSION=0 ;;
esac esac
fi fi
AC_MSG_RESULT([$SO_MAJOR_VERSION:$SO_MINOR_VERSION])
RPM_CONFIG_ARGS=
# Memory source/destination managers
SO_AGE=0
MEM_SRCDST_FUNCTIONS=
if test "x${with_jpeg8}" != "xyes"; then
AC_MSG_CHECKING([whether to include in-memory source/destination managers])
AC_ARG_WITH([mem-srcdst],
AC_HELP_STRING([--without-mem-srcdst],
[Do not include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI]))
if test "x$with_mem_srcdst" != "xno"; then
AC_MSG_RESULT(yes)
AC_DEFINE([MEM_SRCDST_SUPPORTED], [1],
[Support in-memory source/destination managers])
SO_AGE=1
MEM_SRCDST_FUNCTIONS="global: jpeg_mem_dest; jpeg_mem_src;";
else
AC_MSG_RESULT(no)
RPM_CONFIG_ARGS="$RPM_CONFIG_ARGS --without-mem-srcdst"
fi
fi
AC_MSG_CHECKING([libjpeg shared library version])
AC_MSG_RESULT([$SO_MAJOR_VERSION.$SO_AGE.$SO_MINOR_VERSION])
LIBTOOL_CURRENT=`expr $SO_MAJOR_VERSION + $SO_AGE`
AC_SUBST(LIBTOOL_CURRENT)
AC_SUBST(SO_MAJOR_VERSION) AC_SUBST(SO_MAJOR_VERSION)
AC_SUBST(SO_MINOR_VERSION) AC_SUBST(SO_MINOR_VERSION)
AC_SUBST(SO_AGE)
AC_SUBST(MEM_SRCDST_FUNCTIONS)
AC_DEFINE_UNQUOTED(LIBJPEG_TURBO_VERSION, [$VERSION], [libjpeg-turbo version]) AC_DEFINE_UNQUOTED(LIBJPEG_TURBO_VERSION, [$VERSION], [libjpeg-turbo version])
@@ -146,7 +229,7 @@ VERSION_SCRIPT=yes
AC_ARG_ENABLE([ld-version-script], AC_ARG_ENABLE([ld-version-script],
AS_HELP_STRING([--disable-ld-version-script], AS_HELP_STRING([--disable-ld-version-script],
[Disable linker version script for libjpeg-turbo (default is to use linker version script if the linker supports it)]), [Disable linker version script for libjpeg-turbo (default is to use linker version script if the linker supports it)]),
[VERSION_SCRIPT=$enableval], []) [VERSION_SCRIPT=$enableval], [])
AC_MSG_CHECKING([whether the linker supports version scripts]) AC_MSG_CHECKING([whether the linker supports version scripts])
SAVED_LDFLAGS="$LDFLAGS" SAVED_LDFLAGS="$LDFLAGS"
@@ -156,12 +239,16 @@ VERS_1 {
global: *; global: *;
}; };
EOF EOF
AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[VERSION_SCRIPT_FLAG=-Wl,--version-script,; AC_MSG_RESULT([yes (GNU style)])], []) [VERSION_SCRIPT_FLAG=-Wl,--version-script,;
AC_MSG_RESULT([yes (GNU style)])],
[])
if test "x$VERSION_SCRIPT_FLAG" = "x"; then if test "x$VERSION_SCRIPT_FLAG" = "x"; then
LDFLAGS="$SAVED_LDFLAGS -Wl,-M,conftest.map" LDFLAGS="$SAVED_LDFLAGS -Wl,-M,conftest.map"
AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[VERSION_SCRIPT_FLAG=-Wl,-M,; AC_MSG_RESULT([yes (Sun style)])], []) [VERSION_SCRIPT_FLAG=-Wl,-M,;
AC_MSG_RESULT([yes (Sun style)])],
[])
fi fi
if test "x$VERSION_SCRIPT_FLAG" = "x"; then if test "x$VERSION_SCRIPT_FLAG" = "x"; then
VERSION_SCRIPT=no VERSION_SCRIPT=no
@@ -179,7 +266,7 @@ AC_SUBST(VERSION_SCRIPT_FLAG)
AC_MSG_CHECKING(for inline) AC_MSG_CHECKING(for inline)
ljt_cv_inline="" ljt_cv_inline=""
AC_TRY_COMPILE(, [} __attribute__((always_inline)) int foo() { return 0; } AC_TRY_COMPILE(, [} __attribute__((always_inline)) int foo() { return 0; }
int bar() { return foo();], ljt_cv_inline="__attribute__((always_inline))", int bar() { return foo();], ljt_cv_inline="inline __attribute__((always_inline))",
AC_TRY_COMPILE(, [} __inline__ int foo() { return 0; } AC_TRY_COMPILE(, [} __inline__ int foo() { return 0; }
int bar() { return foo();], ljt_cv_inline="__inline__", int bar() { return foo();], ljt_cv_inline="__inline__",
AC_TRY_COMPILE(, [} __inline int foo() { return 0; } AC_TRY_COMPILE(, [} __inline int foo() { return 0; }
@@ -189,30 +276,49 @@ int bar() { return foo();], ljt_cv_inline="inline"))))
AC_MSG_RESULT($ljt_cv_inline) AC_MSG_RESULT($ljt_cv_inline)
AC_DEFINE_UNQUOTED([INLINE],[$ljt_cv_inline],[How to obtain function inlining.]) AC_DEFINE_UNQUOTED([INLINE],[$ljt_cv_inline],[How to obtain function inlining.])
# Arithmetic coding support
AC_MSG_CHECKING([whether to include arithmetic encoding support]) AC_MSG_CHECKING([whether to include arithmetic encoding support])
AC_ARG_WITH([arith-enc], AC_ARG_WITH([arith-enc],
AC_HELP_STRING([--without-arith-enc], [Omit arithmetic encoding support])) AC_HELP_STRING([--without-arith-enc],
[Do not include arithmetic encoding support]))
if test "x$with_arith_enc" = "xno"; then if test "x$with_arith_enc" = "xno"; then
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
RPM_CONFIG_ARGS="$RPM_CONFIG_ARGS --without-arith-enc"
else else
AC_DEFINE([C_ARITH_CODING_SUPPORTED], [1], [Support arithmetic encoding]) AC_DEFINE([C_ARITH_CODING_SUPPORTED], [1], [Support arithmetic encoding])
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
fi fi
AM_CONDITIONAL([WITH_ARITH_ENC], [test "x$with_arith_enc" != "xno"]) AM_CONDITIONAL([WITH_ARITH_ENC], [test "x$with_arith_enc" != "xno"])
AC_MSG_CHECKING([whether to include arithmetic decoding support]) AC_MSG_CHECKING([whether to include arithmetic decoding support])
AC_ARG_WITH([arith-dec], AC_ARG_WITH([arith-dec],
AC_HELP_STRING([--without-arith-dec], [Omit arithmetic decoding support])) AC_HELP_STRING([--without-arith-dec],
[Do not include arithmetic decoding support]))
if test "x$with_arith_dec" = "xno"; then if test "x$with_arith_dec" = "xno"; then
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
RPM_CONFIG_ARGS="$RPM_CONFIG_ARGS --without-arith-dec"
else else
AC_DEFINE([D_ARITH_CODING_SUPPORTED], [1], [Support arithmetic decoding]) AC_DEFINE([D_ARITH_CODING_SUPPORTED], [1], [Support arithmetic decoding])
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
fi fi
AM_CONDITIONAL([WITH_ARITH_DEC], [test "x$with_arith_dec" != "xno"]) AM_CONDITIONAL([WITH_ARITH_DEC], [test "x$with_arith_dec" != "xno"])
AM_CONDITIONAL([WITH_ARITH], [test "x$with_arith_dec" != "xno" -o "x$with_arith_enc" != "xno"]) AM_CONDITIONAL([WITH_ARITH],
[test "x$with_arith_dec" != "xno" -o "x$with_arith_enc" != "xno"])
# TurboJPEG support
AC_MSG_CHECKING([whether to build TurboJPEG C wrapper])
AC_ARG_WITH([turbojpeg],
AC_HELP_STRING([--without-turbojpeg],
[Do not include the TurboJPEG wrapper library and associated test programs]))
if test "x$with_turbojpeg" = "xno"; then
AC_MSG_RESULT(no)
RPM_CONFIG_ARGS="$RPM_CONFIG_ARGS --without-turbojpeg"
else
AC_MSG_RESULT(yes)
fi
# Java support
AC_ARG_VAR(JAVAC, [Java compiler command (default: javac)]) AC_ARG_VAR(JAVAC, [Java compiler command (default: javac)])
if test "x$JAVAC" = "x"; then if test "x$JAVAC" = "x"; then
JAVAC=javac JAVAC=javac
@@ -230,55 +336,58 @@ if test "x$JAVA" = "x"; then
JAVA=java JAVA=java
fi fi
AC_SUBST(JAVA) AC_SUBST(JAVA)
AC_ARG_VAR(JNI_CFLAGS, [C compiler flags needed to include jni.h (default: -I/System/Library/Frameworks/JavaVM.framework/Headers on OS X, '-I/usr/java/include -I/usr/java/include/solaris' on Solaris, and '-I/usr/java/default/include -I/usr/java/default/include/linux' on Linux)]) AC_ARG_VAR(JNI_CFLAGS,
[C compiler flags needed to include jni.h (default: -I/System/Library/Frameworks/JavaVM.framework/Headers on OS X, '-I/usr/java/include -I/usr/java/include/solaris' on Solaris, and '-I/usr/java/default/include -I/usr/java/default/include/linux' on Linux)])
AC_MSG_CHECKING([whether to build TurboJPEG/OSS Java wrapper]) AC_MSG_CHECKING([whether to build TurboJPEG Java wrapper])
AC_ARG_WITH([java], AC_ARG_WITH([java],
AC_HELP_STRING([--with-java],[Build Java wrapper for the TurboJPEG/OSS library])) AC_HELP_STRING([--with-java], [Build Java wrapper for the TurboJPEG library]))
if test "x$with_turbojpeg" = "xno"; then
with_java=no
fi
RPM_CONFIG_ARGS=
WITH_JAVA=0 WITH_JAVA=0
if test "x$with_java" = "xyes"; then if test "x$with_java" = "xyes"; then
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
case $host_os in case $host_os in
darwin*) darwin*)
DEFAULT_JNI_CFLAGS=-I/System/Library/Frameworks/JavaVM.framework/Headers DEFAULT_JNI_CFLAGS=-I/System/Library/Frameworks/JavaVM.framework/Headers
;; ;;
solaris*) solaris*)
DEFAULT_JNI_CFLAGS='-I/usr/java/include -I/usr/java/include/solaris' DEFAULT_JNI_CFLAGS='-I/usr/java/include -I/usr/java/include/solaris'
;; ;;
linux*) linux*)
DEFAULT_JNI_CFLAGS='-I/usr/java/default/include -I/usr/java/default/include/linux' DEFAULT_JNI_CFLAGS='-I/usr/java/default/include -I/usr/java/default/include/linux'
;; ;;
esac esac
if test "x$JNI_CFLAGS" = "x"; then if test "x$JNI_CFLAGS" = "x"; then
JNI_CFLAGS=$DEFAULT_JNI_CFLAGS JNI_CFLAGS=$DEFAULT_JNI_CFLAGS
fi fi
SAVE_CPPFLAGS=${CPPFLAGS} SAVE_CPPFLAGS=${CPPFLAGS}
CPPFLAGS="${CPPFLAGS} ${JNI_CFLAGS}" CPPFLAGS="${CPPFLAGS} ${JNI_CFLAGS}"
AC_CHECK_HEADERS([jni.h], [DUMMY=1], AC_CHECK_HEADERS([jni.h], [DUMMY=1],
[AC_MSG_ERROR([Could not find JNI header file])]) [AC_MSG_ERROR([Could not find JNI header file])])
CPPFLAGS=${SAVE_CPPFLAGS} CPPFLAGS=${SAVE_CPPFLAGS}
AC_SUBST(JNI_CFLAGS) AC_SUBST(JNI_CFLAGS)
RPM_CONFIG_ARGS=--with-java RPM_CONFIG_ARGS="$RPM_CONFIG_ARGS --with-java"
JAVA_RPM_CONTENTS_1='%dir /opt/%{name}/classes' JAVA_RPM_CONTENTS_1='%dir %{_datadir}/classes'
JAVA_RPM_CONTENTS_2=/opt/%{name}/classes/turbojpeg.jar JAVA_RPM_CONTENTS_2=%{_datadir}/classes/turbojpeg.jar
WITH_JAVA=1 WITH_JAVA=1
else else
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
fi fi
AM_CONDITIONAL([WITH_JAVA], [test "x$with_java" = "xyes"]) AM_CONDITIONAL([WITH_JAVA], [test "x$with_java" = "xyes"])
AC_SUBST(WITH_JAVA) AC_SUBST(WITH_JAVA)
AC_SUBST(JAVA_RPM_CONTENTS_1) AC_SUBST(JAVA_RPM_CONTENTS_1)
AC_SUBST(JAVA_RPM_CONTENTS_2) AC_SUBST(JAVA_RPM_CONTENTS_2)
AC_SUBST(RPM_CONFIG_ARGS)
# optionally force using gas-preprocessor.pl for compatibility testing # optionally force using gas-preprocessor.pl for compatibility testing
AC_ARG_WITH([gas-preprocessor], AC_ARG_WITH([gas-preprocessor],
AC_HELP_STRING([--with-gas-preprocessor],[Force using gas-preprocessor.pl on ARM.])) AC_HELP_STRING([--with-gas-preprocessor],
[Force using gas-preprocessor.pl on ARM.]))
if test "x${with_gas_preprocessor}" = "xyes"; then if test "x${with_gas_preprocessor}" = "xyes"; then
case $host_os in case $host_os in
darwin*) darwin*)
@@ -293,8 +402,12 @@ fi
# SIMD is optional # SIMD is optional
AC_ARG_WITH([simd], AC_ARG_WITH([simd],
AC_HELP_STRING([--without-simd],[Omit SIMD extensions.])) AC_HELP_STRING([--without-simd], [Do not include SIMD extensions]))
if test "x${with_simd}" != "xno"; then if test "x${with_simd}" != "xno"; then
require_simd=no
if test "x${with_simd}" = "xyes"; then
require_simd=yes
fi
# Check if we're on a supported CPU # Check if we're on a supported CPU
AC_MSG_CHECKING([if we have SIMD optimisations for cpu type]) AC_MSG_CHECKING([if we have SIMD optimisations for cpu type])
case "$host_cpu" in case "$host_cpu" in
@@ -302,12 +415,12 @@ if test "x${with_simd}" != "xno"; then
AC_MSG_RESULT([yes (x86_64)]) AC_MSG_RESULT([yes (x86_64)])
AC_PROG_NASM AC_PROG_NASM
simd_arch=x86_64 simd_arch=x86_64
;; ;;
i*86 | x86 | ia32) i*86 | x86 | ia32)
AC_MSG_RESULT([yes (i386)]) AC_MSG_RESULT([yes (i386)])
AC_PROG_NASM AC_PROG_NASM
simd_arch=i386 simd_arch=i386
;; ;;
arm*) arm*)
AC_MSG_RESULT([yes (arm)]) AC_MSG_RESULT([yes (arm)])
AC_MSG_CHECKING([if the assembler is GNU-compatible and can be used]) AC_MSG_CHECKING([if the assembler is GNU-compatible and can be used])
@@ -315,19 +428,31 @@ if test "x${with_simd}" != "xno"; then
[AC_MSG_RESULT([yes]) [AC_MSG_RESULT([yes])
simd_arch=arm], simd_arch=arm],
[AC_MSG_RESULT([no]) [AC_MSG_RESULT([no])
with_simd=no with_simd=no])
AC_MSG_WARN([SIMD support can't be enabled. Performance will suffer.])]) if test "x${with_simd}" = "xno"; then
;; if test "x${require_simd}" = "xyes"; then
AC_MSG_ERROR([SIMD support can't be enabled.])
else
AC_MSG_WARN([SIMD support can't be enabled. Performance will suffer.])
fi
fi
;;
*) *)
AC_MSG_RESULT([no ("$host_cpu")]) AC_MSG_RESULT([no ("$host_cpu")])
AC_MSG_WARN([SIMD support not available for this CPU. Performance will suffer.])
with_simd=no; with_simd=no;
;; if test "x${require_simd}" = "xyes"; then
AC_MSG_ERROR([SIMD support not available for this CPU.])
else
AC_MSG_WARN([SIMD support not available for this CPU. Performance will suffer.])
fi
;;
esac esac
if test "x${with_simd}" != "xno"; then if test "x${with_simd}" != "xno"; then
AC_DEFINE([WITH_SIMD], [1], [Use accelerated SIMD routines.]) AC_DEFINE([WITH_SIMD], [1], [Use accelerated SIMD routines.])
fi fi
else
RPM_CONFIG_ARGS="$RPM_CONFIG_ARGS --without-simd"
fi fi
AM_CONDITIONAL([WITH_SIMD], [test "x$with_simd" != "xno"]) AM_CONDITIONAL([WITH_SIMD], [test "x$with_simd" != "xno"])
@@ -336,6 +461,13 @@ AM_CONDITIONAL([SIMD_I386], [test "x$simd_arch" = "xi386"])
AM_CONDITIONAL([SIMD_X86_64], [test "x$simd_arch" = "xx86_64"]) AM_CONDITIONAL([SIMD_X86_64], [test "x$simd_arch" = "xx86_64"])
AM_CONDITIONAL([SIMD_ARM], [test "x$simd_arch" = "xarm"]) AM_CONDITIONAL([SIMD_ARM], [test "x$simd_arch" = "xarm"])
AM_CONDITIONAL([X86_64], [test "x$host_cpu" = "xx86_64" -o "x$host_cpu" = "xamd64"]) AM_CONDITIONAL([X86_64], [test "x$host_cpu" = "xx86_64" -o "x$host_cpu" = "xamd64"])
AM_CONDITIONAL([WITH_TURBOJPEG], [test "x$with_turbojpeg" != "xno"])
AC_ARG_VAR(PKGNAME, [distribution package name (default: libjpeg-turbo)])
if test "x$PKGNAME" = "x"; then
PKGNAME=$PACKAGE_NAME
fi
AC_SUBST(PKGNAME)
case "$host_cpu" in case "$host_cpu" in
x86_64) x86_64)
@@ -349,6 +481,7 @@ case "$host_cpu" in
esac esac
AC_SUBST(RPMARCH) AC_SUBST(RPMARCH)
AC_SUBST(RPM_CONFIG_ARGS)
AC_SUBST(DEBARCH) AC_SUBST(DEBARCH)
AC_SUBST(BUILD) AC_SUBST(BUILD)
AC_DEFINE_UNQUOTED([BUILD], "$BUILD", [Build number]) AC_DEFINE_UNQUOTED([BUILD], "$BUILD", [Build number])
@@ -359,18 +492,22 @@ AC_DEFINE_UNQUOTED([BUILD], "$BUILD", [Build number])
# jconfig.h is a minimal version that allows this package to be built # jconfig.h is a minimal version that allows this package to be built
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_HEADERS([jconfig.h]) AC_CONFIG_HEADERS([jconfig.h])
AC_CONFIG_FILES([pkgscripts/libjpeg-turbo.spec:release/libjpeg-turbo.spec.in]) AC_CONFIG_FILES([pkgscripts/libjpeg-turbo.spec.tmpl:release/libjpeg-turbo.spec.in])
AC_CONFIG_FILES([pkgscripts/makecygwinpkg:release/makecygwinpkg.in]) AC_CONFIG_FILES([pkgscripts/makecygwinpkg.tmpl:release/makecygwinpkg.in])
AC_CONFIG_FILES([pkgscripts/makedpkg:release/makedpkg.in]) AC_CONFIG_FILES([pkgscripts/makedpkg.tmpl:release/makedpkg.in])
AC_CONFIG_FILES([pkgscripts/makemacpkg:release/makemacpkg.in]) AC_CONFIG_FILES([pkgscripts/makemacpkg.tmpl:release/makemacpkg.in])
AC_CONFIG_FILES([pkgscripts/Description.plist:release/Description.plist.in]) AC_CONFIG_FILES([pkgscripts/Description.plist:release/Description.plist.in])
AC_CONFIG_FILES([pkgscripts/Info.plist:release/Info.plist.in]) AC_CONFIG_FILES([pkgscripts/Info.plist:release/Info.plist.in])
AC_CONFIG_FILES([pkgscripts/uninstall:release/uninstall.in]) AC_CONFIG_FILES([pkgscripts/uninstall.tmpl:release/uninstall.in])
AC_CONFIG_FILES([pkgscripts/makesunpkg:release/makesunpkg.in]) if test "x$with_turbojpeg" != "xno"; then
AC_CONFIG_FILES([pkgscripts/pkginfo:release/pkginfo.in]) AC_CONFIG_FILES([tjbenchtest])
AC_CONFIG_FILES([tjbenchtest]) fi
AC_CONFIG_FILES([tjexampletest]) if test "x$with_java" = "xyes"; then
AC_CONFIG_FILES([tjbenchtest.java])
AC_CONFIG_FILES([tjexampletest])
fi
AC_CONFIG_FILES([libjpeg.map]) AC_CONFIG_FILES([libjpeg.map])
AC_CONFIG_FILES([Makefile simd/Makefile]) AC_CONFIG_FILES([Makefile simd/Makefile])
AC_CONFIG_FILES([java/Makefile]) AC_CONFIG_FILES([java/Makefile])
AC_CONFIG_FILES([md5/Makefile])
AC_OUTPUT AC_OUTPUT

15
djpeg.1
View File

@@ -1,4 +1,4 @@
.TH DJPEG 1 "11 October 2010" .TH DJPEG 1 "18 January 2013"
.SH NAME .SH NAME
djpeg \- decompress a JPEG file to an image file djpeg \- decompress a JPEG file to an image file
.SH SYNOPSIS .SH SYNOPSIS
@@ -62,8 +62,9 @@ runs noticeably faster in this mode.
.TP .TP
.BI \-scale " M/N" .BI \-scale " M/N"
Scale the output image by a factor M/N. Currently the scale factor must be Scale the output image by a factor M/N. Currently the scale factor must be
1/1, 1/2, 1/4, or 1/8. Scaling is handy if the image is larger than your M/8, where M is an integer between 1 and 16 inclusive, or any reduced fraction
screen; also, thereof (such as 1/2, 3/4, etc.) Scaling is handy if the image is larger than
your screen; also,
.B djpeg .B djpeg
runs much faster when scaling down the output. runs much faster when scaling down the output.
.TP .TP
@@ -172,6 +173,10 @@ selects 4000000 bytes. If more space is needed, temporary files will be used.
.BI \-outfile " name" .BI \-outfile " name"
Send output image to the named file, not to standard output. Send output image to the named file, not to standard output.
.TP .TP
.BI \-memsrc
Load input file into memory before decompressing. This feature was implemented
mainly as a way of testing the in-memory source manager (jpeg_mem_src().)
.TP
.B \-verbose .B \-verbose
Enable debug printout. More Enable debug printout. More
.BR \-v 's .BR \-v 's
@@ -242,6 +247,10 @@ Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44. Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
.SH AUTHOR .SH AUTHOR
Independent JPEG Group Independent JPEG Group
.PP
This file was modified by The libjpeg-turbo Project to include only information
relevant to libjpeg-turbo, to wordsmith certain sections, and to describe
features not present in libjpeg.
.SH BUGS .SH BUGS
To avoid the Unisys LZW patent, To avoid the Unisys LZW patent,
.B djpeg .B djpeg

54
djpeg.c
View File

@@ -1,9 +1,10 @@
/* /*
* djpeg.c * djpeg.c
* *
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1997, Thomas G. Lane. * Copyright (C) 1991-1997, Thomas G. Lane.
* Copyright (C) 2010-2011, D. R. Commander. * libjpeg-turbo Modifications:
* This file is part of the Independent JPEG Group's software. * Copyright (C) 2010-2011, 2013, D. R. Commander.
* For conditions of distribution and use, see the accompanying README file. * For conditions of distribution and use, see the accompanying README file.
* *
* This file contains a command-line user interface for the JPEG decompressor. * This file contains a command-line user interface for the JPEG decompressor.
@@ -86,6 +87,8 @@ static IMAGE_FORMATS requested_fmt;
static const char * progname; /* program name for error messages */ static const char * progname; /* program name for error messages */
static char * outfilename; /* for -outfile switch */ static char * outfilename; /* for -outfile switch */
boolean memsrc; /* for -memsrc switch */
#define INPUT_BUF_SIZE 4096
LOCAL(void) LOCAL(void)
@@ -156,6 +159,10 @@ usage (void)
#endif #endif
fprintf(stderr, " -maxmemory N Maximum memory to use (in kbytes)\n"); fprintf(stderr, " -maxmemory N Maximum memory to use (in kbytes)\n");
fprintf(stderr, " -outfile name Specify name for output file\n"); fprintf(stderr, " -outfile name Specify name for output file\n");
#if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
fprintf(stderr, " -memsrc Load input file into memory before decompressing\n");
#endif
fprintf(stderr, " -verbose or -debug Emit debug output\n"); fprintf(stderr, " -verbose or -debug Emit debug output\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@@ -179,6 +186,7 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
/* Set up default JPEG parameters. */ /* Set up default JPEG parameters. */
requested_fmt = DEFAULT_FMT; /* set default output file format */ requested_fmt = DEFAULT_FMT; /* set default output file format */
outfilename = NULL; outfilename = NULL;
memsrc = FALSE;
cinfo->err->trace_level = 0; cinfo->err->trace_level = 0;
/* Scan command line options, adjust parameters */ /* Scan command line options, adjust parameters */
@@ -246,7 +254,7 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
fprintf(stderr, "%s version %s (build %s)\n", fprintf(stderr, "%s version %s (build %s)\n",
PACKAGE_NAME, VERSION, BUILD); PACKAGE_NAME, VERSION, BUILD);
fprintf(stderr, "%s\n\n", JCOPYRIGHT); fprintf(stderr, "%s\n\n", JCOPYRIGHT);
fprintf(stderr, "Emulating The Independent JPEG Group's libjpeg, version %s\n\n", fprintf(stderr, "Emulating The Independent JPEG Group's software, version %s\n\n",
JVERSION); JVERSION);
printed_version = TRUE; printed_version = TRUE;
} }
@@ -324,6 +332,16 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
usage(); usage();
outfilename = argv[argn]; /* save it away for later use */ outfilename = argv[argn]; /* save it away for later use */
} else if (keymatch(arg, "memsrc", 2)) {
/* Use in-memory source manager */
#if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
memsrc = TRUE;
#else
fprintf(stderr, "%s: sorry, in-memory source manager was not compiled in\n",
progname);
exit(EXIT_FAILURE);
#endif
} else if (keymatch(arg, "pnm", 1) || keymatch(arg, "ppm", 1)) { } else if (keymatch(arg, "pnm", 1) || keymatch(arg, "ppm", 1)) {
/* PPM/PGM output format. */ /* PPM/PGM output format. */
requested_fmt = FMT_PPM; requested_fmt = FMT_PPM;
@@ -442,6 +460,8 @@ main (int argc, char **argv)
djpeg_dest_ptr dest_mgr = NULL; djpeg_dest_ptr dest_mgr = NULL;
FILE * input_file; FILE * input_file;
FILE * output_file; FILE * output_file;
unsigned char *inbuffer = NULL;
unsigned long insize = 0;
JDIMENSION num_scanlines; JDIMENSION num_scanlines;
/* On Mac, fetch a command line. */ /* On Mac, fetch a command line. */
@@ -536,7 +556,30 @@ main (int argc, char **argv)
#endif #endif
/* Specify data source for decompression */ /* Specify data source for decompression */
jpeg_stdio_src(&cinfo, input_file); #if JPEG_LIB_VERSION >= 80 || defined(MEM_SRCDST_SUPPORTED)
if (memsrc) {
size_t nbytes;
do {
inbuffer = (unsigned char *)realloc(inbuffer, insize + INPUT_BUF_SIZE);
if (inbuffer == NULL) {
fprintf(stderr, "%s: memory allocation failure\n", progname);
exit(EXIT_FAILURE);
}
nbytes = JFREAD(input_file, &inbuffer[insize], INPUT_BUF_SIZE);
if (nbytes < INPUT_BUF_SIZE && ferror(input_file)) {
if (file_index < argc)
fprintf(stderr, "%s: can't read from %s\n", progname,
argv[file_index]);
else
fprintf(stderr, "%s: can't read from stdin\n", progname);
}
insize += (unsigned long)nbytes;
} while (nbytes == INPUT_BUF_SIZE);
fprintf(stderr, "Compressed size: %lu bytes\n", insize);
jpeg_mem_src(&cinfo, inbuffer, insize);
} else
#endif
jpeg_stdio_src(&cinfo, input_file);
/* Read file header, set default decompression parameters */ /* Read file header, set default decompression parameters */
(void) jpeg_read_header(&cinfo, TRUE); (void) jpeg_read_header(&cinfo, TRUE);
@@ -620,6 +663,9 @@ main (int argc, char **argv)
end_progress_monitor((j_common_ptr) &cinfo); end_progress_monitor((j_common_ptr) &cinfo);
#endif #endif
if (memsrc && inbuffer != NULL)
free(inbuffer);
/* All done. */ /* All done. */
exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS); exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS);
return 0; /* suppress no-return-value warnings */ return 0; /* suppress no-return-value warnings */

View File

@@ -2,35 +2,45 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>TurboJPEG: Data Structures</title> <title>TurboJPEG: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG&#160;<span id="projectnumber">1.2</span></div> <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">1.2.1</span>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li> <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,24 +65,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li> <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul> </ul>
</div> </div>
</div> </div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Data Structures</div> </div>
</div>
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><table>
<tr><td class="indexkey"><a class="el" href="structtjregion.html">tjregion</a></td><td class="indexvalue">Cropping region </td></tr>
<tr><td class="indexkey"><a class="el" href="structtjscalingfactor.html">tjscalingfactor</a></td><td class="indexvalue">Scaling factor </td></tr>
<tr><td class="indexkey"><a class="el" href="structtjtransform.html">tjtransform</a></td><td class="indexvalue">Lossless transform </td></tr>
</table>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Variables</a></div> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -81,8 +80,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Dec 18 2011 20:09:47 for TurboJPEG by&#160; <div class="header">
<a href="http://www.doxygen.org/index.html"> <div class="headertitle">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="title">Data Structures</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structtjregion.html" target="_self">tjregion</a></td><td class="desc">Cropping region</td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structtjscalingfactor.html" target="_self">tjscalingfactor</a></td><td class="desc">Scaling factor</td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structtjtransform.html" target="_self">tjtransform</a></td><td class="desc">Lossless transform</td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 677 B

After

Width:  |  Height:  |  Size: 676 B

BIN
doc/html/bdwn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@@ -2,35 +2,45 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>TurboJPEG: Data Structure Index</title> <title>TurboJPEG: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG&#160;<span id="projectnumber">1.2</span></div> <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">1.2.1</span>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li> <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -55,23 +65,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li> <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul> </ul>
</div> </div>
</div> </div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Data Structure Index</div> </div>
</div>
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_T">T</a></div>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
</td><td><a class="el" href="structtjregion.html">tjregion</a>&#160;&#160;&#160;</td><td><a class="el" href="structtjscalingfactor.html">tjscalingfactor</a>&#160;&#160;&#160;</td><td><a class="el" href="structtjtransform.html">tjtransform</a>&#160;&#160;&#160;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_T">T</a></div>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Variables</a></div> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -80,8 +80,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Dec 18 2011 20:09:47 for TurboJPEG by&#160; <div class="header">
<a href="http://www.doxygen.org/index.html"> <div class="headertitle">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="title">Data Structure Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_T">T</a></div>
<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structtjscalingfactor.html">tjscalingfactor</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtjtransform.html">tjtransform</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td valign="top"><a class="el" href="structtjregion.html">tjregion</a>&#160;&#160;&#160;</td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_T">T</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 132 B

View File

@@ -1,13 +1,12 @@
/* The standard CSS for doxygen */ /* The standard CSS for doxygen 1.8.3.1 */
body, table, div, p, dl { body, table, div, p, dl {
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; font: 400 14px/19px Roboto,sans-serif;
font-size: 12px;
} }
/* @group Heading Levels */ /* @group Heading Levels */
h1 { h1.groupheader {
font-size: 150%; font-size: 150%;
} }
@@ -17,14 +16,34 @@ h1 {
margin: 10px 2px; margin: 10px 2px;
} }
h2 { h2.groupheader {
font-size: 120%; border-bottom: 1px solid #879ECB;
color: #354C7B;
font-size: 150%;
font-weight: normal;
margin-top: 1.75em;
padding-top: 8px;
padding-bottom: 4px;
width: 100%;
} }
h3 { h3.groupheader {
font-size: 100%; font-size: 100%;
} }
h1, h2, h3, h4, h5, h6 {
-webkit-transition: text-shadow 0.5s linear;
-moz-transition: text-shadow 0.5s linear;
-ms-transition: text-shadow 0.5s linear;
-o-transition: text-shadow 0.5s linear;
transition: text-shadow 0.5s linear;
margin-right: 15px;
}
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
text-shadow: 0 0 15px cyan;
}
dt { dt {
font-weight: bold; font-weight: bold;
} }
@@ -72,8 +91,6 @@ div.qindex, div.navtab{
background-color: #EBEFF6; background-color: #EBEFF6;
border: 1px solid #A3B4D7; border: 1px solid #A3B4D7;
text-align: center; text-align: center;
margin: 2px;
padding: 2px;
} }
div.qindex, div.navpath { div.qindex, div.navpath {
@@ -123,12 +140,12 @@ a.el {
a.elRef { a.elRef {
} }
a.code { a.code, a.code:visited {
color: #4665A2; color: #4665A2;
} }
a.codeRef { a.codeRef, a.codeRef:visited {
color: #4665A2; color: #4665A2;
} }
/* @end */ /* @end */
@@ -137,20 +154,72 @@ dl.el {
margin-left: -1cm; margin-left: -1cm;
} }
.fragment { pre.fragment {
font-family: monospace, fixed; border: 1px solid #C4CFE5;
font-size: 105%; background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
font-family: monospace, fixed;
font-size: 105%;
} }
pre.fragment { div.fragment {
border: 1px solid #C4CFE5; padding: 4px;
margin: 4px;
background-color: #FBFCFD; background-color: #FBFCFD;
padding: 4px 6px; border: 1px solid #C4CFE5;
margin: 4px 8px 4px 2px; }
overflow: auto;
word-wrap: break-word; div.line {
font-size: 9pt; font-family: monospace, fixed;
line-height: 125%; font-size: 13px;
min-height: 13px;
line-height: 1.0;
text-wrap: unrestricted;
white-space: -moz-pre-wrap; /* Moz */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 */
word-wrap: break-word; /* IE 5.5+ */
text-indent: -53px;
padding-left: 53px;
padding-bottom: 0px;
margin: 0px;
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
div.line.glow {
background-color: cyan;
box-shadow: 0 0 10px cyan;
}
span.lineno {
padding-right: 4px;
text-align: right;
border-right: 2px solid #0F0;
background-color: #E8E8E8;
white-space: pre;
}
span.lineno a {
background-color: #D8D8D8;
}
span.lineno a:hover {
background-color: #C8C8C8;
} }
div.ah { div.ah {
@@ -183,15 +252,15 @@ div.groupText {
} }
body { body {
background: white; background-color: white;
color: black; color: black;
margin: 0; margin: 0;
} }
div.contents { div.contents {
margin-top: 10px; margin-top: 10px;
margin-left: 10px; margin-left: 12px;
margin-right: 5px; margin-right: 8px;
} }
td.indexkey { td.indexkey {
@@ -200,6 +269,8 @@ td.indexkey {
border: 1px solid #C4CFE5; border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0; margin: 2px 0px 2px 0;
padding: 2px 10px; padding: 2px 10px;
white-space: nowrap;
vertical-align: top;
} }
td.indexvalue { td.indexvalue {
@@ -292,6 +363,13 @@ span.vhdllogic {
color: #ff0000 color: #ff0000
} }
blockquote {
background-color: #F7F8FB;
border-left: 2px solid #9CAFD4;
margin: 0 24px 0 4px;
padding: 0 12px 0 16px;
}
/* @end */ /* @end */
/* /*
@@ -345,6 +423,24 @@ table.memberdecls {
padding: 0px; padding: 0px;
} }
.memberdecls td, .fieldtable tr {
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
.memberdecls td.glow, .fieldtable tr.glow {
background-color: cyan;
box-shadow: 0 0 15px cyan;
}
.mdescLeft, .mdescRight, .mdescLeft, .mdescRight,
.memItemLeft, .memItemRight, .memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams { .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
@@ -359,8 +455,11 @@ table.memberdecls {
color: #555; color: #555;
} }
.memItemLeft, .memItemRight, .memTemplParams { .memSeparator {
border-top: 1px solid #C4CFE5; border-bottom: 1px solid #DEE4F0;
line-height: 1px;
margin: 0px;
padding: 0px;
} }
.memItemLeft, .memTemplItemLeft { .memItemLeft, .memTemplItemLeft {
@@ -374,6 +473,7 @@ table.memberdecls {
.memTemplParams { .memTemplParams {
color: #4665A2; color: #4665A2;
white-space: nowrap; white-space: nowrap;
font-size: 80%;
} }
/* @end */ /* @end */
@@ -406,15 +506,29 @@ table.memberdecls {
padding: 0; padding: 0;
margin-bottom: 10px; margin-bottom: 10px;
margin-right: 5px; margin-right: 5px;
-webkit-transition: box-shadow 0.5s linear;
-moz-transition: box-shadow 0.5s linear;
-ms-transition: box-shadow 0.5s linear;
-o-transition: box-shadow 0.5s linear;
transition: box-shadow 0.5s linear;
display: table !important;
width: 100%;
}
.memitem.glow {
box-shadow: 0 0 15px cyan;
} }
.memname { .memname {
white-space: nowrap;
font-weight: bold; font-weight: bold;
margin-left: 6px; margin-left: 6px;
} }
.memproto { .memname td {
vertical-align: bottom;
}
.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9; border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9;
@@ -422,45 +536,55 @@ table.memberdecls {
color: #253555; color: #253555;
font-weight: bold; font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 8px;
border-top-left-radius: 8px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 8px;
-moz-border-radius-topleft: 8px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 8px;
-webkit-border-top-left-radius: 8px;
background-image:url('nav_f.png'); background-image:url('nav_f.png');
background-repeat:repeat-x; background-repeat:repeat-x;
background-color: #E2E8F2; background-color: #E2E8F2;
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 4px;
border-top-left-radius: 4px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 4px;
-moz-border-radius-topleft: 4px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 4px;
-webkit-border-top-left-radius: 4px;
} }
.memdoc { .memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9; border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9;
padding: 2px 5px; padding: 6px 10px 2px 10px;
background-color: #FBFCFD; background-color: #FBFCFD;
border-top-width: 0; border-top-width: 0;
background-image:url('nav_g.png');
background-repeat:repeat-x;
background-color: #FFFFFF;
/* opera specific markup */ /* opera specific markup */
border-bottom-left-radius: 8px; border-bottom-left-radius: 4px;
border-bottom-right-radius: 8px; border-bottom-right-radius: 4px;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
/* firefox specific markup */ /* firefox specific markup */
-moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomleft: 4px;
-moz-border-radius-bottomright: 8px; -moz-border-radius-bottomright: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
/* webkit specific markup */ /* webkit specific markup */
-webkit-border-bottom-left-radius: 8px; -webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 8px; -webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); }
dl.reflist dt {
padding: 5px;
}
dl.reflist dd {
margin: 0px 0px 10px 0px;
padding: 5px;
} }
.paramkey { .paramkey {
@@ -478,9 +602,13 @@ table.memberdecls {
.paramname em { .paramname em {
font-style: normal; font-style: normal;
} }
.paramname code {
line-height: 14px;
}
.params, .retval, .exception, .tparams { .params, .retval, .exception, .tparams {
border-spacing: 6px 2px; margin-left: 0px;
padding-left: 0px;
} }
.params .paramname, .retval .paramname { .params .paramname, .retval .paramname {
@@ -498,105 +626,116 @@ table.memberdecls {
vertical-align: top; vertical-align: top;
} }
table.mlabels {
border-spacing: 0px;
}
td.mlabels-left {
width: 100%;
padding: 0px;
}
td.mlabels-right {
vertical-align: bottom;
padding: 0px;
white-space: nowrap;
}
span.mlabels {
margin-left: 8px;
}
span.mlabel {
background-color: #728DC1;
border-top:1px solid #5373B4;
border-left:1px solid #5373B4;
border-right:1px solid #C4CFE5;
border-bottom:1px solid #C4CFE5;
text-shadow: none;
color: white;
margin-right: 4px;
padding: 2px 3px;
border-radius: 3px;
font-size: 7pt;
white-space: nowrap;
vertical-align: middle;
}
/* @end */ /* @end */
/* @group Directory (tree) */ /* these are for tree view when not used as main index */
/* for the tree view */ div.directory {
margin: 10px 0px;
.ftvtree { border-top: 1px solid #A8B8D9;
font-family: sans-serif; border-bottom: 1px solid #A8B8D9;
margin: 0px; width: 100%;
} }
/* these are for tree view when used as main index */ .directory table {
border-collapse:collapse;
.directory {
font-size: 9pt;
font-weight: bold;
margin: 5px;
} }
.directory h3 { .directory td {
margin: 0px; margin: 0px;
margin-top: 1em; padding: 0px;
font-size: 11pt; vertical-align: top;
} }
/* .directory td.entry {
The following two styles can be used to replace the root node title white-space: nowrap;
with an image of your choice. Simply uncomment the next two styles, padding-right: 6px;
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/
/*
.directory h3.swap {
height: 61px;
background-repeat: no-repeat;
background-image: url("yourimage.gif");
}
.directory h3.swap span {
display: none;
}
*/
.directory > h3 {
margin-top: 0;
} }
.directory p { .directory td.entry a {
margin: 0px; outline:none;
white-space: nowrap;
} }
.directory div { .directory td.entry a img {
display: none; border: none;
margin: 0px; }
.directory td.desc {
width: 100%;
padding-left: 6px;
padding-right: 6px;
padding-top: 3px;
border-left: 1px solid rgba(0,0,0,0.05);
}
.directory tr.even {
padding-left: 6px;
background-color: #F7F8FB;
} }
.directory img { .directory img {
vertical-align: -30%; vertical-align: -30%;
} }
/* these are for tree view when not used as main index */ .directory .levels {
white-space: nowrap;
.directory-alt { width: 100%;
font-size: 100%; text-align: right;
font-weight: bold; font-size: 9pt;
} }
.directory-alt h3 { .directory .levels span {
margin: 0px; cursor: pointer;
margin-top: 1em; padding-left: 2px;
font-size: 11pt; padding-right: 2px;
color: #3D578C;
} }
.directory-alt > h3 {
margin-top: 0;
}
.directory-alt p {
margin: 0px;
white-space: nowrap;
}
.directory-alt div {
display: none;
margin: 0px;
}
.directory-alt img {
vertical-align: -30%;
}
/* @end */
div.dynheader { div.dynheader {
margin-top: 8px; margin-top: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
} }
address { address {
@@ -606,6 +745,8 @@ address {
table.doxtable { table.doxtable {
border-collapse:collapse; border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
} }
table.doxtable td, table.doxtable th { table.doxtable td, table.doxtable th {
@@ -619,9 +760,72 @@ table.doxtable th {
font-size: 110%; font-size: 110%;
padding-bottom: 4px; padding-bottom: 4px;
padding-top: 5px; padding-top: 5px;
text-align:left;
} }
table.fieldtable {
/*width: 100%;*/
margin-bottom: 10px;
border: 1px solid #A8B8D9;
border-spacing: 0px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
}
.fieldtable td, .fieldtable th {
padding: 3px 7px 2px;
}
.fieldtable td.fieldtype, .fieldtable td.fieldname {
white-space: nowrap;
border-right: 1px solid #A8B8D9;
border-bottom: 1px solid #A8B8D9;
vertical-align: top;
}
.fieldtable td.fieldname {
padding-top: 5px;
}
.fieldtable td.fielddoc {
border-bottom: 1px solid #A8B8D9;
/*width: 100%;*/
}
.fieldtable td.fielddoc p:first-child {
margin-top: 2px;
}
.fieldtable td.fielddoc p:last-child {
margin-bottom: 2px;
}
.fieldtable tr:last-child td {
border-bottom: none;
}
.fieldtable th {
background-image:url('nav_f.png');
background-repeat:repeat-x;
background-color: #E2E8F2;
font-size: 90%;
color: #253555;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
-moz-border-radius-topleft: 4px;
-moz-border-radius-topright: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #A8B8D9;
}
.tabsearch { .tabsearch {
top: 0px; top: 0px;
left: 10px; left: 10px;
@@ -637,6 +841,7 @@ table.doxtable th {
font-size: 11px; font-size: 11px;
background-image:url('tab_b.png'); background-image:url('tab_b.png');
background-repeat:repeat-x; background-repeat:repeat-x;
background-position: 0 -5px;
height:30px; height:30px;
line-height:30px; line-height:30px;
color:#8AA0CC; color:#8AA0CC;
@@ -664,6 +869,10 @@ table.doxtable th {
display:block; display:block;
text-decoration: none; text-decoration: none;
outline: none; outline: none;
color: #283A5D;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
} }
.navpath li.navelem a:hover .navpath li.navelem a:hover
@@ -702,7 +911,6 @@ div.summary a
div.ingroups div.ingroups
{ {
font-size: 8pt; font-size: 8pt;
padding-left: 5px;
width: 50%; width: 50%;
text-align: left; text-align: left;
} }
@@ -731,47 +939,74 @@ dl
padding: 0 0 0 10px; padding: 0 0 0 10px;
} }
dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
dl.section
{ {
border-left:4px solid; margin-left: 0px;
padding: 0 0 0 6px; padding-left: 0px;
} }
dl.note dl.note
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #D0C000; border-color: #D0C000;
} }
dl.warning, dl.attention dl.warning, dl.attention
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #FF0000; border-color: #FF0000;
} }
dl.pre, dl.post, dl.invariant dl.pre, dl.post, dl.invariant
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #00D000; border-color: #00D000;
} }
dl.deprecated dl.deprecated
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #505050; border-color: #505050;
} }
dl.todo dl.todo
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #00C0E0; border-color: #00C0E0;
} }
dl.test dl.test
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #3030E0; border-color: #3030E0;
} }
dl.bug dl.bug
{ {
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #C08050; border-color: #C08050;
} }
dl.section dd {
margin-bottom: 6px;
}
#projectlogo #projectlogo
{ {
text-align: center; text-align: center;
@@ -833,3 +1068,117 @@ dl.bug
font-weight: bold; font-weight: bold;
} }
div.zoom
{
border: 1px solid #90A5CE;
}
dl.citelist {
margin-bottom:50px;
}
dl.citelist dt {
color:#334975;
float:left;
font-weight:bold;
margin-right:10px;
padding:5px;
}
dl.citelist dd {
margin:2px 0;
padding:5px 0;
}
div.toc {
padding: 14px 25px;
background-color: #F4F6FA;
border: 1px solid #D8DFEE;
border-radius: 7px 7px 7px 7px;
float: right;
height: auto;
margin: 0 20px 10px 10px;
width: 200px;
}
div.toc li {
background: url("bdwn.png") no-repeat scroll 0 5px transparent;
font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
margin-top: 5px;
padding-left: 10px;
padding-top: 2px;
}
div.toc h3 {
font: bold 12px/1.2 Arial,FreeSans,sans-serif;
color: #4665A2;
border-bottom: 0 none;
margin: 0;
}
div.toc ul {
list-style: none outside none;
border: medium none;
padding: 0px;
}
div.toc li.level1 {
margin-left: 0px;
}
div.toc li.level2 {
margin-left: 15px;
}
div.toc li.level3 {
margin-left: 30px;
}
div.toc li.level4 {
margin-left: 45px;
}
.inherit_header {
font-weight: bold;
color: gray;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.inherit_header td {
padding: 6px 0px 2px 5px;
}
.inherit {
display: none;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
@media print
{
#top { display: none; }
#side-nav { display: none; }
#nav-path { display: none; }
body { overflow:visible; }
h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
.summary { display: none; }
.memitem { page-break-inside: avoid; }
#doc-content
{
margin-left:0 !important;
height:auto !important;
width:auto !important;
overflow:inherit;
display:inline;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

97
doc/html/dynsections.js Normal file
View File

@@ -0,0 +1,97 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function(){
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.attr('src','ftv2folderopen.png');
a.attr('src','ftv2mnode.png');
$(this).show();
} else if (l==level+1) {
i.attr('src','ftv2folderclosed.png');
a.attr('src','ftv2pnode.png');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
//The clicked row
var currentRow = $('#row_'+id);
var currentRowImages = currentRow.find("img");
//All rows after the clicked row
var rows = currentRow.nextAll("tr");
//Only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() {
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
return this.id.match(re);
});
//First row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
rows.filter("[id^=row_"+id+"]").hide();
} else { //We are SHOWING
//All sub images
var childImages = childRows.find("img");
var childImg = childImages.filter("[id^=img]");
var childArr = childImages.filter("[id^=arr]");
currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
childImg.attr('src','ftv2folderclosed.png'); //children closed
childArr.attr('src','ftv2pnode.png'); //children closed
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}

BIN
doc/html/ftv2blank.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2cl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

BIN
doc/html/ftv2doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

BIN
doc/html/ftv2folderopen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
doc/html/ftv2lastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2link.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

BIN
doc/html/ftv2mlastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
doc/html/ftv2mnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
doc/html/ftv2mo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
doc/html/ftv2node.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

BIN
doc/html/ftv2ns.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

BIN
doc/html/ftv2plastnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/html/ftv2pnode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/html/ftv2splitbar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

BIN
doc/html/ftv2vertline.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

View File

@@ -2,35 +2,45 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>TurboJPEG: Data Fields</title> <title>TurboJPEG: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG&#160;<span id="projectnumber">1.2</span></div> <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">1.2.1</span>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li> <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -61,7 +71,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_vars.html"><span>Variables</span></a></li> <li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul> </ul>
</div> </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div> </div>
<div class="contents"> <div class="contents">
<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div><ul> <div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div><ul>
<li>customFilter <li>customFilter
@@ -98,23 +122,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
: <a class="el" href="structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2">tjregion</a> : <a class="el" href="structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2">tjregion</a>
</li> </li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.3.1
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Variables</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Dec 18 2011 20:09:47 for TurboJPEG by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

View File

@@ -2,35 +2,45 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>TurboJPEG: Data Fields - Variables</title> <title>TurboJPEG: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG&#160;<span id="projectnumber">1.2</span></div> <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">1.2.1</span>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li> <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -61,7 +71,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li> <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul> </ul>
</div> </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div> </div>
<div class="contents"> <div class="contents">
&#160;<ul> &#160;<ul>
<li>customFilter <li>customFilter
@@ -98,23 +122,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
: <a class="el" href="structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2">tjregion</a> : <a class="el" href="structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2">tjregion</a>
</li> </li>
</ul> </ul>
</div> </div><!-- contents -->
<!-- window showing the filter options --> <!-- start footer part -->
<div id="MSearchSelectWindow" <hr class="footer"/><address class="footer"><small>
onmouseover="return searchBox.OnSearchSelectShow()" Generated by &#160;<a href="http://www.doxygen.org/index.html">
onmouseout="return searchBox.OnSearchSelectHide()" <img class="footer" src="doxygen.png" alt="doxygen"/>
onkeydown="return searchBox.OnSearchSelectKey(event)"> </a> 1.8.3.1
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Variables</a></div> </small></address>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Dec 18 2011 20:09:47 for TurboJPEG by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -2,35 +2,45 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>TurboJPEG: Main Page</title> <title>TurboJPEG: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG&#160;<span id="projectnumber">1.2</span></div> <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">1.2.1</span>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li> <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li> <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -48,19 +58,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
</div> </div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">TurboJPEG Documentation</div> </div>
</div>
<div class="contents">
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Variables</a></div> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -69,8 +73,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Dec 18 2011 20:09:47 for TurboJPEG by&#160; <div class="header">
<a href="http://www.doxygen.org/index.html"> <div class="headertitle">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="title">TurboJPEG Documentation</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body> </body>
</html> </html>

View File

@@ -1,112 +0,0 @@
#!/usr/bin/perl
%subst = ( );
$quiet = 0;
while ( @ARGV ) {
$_ = shift @ARGV;
if ( s/^-// ) {
if ( /^l(.*)/ ) {
$v = ($1 eq "") ? shift @ARGV : $1;
($v =~ /\/$/) || ($v .= "/");
$_ = $v;
if ( /(.+)\@(.+)/ ) {
if ( exists $subst{$1} ) {
$subst{$1} = $2;
} else {
print STDERR "Unknown tag file $1 given with option -l\n";
&usage();
}
} else {
print STDERR "Argument $_ is invalid for option -l\n";
&usage();
}
}
elsif ( /^q/ ) {
$quiet = 1;
}
elsif ( /^\?|^h/ ) {
&usage();
}
else {
print STDERR "Illegal option -$_\n";
&usage();
}
}
else {
push (@files, $_ );
}
}
foreach $sub (keys %subst)
{
if ( $subst{$sub} eq "" )
{
print STDERR "No substitute given for tag file `$sub'\n";
&usage();
}
elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" )
{
print "Substituting $subst{$sub} for each occurrence of tag file $sub\n";
}
}
if ( ! @files ) {
if (opendir(D,".")) {
foreach $file ( readdir(D) ) {
$match = ".html";
next if ( $file =~ /^\.\.?$/ );
($file =~ /$match/) && (push @files, $file);
($file =~ /\.svg/) && (push @files, $file);
($file =~ "navtree.js") && (push @files, $file);
}
closedir(D);
}
}
if ( ! @files ) {
print STDERR "Warning: No input files given and none found!\n";
}
foreach $f (@files)
{
if ( ! $quiet ) {
print "Editing: $f...\n";
}
$oldf = $f;
$f .= ".bak";
unless (rename $oldf,$f) {
print STDERR "Error: cannot rename file $oldf\n";
exit 1;
}
if (open(F,"<$f")) {
unless (open(G,">$oldf")) {
print STDERR "Error: opening file $oldf for writing\n";
exit 1;
}
if ($oldf ne "tree.js") {
while (<F>) {
s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (xlink:href|href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g;
print G "$_";
}
}
else {
while (<F>) {
s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g;
print G "$_";
}
}
}
else {
print STDERR "Warning file $f does not exist\n";
}
unlink $f;
}
sub usage {
print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n";
print STDERR "Options:\n";
print STDERR " -l tagfile\@linkName tag file + URL or directory \n";
print STDERR " -q Quiet mode\n\n";
exit 1;
}

62
doc/html/jquery.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -2,35 +2,45 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>TurboJPEG: Modules</title> <title>TurboJPEG: Modules</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/> <script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head> </head>
<body onload='searchBox.OnSelectItem(0);'> <body>
<!-- Generated by Doxygen 1.7.4 --> <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr style="height: 56px;">
<td style="padding-left: 0.5em;"> <td style="padding-left: 0.5em;">
<div id="projectname">TurboJPEG&#160;<span id="projectnumber">1.2</span></div> <div id="projectname">TurboJPEG
&#160;<span id="projectnumber">1.2.1</span>
</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs"> <div id="navrow1" class="tabs">
<ul class="tablist"> <ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li> <li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="modules.html"><span>Modules</span></a></li> <li class="current"><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li> <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li id="searchli"> <li>
<div id="MSearchBox" class="MSearchBoxInactive"> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.png" <img id="MSearchSelect" src="search/mag_sel.png"
@@ -48,22 +58,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</li> </li>
</ul> </ul>
</div> </div>
</div> </div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Modules</div> </div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all modules:</div><ul>
<li><a class="el" href="group___turbo_j_p_e_g.html">TurboJPEG</a></li>
</ul>
</div>
<!-- window showing the filter options --> <!-- window showing the filter options -->
<div id="MSearchSelectWindow" <div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()" onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)"> onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Variables</a></div> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a></div>
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
@@ -72,8 +73,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</iframe> </iframe>
</div> </div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Dec 18 2011 20:09:47 for TurboJPEG by&#160; <div class="header">
<a href="http://www.doxygen.org/index.html"> <div class="headertitle">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> <div class="title">Modules</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all modules:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="group___turbo_j_p_e_g.html" target="_self">TurboJPEG</a></td><td class="desc">TurboJPEG API</td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

After

Width:  |  Height:  |  Size: 153 B

BIN
doc/html/nav_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 B

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

After

Width:  |  Height:  |  Size: 123 B

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_63.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_customfilter"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#a43ee1bcdd2a8d7249a756774f78793c1" target="_parent">customFilter</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['customfilter',['customFilter',['../structtjtransform.html#a43ee1bcdd2a8d7249a756774f78793c1',1,'tjtransform']]]
];

View File

@@ -1,24 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_64.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_data"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3" target="_parent">data</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRResult" id="SR_denom">
<div class="SREntry">
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3" target="_parent">denom</a>
<span class="SRScope">tjscalingfactor</span>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,5 @@
var searchData=
[
['data',['data',['../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3',1,'tjtransform']]],
['denom',['denom',['../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3',1,'tjscalingfactor']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_68.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_h"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115" target="_parent">h</a> createResults();
<span class="SRScope">tjregion</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['h',['h',['../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115',1,'tjregion']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6e.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_num"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec" target="_parent">num</a> createResults();
<span class="SRScope">tjscalingfactor</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['num',['num',['../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec',1,'tjscalingfactor']]]
];

View File

@@ -1,24 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6f.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_op"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498" target="_parent">op</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRResult" id="SR_options">
<div class="SREntry">
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6" target="_parent">options</a>
<span class="SRScope">tjtransform</span>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,5 @@
var searchData=
[
['op',['op',['../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498',1,'tjtransform']]],
['options',['options',['../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6',1,'tjtransform']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_72.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_r"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf" target="_parent">r</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['r',['r',['../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf',1,'tjtransform']]]
];

View File

@@ -1,27 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_74.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_tjregion"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html" target="_parent">tjregion</a> createResults();
</div> --></script>
</div>
<div class="SRResult" id="SR_tjscalingfactor">
<div class="SREntry">
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../structtjscalingfactor.html" target="_parent">tjscalingfactor</a>
</div>
</div>
<div class="SRResult" id="SR_tjtransform">
<div class="SREntry">
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../structtjtransform.html" target="_parent">tjtransform</a>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

75
doc/html/search/all_74.js Normal file
View File

@@ -0,0 +1,75 @@
var searchData=
[
['tj_5fnumpf',['TJ_NUMPF',['../group___turbo_j_p_e_g.html#ga7010a4402f54a45ba822ad8675a4655e',1,'turbojpeg.h']]],
['tj_5fnumsamp',['TJ_NUMSAMP',['../group___turbo_j_p_e_g.html#ga5ef3d169162ce77ce348e292a0b7477c',1,'turbojpeg.h']]],
['tj_5fnumxop',['TJ_NUMXOP',['../group___turbo_j_p_e_g.html#ga0f6dbd18adf38b7d46ac547f0f4d562c',1,'turbojpeg.h']]],
['tjalloc',['tjAlloc',['../group___turbo_j_p_e_g.html#ga5c9234bda6d993cdaffdd89bf81a00ff',1,'turbojpeg.h']]],
['tjblueoffset',['tjBlueOffset',['../group___turbo_j_p_e_g.html#ga84e2e35d3f08025f976ec1ec53693dea',1,'turbojpeg.h']]],
['tjbufsize',['tjBufSize',['../group___turbo_j_p_e_g.html#gaccc5bca7f12fcdcc302e6e1c6d4b311b',1,'turbojpeg.h']]],
['tjbufsizeyuv',['tjBufSizeYUV',['../group___turbo_j_p_e_g.html#ga9d0cb06fd5052d21b6f2b382db8b219c',1,'turbojpeg.h']]],
['tjcompress2',['tjCompress2',['../group___turbo_j_p_e_g.html#gaba62b7a98f960839b588579898495cf2',1,'turbojpeg.h']]],
['tjdecompress2',['tjDecompress2',['../group___turbo_j_p_e_g.html#gada69cc6443d1bb493b40f1626259e5e9',1,'turbojpeg.h']]],
['tjdecompressheader2',['tjDecompressHeader2',['../group___turbo_j_p_e_g.html#gac5675fceb7997b385516cdffdb34e6aa',1,'turbojpeg.h']]],
['tjdecompresstoyuv',['tjDecompressToYUV',['../group___turbo_j_p_e_g.html#gad7810af095624a4016e72957a50f77d8',1,'turbojpeg.h']]],
['tjdestroy',['tjDestroy',['../group___turbo_j_p_e_g.html#ga674adee917b95ad4a896f1ba39e12540',1,'turbojpeg.h']]],
['tjencodeyuv2',['tjEncodeYUV2',['../group___turbo_j_p_e_g.html#ga0fa4e7b1943687c6a0c0304529c55d35',1,'turbojpeg.h']]],
['tjflag_5faccuratedct',['TJFLAG_ACCURATEDCT',['../group___turbo_j_p_e_g.html#gacb233cfd722d66d1ccbf48a7de81f0e0',1,'turbojpeg.h']]],
['tjflag_5fbottomup',['TJFLAG_BOTTOMUP',['../group___turbo_j_p_e_g.html#ga72ecf4ebe6eb702d3c6f5ca27455e1ec',1,'turbojpeg.h']]],
['tjflag_5ffastdct',['TJFLAG_FASTDCT',['../group___turbo_j_p_e_g.html#gaabce235db80d3f698b27f36cbd453da2',1,'turbojpeg.h']]],
['tjflag_5ffastupsample',['TJFLAG_FASTUPSAMPLE',['../group___turbo_j_p_e_g.html#ga4ee4506c81177a06f77e2504a22efd2d',1,'turbojpeg.h']]],
['tjflag_5fforcemmx',['TJFLAG_FORCEMMX',['../group___turbo_j_p_e_g.html#ga4e872f11c82f241736fa8297920f24e5',1,'turbojpeg.h']]],
['tjflag_5fforcesse',['TJFLAG_FORCESSE',['../group___turbo_j_p_e_g.html#gae17e63189e8cd730feed3efbd2454f38',1,'turbojpeg.h']]],
['tjflag_5fforcesse2',['TJFLAG_FORCESSE2',['../group___turbo_j_p_e_g.html#ga8cf0bca96ea4d472563f4b0ebf8c48e7',1,'turbojpeg.h']]],
['tjflag_5fforcesse3',['TJFLAG_FORCESSE3',['../group___turbo_j_p_e_g.html#gaf9d49066633404da4386d70820295dd2',1,'turbojpeg.h']]],
['tjflag_5fnorealloc',['TJFLAG_NOREALLOC',['../group___turbo_j_p_e_g.html#ga8808d403c68b62aaa58a4c1e58e98963',1,'turbojpeg.h']]],
['tjfree',['tjFree',['../group___turbo_j_p_e_g.html#ga8c4a1231dc06a450514c835f6471f137',1,'turbojpeg.h']]],
['tjgeterrorstr',['tjGetErrorStr',['../group___turbo_j_p_e_g.html#ga9af79c908ec131b1ae8d52fe40375abf',1,'turbojpeg.h']]],
['tjgetscalingfactors',['tjGetScalingFactors',['../group___turbo_j_p_e_g.html#ga6449044b9af402999ccf52f401333be8',1,'turbojpeg.h']]],
['tjgreenoffset',['tjGreenOffset',['../group___turbo_j_p_e_g.html#ga82d6e35da441112a411da41923c0ba2f',1,'turbojpeg.h']]],
['tjhandle',['tjhandle',['../group___turbo_j_p_e_g.html#ga758d2634ecb4949de7815cba621f5763',1,'turbojpeg.h']]],
['tjinitcompress',['tjInitCompress',['../group___turbo_j_p_e_g.html#ga3d10c47fbe4a2489a2b30c931551d01a',1,'turbojpeg.h']]],
['tjinitdecompress',['tjInitDecompress',['../group___turbo_j_p_e_g.html#gae5408179d041e2a2f7199c8283cf649e',1,'turbojpeg.h']]],
['tjinittransform',['tjInitTransform',['../group___turbo_j_p_e_g.html#ga3155b775bfbac9dbba869b95a0367902',1,'turbojpeg.h']]],
['tjmcuheight',['tjMCUHeight',['../group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf',1,'turbojpeg.h']]],
['tjmcuwidth',['tjMCUWidth',['../group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c',1,'turbojpeg.h']]],
['tjpad',['TJPAD',['../group___turbo_j_p_e_g.html#ga0aba955473315e405295d978f0c16511',1,'turbojpeg.h']]],
['tjpf',['TJPF',['../group___turbo_j_p_e_g.html#gac916144e26c3817ac514e64ae5d12e2a',1,'turbojpeg.h']]],
['tjpf_5fabgr',['TJPF_ABGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa1ba1a7f1631dbeaa49a0a85fc4a40081',1,'turbojpeg.h']]],
['tjpf_5fargb',['TJPF_ARGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aae8f846ed9d9de99b6e1dfe448848765c',1,'turbojpeg.h']]],
['tjpf_5fbgr',['TJPF_BGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aab10624437fb8ef495a0b153e65749839',1,'turbojpeg.h']]],
['tjpf_5fbgra',['TJPF_BGRA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aac037ff1845cf9b74bb81a3659c2b9fb4',1,'turbojpeg.h']]],
['tjpf_5fbgrx',['TJPF_BGRX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa2a1fbf569ca79897eae886e3376ca4c8',1,'turbojpeg.h']]],
['tjpf_5fgray',['TJPF_GRAY',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa5431b54b015337705f13118073711a1a',1,'turbojpeg.h']]],
['tjpf_5frgb',['TJPF_RGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7ce93230bff449518ce387c17e6ed37c',1,'turbojpeg.h']]],
['tjpf_5frgba',['TJPF_RGBA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa88d2e88fab67f6503cf972e14851cc12',1,'turbojpeg.h']]],
['tjpf_5frgbx',['TJPF_RGBX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa83973bebb7e2dc6fa8bae89ff3f42e01',1,'turbojpeg.h']]],
['tjpf_5fxbgr',['TJPF_XBGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aaf6603b27147de47e212e75dac027b2af',1,'turbojpeg.h']]],
['tjpf_5fxrgb',['TJPF_XRGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aadae996905efcfa3b42a0bb3bea7f9d84',1,'turbojpeg.h']]],
['tjpixelsize',['tjPixelSize',['../group___turbo_j_p_e_g.html#gad77cf8fe5b2bfd3cb3f53098146abb4c',1,'turbojpeg.h']]],
['tjredoffset',['tjRedOffset',['../group___turbo_j_p_e_g.html#gadd9b446742ac8a3923f7992c7988fea8',1,'turbojpeg.h']]],
['tjregion',['tjregion',['../structtjregion.html',1,'']]],
['tjsamp',['TJSAMP',['../group___turbo_j_p_e_g.html#ga1d047060ea80bb9820d540bb928e9074',1,'turbojpeg.h']]],
['tjsamp_5f420',['TJSAMP_420',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a63085dbf683cfe39e513cdb6343e3737',1,'turbojpeg.h']]],
['tjsamp_5f422',['TJSAMP_422',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a136130902cc578f11f32429b59368404',1,'turbojpeg.h']]],
['tjsamp_5f440',['TJSAMP_440',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074accf740e6f3aa6ba20ba922cad13cb974',1,'turbojpeg.h']]],
['tjsamp_5f444',['TJSAMP_444',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3',1,'turbojpeg.h']]],
['tjsamp_5fgray',['TJSAMP_GRAY',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a3f1c9504842ddc7a48d0f690754b6248',1,'turbojpeg.h']]],
['tjscaled',['TJSCALED',['../group___turbo_j_p_e_g.html#ga84878bb65404204743aa18cac02781df',1,'turbojpeg.h']]],
['tjscalingfactor',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]],
['tjtransform',['tjtransform',['../structtjtransform.html',1,'tjtransform'],['../group___turbo_j_p_e_g.html#gaa29f3189c41be12ec5dee7caec318a31',1,'tjtransform():&#160;turbojpeg.h'],['../group___turbo_j_p_e_g.html#gae403193ceb4aafb7e0f56ab587b48616',1,'tjTransform(tjhandle handle, unsigned char *jpegBuf, unsigned long jpegSize, int n, unsigned char **dstBufs, unsigned long *dstSizes, tjtransform *transforms, int flags):&#160;turbojpeg.h']]],
['tjxop',['TJXOP',['../group___turbo_j_p_e_g.html#ga2de531af4e7e6c4f124908376b354866',1,'turbojpeg.h']]],
['tjxop_5fhflip',['TJXOP_HFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aa0df69776caa30f0fa28e26332d311ce',1,'turbojpeg.h']]],
['tjxop_5fnone',['TJXOP_NONE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aad88c0366cd3f7d0eac9d7a3fa1c2c27',1,'turbojpeg.h']]],
['tjxop_5frot180',['TJXOP_ROT180',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a140952eb8dd0300accfcc22726d69692',1,'turbojpeg.h']]],
['tjxop_5frot270',['TJXOP_ROT270',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a3064ee5dfb7f032df332818587567a08',1,'turbojpeg.h']]],
['tjxop_5frot90',['TJXOP_ROT90',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a43b2bbb23bc4bd548422d43fbe9af128',1,'turbojpeg.h']]],
['tjxop_5ftranspose',['TJXOP_TRANSPOSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a31060aed199f886afdd417f80499c32d',1,'turbojpeg.h']]],
['tjxop_5ftransverse',['TJXOP_TRANSVERSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866af3b14d488aea6ece9e5b3df73a74d6a4',1,'turbojpeg.h']]],
['tjxop_5fvflip',['TJXOP_VFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a324eddfbec53b7e691f61e56929d0d5d',1,'turbojpeg.h']]],
['tjxopt_5fcrop',['TJXOPT_CROP',['../group___turbo_j_p_e_g.html#ga9c771a757fc1294add611906b89ab2d2',1,'turbojpeg.h']]],
['tjxopt_5fgray',['TJXOPT_GRAY',['../group___turbo_j_p_e_g.html#ga3acee7b48ade1b99e5588736007c2589',1,'turbojpeg.h']]],
['tjxopt_5fnooutput',['TJXOPT_NOOUTPUT',['../group___turbo_j_p_e_g.html#gafbf992bbf6e006705886333703ffab31',1,'turbojpeg.h']]],
['tjxopt_5fperfect',['TJXOPT_PERFECT',['../group___turbo_j_p_e_g.html#ga50e03cb5ed115330e212417429600b00',1,'turbojpeg.h']]],
['tjxopt_5ftrim',['TJXOPT_TRIM',['../group___turbo_j_p_e_g.html#ga319826b7eb1583c0595bbe7b95428709',1,'turbojpeg.h']]],
['turbojpeg',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_77.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_w"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42" target="_parent">w</a> createResults();
<span class="SRScope">tjregion</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['w',['w',['../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42',1,'tjregion']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_78.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_x"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9" target="_parent">x</a> createResults();
<span class="SRScope">tjregion</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['x',['x',['../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9',1,'tjregion']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_79.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_y"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2" target="_parent">y</a> createResults();
<span class="SRScope">tjregion</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['y',['y',['../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2',1,'tjregion']]]
];

View File

@@ -1,27 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_74.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_tjregion"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html" target="_parent">tjregion</a> createResults();
</div> --></script>
</div>
<div class="SRResult" id="SR_tjscalingfactor">
<div class="SREntry">
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../structtjscalingfactor.html" target="_parent">tjscalingfactor</a>
</div>
</div>
<div class="SRResult" id="SR_tjtransform">
<div class="SREntry">
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../structtjtransform.html" target="_parent">tjtransform</a>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,6 @@
var searchData=
[
['tjregion',['tjregion',['../structtjregion.html',1,'']]],
['tjscalingfactor',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]],
['tjtransform',['tjtransform',['../structtjtransform.html',1,'']]]
];

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enums_74.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,6 @@
var searchData=
[
['tjpf',['TJPF',['../group___turbo_j_p_e_g.html#gac916144e26c3817ac514e64ae5d12e2a',1,'turbojpeg.h']]],
['tjsamp',['TJSAMP',['../group___turbo_j_p_e_g.html#ga1d047060ea80bb9820d540bb928e9074',1,'turbojpeg.h']]],
['tjxop',['TJXOP',['../group___turbo_j_p_e_g.html#ga2de531af4e7e6c4f124908376b354866',1,'turbojpeg.h']]]
];

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enumvalues_74.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,27 @@
var searchData=
[
['tjpf_5fabgr',['TJPF_ABGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa1ba1a7f1631dbeaa49a0a85fc4a40081',1,'turbojpeg.h']]],
['tjpf_5fargb',['TJPF_ARGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aae8f846ed9d9de99b6e1dfe448848765c',1,'turbojpeg.h']]],
['tjpf_5fbgr',['TJPF_BGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aab10624437fb8ef495a0b153e65749839',1,'turbojpeg.h']]],
['tjpf_5fbgra',['TJPF_BGRA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aac037ff1845cf9b74bb81a3659c2b9fb4',1,'turbojpeg.h']]],
['tjpf_5fbgrx',['TJPF_BGRX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa2a1fbf569ca79897eae886e3376ca4c8',1,'turbojpeg.h']]],
['tjpf_5fgray',['TJPF_GRAY',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa5431b54b015337705f13118073711a1a',1,'turbojpeg.h']]],
['tjpf_5frgb',['TJPF_RGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa7ce93230bff449518ce387c17e6ed37c',1,'turbojpeg.h']]],
['tjpf_5frgba',['TJPF_RGBA',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa88d2e88fab67f6503cf972e14851cc12',1,'turbojpeg.h']]],
['tjpf_5frgbx',['TJPF_RGBX',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aa83973bebb7e2dc6fa8bae89ff3f42e01',1,'turbojpeg.h']]],
['tjpf_5fxbgr',['TJPF_XBGR',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aaf6603b27147de47e212e75dac027b2af',1,'turbojpeg.h']]],
['tjpf_5fxrgb',['TJPF_XRGB',['../group___turbo_j_p_e_g.html#ggac916144e26c3817ac514e64ae5d12e2aadae996905efcfa3b42a0bb3bea7f9d84',1,'turbojpeg.h']]],
['tjsamp_5f420',['TJSAMP_420',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a63085dbf683cfe39e513cdb6343e3737',1,'turbojpeg.h']]],
['tjsamp_5f422',['TJSAMP_422',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a136130902cc578f11f32429b59368404',1,'turbojpeg.h']]],
['tjsamp_5f440',['TJSAMP_440',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074accf740e6f3aa6ba20ba922cad13cb974',1,'turbojpeg.h']]],
['tjsamp_5f444',['TJSAMP_444',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3',1,'turbojpeg.h']]],
['tjsamp_5fgray',['TJSAMP_GRAY',['../group___turbo_j_p_e_g.html#gga1d047060ea80bb9820d540bb928e9074a3f1c9504842ddc7a48d0f690754b6248',1,'turbojpeg.h']]],
['tjxop_5fhflip',['TJXOP_HFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aa0df69776caa30f0fa28e26332d311ce',1,'turbojpeg.h']]],
['tjxop_5fnone',['TJXOP_NONE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866aad88c0366cd3f7d0eac9d7a3fa1c2c27',1,'turbojpeg.h']]],
['tjxop_5frot180',['TJXOP_ROT180',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a140952eb8dd0300accfcc22726d69692',1,'turbojpeg.h']]],
['tjxop_5frot270',['TJXOP_ROT270',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a3064ee5dfb7f032df332818587567a08',1,'turbojpeg.h']]],
['tjxop_5frot90',['TJXOP_ROT90',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a43b2bbb23bc4bd548422d43fbe9af128',1,'turbojpeg.h']]],
['tjxop_5ftranspose',['TJXOP_TRANSPOSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a31060aed199f886afdd417f80499c32d',1,'turbojpeg.h']]],
['tjxop_5ftransverse',['TJXOP_TRANSVERSE',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866af3b14d488aea6ece9e5b3df73a74d6a4',1,'turbojpeg.h']]],
['tjxop_5fvflip',['TJXOP_VFLIP',['../group___turbo_j_p_e_g.html#gga2de531af4e7e6c4f124908376b354866a324eddfbec53b7e691f61e56929d0d5d',1,'turbojpeg.h']]]
];

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_74.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,19 @@
var searchData=
[
['tjalloc',['tjAlloc',['../group___turbo_j_p_e_g.html#ga5c9234bda6d993cdaffdd89bf81a00ff',1,'turbojpeg.h']]],
['tjbufsize',['tjBufSize',['../group___turbo_j_p_e_g.html#gaccc5bca7f12fcdcc302e6e1c6d4b311b',1,'turbojpeg.h']]],
['tjbufsizeyuv',['tjBufSizeYUV',['../group___turbo_j_p_e_g.html#ga9d0cb06fd5052d21b6f2b382db8b219c',1,'turbojpeg.h']]],
['tjcompress2',['tjCompress2',['../group___turbo_j_p_e_g.html#gaba62b7a98f960839b588579898495cf2',1,'turbojpeg.h']]],
['tjdecompress2',['tjDecompress2',['../group___turbo_j_p_e_g.html#gada69cc6443d1bb493b40f1626259e5e9',1,'turbojpeg.h']]],
['tjdecompressheader2',['tjDecompressHeader2',['../group___turbo_j_p_e_g.html#gac5675fceb7997b385516cdffdb34e6aa',1,'turbojpeg.h']]],
['tjdecompresstoyuv',['tjDecompressToYUV',['../group___turbo_j_p_e_g.html#gad7810af095624a4016e72957a50f77d8',1,'turbojpeg.h']]],
['tjdestroy',['tjDestroy',['../group___turbo_j_p_e_g.html#ga674adee917b95ad4a896f1ba39e12540',1,'turbojpeg.h']]],
['tjencodeyuv2',['tjEncodeYUV2',['../group___turbo_j_p_e_g.html#ga0fa4e7b1943687c6a0c0304529c55d35',1,'turbojpeg.h']]],
['tjfree',['tjFree',['../group___turbo_j_p_e_g.html#ga8c4a1231dc06a450514c835f6471f137',1,'turbojpeg.h']]],
['tjgeterrorstr',['tjGetErrorStr',['../group___turbo_j_p_e_g.html#ga9af79c908ec131b1ae8d52fe40375abf',1,'turbojpeg.h']]],
['tjgetscalingfactors',['tjGetScalingFactors',['../group___turbo_j_p_e_g.html#ga6449044b9af402999ccf52f401333be8',1,'turbojpeg.h']]],
['tjinitcompress',['tjInitCompress',['../group___turbo_j_p_e_g.html#ga3d10c47fbe4a2489a2b30c931551d01a',1,'turbojpeg.h']]],
['tjinitdecompress',['tjInitDecompress',['../group___turbo_j_p_e_g.html#gae5408179d041e2a2f7199c8283cf649e',1,'turbojpeg.h']]],
['tjinittransform',['tjInitTransform',['../group___turbo_j_p_e_g.html#ga3155b775bfbac9dbba869b95a0367902',1,'turbojpeg.h']]],
['tjtransform',['tjTransform',['../group___turbo_j_p_e_g.html#gae403193ceb4aafb7e0f56ab587b48616',1,'turbojpeg.h']]]
];

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="groups_74.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
var searchData=
[
['turbojpeg',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]]
];

View File

@@ -4,13 +4,6 @@
float: left; float: left;
} }
#searchli {
float: right;
display: block;
width: 170px;
height: 36px;
}
#MSearchBox { #MSearchBox {
white-space : nowrap; white-space : nowrap;
position: absolute; position: absolute;
@@ -20,6 +13,7 @@
right: 0px; right: 0px;
width: 170px; width: 170px;
z-index: 102; z-index: 102;
background-color: white;
} }
#MSearchBox .left #MSearchBox .left
@@ -224,6 +218,10 @@ a.SRScope:focus, a.SRScope:active {
text-decoration: underline; text-decoration: underline;
} }
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus { .SRPage .SRStatus {
padding: 2px 5px; padding: 2px 5px;
font-size: 8pt; font-size: 8pt;
@@ -238,3 +236,36 @@ DIV.searchresults {
margin-left: 10px; margin-left: 10px;
margin-right: 10px; margin-right: 10px;
} }
/*---------------- External search page results */
.searchresult {
background-color: #F0F3F8;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}

View File

@@ -9,14 +9,24 @@ var indexSectionsWithContent =
{ {
0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100010000011001010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100010000011001010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100010000011001000011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100010000011001010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}; };
var indexSectionNames = var indexSectionNames =
{ {
0: "all", 0: "all",
1: "classes", 1: "classes",
2: "variables" 2: "functions",
3: "variables",
4: "typedefs",
5: "enums",
6: "enumvalues",
7: "groups"
}; };
function convertToId(search) function convertToId(search)
@@ -261,7 +271,7 @@ function SearchBox(name, resultsPath, inFrame, label)
var node = child.firstChild; var node = child.firstChild;
if (j==id) if (j==id)
{ {
node.innerHTML='&bull;'; node.innerHTML='&#8226;';
} }
else else
{ {
@@ -358,7 +368,7 @@ function SearchBox(name, resultsPath, inFrame, label)
hasResultsPage = false; hasResultsPage = false;
} }
window.frames.MSearchResults.location.href = resultsPageWithSearch; window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block') if (domPopupSearchResultsWindow.style.display!='block')
@@ -728,3 +738,72 @@ function SearchResults(name)
return false; return false;
} }
} }
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults()
{
var results = document.getElementById("SRResults");
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',searchData[e][1][1][0]);
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',searchData[e][1][c+1][0]);
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_74.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
var searchData=
[
['tjhandle',['tjhandle',['../group___turbo_j_p_e_g.html#ga758d2634ecb4949de7815cba621f5763',1,'turbojpeg.h']]],
['tjtransform',['tjtransform',['../group___turbo_j_p_e_g.html#gaa29f3189c41be12ec5dee7caec318a31',1,'turbojpeg.h']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_63.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_customfilter"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#a43ee1bcdd2a8d7249a756774f78793c1" target="_parent">customFilter</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['customfilter',['customFilter',['../structtjtransform.html#a43ee1bcdd2a8d7249a756774f78793c1',1,'tjtransform']]]
];

View File

@@ -1,24 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_64.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_data"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3" target="_parent">data</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRResult" id="SR_denom">
<div class="SREntry">
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3" target="_parent">denom</a>
<span class="SRScope">tjscalingfactor</span>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,5 @@
var searchData=
[
['data',['data',['../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3',1,'tjtransform']]],
['denom',['denom',['../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3',1,'tjscalingfactor']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_68.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_h"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115" target="_parent">h</a> createResults();
<span class="SRScope">tjregion</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['h',['h',['../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115',1,'tjregion']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_6e.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_num"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec" target="_parent">num</a> createResults();
<span class="SRScope">tjscalingfactor</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['num',['num',['../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec',1,'tjscalingfactor']]]
];

View File

@@ -1,24 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_6f.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_op"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498" target="_parent">op</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRResult" id="SR_options">
<div class="SREntry">
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6" target="_parent">options</a>
<span class="SRScope">tjtransform</span>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,5 @@
var searchData=
[
['op',['op',['../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498',1,'tjtransform']]],
['options',['options',['../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6',1,'tjtransform']]]
];

View File

@@ -1,18 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title> <html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/> <link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_72.js"></script>
<script type="text/javascript" src="search.js"></script> <script type="text/javascript" src="search.js"></script>
</head> </head>
<body class="SRPage"> <body class="SRPage">
<div id="SRIndex"> <div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div> <div class="SRStatus" id="Loading">Loading...</div>
<div class="SRResult" id="SR_r"> <div id="SRResults"></div>
<div class="SREntry"> <script type="text/javascript"><!--
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf" target="_parent">r</a> createResults();
<span class="SRScope">tjtransform</span> --></script>
</div>
</div>
<div class="SRStatus" id="Searching">Searching...</div> <div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div> <div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!-- <script type="text/javascript"><!--

View File

@@ -0,0 +1,4 @@
var searchData=
[
['r',['r',['../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf',1,'tjtransform']]]
];

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.3.1">
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_74.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,9 @@
var searchData=
[
['tjblueoffset',['tjBlueOffset',['../group___turbo_j_p_e_g.html#ga84e2e35d3f08025f976ec1ec53693dea',1,'turbojpeg.h']]],
['tjgreenoffset',['tjGreenOffset',['../group___turbo_j_p_e_g.html#ga82d6e35da441112a411da41923c0ba2f',1,'turbojpeg.h']]],
['tjmcuheight',['tjMCUHeight',['../group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf',1,'turbojpeg.h']]],
['tjmcuwidth',['tjMCUWidth',['../group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c',1,'turbojpeg.h']]],
['tjpixelsize',['tjPixelSize',['../group___turbo_j_p_e_g.html#gad77cf8fe5b2bfd3cb3f53098146abb4c',1,'turbojpeg.h']]],
['tjredoffset',['tjRedOffset',['../group___turbo_j_p_e_g.html#gadd9b446742ac8a3923f7992c7988fea8',1,'turbojpeg.h']]]
];

Some files were not shown because too many files have changed in this diff Show More