| 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. | 
|---|