media/libjpeg/README

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

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

mercurial