59
En
07
Wallace article is copyright ACM and IEEE, and it may not be used for commercial
purposes.
A somewhat less technical, more leisurely introduction to JPEG can be found in
The Data Compression Book by Mark Nelson and Jean-loup Gailly, published by
M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides good
explanations and example C code for a multitude of compression methods
including JPEG. It is an excellent source if you are comfortable reading C code but
don’t know much about data compression in general. The book’s JPEG sample
code is far from industrial-strength, but when you are ready to look at a full
implementation, you’ve got one here...
The best full description of JPEG is the textbook “JPEG Still Image Data
Compression Standard” by William B. Pennebaker and Joan L. Mitchell, published
by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp. The
book includes the complete text of the ISO JPEG standards (DIS 10918-1 and draft
DIS 10918-2). This is by far the most complete exposition of JPEG in existence, and
we highly recommend it.
The JPEG standard itself is not available electronically; you must order a paper copy
through ISO or ITU. (Unless you feel a need to own a certified official copy, we
recommend buying the Pennebaker and Mitchell book instead; it’s much cheaper
and includes a great deal of useful explanatory material.) In the USA, copies of the
standard may be ordered from ANSI Sales at (212) 642-4900, or from Global
Engineering Documents at (800) 854-7179. (ANSI doesn’t take credit card orders,
but Global does.) It’s not cheap: as of 1992, ANSI was charging $95 for Part 1 and
$47 for Part 2, plus 7% shipping/handling. The standard is divided into two parts,
Part 1 being the actual specification, while Part 2 covers compliance testing
methods. Part 1 is titled “Digital Compression and Coding of Continuous-tone Still
Images, Part 1: Requirements and guidelines” and has document numbers ISO/
IEC IS 10918-1, ITU-T T.81. Part 2 is titled “Digital Compression and Coding of
Continuous-tone Still Images, Part 2: Compliance testing” and has document
numbers ISO/IEC IS 10918-2, ITU-T T.83.
Some extensions to the original JPEG standard are defined in JPEG Part 3, a newer
ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84. IJG currently does not
support any Part 3 extensions.
The JPEG standard does not specify all details of an interchangeable file format.
For the omitted details we follow the “JFIF” conventions, revision 1.02. A copy of the
JFIF spec is available from:
Literature Department
C-Cube Microsystems, Inc.
1778 McCarthy Blvd.
Milpitas, CA 95035
phone (408) 944-6300, fax (408) 944-6314
A PostScript version of this document is available by FTP at ftp://ftp.uu.net/
graphics/jpeg/jfif.ps.gz. There is also a plain text version at ftp://ftp.uu.net/
graphics/jpeg/jfif.txt.gz, but it is missing the figures.
The TIFF 6.0 file format specification can be obtained by FTP from ftp://ftp.sgi.com/
graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme found in the TIFF 6.0
spec of 3-June-92 has a number of serious problems. IJG does not recommend use
of the TIFF 6.0 design (TIFF Compression tag 6). Instead, we recommend the JPEG
design proposed by TIFF Technical Note #2 (Compression tag 7). Copies of this
Note can be obtained from ftp.sgi.com or from ftp://ftp.uu.net/graphics/jpeg/. It is
expected that the next revision of the TIFF spec will replace the 6.0 JPEG design
with the Note's design. Although IJG's own code does not support TIFF/JPEG, the
free libtiff library uses our library to implement TIFF/JPEG per the Note. libtiff is
available from ftp://ftp.sgi.com/graphics/tiff/.
ARCHIVE LOCATIONS
The “official” archive site for this software is ftp.uu.net (Internet address
192.48.96.9). The most recent released version can always be found there in
directory graphics/jpeg. This particular version will be archived as ftp://ftp.uu.net/
graphics/jpeg/jpegsrc.v6b.tar.gz. If you don’t have direct Internet access, UUNET’s
archives are also available via UUCP; contact [email protected] for information
on retrieving files that way.
Numerous Internet sites maintain copies of the UUNET files. However, only
ftp.uu.net is guaranteed to have the latest official version.
You can also obtain this software in DOS-compatible “zip” archive format from the
SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or on
CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12 JPEG
Tools. Again, these versions may sometimes lag behind the ftp.uu.net release.
The JPEG FAQ (Frequently Asked Questions) article is a useful source of general
information about JPEG. It is updated constantly and therefore is not included in
this distribution. The FAQ is posted every two weeks to Usenet newsgroups
comp.graphics.misc, news.answers, and other groups. It is available on the World
Wide Web at http://www.faqs.org/faqs/jpeg-faq/ and other news.answers archive
sites, including the official news.answers archive at rtfm.mit.edu: ftp://
rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/. If you don't have Web or FTP
access, send e-mail to [email protected] with body
send usenet/news.answers/jpeg-faq/part1
send usenet/news.answers/jpeg-faq/part2
RELATED SOFTWARE
Numerous viewing and image manipulation programs now support JPEG. (Quite a
few of them use this library to do so.) The JPEG FAQ described above lists some of
the more popular free and shareware viewers, and tells where to obtain them on
Internet.
If you are on a Unix machine, we highly recommend Jef Poskanzer’s free
PBMPLUS 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, thus making cjpeg/djpeg considerably more useful. The latest version is
distributed by the NetPBM group, and is available from numerous sites, notably
ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/. Unfortunately
PBMPLUS/NETPBM is not nearly as portable as the IJG software is; you are likely
to have difficulty making it work on any non-Unix machine.
A different free JPEG implementation, written by the PVRG group at Stanford, is
available from ftp://havefun.stanford.edu/pub/jpeg/. This program is designed for
research and experimentation rather than production use; it is slower, harder to
use, and less portable than the IJG code, but it is easier to read and modify. Also,
the PVRG code supports lossless JPEG, which we do not. (On the other hand, it
doesn’t do progressive JPEG.)
FILE FORMAT WARS
Some JPEG programs produce files that are not compatible with our library. The
root of the problem is that the ISO JPEG committee failed to specify a concrete file
format. Some 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 it has become
the de facto standard. JFIF is a minimal or “low end” representation. We
recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF Technical
Note #2) for “high end” applications that need to record a lot of additional data
about an image. TIFF/JPEG is fairly new and not yet widely supported,
unfortunately.
The upcoming JPEG Part 3 standard defines a file format called SPIFF. SPIFF is
interoperable with JFIF, in the sense that most JFIF decoders should be able to read
the most common variant of SPIFF. SPIFF has some technical advantages over
JFIF, but its major claim to fame is simply that it is an official standard rather than
an informal one. At this point it is unclear whether SPIFF will supersede JFIF or
whether JFIF will remain the de-facto standard. IJG intends to support SPIFF once
the standard is frozen, but we have not decided whether it should become our
default output format or not. (In any case, our decoder will remain capable of
reading JFIF indefinitely.)
Various proprietary file formats incorporating JPEG compression also exist. We
have little or no sympathy for the existence of these formats. Indeed, one of the
original reasons for developing this free software was to help force convergence on
common, open format standards for JPEG files. Don’t use a proprietary file format!
TO DO
The major thrust for v7 will probably be improvement of visual quality. The current
method for scaling the quantization tables is known not to be very good at low Q
values. We also intend to investigate block boundary smoothing, “poor man’s
variable quantization”, and other means of improving quality-vs-file-size
performance without sacrificing compatibility.
In future versions, we are considering supporting some of the upcoming JPEG Part
3 extensions --- principally, variable quantization and the SPIFF file format.
As always, speeding things up is of great interest.
Please send bug reports, offers of help, etc. to [email protected].
libupnp
Copyright (c) 2000-2003 Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
*
Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
*
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
*
Neither name of Intel Corporation nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS
“AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR