A different free JPEG implementation, written by the PVRG
07
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 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:
* 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
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AVC/H.264
THIS PRODUCT IS LICENSED UNDER THE AVC PATENT
PORTFOLIO LICENSE FOR THE PERSONAL AND NON-
COMMERCIAL USE OF A CONSUMER TO (i) ENCODE
VIDEO IN COMPLIANCE WITH THE AVC STANDARD ("AVC
VIDEO") AND/OR (ii) DECODE AVC VIDEO THAT WAS
ENCODED BY A CONSUMER ENGAGED IN A PERSONAL
AND NON-COMMERCIAL ACTIVITY AND/OR WAS
OBTAINED FROM A VIDEO PROVIDER LICENSED TO
PROVIDE AVC VIDEO. No LICENSE IS GRANTED OR SHALL
BE IMPLIED FOR ANY OTHER USE. ADDITIONAL
INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C.
SEE HTTP://MPEGLA.COM.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright © 1989, 1991 Free Software Foundation, Inc., 51
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away
your freedom to share and change it. By contrast, the GNU
General Public License is intended to guarantee your
52
freedom to share and change free software - to make sure
the software is free for all its users. This General Public
Fr
License applies to most of the Free Software Foundation's
software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is
covered by the GNU Lesser General Public License instead.)
You can apply it to your programs, too.
When we speak of free software, we are referring to freedom,
not price. Our General Public Licenses are designed to make
sure that you have the freedom to distribute copies of free
software (and charge for this service if you wish), that you
receive source code or can get it if you want it, that you can
change the software or use pieces of it in new free programs;
and that you know you can do these things.
To protect your rights, we need to make restrictions that
forbid anyone to deny you these rights or to ask you to
surrender the rights. These restrictions translate to certain
responsibilities for you if you distribute copies of the
software, or if you modify it.
For example, if you distribute copies of such a program,
whether gratis or for a fee, you must give the recipients all
the rights that you have. You must make sure that they, too,
receive or can get the source code. And you must show them
these terms so they know their rights.
We protect your rights with two steps: (1) copyright the
software, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make
certain that everyone understands that there is no warranty
for this free software. If the software is modified by someone
else and passed on, we want its recipients to know that what
they have is not the original, so that any problems introduced
by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by
software patents. We wish to avoid the danger that
redistributors of a free program will individually obtain
patent licenses, in effect making the program proprietary. To
prevent this, we have made it clear that any patent must be
licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution
and modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
AND MODIFICATION
0. This License applies to any program or other work which
contains a notice placed by the copyright holder saying it
may be distributed under the terms of this General Public
License. The "Program", below, refers to any such program
or work, and a "work based on the Program" means either
the Program or any derivative work under copyright law: that
is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into
another language. (Hereinafter, translation is included
without limitation in the term "modification".) Each licensee
is addressed as "you".
Activities other than copying, distribution and
modification are not covered by this License; they are
outside its scope. The act of running the Program is not
restricted, and the output from the Program is covered
only if its contents constitute a work based on the
Program (independent of having been made by running
the Program). Whether that is true depends on what the
Program does.
1. You may copy and distribute verbatim copies of the
Program's source code as you receive it, in any medium,
provided that you conspicuously and appropriately
publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that
refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this
License along with the Program.
You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection
in exchange for a fee.
2. You may modify your copy or copies of the Program or any
portion of it, thus forming a work based on the Program,
and copy and distribute such modifications or work under
the terms of Section 1 above, provided that you also meet
all of these conditions:
a) You must cause the modified files to carry prominent
notices stating that you changed the files and the date
of any change.
b) You must cause any work that you distribute or publish,
that in whole or in part contains or is derived from the
Program or any part thereof, to be licensed as a whole
at no charge to all third parties under the terms of this
License.
c) If the modified program normally reads commands
interactively when run, you must cause it, when started
running for such interactive use in the most ordinary
way, to print or display an announcement including an
appropriate copyright notice and a notice that there is
no warranty (or else, saying that you provide a warranty)
and that users may redistribute the program under
these conditions, and telling the user how to view a
copy of this License. (Exception: if the Program itself is
interactive but does not normally print such an
announcement, your work based on the Program is not
required to print an announcement.)
These requirements apply to the modified work as a whole.
If identifiable sections of that work are not derived from the
Program, and can be reasonably considered independent
and separate works in themselves, then this License, and
its terms, do not apply to those sections when you distribute
them as separate works. But when you distribute the same
sections as part of a whole which is a work based on the
Program, the distribution of the whole must be on the terms
of this License, whose permissions for other licensees
extend to the entire whole, and thus to each and every part
regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or
contest your rights to work written entirely by you; rather,
the intent is to exercise the right to control the distribution
of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based
on the Program with the Program (or with a work based on
the Program) on a volume of a storage or distribution
medium does not bring the other work under the scope of
this License.
3. You may copy and distribute the Program (or a work based
on it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that
you also do one of the following:
a) Accompany it with the complete corresponding
machine-readable source code, which must be
distributed under the terms of Sections 1 and 2 above
on a medium customarily used for software
interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than
your cost of physically performing source distribution, a
complete machine-readable copy of the corresponding
source code, to be distributed under the terms of
Sections 1 and 2 above on a medium customarily used
for software interchange; or,
c) Accompany it with the information you received as to
the offer to distribute corresponding source code. (This
alternative is allowed only for noncommercial
distribution and only if you received the program in
object code or executable form with such an offer, in
accord with Subsection b above.)
The source code for a work means the preferred form of
the work for making modifications to it. For an executable
work, complete source code means all the source code for
all modules it contains, plus any associated interface
definition files, plus the scripts used to control
compilation and installation of the executable. However,
as a special exception, the source code distributed need
not include anything that is normally distributed (in either
source or binary form) with the major components
(compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself
accompanies the executable.
If distribution of executable or object code is made by
offering access to copy from a designated place, then
offering equivalent access to copy the source code from
the same place counts as distribution of the source code,
even though third parties are not compelled to copy the
source along with the object code.
4. You may not copy, modify, sublicense, or distribute the
Program except as expressly provided under this License.
Any attempt otherwise to copy, modify, sublicense or
distribute the Program is void, and will automatically
terminate your rights under this License. However, parties
who have received copies, or rights, from you under this
License will not have their licenses terminated so long as
such parties remain in full compliance.
5. You are not required to accept this License, since you have
not signed it. However, nothing else grants you permission
to modify or distribute the Program or its derivative works.
These actions are prohibited by law if you do not accept this
License. Therefore, by modifying or distributing the Program
(or any work based on the Program), you indicate your
acceptance of this License to do so, and all its terms and
conditions for copying, distributing or modifying the
Program or works based on it.
6. Each time you redistribute the Program (or any work
based on the Program), the recipient automatically
receives a license from the original licensor to copy,
distribute or modify the Program subject to these terms
and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights
granted herein.
You are not responsible for enforcing compliance by third
parties to this License.
7. If, as a consequence of a court judgment or allegation of
patent infringement or for any other reason (not limited to
patent issues), conditions are imposed on you (whether by
court order, agreement or otherwise) that contradict the
conditions of this License, they do not excuse you from the
conditions of this License. If you cannot distribute so as to
satisfy simultaneously your obligations under this License
and any other pertinent obligations, then as a
consequence you may not distribute the Program at all.
For example, if a patent license would not permit royalty-
free redistribution of the Program by all those who receive
copies directly or indirectly through you, then the only way
you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or
unenforceable under any particular circumstance, the
balance of the section is intended to apply and the section
as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe
any patents or other property right claims or to contest
validity of any such claims; this section has the sole
purpose of protecting the integrity of the free software
distribution system, which is implemented by public
license practices. Many people have made generous
contributions to the wide range of software distributed
through that system in reliance on consistent application of
that system; it is up to the author/donor to decide if he or
she is willing to distribute software through any other
system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is
believed to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted
in certain countries either by patents or by copyrighted
interfaces, the original copyright holder who places the
Program under this License may add an explicit
geographical distribution limitation excluding those
countries, so that distribution is permitted only in or
among countries not thus excluded. In such case, this
License incorporates the limitation as if written in the body
of this License.
9. The Free Software Foundation may publish revised and/or
new versions of the General Public License from time to
time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new
problems or concerns.
Each version is given a distinguishing version number. If
the Program specifies a version number of this License
which applies to it and "any later version", you have the
option of following the terms and conditions either of that
version or of any later version published by the Free
Software Foundation. If the Program does not specify a
version number of this License, you may choose any
version ever published by the Free Software Foundation.
10.If you wish to incorporate parts of the Program into other
free programs whose distribution conditions are different,
write to the author to ask for permission. For software
which is copyrighted by the Free Software Foundation,
write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by
the two goals of preserving the free status of all derivatives