1The JPEG decoder in SANE is taken mostly without change from The 2Independent JPEG Group's JPEG software, release 6a. Their "djpeg.README" 3file is included below. The only changes are to file names, e.g. 4djpeg.c -> sanei_jpeg.c, and function names, 5e.g. sanei_jpeg_start_output_ppm() 6 7 8The Independent JPEG Group's JPEG software 9========================================== 10 11README for release 6a of 7-Feb-96 12================================= 13 14This distribution contains the sixth public release of the Independent JPEG 15Group's free JPEG software. You are welcome to redistribute this software and 16to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. 17 18Serious users of this software (particularly those incorporating it into 19larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to 20our electronic mailing list. Mailing list members are notified of updates 21and have a chance to participate in technical discussions, etc. 22 23This software is the work of Tom Lane, Philip Gladstone, Luis Ortiz, Jim 24Boucher, Lee Crocker, Julian Minguillon, George Phillips, Davide Rossi, 25Ge' Weijers, and other members of the Independent JPEG Group. 26 27IJG is not affiliated with the official ISO JPEG standards committee. 28 29 30DOCUMENTATION ROADMAP 31===================== 32 33This file contains the following sections: 34 35OVERVIEW General description of JPEG and the IJG software. 36LEGAL ISSUES Copyright, lack of warranty, terms of distribution. 37REFERENCES Where to learn more about JPEG. 38ARCHIVE LOCATIONS Where to find newer versions of this software. 39RELATED SOFTWARE Other stuff you should get. 40FILE FORMAT WARS Software *not* to get. 41TO DO Plans for future IJG releases. 42 43Other documentation files in the distribution are: 44 45User documentation: 46 install.doc How to configure and install the IJG software. 47 usage.doc Usage instructions for cjpeg, djpeg, jpegtran, 48 rdjpgcom, and wrjpgcom. 49 *.1 Unix-style man pages for programs (same info as usage.doc). 50 wizard.doc Advanced usage instructions for JPEG wizards only. 51 change.log Version-to-version change highlights. 52Programmer and internal documentation: 53 libjpeg.doc How to use the JPEG library in your own programs. 54 example.c Sample code for calling the JPEG library. 55 structure.doc Overview of the JPEG library's internal structure. 56 filelist.doc Road map of IJG files. 57 coderules.doc Coding style rules --- please read if you contribute code. 58 59Please read at least the files install.doc and usage.doc. Useful information 60can also be found in the JPEG FAQ (Frequently Asked Questions) article. See 61ARCHIVE LOCATIONS below to find out where to obtain the FAQ article. 62 63If you want to understand how the JPEG code works, we suggest reading one or 64more of the REFERENCES, then looking at the documentation files (in roughly 65the order listed) before diving into the code. 66 67 68OVERVIEW 69======== 70 71This package contains C software to implement JPEG image compression and 72decompression. JPEG (pronounced "jay-peg") is a standardized compression 73method for full-color and gray-scale images. JPEG is intended for compressing 74"real-world" scenes; line drawings, cartoons and other non-realistic images 75are not its strong suit. JPEG is lossy, meaning that the output image is not 76exactly identical to the input image. Hence you must not use JPEG if you 77have to have identical output bits. However, on typical photographic images, 78very good compression levels can be obtained with no visible change, and 79remarkably high compression levels are possible if you can tolerate a 80low-quality image. For more details, see the references, or just experiment 81with various compression settings. 82 83This software implements JPEG baseline, extended-sequential, and progressive 84compression processes. Provision is made for supporting all variants of these 85processes, although some uncommon parameter settings aren't implemented yet. 86For legal reasons, we are not distributing code for the arithmetic-coding 87variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting 88the hierarchical or lossless processes defined in the standard. 89 90We provide a set of library routines for reading and writing JPEG image files, 91plus two sample applications "cjpeg" and "djpeg", which use the library to 92perform conversion between JPEG and some other popular image file formats. 93The library is intended to be reused in other applications. 94 95In order to support file conversion and viewing software, we have included 96considerable functionality beyond the bare JPEG coding/decoding capability; 97for example, the color quantization modules are not strictly part of JPEG 98decoding, but they are essential for output to colormapped file formats or 99colormapped displays. These extra functions can be compiled out of the 100library if not required for a particular application. We have also included 101"jpegtran", a utility for lossless transcoding between different JPEG 102processes, and "rdjpgcom" and "wrjpgcom", two simple applications for 103inserting and extracting textual comments in JFIF files. 104 105The emphasis in designing this software has been on achieving portability and 106flexibility, while also making it fast enough to be useful. In particular, 107the software is not intended to be read as a tutorial on JPEG. (See the 108REFERENCES section for introductory material.) Rather, it is intended to 109be reliable, portable, industrial-strength code. We do not claim to have 110achieved that goal in every aspect of the software, but we strive for it. 111 112We welcome the use of this software as a component of commercial products. 113No royalty is required, but we do ask for an acknowledgement in product 114documentation, as described under LEGAL ISSUES. 115 116 117LEGAL ISSUES 118============ 119 120In plain English: 121 1221. We don't promise that this software works. (But if you find any bugs, 123 please let us know!) 1242. You can use this software for whatever you want. You don't have to pay us. 1253. You may not pretend that you wrote this software. If you use it in a 126 program, you must acknowledge somewhere in your documentation that 127 you've used the IJG code. 128 129In legalese: 130 131The authors make NO WARRANTY or representation, either express or implied, 132with respect to this software, its quality, accuracy, merchantability, or 133fitness for a particular purpose. This software is provided "AS IS", and you, 134its user, assume the entire risk as to its quality and accuracy. 135 136This software is copyright (C) 1991-1996, Thomas G. Lane. 137All Rights Reserved except as specified below. 138 139Permission is hereby granted to use, copy, modify, and distribute this 140software (or portions thereof) for any purpose, without fee, subject to these 141conditions: 142(1) If any part of the source code for this software is distributed, then this 143README file must be included, with this copyright and no-warranty notice 144unaltered; and any additions, deletions, or changes to the original files 145must be clearly indicated in accompanying documentation. 146(2) If only executable code is distributed, then the accompanying 147documentation must state that "this software is based in part on the work of 148the Independent JPEG Group". 149(3) Permission for use of this software is granted only if the user accepts 150full responsibility for any undesirable consequences; the authors accept 151NO LIABILITY for damages of any kind. 152 153These conditions apply to any software derived from or based on the IJG code, 154not just to the unmodified library. If you use our work, you ought to 155acknowledge us. 156 157Permission is NOT granted for the use of any IJG author's name or company name 158in advertising or publicity relating to this software or products derived from 159it. This software may be referred to only as "the Independent JPEG Group's 160software". 161 162We specifically permit and encourage the use of this software as the basis of 163commercial products, provided that all warranty or liability claims are 164assumed by the product vendor. 165 166 167ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, 168sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. 169ansi2knr.c is NOT covered by the above copyright and conditions, but instead 170by the usual distribution terms of the Free Software Foundation; principally, 171that you must include source code if you redistribute it. (See the file 172ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part 173of any program generated from the IJG code, this does not limit you more than 174the foregoing paragraphs do. 175 176The configuration script "configure" was produced with GNU Autoconf. It 177is copyright by the Free Software Foundation but is freely distributable. 178 179It appears that the arithmetic coding option of the JPEG spec is covered by 180patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot 181legally be used without obtaining one or more licenses. For this reason, 182support for arithmetic coding has been removed from the free JPEG software. 183(Since arithmetic coding provides only a marginal gain over the unpatented 184Huffman mode, it is unlikely that very many implementations will support it.) 185So far as we are aware, there are no patent restrictions on the remaining 186code. 187 188WARNING: Unisys has begun to enforce their patent on LZW compression against 189GIF encoders and decoders. You will need a license from Unisys to use the 190included rdgif.c or wrgif.c files in a commercial or shareware application. 191At this time, Unisys is not enforcing their patent against freeware, so 192distribution of this package remains legal. However, we intend to remove 193GIF support from the IJG package as soon as a suitable replacement format 194becomes reasonably popular. 195 196We are required to state that 197 "The Graphics Interchange Format(c) is the Copyright property of 198 CompuServe Incorporated. GIF(sm) is a Service Mark property of 199 CompuServe Incorporated." 200 201 202REFERENCES 203========== 204 205We highly recommend reading one or more of these references before trying to 206understand the innards of the JPEG software. 207 208The best short technical introduction to the JPEG compression algorithm is 209 Wallace, Gregory K. "The JPEG Still Picture Compression Standard", 210 Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44. 211(Adjacent articles in that issue discuss MPEG motion picture compression, 212applications of JPEG, and related topics.) If you don't have the CACM issue 213handy, a PostScript file containing a revised version of Wallace's article 214is available at ftp.uu.net, graphics/jpeg/wallace.ps.gz. The file (actually 215a preprint for an article that appeared in IEEE Trans. Consumer Electronics) 216omits the sample images that appeared in CACM, but it includes corrections 217and some added material. Note: the Wallace article is copyright ACM and 218IEEE, and it may not be used for commercial purposes. 219 220A somewhat less technical, more leisurely introduction to JPEG can be found in 221"The Data Compression Book" by Mark Nelson, published by M&T Books (Redwood 222City, CA), 1991, ISBN 1-55851-216-0. This book provides good explanations and 223example C code for a multitude of compression methods including JPEG. It is 224an excellent source if you are comfortable reading C code but don't know much 225about data compression in general. The book's JPEG sample code is far from 226industrial-strength, but when you are ready to look at a full implementation, 227you've got one here... 228 229The best full description of JPEG is the textbook "JPEG Still Image Data 230Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published 231by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp. 232The book includes the complete text of the ISO JPEG standards (DIS 10918-1 233and draft DIS 10918-2). This is by far the most complete exposition of JPEG 234in existence, and we highly recommend it. 235 236The JPEG standard itself is not available electronically; you must order a 237paper copy through ISO or ITU. (Unless you feel a need to own a certified 238official copy, we recommend buying the Pennebaker and Mitchell book instead; 239it's much cheaper and includes a great deal of useful explanatory material.) 240In the USA, copies of the standard may be ordered from ANSI Sales at (212) 241642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI 242doesn't take credit card orders, but Global does.) It's not cheap: as of 2431992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7% 244shipping/handling. The standard is divided into two parts, Part 1 being the 245actual specification, while Part 2 covers compliance testing methods. Part 1 246is titled "Digital Compression and Coding of Continuous-tone Still Images, 247Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS 24810918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of 249Continuous-tone Still Images, Part 2: Compliance testing" and has document 250numbers ISO/IEC IS 10918-2, ITU-T T.83. 251 252Extensions to the original JPEG standard are defined in JPEG Part 3, a new ISO 253document. Part 3 is undergoing ISO balloting and is expected to be approved 254by the end of 1995; it will have document numbers ISO/IEC IS 10918-3, ITU-T 255T.84. IJG currently does not support any Part 3 extensions. 256 257The JPEG standard does not specify all details of an interchangeable file 258format. For the omitted details we follow the "JFIF" conventions, revision 2591.02. A copy of the JFIF spec is available from: 260 Literature Department 261 C-Cube Microsystems, Inc. 262 1778 McCarthy Blvd. 263 Milpitas, CA 95035 264 phone (408) 944-6300, fax (408) 944-6314 265A PostScript version of this document is available at ftp.uu.net, file 266graphics/jpeg/jfif.ps.gz. It can also be obtained by e-mail from the C-Cube 267mail server, netlib@c3.pla.ca.us. Send the message "send jfif_ps from jpeg" 268to the server to obtain the JFIF document; send the message "help" if you have 269trouble. 270 271The TIFF 6.0 file format specification can be obtained by FTP from sgi.com 272(192.48.153.1), file graphics/tiff/TIFF6.ps.Z; or you can order a printed 273copy from Aldus Corp. at (206) 628-6593. The JPEG incorporation scheme 274found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems. 275IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6). 276Instead, we recommend the JPEG design proposed by TIFF Technical Note #2 277(Compression tag 7). Copies of this Note can be obtained from sgi.com or 278from ftp.uu.net:/graphics/jpeg/. It is expected that the next revision of 279the TIFF spec will replace the 6.0 JPEG design with the Note's design. 280Although IJG's own code does not support TIFF/JPEG, the free libtiff library 281uses our library to implement TIFF/JPEG per the Note. libtiff is available 282from sgi.com:/graphics/tiff/. 283 284 285ARCHIVE LOCATIONS 286================= 287 288The "official" archive site for this software is ftp.uu.net (Internet 289address 192.48.96.9). The most recent released version can always be found 290there in directory graphics/jpeg. This particular version will be archived 291as graphics/jpeg/jpegsrc.v6a.tar.gz. If you are on the Internet, you 292can retrieve files from ftp.uu.net by standard anonymous FTP. If you don't 293have FTP access, UUNET's archives are also available via UUCP; contact 294help@uunet.uu.net for information on retrieving files that way. 295 296Numerous Internet sites maintain copies of the UUNET files. However, only 297ftp.uu.net is guaranteed to have the latest official version. 298 299You can also obtain this software in DOS-compatible "zip" archive format from 300the SimTel archives (ftp.coast.net:/SimTel/msdos/graphics/), or on CompuServe 301in the Graphics Support forum (GO CIS:GRAPHSUP), library 12 "JPEG Tools". 302Again, these versions may sometimes lag behind the ftp.uu.net release. 303 304The JPEG FAQ (Frequently Asked Questions) article is a useful source of 305general information about JPEG. It is updated constantly and therefore is 306not included in this distribution. The FAQ is posted every two weeks to 307Usenet newsgroups comp.graphics.misc, news.answers, and other groups. 308You can always obtain the latest version from the news.answers archive at 309rtfm.mit.edu. By FTP, fetch /pub/usenet/news.answers/jpeg-faq/part1 and 310.../part2. If you don't have FTP, send e-mail to mail-server@rtfm.mit.edu 311with body 312 send usenet/news.answers/jpeg-faq/part1 313 send usenet/news.answers/jpeg-faq/part2 314 315 316RELATED SOFTWARE 317================ 318 319Numerous viewing and image manipulation programs now support JPEG. (Quite a 320few of them use this library to do so.) The JPEG FAQ described above lists 321some of the more popular free and shareware viewers, and tells where to 322obtain them on Internet. 323 324If you are on a Unix machine, we highly recommend Jef Poskanzer's free 325PBMPLUS image software, which provides many useful operations on PPM-format 326image files. In particular, it can convert PPM images to and from a wide 327range of other formats. You can obtain this package by FTP from ftp.x.org 328(contrib/pbmplus*.tar.Z) or ftp.ee.lbl.gov (pbmplus*.tar.Z). There is also 329a newer update of this package called NETPBM, available from 330wuarchive.wustl.edu under directory /graphics/graphics/packages/NetPBM/. 331Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software 332is; you are likely to have difficulty making it work on any non-Unix machine. 333 334A different free JPEG implementation, written by the PVRG group at Stanford, 335is available from havefun.stanford.edu in directory pub/jpeg. This program 336is designed for research and experimentation rather than production use; 337it is slower, harder to use, and less portable than the IJG code, but it 338is easier to read and modify. Also, the PVRG code supports lossless JPEG, 339which we do not. 340 341 342FILE FORMAT WARS 343================ 344 345Some JPEG programs produce files that are not compatible with our library. 346The root of the problem is that the ISO JPEG committee failed to specify a 347concrete file format. Some vendors "filled in the blanks" on their own, 348creating proprietary formats that no one else could read. (For example, none 349of the early commercial JPEG implementations for the Macintosh were able to 350exchange compressed files.) 351 352The file format we have adopted is called JFIF (see REFERENCES). This format 353has been agreed to by a number of major commercial JPEG vendors, and it has 354become the de facto standard. JFIF is a minimal or "low end" representation. 355We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF 356Technical Note #2) for "high end" applications that need to record a lot of 357additional data about an image. TIFF/JPEG is fairly new and not yet widely 358supported, unfortunately. 359 360The upcoming JPEG Part 3 standard defines a file format called SPIFF. 361SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should 362be able to read the most common variant of SPIFF. SPIFF has some technical 363advantages over JFIF, but its major claim to fame is simply that it is an 364official standard rather than an informal one. At this point it is unclear 365whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto 366standard. IJG intends to support SPIFF once the standard is frozen, but we 367have not decided whether it should become our default output format or not. 368(In any case, our decoder will remain capable of reading JFIF indefinitely.) 369 370Various proprietary file formats incorporating JPEG compression also exist. 371We have little or no sympathy for the existence of these formats. Indeed, 372one of the original reasons for developing this free software was to help 373force convergence on common, open format standards for JPEG files. Don't 374use a proprietary file format! 375 376 377TO DO 378===== 379 380In future versions, we are considering supporting some of the upcoming JPEG 381Part 3 extensions --- principally, variable quantization and the SPIFF file 382format. 383 384Tuning the software for better behavior at low quality/high compression 385settings is also of interest. The current method for scaling the 386quantization tables is known not to be very good at low Q values. 387 388As always, speeding things up is high on our priority list. 389 390Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net. 391