| The Independent JPEG Group's JPEG software |
| ========================================== |
| |
| README for release 2 of 13-Dec-91 |
| ================================= |
| |
| This distribution contains the second public release of the Independent JPEG |
| Group's free JPEG software. You are welcome to redistribute this software and |
| to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. |
| |
| For installation instructions, see file SETUP; for usage instructions, see |
| file USAGE (or the cjpeg.1 and djpeg.1 manual pages). |
| |
| This software is still undergoing revision. Updated versions may be obtained |
| by FTP or UUCP to uunet.uu.net and other archive sites; see ARCHIVE LOCATIONS |
| below for details. |
| |
| If you intend to become a serious user of this software, please contact |
| jpeg-info@uunet.uu.net to be added to our electronic mailing list. Then |
| you'll be notified of updates and have a chance to participate in discussions, |
| etc. |
| |
| This software is the work of Tom Lane, Philip Gladstone, Luis Ortiz, |
| Lee Crocker, and other members of the Independent JPEG Group. |
| |
| |
| DISCLAIMER |
| ========== |
| |
| THIS SOFTWARE IS NOT COMPLETE NOR FULLY DEBUGGED. It is not guaranteed to be |
| useful for anything, nor to be compatible with subsequent releases, nor to be |
| an accurate implementation of the JPEG standard. (See LEGAL ISSUES for even |
| more disclaimers.) |
| |
| Please report any problems with this software to jpeg-info@uunet.uu.net. |
| |
| |
| WHAT'S HERE |
| =========== |
| |
| This distribution contains software to implement JPEG image compression and |
| decompression. JPEG (pronounced "jay-peg") is a standardized compression |
| method for full-color and gray-scale images. JPEG is intended for |
| "real-world" scenes; cartoons and other non-realistic images are not its |
| strong suit. JPEG is lossy, meaning that the output image is not necessarily |
| identical to the input image. Hence you should not use JPEG if you have to |
| have identical output bits. However, on typical images of real-world scenes, |
| very good compression levels can be obtained with no visible change, and |
| amazingly high compression levels can be obtained if you can tolerate a |
| low-quality image. For more details, see the references, or just experiment |
| with various compression settings. |
| |
| The software implements JPEG baseline and extended-sequential compression |
| processes. Provision is made for supporting all variants of these processes, |
| although some uncommon parameter settings aren't implemented yet. For legal |
| reasons, we are not distributing code for the arithmetic-coding process; see |
| LEGAL ISSUES. At present we have made no provision for supporting the |
| progressive or lossless processes defined in the standard. |
| |
| The present software is still largely in the prototype stage. It does not |
| support all possible variants of the JPEG standard, and some functions have |
| rather slow and/or crude implementations. However, it is useful already. |
| |
| The emphasis in designing this software has been on achieving portability and |
| flexibility, while also making it fast enough to be useful. We have not yet |
| undertaken serious performance measurement or tuning; we intend to do so in |
| the future. |
| |
| |
| This software can be used on several levels: |
| |
| * As canned software for JPEG compression and decompression. Just edit the |
| Makefile and configuration files as needed (see file SETUP), compile and go. |
| Members of the independent JPEG group will improve the out-of-the-box |
| functionality and speed as time goes on. |
| |
| * As the basis for other JPEG programs. For example, you could incorporate |
| the decompressor into a general image viewing package by replacing the |
| output module with write-to-screen functions. For an implementation on |
| specific hardware, you might want to replace some of the inner loops with |
| assembly code. For a non-command-line-driven system, you might want a |
| different user interface. (Members of the group will be producing Macintosh |
| and Amiga versions with more appropriate user interfaces, for example.) |
| |
| * As a toolkit for experimentation with JPEG and JPEG-like algorithms. Most |
| of the individual decisions you might want to mess with are packaged up into |
| separate modules. For example, the details of color-space conversion and |
| subsampling techniques are each localized in one compressor and one |
| decompressor module. You'd probably also want to extend the user interface |
| to give you more detailed control over the JPEG compression parameters. |
| |
| In particular, we welcome the use of this software as the basis for commercial |
| products; no royalty is required. |
| |
| |
| ARCHIVE LOCATIONS |
| ================= |
| |
| The "official" archive site for this software is uunet.uu.net (Internet |
| address 137.39.1.2 or 192.48.96.2). The most recent released version can |
| always be found there in directory graphics/jpeg. This particular version |
| will be archived as jpegsrc.v2.tar.Z. If you are on the Internet, you can |
| retrieve files from UUNET by anonymous FTP. If you don't have FTP access, |
| UUNET's archives are also available via UUCP; contact postmaster@uunet.uu.net |
| for information on retrieving files that way. |
| |
| Various other Internet sites maintain copies of the UUNET file, which may or |
| may not be up-to-date. In Europe, try nic.funet.fi (128.214.6.100; look in |
| directory pub/graphics/programs/jpeg). |
| |
| You can also obtain this software from CompuServe, in the GRAPHSUPPORT forum |
| (GO PICS), library 10; this version will be file jpsrc2.zip. |
| |
| If you are not reasonably handy at configuring and installing portable C |
| programs, you may have some difficulty installing this package. You may |
| prefer to obtain a pre-built executable version. A collection of pre-built |
| executables for various machines is currently available for anonymous FTP at |
| procyon.cis.ksu.edu (129.130.10.80 --- this number is due to change soon); |
| look under /pub/JPEG. The administrators of this system ask that FTP traffic |
| be limited to non-prime hours. For more information on this archive, please |
| contact Steve Davis (strat@cis.ksu.edu). This collection is not maintained by |
| the Independent JPEG Group, and programs in it may not be the latest version. |
| |
| |
| SUPPORTING SOFTWARE |
| =================== |
| |
| You will probably want Jef Poskanzer's PBMPLUS image software, which provides |
| many useful operations on PPM-format image files. In particular, it can |
| convert PPM images to and from a wide range of other formats. You can FTP |
| this free software from export.lcs.mit.edu (contrib/pbmplus*.tar.Z) or |
| ftp.ee.lbl.gov (pbmplus*.tar.Z). Unfortunately PBMPLUS is not nearly as |
| portable as the JPEG software is; you are likely to have difficulty making it |
| work on any non-Unix machine. |
| |
| If you are using X Windows you might want to use the xv or xloadimage viewers |
| to save yourself the trouble of converting PPM to some other format. Both of |
| these can be found in the contrib directory at export.lcs.mit.edu. |
| There will soon be a new release of xv that incorporates our software and thus |
| can read and write JPEG files directly. (NOTE: since xv internally reduces |
| all images to 8 bits/pixel, a JPEG file written by xv will not be very high |
| quality. Caveat user.) |
| |
| |
| SOFTWARE THAT'S NO HELP AT ALL |
| ============================== |
| |
| Handmade Software's shareware PC program GIF2JPG produces files that are |
| totally incompatible with our programs. They use a proprietary format that is |
| an amalgam of GIF and JPEG representations. However, you can force GIF2JPG |
| to produce compatible files with its -j switch, and their decompression |
| program JPG2GIF can read our files (at least ones produced with our default |
| option settings). |
| |
| Unfortunately, most commercial JPEG implementations are also incompatible as |
| of this writing, especially programs released before summer 1991. The root of |
| the problem is that the ISO JPEG committee failed to specify a concrete file |
| format. Many vendors "filled in the blanks" on their own, creating |
| proprietary formats that no one else could read. (For example, none of the |
| early commercial JPEG implementations for the Macintosh were able to exchange |
| compressed files.) |
| |
| The file format we have adopted is called JFIF (see REFERENCES). This format |
| has been agreed to by a number of major commercial JPEG vendors, and we expect |
| that it will become the de facto standard. JFIF is a minimal representation; |
| work is also going forward to incorporate JPEG compression into the TIFF |
| standard, for use in "high end" applications that need to record a lot of |
| additional data about an image. We intend to support JPEG-in-TIFF in the |
| future. We hope that these two formats will be sufficient and that other, |
| incompatible JPEG file formats will not proliferate. |
| |
| Indeed, part of the reason for developing and releasing this free software is |
| to help force rapid convergence to de facto standards for JPEG file formats. |
| SUPPORT STANDARD, NON-PROPRIETARY FORMATS: demand JFIF or JPEG-in-TIFF! |
| |
| |
| REFERENCES |
| ========== |
| |
| The best and most readily available introduction to the JPEG compression |
| algorithm is Wallace's article in the April '91 CACM: |
| Wallace, Gregory K. "The JPEG Still Picture Compression Standard", |
| Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44. |
| (Adjacent articles in that issue discuss MPEG motion picture compression, |
| applications of JPEG, and related topics.) We highly recommend reading that |
| article before trying to understand the innards of any JPEG software. |
| |
| For more detail about the JPEG standard you pretty much have to go to the |
| draft standard (which is not nearly as intelligible as Wallace's article). |
| The standard is not now available electronically; you must order a paper copy |
| through ISO. In the US, copies may be ordered from ANSI Sales at (212) |
| 642-4900. The standard is divided into two parts: Part 1 is the actual |
| specification, and Part 2 covers compliance testing methods. The current |
| "committee draft" version of Part 1 is titled "Digital Compression and Coding |
| of Continuous-tone Still Images, Part 1: Requirements and guidelines" and has |
| document number ISO/IEC CD 10918-1. (The alternate number SC2 N2215 should |
| also be mentioned when ordering.) This draft is expected to be superseded by |
| the Draft International Standard version around the end of November 1991. |
| Ordering info will be the same as above, but replace "CD" with "DIS" in the |
| document number (alternate number not yet known). The committee draft of |
| Part 2 is expected to be available around the end of December 1991. It will |
| be titled "Digital Compression and Coding of Continuous-tone Still Images, |
| Part 2: Compliance testing" and will have document number ISO/IEC CD 10918-2 |
| (alternate number not yet known). |
| |
| The JPEG standard does not specify all details of an interchangeable file |
| format. For the omitted details we follow the "JFIF" conventions, revision |
| 1.01. A copy of the JFIF spec is available from: |
| Literature Department |
| C-Cube Microsystems, Inc. |
| 399A West Trimble Road |
| San Jose, CA 95131 |
| (408) 944-6300 |
| Requests can also be e-mailed to info@c3.pla.ca.us. The same source can |
| supply copies of the draft JPEG-in-TIFF specs. |
| |
| If you want to understand this implementation, start by reading the |
| "architecture" documentation file. Please read "codingrules" if you want to |
| contribute any code. |
| |
| |
| LEGAL ISSUES |
| ============ |
| |
| The authors make NO WARRANTY or representation, either express or implied, |
| with respect to this software, its quality, accuracy, merchantability, or |
| 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. |
| |
| This software is copyright (C) 1991, Thomas G. Lane. |
| All Rights Reserved except as specified below. |
| |
| Permission is hereby granted to use, copy, modify, and distribute this |
| software (or portions thereof) for any purpose, without fee, subject to these |
| conditions: |
| (1) If any part of the source code for this software is distributed, then this |
| README file must be included, with this copyright and no-warranty notice |
| unaltered; and any additions, deletions, or changes to the original files |
| must be clearly indicated in accompanying documentation. |
| (2) If only executable code is distributed, then the accompanying |
| documentation must state that "this software is based in part on the work of |
| the Independent JPEG Group". |
| (3) Permission for use of this software is granted only if the user accepts |
| full responsibility for any undesirable consequences; the authors accept |
| NO LIABILITY for damages of any kind. |
| |
| Permission is NOT granted for the use of any author's name or author's company |
| name in advertising or publicity relating to this software or products derived |
| from it. This software may be referred to only as "the Independent JPEG |
| Group's software". |
| |
| We specifically permit and encourage the use of this software as the basis of |
| commercial products, provided that all warranty or liability claims are |
| 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 product generated from the JPEG code, this does not limit you more than |
| the foregoing paragraphs do. |
| |
| |
| It appears that the arithmetic coding option of the JPEG spec is covered by |
| patents owned by IBM and AT&T, as well as a pending Japanese patent of |
| Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining |
| one or more licenses. For this reason, support for arithmetic coding has been |
| removed from the free JPEG software. (Since arithmetic coding provides only a |
| marginal gain over the unpatented Huffman mode, it is unlikely that very many |
| people will choose to use it. If you do obtain the necessary licenses, |
| contact jpeg-info@uunet.uu.net for a copy of our arithmetic coding modules.) |
| So far as we are aware, there are no patent restrictions on the remaining |
| code. |
| |
| |
| We are required to state that |
| "The Graphics Interchange Format(c) is the Copyright property of |
| CompuServe Incorporated. GIF(sm) is a Service Mark property of |
| CompuServe Incorporated." |
| |
| |
| TO DO |
| ===== |
| |
| Many of the modules need fleshing out to provide more complete |
| implementations, or to provide faster paths for common cases. The greatest |
| needs are for (a) decent color quantization, and (b) a memory manager |
| implementation that can work in limited memory by swapping "big" images to |
| temporary files. I (Tom Lane) am going to work on color quantization next. |
| Volunteers to write a PC memory manager, or to work on any other modules, are |
| welcome. |
| |
| We'd appreciate it if people would compile and check out the code on as wide a |
| variety of systems as possible, and report any portability problems |
| encountered (with solutions, if possible). Checks of file compatibility with |
| other JPEG implementations would also be of interest. Finally, we would |
| appreciate code profiles showing where the most time is spent, especially on |
| unusual systems. |
| |
| Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net. |