07
58
Du
Wallace article is cop yright ACM and IEEE, and it may not b e 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 re ading C code but
don’t know much about data compression in general. The book’s JPEG sample
code is far from industrial-strength, bu t 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. Pennebak er and Joan L. Mitchell, published
by Van Nostrand Reinhold, 1993, I SBN 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; y ou must order a pape r copy
through ISO or ITU. (Unless you feel a need t o 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 th e
standard may be ordered from ANSI Sales at (212) 642-4900, or from Global
Engineering Documents at (800) 854-71 79. (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 C ontinuous-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/I EC IS 10918-3 and ITU-T T.84. IJG curr ently 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. T here 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 forma t 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 reco mmend 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 IJ G's own code does not support TIFF/JPEG, the free libtiff
library uses our library to implement TIFF/J PEG per the Note. libtiff is available from
ftp://ftp.sgi.com/graphics/tiff/.
ARCHIVE LOCA TIONS
The “official” archive site for this soft ware 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/j peg/jpegsrc. v6b.tar.gz. If you don’t have direct I nternet access, UUNET’s
archives are also available via UUCP; contact help@uunet.uu.net 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” archi ve format from the
SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or on
CompuServe in the Graphics Support forum (GO CI S: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 upd ated 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 mail-server @rtfm.mit.edu with body
send usenet/news.answers/jpeg-faq/part1
send usenet/news.answers/jpeg-faq/part2
RELATED SO FTWARE
Numerous viewing and image manip ulation programs now support JPEG. (Quite a
few of th em u se t his l ibra ry t o do s o.) The JPEG FAQ described above lists some of
the more popular fr ee 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 operat ions on PPM-f ormat imag e files. I n
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 p rogram is designed for
research and experimentation rather than pr oduction 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 REFERENC ES). 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 revis ion 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 mos t J F I F d e c o d e r s s h o u l d b e a b l e t o r e a d
the most common variant of SPIF F. SPIFF has some technica l 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 compr ession also exist. We
have little or no symp athy for the existence of thes e formats. Indeed, one of the
original reasons for developing this free software was to help force convergence on
common, open format standards for JPEG file s. 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 t o 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 c ompatibility.
In future versions, we are c o n s i de r i n g s u p po r t i n g s o m e of t h e u p c o mi n g J P E G P a r t
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 jpeg-info@uunet.uu.net.
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:
* Redistr ibutions of source code must r etain 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 HOLD ERS AND
CONTRI BUTORS
“AS IS” AN D ANY EXPRESS OR IMPLIED WARRANT IES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTI ES OF MERCHANTABILI TY AND FITNESS
FOR A PARTICULAR PURP OSE ARE DISCLAIMED. IN NO EV ENT SHALL INTEL OR
CONTRIBUTORS BE LIABLE FO R ANY DIRECT, INDIRECT, INCIDENT AL, SPECIAL,
EXEMPLARY , OR CONSEQUENTIAL DAMA GES (INCLUDING, BU T NOT LIMITED
TO, PROCUREMENT OF SUBSTITU TE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUS ED AND
ON ANY TH EORY OF LIABILITY, WHETHER IN C ONTRACT, STRICT L IABILITY, OR