1 | The Independent JPEG Group's JPEG software
|
---|
2 | ==========================================
|
---|
3 |
|
---|
4 | README for release 8 of 10-Jan-2010
|
---|
5 | ===================================
|
---|
6 |
|
---|
7 | This distribution contains the eighth public release of the Independent JPEG
|
---|
8 | Group's free JPEG software. You are welcome to redistribute this software and
|
---|
9 | to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
|
---|
10 |
|
---|
11 | This software is the work of Tom Lane, Guido Vollbeding, Philip Gladstone,
|
---|
12 | Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson,
|
---|
13 | Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers,
|
---|
14 | and other members of the Independent JPEG Group.
|
---|
15 |
|
---|
16 | IJG is not affiliated with the official ISO JPEG standards committee.
|
---|
17 |
|
---|
18 |
|
---|
19 | DOCUMENTATION ROADMAP
|
---|
20 | =====================
|
---|
21 |
|
---|
22 | This file contains the following sections:
|
---|
23 |
|
---|
24 | OVERVIEW General description of JPEG and the IJG software.
|
---|
25 | LEGAL ISSUES Copyright, lack of warranty, terms of distribution.
|
---|
26 | REFERENCES Where to learn more about JPEG.
|
---|
27 | ARCHIVE LOCATIONS Where to find newer versions of this software.
|
---|
28 | ACKNOWLEDGMENTS Special thanks.
|
---|
29 | FILE FORMAT WARS Software *not* to get.
|
---|
30 | TO DO Plans for future IJG releases.
|
---|
31 |
|
---|
32 | Other documentation files in the distribution are:
|
---|
33 |
|
---|
34 | User documentation:
|
---|
35 | install.txt How to configure and install the IJG software.
|
---|
36 | usage.txt Usage instructions for cjpeg, djpeg, jpegtran,
|
---|
37 | rdjpgcom, and wrjpgcom.
|
---|
38 | *.1 Unix-style man pages for programs (same info as usage.txt).
|
---|
39 | wizard.txt Advanced usage instructions for JPEG wizards only.
|
---|
40 | change.log Version-to-version change highlights.
|
---|
41 | Programmer and internal documentation:
|
---|
42 | libjpeg.txt How to use the JPEG library in your own programs.
|
---|
43 | example.c Sample code for calling the JPEG library.
|
---|
44 | structure.txt Overview of the JPEG library's internal structure.
|
---|
45 | filelist.txt Road map of IJG files.
|
---|
46 | coderules.txt Coding style rules --- please read if you contribute code.
|
---|
47 |
|
---|
48 | Please read at least the files install.txt and usage.txt. Some information
|
---|
49 | can also be found in the JPEG FAQ (Frequently Asked Questions) article. See
|
---|
50 | ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
|
---|
51 |
|
---|
52 | If you want to understand how the JPEG code works, we suggest reading one or
|
---|
53 | more of the REFERENCES, then looking at the documentation files (in roughly
|
---|
54 | the order listed) before diving into the code.
|
---|
55 |
|
---|
56 |
|
---|
57 | OVERVIEW
|
---|
58 | ========
|
---|
59 |
|
---|
60 | This package contains C software to implement JPEG image encoding, decoding,
|
---|
61 | and transcoding. JPEG (pronounced "jay-peg") is a standardized compression
|
---|
62 | method for full-color and gray-scale images.
|
---|
63 |
|
---|
64 | This software implements JPEG baseline, extended-sequential, and progressive
|
---|
65 | compression processes. Provision is made for supporting all variants of these
|
---|
66 | processes, although some uncommon parameter settings aren't implemented yet.
|
---|
67 | We have made no provision for supporting the hierarchical or lossless
|
---|
68 | processes defined in the standard.
|
---|
69 |
|
---|
70 | We provide a set of library routines for reading and writing JPEG image files,
|
---|
71 | plus two sample applications "cjpeg" and "djpeg", which use the library to
|
---|
72 | perform conversion between JPEG and some other popular image file formats.
|
---|
73 | The library is intended to be reused in other applications.
|
---|
74 |
|
---|
75 | In order to support file conversion and viewing software, we have included
|
---|
76 | considerable functionality beyond the bare JPEG coding/decoding capability;
|
---|
77 | for example, the color quantization modules are not strictly part of JPEG
|
---|
78 | decoding, but they are essential for output to colormapped file formats or
|
---|
79 | colormapped displays. These extra functions can be compiled out of the
|
---|
80 | library if not required for a particular application.
|
---|
81 |
|
---|
82 | We have also included "jpegtran", a utility for lossless transcoding between
|
---|
83 | different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple
|
---|
84 | applications for inserting and extracting textual comments in JFIF files.
|
---|
85 |
|
---|
86 | The emphasis in designing this software has been on achieving portability and
|
---|
87 | flexibility, while also making it fast enough to be useful. In particular,
|
---|
88 | the software is not intended to be read as a tutorial on JPEG. (See the
|
---|
89 | REFERENCES section for introductory material.) Rather, it is intended to
|
---|
90 | be reliable, portable, industrial-strength code. We do not claim to have
|
---|
91 | achieved that goal in every aspect of the software, but we strive for it.
|
---|
92 |
|
---|
93 | We welcome the use of this software as a component of commercial products.
|
---|
94 | No royalty is required, but we do ask for an acknowledgement in product
|
---|
95 | documentation, as described under LEGAL ISSUES.
|
---|
96 |
|
---|
97 |
|
---|
98 | LEGAL ISSUES
|
---|
99 | ============
|
---|
100 |
|
---|
101 | In plain English:
|
---|
102 |
|
---|
103 | 1. We don't promise that this software works. (But if you find any bugs,
|
---|
104 | please let us know!)
|
---|
105 | 2. You can use this software for whatever you want. You don't have to pay us.
|
---|
106 | 3. You may not pretend that you wrote this software. If you use it in a
|
---|
107 | program, you must acknowledge somewhere in your documentation that
|
---|
108 | you've used the IJG code.
|
---|
109 |
|
---|
110 | In legalese:
|
---|
111 |
|
---|
112 | The authors make NO WARRANTY or representation, either express or implied,
|
---|
113 | with respect to this software, its quality, accuracy, merchantability, or
|
---|
114 | fitness for a particular purpose. This software is provided "AS IS", and you,
|
---|
115 | its user, assume the entire risk as to its quality and accuracy.
|
---|
116 |
|
---|
117 | This software is copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.
|
---|
118 | All Rights Reserved except as specified below.
|
---|
119 |
|
---|
120 | Permission is hereby granted to use, copy, modify, and distribute this
|
---|
121 | software (or portions thereof) for any purpose, without fee, subject to these
|
---|
122 | conditions:
|
---|
123 | (1) If any part of the source code for this software is distributed, then this
|
---|
124 | README file must be included, with this copyright and no-warranty notice
|
---|
125 | unaltered; and any additions, deletions, or changes to the original files
|
---|
126 | must be clearly indicated in accompanying documentation.
|
---|
127 | (2) If only executable code is distributed, then the accompanying
|
---|
128 | documentation must state that "this software is based in part on the work of
|
---|
129 | the Independent JPEG Group".
|
---|
130 | (3) Permission for use of this software is granted only if the user accepts
|
---|
131 | full responsibility for any undesirable consequences; the authors accept
|
---|
132 | NO LIABILITY for damages of any kind.
|
---|
133 |
|
---|
134 | These conditions apply to any software derived from or based on the IJG code,
|
---|
135 | not just to the unmodified library. If you use our work, you ought to
|
---|
136 | acknowledge us.
|
---|
137 |
|
---|
138 | Permission is NOT granted for the use of any IJG author's name or company name
|
---|
139 | in advertising or publicity relating to this software or products derived from
|
---|
140 | it. This software may be referred to only as "the Independent JPEG Group's
|
---|
141 | software".
|
---|
142 |
|
---|
143 | We specifically permit and encourage the use of this software as the basis of
|
---|
144 | commercial products, provided that all warranty or liability claims are
|
---|
145 | assumed by the product vendor.
|
---|
146 |
|
---|
147 |
|
---|
148 | ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
|
---|
149 | sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
|
---|
150 | ansi2knr.c is NOT covered by the above copyright and conditions, but instead
|
---|
151 | by the usual distribution terms of the Free Software Foundation; principally,
|
---|
152 | that you must include source code if you redistribute it. (See the file
|
---|
153 | ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
|
---|
154 | of any program generated from the IJG code, this does not limit you more than
|
---|
155 | the foregoing paragraphs do.
|
---|
156 |
|
---|
157 | The Unix configuration script "configure" was produced with GNU Autoconf.
|
---|
158 | It is copyright by the Free Software Foundation but is freely distributable.
|
---|
159 | The same holds for its supporting scripts (config.guess, config.sub,
|
---|
160 | ltmain.sh). Another support script, install-sh, is copyright by X Consortium
|
---|
161 | but is also freely distributable.
|
---|
162 |
|
---|
163 | The IJG distribution formerly included code to read and write GIF files.
|
---|
164 | To avoid entanglement with the Unisys LZW patent, GIF reading support has
|
---|
165 | been removed altogether, and the GIF writer has been simplified to produce
|
---|
166 | "uncompressed GIFs". This technique does not use the LZW algorithm; the
|
---|
167 | resulting GIF files are larger than usual, but are readable by all standard
|
---|
168 | GIF decoders.
|
---|
169 |
|
---|
170 | We are required to state that
|
---|
171 | "The Graphics Interchange Format(c) is the Copyright property of
|
---|
172 | CompuServe Incorporated. GIF(sm) is a Service Mark property of
|
---|
173 | CompuServe Incorporated."
|
---|
174 |
|
---|
175 |
|
---|
176 | REFERENCES
|
---|
177 | ==========
|
---|
178 |
|
---|
179 | We recommend reading one or more of these references before trying to
|
---|
180 | understand the innards of the JPEG software.
|
---|
181 |
|
---|
182 | The best short technical introduction to the JPEG compression algorithm is
|
---|
183 | Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
|
---|
184 | Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
|
---|
185 | (Adjacent articles in that issue discuss MPEG motion picture compression,
|
---|
186 | applications of JPEG, and related topics.) If you don't have the CACM issue
|
---|
187 | handy, a PostScript file containing a revised version of Wallace's article is
|
---|
188 | available at http://www.ijg.org/files/wallace.ps.gz. The file (actually
|
---|
189 | a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
|
---|
190 | omits the sample images that appeared in CACM, but it includes corrections
|
---|
191 | and some added material. Note: the Wallace article is copyright ACM and IEEE,
|
---|
192 | and it may not be used for commercial purposes.
|
---|
193 |
|
---|
194 | A somewhat less technical, more leisurely introduction to JPEG can be found in
|
---|
195 | "The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
|
---|
196 | M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides
|
---|
197 | good explanations and example C code for a multitude of compression methods
|
---|
198 | including JPEG. It is an excellent source if you are comfortable reading C
|
---|
199 | code but don't know much about data compression in general. The book's JPEG
|
---|
200 | sample code is far from industrial-strength, but when you are ready to look
|
---|
201 | at a full implementation, you've got one here...
|
---|
202 |
|
---|
203 | The best currently available description of JPEG is the textbook "JPEG Still
|
---|
204 | Image Data Compression Standard" by William B. Pennebaker and Joan L.
|
---|
205 | Mitchell, published by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.
|
---|
206 | Price US$59.95, 638 pp. The book includes the complete text of the ISO JPEG
|
---|
207 | standards (DIS 10918-1 and draft DIS 10918-2).
|
---|
208 | Although this is by far the most detailed and comprehensive exposition of
|
---|
209 | JPEG publicly available, we point out that it is still missing an explanation
|
---|
210 | of the most essential properties and algorithms of the underlying DCT
|
---|
211 | technology.
|
---|
212 | If you think that you know about DCT-based JPEG after reading this book,
|
---|
213 | then you are in delusion. The real fundamentals and corresponding potential
|
---|
214 | of DCT-based JPEG are not publicly known so far, and that is the reason for
|
---|
215 | all the mistaken developments taking place in the image coding domain.
|
---|
216 |
|
---|
217 | The original JPEG standard is divided into two parts, Part 1 being the actual
|
---|
218 | specification, while Part 2 covers compliance testing methods. Part 1 is
|
---|
219 | titled "Digital Compression and Coding of Continuous-tone Still Images,
|
---|
220 | Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
|
---|
221 | 10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of
|
---|
222 | Continuous-tone Still Images, Part 2: Compliance testing" and has document
|
---|
223 | numbers ISO/IEC IS 10918-2, ITU-T T.83.
|
---|
224 | IJG JPEG 8 introduces an implementation of the JPEG SmartScale extension
|
---|
225 | which is specified in a contributed document at ITU and ISO with title "ITU-T
|
---|
226 | JPEG-Plus Proposal for Extending ITU-T T.81 for Advanced Image Coding", April
|
---|
227 | 2006, Geneva, Switzerland. The latest version of the document is Revision 3.
|
---|
228 |
|
---|
229 | The JPEG standard does not specify all details of an interchangeable file
|
---|
230 | format. For the omitted details we follow the "JFIF" conventions, revision
|
---|
231 | 1.02. JFIF 1.02 has been adopted as an Ecma International Technical Report
|
---|
232 | and thus received a formal publication status. It is available as a free
|
---|
233 | download in PDF format from
|
---|
234 | http://www.ecma-international.org/publications/techreports/E-TR-098.htm.
|
---|
235 | A PostScript version of the JFIF document is available at
|
---|
236 | http://www.ijg.org/files/jfif.ps.gz. There is also a plain text version at
|
---|
237 | http://www.ijg.org/files/jfif.txt.gz, but it is missing the figures.
|
---|
238 |
|
---|
239 | The TIFF 6.0 file format specification can be obtained by FTP from
|
---|
240 | ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme
|
---|
241 | found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
|
---|
242 | IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
|
---|
243 | Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
|
---|
244 | (Compression tag 7). Copies of this Note can be obtained from
|
---|
245 | http://www.ijg.org/files/. It is expected that the next revision
|
---|
246 | of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
|
---|
247 | Although IJG's own code does not support TIFF/JPEG, the free libtiff library
|
---|
248 | uses our library to implement TIFF/JPEG per the Note.
|
---|
249 |
|
---|
250 |
|
---|
251 | ARCHIVE LOCATIONS
|
---|
252 | =================
|
---|
253 |
|
---|
254 | The "official" archive site for this software is www.ijg.org.
|
---|
255 | The most recent released version can always be found there in
|
---|
256 | directory "files". This particular version will be archived as
|
---|
257 | http://www.ijg.org/files/jpegsrc.v8.tar.gz, and in Windows-compatible
|
---|
258 | "zip" archive format as http://www.ijg.org/files/jpegsr8.zip.
|
---|
259 |
|
---|
260 | The JPEG FAQ (Frequently Asked Questions) article is a source of some
|
---|
261 | general information about JPEG.
|
---|
262 | It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/
|
---|
263 | and other news.answers archive sites, including the official news.answers
|
---|
264 | archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/.
|
---|
265 | If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu
|
---|
266 | with body
|
---|
267 | send usenet/news.answers/jpeg-faq/part1
|
---|
268 | send usenet/news.answers/jpeg-faq/part2
|
---|
269 |
|
---|
270 |
|
---|
271 | ACKNOWLEDGMENTS
|
---|
272 | ===============
|
---|
273 |
|
---|
274 | Thank to Juergen Bruder for providing me with a copy of the common DCT
|
---|
275 | algorithm article, only to find out that I had come to the same result
|
---|
276 | in a more direct and comprehensible way with a more generative approach.
|
---|
277 |
|
---|
278 | Thank to Istvan Sebestyen and Joan L. Mitchell for inviting me to the
|
---|
279 | ITU JPEG (Study Group 16) meeting in Geneva, Switzerland.
|
---|
280 |
|
---|
281 | Thank to Thomas Wiegand and Gary Sullivan for inviting me to the
|
---|
282 | Joint Video Team (MPEG & ITU) meeting in Geneva, Switzerland.
|
---|
283 |
|
---|
284 | Thank to John Korejwa and Massimo Ballerini for inviting me to
|
---|
285 | fruitful consultations in Boston, MA and Milan, Italy.
|
---|
286 |
|
---|
287 | Thank to Hendrik Elstner, Roland Fassauer, Simone Zuck, Guenther
|
---|
288 | Maier-Gerber, and Walter Stoeber for corresponding business development.
|
---|
289 |
|
---|
290 | Thank to Nico Zschach and Dirk Stelling of the technical support team
|
---|
291 | at the Digital Images company in Halle for providing me with extra
|
---|
292 | equipment for configuration tests.
|
---|
293 |
|
---|
294 | Thank to Richard F. Lyon (then of Foveon Inc.) for fruitful
|
---|
295 | communication about JPEG configuration in Sigma Photo Pro software.
|
---|
296 |
|
---|
297 | Thank to Andrew Finkenstadt for hosting the ijg.org site.
|
---|
298 |
|
---|
299 | Last but not least special thank to Thomas G. Lane for the original
|
---|
300 | design and development of this singular software package.
|
---|
301 |
|
---|
302 |
|
---|
303 | FILE FORMAT WARS
|
---|
304 | ================
|
---|
305 |
|
---|
306 | The ISO JPEG standards committee actually promotes different formats like
|
---|
307 | "JPEG 2000" or "JPEG XR" which are incompatible with original DCT-based
|
---|
308 | JPEG and which are based on faulty technologies. IJG therefore does not
|
---|
309 | and will not support such momentary mistakes (see REFERENCES).
|
---|
310 | We have little or no sympathy for the promotion of these formats. Indeed,
|
---|
311 | one of the original reasons for developing this free software was to help
|
---|
312 | force convergence on common, interoperable format standards for JPEG files.
|
---|
313 | Don't use an incompatible file format!
|
---|
314 | (In any case, our decoder will remain capable of reading existing JPEG
|
---|
315 | image files indefinitely.)
|
---|
316 |
|
---|
317 |
|
---|
318 | TO DO
|
---|
319 | =====
|
---|
320 |
|
---|
321 | Version 8.0 is the first release of a new generation JPEG standard
|
---|
322 | to overcome the limitations of the original JPEG specification.
|
---|
323 | More features are being prepared for coming releases...
|
---|
324 |
|
---|
325 | Please send bug reports, offers of help, etc. to jpeg-info@uc.ag.
|
---|