Compare commits
255 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8b0226d91 | ||
|
|
7a9faaefb4 | ||
|
|
3064cf7410 | ||
|
|
fc9995e4c9 | ||
|
|
506a742193 | ||
|
|
ad64b5a4c9 | ||
|
|
c7e10b21e8 | ||
|
|
2ae7918a8e | ||
|
|
88f260c78c | ||
|
|
40a0a023fa | ||
|
|
695b6e8680 | ||
|
|
aa255e2946 | ||
|
|
bcb5f02392 | ||
|
|
c33347c0aa | ||
|
|
df42b3cdf5 | ||
|
|
dd59233dd4 | ||
|
|
a15f19f2d2 | ||
|
|
d4b453c26e | ||
|
|
db0e2791e0 | ||
|
|
5eb1efa3d2 | ||
|
|
d45c54992b | ||
|
|
05d24e826d | ||
|
|
42aeac3ee2 | ||
|
|
4798b7e806 | ||
|
|
84c25cbec9 | ||
|
|
50cfc464b8 | ||
|
|
ea657b2f74 | ||
|
|
e2ce3b5eb0 | ||
|
|
ffa5e59218 | ||
|
|
5aec4afc62 | ||
|
|
c7a32466a6 | ||
|
|
693f4a5600 | ||
|
|
2c0c807fcc | ||
|
|
2885cf5830 | ||
|
|
d4ab63d191 | ||
|
|
88dee5863a | ||
|
|
e189ec7a48 | ||
|
|
3e00f03aea | ||
|
|
8d55c88cda | ||
|
|
b3a028e356 | ||
|
|
5a7e9e5baa | ||
|
|
43d8cf4d45 | ||
|
|
7ebf2941a9 | ||
|
|
cb92dccf0d | ||
|
|
e163653f99 | ||
|
|
c44750e50e | ||
|
|
4b509280ce | ||
|
|
4ac8700537 | ||
|
|
5aa6c9a553 | ||
|
|
6cef2b1059 | ||
|
|
f57a22de55 | ||
|
|
c45653e471 | ||
|
|
a6ef282a49 | ||
|
|
cadabd4239 | ||
|
|
e8be2c612a | ||
|
|
94b6c02d7d | ||
|
|
f369f17f8a | ||
|
|
5d2514b86f | ||
|
|
2c63c003be | ||
|
|
ba923a8529 | ||
|
|
1370f10326 | ||
|
|
24f11a73f2 | ||
|
|
6eb29ddb6f | ||
|
|
4d877931ab | ||
|
|
7ef26165cc | ||
|
|
ae92418cc1 | ||
|
|
ca866c48f0 | ||
|
|
7657726d38 | ||
|
|
07796da4e5 | ||
|
|
bcda6834d6 | ||
|
|
71ccb39d1e | ||
|
|
1520ee2986 | ||
|
|
dadebe97e4 | ||
|
|
c32e0c23c0 | ||
|
|
b92710377b | ||
|
|
d3eb40b97a | ||
|
|
6e0bbbf7e6 | ||
|
|
49df783743 | ||
|
|
04e0a0293a | ||
|
|
bb9e147872 | ||
|
|
1d29c5f97b | ||
|
|
67bee8683d | ||
|
|
65d4a46d3b | ||
|
|
c6eedebc6a | ||
|
|
0c83e5af00 | ||
|
|
d8522a7587 | ||
|
|
01fdcc391a | ||
|
|
9ce1a21ea7 | ||
|
|
0bb37a5d5f | ||
|
|
4c17a453d1 | ||
|
|
4578953843 | ||
|
|
d7a642b571 | ||
|
|
00400a0a58 | ||
|
|
441308cffa | ||
|
|
4b357abb6d | ||
|
|
94f7ac929a | ||
|
|
7175e51792 | ||
|
|
764e1e23aa | ||
|
|
0ddff3b059 | ||
|
|
7eced19feb | ||
|
|
08769b32f6 | ||
|
|
f32640e8cb | ||
|
|
6cd1ec4b09 | ||
|
|
7ed0aebdba | ||
|
|
5e96c9bfe0 | ||
|
|
5a84a0e1b3 | ||
|
|
fde862ba1d | ||
|
|
292fb8425e | ||
|
|
0bf58f2145 | ||
|
|
a35de7cc08 | ||
|
|
a2a2cd60e5 | ||
|
|
189ee81b58 | ||
|
|
0f7ff719a1 | ||
|
|
bdfcb74d50 | ||
|
|
5039d734d5 | ||
|
|
98ca1c35d7 | ||
|
|
2e22eb6ea2 | ||
|
|
6da61db278 | ||
|
|
dc4645d422 | ||
|
|
736fb06278 | ||
|
|
ab70623eb2 | ||
|
|
b87136c2c7 | ||
|
|
eff4f956fe | ||
|
|
e2394fc58a | ||
|
|
cb2036fd11 | ||
|
|
7c39e3a766 | ||
|
|
1f4cc446fe | ||
|
|
b87a0b4687 | ||
|
|
00c2cf3632 | ||
|
|
0f43551e08 | ||
|
|
c5052c7701 | ||
|
|
211d1e7463 | ||
|
|
5815699bff | ||
|
|
f29ffd3eed | ||
|
|
2f12d7a486 | ||
|
|
6f96153c67 | ||
|
|
e54d31affe | ||
|
|
6b638a6d58 | ||
|
|
d211effa01 | ||
|
|
dad4d2e76c | ||
|
|
d5e964c980 | ||
|
|
c168d9641c | ||
|
|
6a32d04d23 | ||
|
|
28701317d2 | ||
|
|
d7ca17b73d | ||
|
|
ac51438b66 | ||
|
|
966d8b77ef | ||
|
|
c137f0f1cf | ||
|
|
f37e4daf94 | ||
|
|
251db636f8 | ||
|
|
a9d39ce09d | ||
|
|
e0634b15c3 | ||
|
|
8cbf8939bb | ||
|
|
f73a27ca5b | ||
|
|
b5f2e450ac | ||
|
|
b24a7228ed | ||
|
|
6d6e37df18 | ||
|
|
cf763c0cd8 | ||
|
|
03badeab66 | ||
|
|
84f7122ba6 | ||
|
|
a73e870ad0 | ||
|
|
0bfb78051d | ||
|
|
2dcd4b5353 | ||
|
|
152e4c5ee4 | ||
|
|
75cf49798d | ||
|
|
5e3bb3e9c8 | ||
|
|
de924b8587 | ||
|
|
bc2e66cb43 | ||
|
|
d9d1d67d7c | ||
|
|
fac3bea8da | ||
|
|
61e1341f11 | ||
|
|
29d8f253f8 | ||
|
|
8fd7221dc1 | ||
|
|
a394bf752a | ||
|
|
0a0f8d14e2 | ||
|
|
2186809a45 | ||
|
|
e0419b530b | ||
|
|
3367f407fe | ||
|
|
cc336e7bd2 | ||
|
|
73d74c132b | ||
|
|
e0a0151761 | ||
|
|
fd3aba3590 | ||
|
|
112a0bb968 | ||
|
|
ea505e777a | ||
|
|
5950c5d4f9 | ||
|
|
ea7bb7b651 | ||
|
|
98eecb8605 | ||
|
|
13c318da4f | ||
|
|
14e8225391 | ||
|
|
de37e07716 | ||
|
|
575317bb54 | ||
|
|
df0babcfc2 | ||
|
|
8126d0c5a5 | ||
|
|
316617faf4 | ||
|
|
66fe68b0b2 | ||
|
|
69799275be | ||
|
|
b2fc846e44 | ||
|
|
dc31f0bc41 | ||
|
|
f659f43f93 | ||
|
|
dd2b651243 | ||
|
|
e93d94b9ad | ||
|
|
4f24016bde | ||
|
|
4ef9c9549b | ||
|
|
ea3396a945 | ||
|
|
9ba64bbbcf | ||
|
|
afc06929e0 | ||
|
|
6dd6b3a74c | ||
|
|
d4c15e103c | ||
|
|
8ad24924ea | ||
|
|
2eda8212e4 | ||
|
|
fd407776ba | ||
|
|
f52682e277 | ||
|
|
0559e94c72 | ||
|
|
21cc62bccb | ||
|
|
7c6ae034da | ||
|
|
c2f89f131d | ||
|
|
68071bd2e4 | ||
|
|
8015a30308 | ||
|
|
6bc5938482 | ||
|
|
cac105133e | ||
|
|
ffe4fc182f | ||
|
|
a9b646c202 | ||
|
|
0586d41d1b | ||
|
|
09e4575789 | ||
|
|
086c9ab549 | ||
|
|
0989088530 | ||
|
|
ed839d5905 | ||
|
|
c052646b34 | ||
|
|
99bebdd0aa | ||
|
|
02cd567fb9 | ||
|
|
bbaf4c94cd | ||
|
|
166c5ec0b9 | ||
|
|
1fbae8467f | ||
|
|
1256fbade9 | ||
|
|
3d40ad5f6e | ||
|
|
00b327b8f8 | ||
|
|
bdbcd14057 | ||
|
|
c8fb758bc2 | ||
|
|
be12e1dec5 | ||
|
|
cf775bf789 | ||
|
|
cb6157be7a | ||
|
|
0af8d67bd5 | ||
|
|
7ccb00701f | ||
|
|
4a2cdc26be | ||
|
|
3a5e362bd3 | ||
|
|
66a69f04c6 | ||
|
|
7ab0364a37 | ||
|
|
fb6c27e4e2 | ||
|
|
ab2df6ea1b | ||
|
|
33eca7e4f2 | ||
|
|
313a09b4b7 | ||
|
|
27fb3fc589 | ||
|
|
8660bcba72 | ||
|
|
bf0bdac1d3 | ||
|
|
ed5430ce9a |
281
BUILDING.txt
@@ -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.
|
||||||
|
|||||||
213
CMakeLists.txt
@@ -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
|
||||||
|
|||||||
204
ChangeLog.txt
@@ -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.
|
||||||
|
|||||||
270
Makefile.am
@@ -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
@@ -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.)
|
||||||
|
|||||||
330
README-turbo.txt
@@ -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
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
===============
|
===============
|
||||||
|
|||||||
10
acinclude.m4
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
18
change.log
@@ -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
@@ -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
@@ -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 */
|
||||||
|
|||||||
@@ -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
@@ -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()
|
||||||
379
configure.ac
@@ -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
@@ -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
@@ -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 */
|
||||||
|
|||||||
@@ -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 <span id="projectnumber">1.2</span></div>
|
<div id="projectname">TurboJPEG
|
||||||
|
 <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 Page</span></a></li>
|
<li><a href="index.html"><span>Main 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 Structures</span></a></li>
|
<li class="current"><a href="annotated.html"><span>Data 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 Fields</span></a></li>
|
<li><a href="functions.html"><span>Data 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Variables</a></div>
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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 
|
<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  <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>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 676 B |
BIN
doc/html/bdwn.png
Normal file
|
After Width: | Height: | Size: 147 B |
@@ -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 <span id="projectnumber">1.2</span></div>
|
<div id="projectname">TurboJPEG
|
||||||
|
 <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 Page</span></a></li>
|
<li><a href="index.html"><span>Main 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 Structures</span></a></li>
|
<li class="current"><a href="annotated.html"><span>Data 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 Fields</span></a></li>
|
<li><a href="functions.html"><span>Data 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">  T  </div></td></tr></table>
|
|
||||||
</td><td><a class="el" href="structtjregion.html">tjregion</a>   </td><td><a class="el" href="structtjscalingfactor.html">tjscalingfactor</a>   </td><td><a class="el" href="structtjtransform.html">tjtransform</a>   </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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Variables</a></div>
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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 
|
<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">  T  </div></td></tr></table>
|
||||||
|
</td><td valign="top"><a class="el" href="structtjscalingfactor.html">tjscalingfactor</a>   </td><td valign="top"><a class="el" href="structtjtransform.html">tjtransform</a>   </td><td></td></tr>
|
||||||
|
<tr><td></td><td></td><td></td></tr>
|
||||||
|
<tr><td valign="top"><a class="el" href="structtjregion.html">tjregion</a>   </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  <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>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 126 B After Width: | Height: | Size: 132 B |
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.7 KiB |
97
doc/html/dynsections.js
Normal 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
|
After Width: | Height: | Size: 86 B |
BIN
doc/html/ftv2cl.png
Normal file
|
After Width: | Height: | Size: 453 B |
BIN
doc/html/ftv2doc.png
Normal file
|
After Width: | Height: | Size: 746 B |
BIN
doc/html/ftv2folderclosed.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
doc/html/ftv2folderopen.png
Normal file
|
After Width: | Height: | Size: 597 B |
BIN
doc/html/ftv2lastnode.png
Normal file
|
After Width: | Height: | Size: 86 B |
BIN
doc/html/ftv2link.png
Normal file
|
After Width: | Height: | Size: 746 B |
BIN
doc/html/ftv2mlastnode.png
Normal file
|
After Width: | Height: | Size: 246 B |
BIN
doc/html/ftv2mnode.png
Normal file
|
After Width: | Height: | Size: 246 B |
BIN
doc/html/ftv2mo.png
Normal file
|
After Width: | Height: | Size: 403 B |
BIN
doc/html/ftv2node.png
Normal file
|
After Width: | Height: | Size: 86 B |
BIN
doc/html/ftv2ns.png
Normal file
|
After Width: | Height: | Size: 388 B |
BIN
doc/html/ftv2plastnode.png
Normal file
|
After Width: | Height: | Size: 229 B |
BIN
doc/html/ftv2pnode.png
Normal file
|
After Width: | Height: | Size: 229 B |
BIN
doc/html/ftv2splitbar.png
Normal file
|
After Width: | Height: | Size: 314 B |
BIN
doc/html/ftv2vertline.png
Normal file
|
After Width: | Height: | Size: 86 B |
@@ -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 <span id="projectnumber">1.2</span></div>
|
<div id="projectname">TurboJPEG
|
||||||
|
 <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 Page</span></a></li>
|
<li><a href="index.html"><span>Main 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 Structures</span></a></li>
|
<li class="current"><a href="annotated.html"><span>Data 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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  <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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </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 
|
|
||||||
<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>
|
||||||
|
|||||||
@@ -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 <span id="projectnumber">1.2</span></div>
|
<div id="projectname">TurboJPEG
|
||||||
|
 <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 Page</span></a></li>
|
<li><a href="index.html"><span>Main 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 Structures</span></a></li>
|
<li class="current"><a href="annotated.html"><span>Data 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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">
|
||||||
 <ul>
|
 <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  <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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </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 
|
|
||||||
<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>
|
||||||
|
|||||||
@@ -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 <span id="projectnumber">1.2</span></div>
|
<div id="projectname">TurboJPEG
|
||||||
|
 <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 Page</span></a></li>
|
<li class="current"><a href="index.html"><span>Main 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 Structures</span></a></li>
|
<li><a href="annotated.html"><span>Data 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Variables</a></div>
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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 
|
<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  <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>
|
||||||
|
|||||||
@@ -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
@@ -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 <span id="projectnumber">1.2</span></div>
|
<div id="projectname">TurboJPEG
|
||||||
|
 <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 Page</span></a></li>
|
<li><a href="index.html"><span>Main 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 Structures</span></a></li>
|
<li><a href="annotated.html"><span>Data 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Variables</a></div>
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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 
|
<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  <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>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 159 B After Width: | Height: | Size: 153 B |
BIN
doc/html/nav_g.png
Normal file
|
After Width: | Height: | Size: 95 B |
|
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 98 B |
|
Before Width: | Height: | Size: 118 B After Width: | Height: | Size: 123 B |
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_63.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['customfilter',['customFilter',['../structtjtransform.html#a43ee1bcdd2a8d7249a756774f78793c1',1,'tjtransform']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
5
doc/html/search/all_64.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['data',['data',['../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3',1,'tjtransform']]],
|
||||||
|
['denom',['denom',['../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3',1,'tjscalingfactor']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_68.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['h',['h',['../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115',1,'tjregion']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_6e.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['num',['num',['../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec',1,'tjscalingfactor']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
5
doc/html/search/all_6f.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['op',['op',['../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498',1,'tjtransform']]],
|
||||||
|
['options',['options',['../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6',1,'tjtransform']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_72.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['r',['r',['../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf',1,'tjtransform']]]
|
||||||
|
];
|
||||||
@@ -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
@@ -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(): 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): 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,'']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_77.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['w',['w',['../structtjregion.html#ab6eb73ceef584fc23c8c8097926dce42',1,'tjregion']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_78.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['x',['x',['../structtjregion.html#a4b6a37a93997091b26a75831fa291ad9',1,'tjregion']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/all_79.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['y',['y',['../structtjregion.html#a7b3e0c24cfe87acc80e334cafdcf22c2',1,'tjregion']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
6
doc/html/search/classes_74.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['tjregion',['tjregion',['../structtjregion.html',1,'']]],
|
||||||
|
['tjscalingfactor',['tjscalingfactor',['../structtjscalingfactor.html',1,'']]],
|
||||||
|
['tjtransform',['tjtransform',['../structtjtransform.html',1,'']]]
|
||||||
|
];
|
||||||
26
doc/html/search/enums_74.html
Normal 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>
|
||||||
6
doc/html/search/enums_74.js
Normal 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']]]
|
||||||
|
];
|
||||||
26
doc/html/search/enumvalues_74.html
Normal 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>
|
||||||
27
doc/html/search/enumvalues_74.js
Normal 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']]]
|
||||||
|
];
|
||||||
26
doc/html/search/functions_74.html
Normal 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>
|
||||||
19
doc/html/search/functions_74.js
Normal 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']]]
|
||||||
|
];
|
||||||
26
doc/html/search/groups_74.html
Normal 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>
|
||||||
4
doc/html/search/groups_74.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['turbojpeg',['TurboJPEG',['../group___turbo_j_p_e_g.html',1,'']]]
|
||||||
|
];
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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='•';
|
node.innerHTML='•';
|
||||||
}
|
}
|
||||||
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
26
doc/html/search/typedefs_74.html
Normal 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>
|
||||||
5
doc/html/search/typedefs_74.js
Normal 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']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/variables_63.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['customfilter',['customFilter',['../structtjtransform.html#a43ee1bcdd2a8d7249a756774f78793c1',1,'tjtransform']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
5
doc/html/search/variables_64.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['data',['data',['../structtjtransform.html#a688fe8f1a8ecc12a538d9e561cf338e3',1,'tjtransform']]],
|
||||||
|
['denom',['denom',['../structtjscalingfactor.html#aefbcdf3e9e62274b2d312c695f133ce3',1,'tjscalingfactor']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/variables_68.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['h',['h',['../structtjregion.html#aecefc45a26f4d8b60dd4d825c1710115',1,'tjregion']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/variables_6e.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['num',['num',['../structtjscalingfactor.html#a9b011e57f981ee23083e2c1aa5e640ec',1,'tjscalingfactor']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
5
doc/html/search/variables_6f.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['op',['op',['../structtjtransform.html#a2525aab4ba6978a1c273f74fef50e498',1,'tjtransform']]],
|
||||||
|
['options',['options',['../structtjtransform.html#ac0e74655baa4402209a21e1ae481c8f6',1,'tjtransform']]]
|
||||||
|
];
|
||||||
@@ -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"><!--
|
||||||
|
|||||||
4
doc/html/search/variables_72.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
var searchData=
|
||||||
|
[
|
||||||
|
['r',['r',['../structtjtransform.html#ac324e5e442abec8a961e5bf219db12cf',1,'tjtransform']]]
|
||||||
|
];
|
||||||
26
doc/html/search/variables_74.html
Normal 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>
|
||||||
9
doc/html/search/variables_74.js
Normal 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']]]
|
||||||
|
];
|
||||||