The Independent JPEG Group's JPEG software v9b
This commit is contained in:
parent
fc11193e7a
commit
a560e4b423
22
Makefile.am
22
Makefile.am
@ -33,17 +33,17 @@ DOCS= README install.txt usage.txt wizard.txt example.c libjpeg.txt \
|
|||||||
structure.txt coderules.txt filelist.txt change.log
|
structure.txt coderules.txt filelist.txt change.log
|
||||||
|
|
||||||
# Makefiles for various systems
|
# Makefiles for various systems
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
|
|
||||||
# Configuration files
|
# Configuration files
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
|
48
Makefile.in
48
Makefile.in
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -23,7 +23,17 @@
|
|||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
am__is_gnu_make = { \
|
||||||
|
if test -z '$(MAKELEVEL)'; then \
|
||||||
|
false; \
|
||||||
|
elif test -n '$(MAKE_HOST)'; then \
|
||||||
|
true; \
|
||||||
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
false; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
am__make_running_with_option = \
|
am__make_running_with_option = \
|
||||||
case $${target_option-} in \
|
case $${target_option-} in \
|
||||||
?) ;; \
|
?) ;; \
|
||||||
@ -91,14 +101,12 @@ target_triplet = @target@
|
|||||||
bin_PROGRAMS = cjpeg$(EXEEXT) djpeg$(EXEEXT) jpegtran$(EXEEXT) \
|
bin_PROGRAMS = cjpeg$(EXEEXT) djpeg$(EXEEXT) jpegtran$(EXEEXT) \
|
||||||
rdjpgcom$(EXEEXT) wrjpgcom$(EXEEXT)
|
rdjpgcom$(EXEEXT) wrjpgcom$(EXEEXT)
|
||||||
subdir = .
|
subdir = .
|
||||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
|
||||||
$(top_srcdir)/configure $(am__configure_deps) \
|
|
||||||
$(srcdir)/jconfig.cfg depcomp $(include_HEADERS) \
|
|
||||||
$(noinst_HEADERS)
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||||
|
$(am__configure_deps) $(include_HEADERS) $(noinst_HEADERS)
|
||||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
configure.lineno config.status.lineno
|
configure.lineno config.status.lineno
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
@ -284,6 +292,7 @@ LIBTOOL = @LIBTOOL@
|
|||||||
LIPO = @LIPO@
|
LIPO = @LIPO@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||||
MAINT = @MAINT@
|
MAINT = @MAINT@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
@ -397,17 +406,17 @@ DOCS = README install.txt usage.txt wizard.txt example.c libjpeg.txt \
|
|||||||
|
|
||||||
|
|
||||||
# Makefiles for various systems
|
# Makefiles for various systems
|
||||||
MKFILES = configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES = configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
|
|
||||||
|
|
||||||
# Configuration files
|
# Configuration files
|
||||||
@ -491,7 +500,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||||
$(am__cd) $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --foreign Makefile
|
$(AUTOMAKE) --foreign Makefile
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
*config.status*) \
|
*config.status*) \
|
||||||
@ -997,6 +1005,8 @@ uninstall-man: uninstall-man1
|
|||||||
uninstall-libLTLIBRARIES uninstall-local uninstall-man \
|
uninstall-libLTLIBRARIES uninstall-local uninstall-man \
|
||||||
uninstall-man1
|
uninstall-man1
|
||||||
|
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
|
|
||||||
# Install jconfig.h
|
# Install jconfig.h
|
||||||
install-data-local:
|
install-data-local:
|
||||||
|
34
README
34
README
@ -1,7 +1,7 @@
|
|||||||
The Independent JPEG Group's JPEG software
|
The Independent JPEG Group's JPEG software
|
||||||
==========================================
|
==========================================
|
||||||
|
|
||||||
README for release 9a of 19-Jan-2014
|
README for release 9b of 17-Jan-2016
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
This distribution contains the ninth public release of the Independent JPEG
|
This distribution contains the ninth public release of the Independent JPEG
|
||||||
@ -60,7 +60,7 @@ OVERVIEW
|
|||||||
|
|
||||||
This package contains C software to implement JPEG image encoding, decoding,
|
This package contains C software to implement JPEG image encoding, decoding,
|
||||||
and transcoding. JPEG (pronounced "jay-peg") is a standardized compression
|
and transcoding. JPEG (pronounced "jay-peg") is a standardized compression
|
||||||
method for full-color and gray-scale images.
|
method for full-color and grayscale images.
|
||||||
|
|
||||||
This software implements JPEG baseline, extended-sequential, and progressive
|
This software implements JPEG baseline, extended-sequential, and progressive
|
||||||
compression processes. Provision is made for supporting all variants of these
|
compression processes. Provision is made for supporting all variants of these
|
||||||
@ -115,7 +115,7 @@ with respect to this software, its quality, accuracy, merchantability, or
|
|||||||
fitness for a particular purpose. This software is provided "AS IS", and you,
|
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.
|
its user, assume the entire risk as to its quality and accuracy.
|
||||||
|
|
||||||
This software is copyright (C) 1991-2014, Thomas G. Lane, Guido Vollbeding.
|
This software is copyright (C) 1991-2016, Thomas G. Lane, Guido Vollbeding.
|
||||||
All Rights Reserved except as specified below.
|
All Rights Reserved except as specified below.
|
||||||
|
|
||||||
Permission is hereby granted to use, copy, modify, and distribute this
|
Permission is hereby granted to use, copy, modify, and distribute this
|
||||||
@ -159,11 +159,6 @@ to produce "uncompressed GIFs". This technique does not use the LZW
|
|||||||
algorithm; the resulting GIF files are larger than usual, but are readable
|
algorithm; the resulting GIF files are larger than usual, but are readable
|
||||||
by all standard GIF decoders.
|
by all standard GIF decoders.
|
||||||
|
|
||||||
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."
|
|
||||||
|
|
||||||
|
|
||||||
REFERENCES
|
REFERENCES
|
||||||
==========
|
==========
|
||||||
@ -176,8 +171,8 @@ The best short technical introduction to the JPEG compression algorithm is
|
|||||||
Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
|
Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
|
||||||
(Adjacent articles in that issue discuss MPEG motion picture compression,
|
(Adjacent articles in that issue discuss MPEG motion picture compression,
|
||||||
applications of JPEG, and related topics.) If you don't have the CACM issue
|
applications of JPEG, and related topics.) If you don't have the CACM issue
|
||||||
handy, a PostScript file containing a revised version of Wallace's article is
|
handy, a PDF file containing a revised version of Wallace's article is
|
||||||
available at http://www.ijg.org/files/wallace.ps.gz. The file (actually
|
available at http://www.ijg.org/files/Wallace.JPEG.pdf. The file (actually
|
||||||
a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
|
a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
|
||||||
omits the sample images that appeared in CACM, but it includes corrections
|
omits the sample images that appeared in CACM, but it includes corrections
|
||||||
and some added material. Note: the Wallace article is copyright ACM and IEEE,
|
and some added material. Note: the Wallace article is copyright ACM and IEEE,
|
||||||
@ -225,14 +220,13 @@ WG1 N 6080 with title "JPEG 9 Lossless Coding", June/July 2012, Paris,
|
|||||||
France.
|
France.
|
||||||
|
|
||||||
The JPEG standard does not specify all details of an interchangeable file
|
The JPEG standard does not specify all details of an interchangeable file
|
||||||
format. For the omitted details we follow the "JFIF" conventions, revision
|
format. For the omitted details we follow the "JFIF" conventions, version 2.
|
||||||
1.02. JFIF 1.02 has been adopted as an Ecma International Technical Report
|
JFIF version 1 has been adopted as Recommendation ITU-T T.871 (05/2011) :
|
||||||
and thus received a formal publication status. It is available as a free
|
Information technology - Digital compression and coding of continuous-tone
|
||||||
download in PDF format from
|
still images: JPEG File Interchange Format (JFIF). It is available as a
|
||||||
http://www.ecma-international.org/publications/techreports/E-TR-098.htm.
|
free download in PDF file format from http://www.itu.int/rec/T-REC-T.871.
|
||||||
A PostScript version of the JFIF document is available at
|
A PDF file of the older JFIF document is available at
|
||||||
http://www.ijg.org/files/jfif.ps.gz. There is also a plain text version at
|
http://www.w3.org/Graphics/JPEG/jfif3.pdf.
|
||||||
http://www.ijg.org/files/jfif.txt.gz, but it is missing the figures.
|
|
||||||
|
|
||||||
The TIFF 6.0 file format specification can be obtained by FTP from
|
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
|
ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme
|
||||||
@ -252,8 +246,8 @@ ARCHIVE LOCATIONS
|
|||||||
The "official" archive site for this software is www.ijg.org.
|
The "official" archive site for this software is www.ijg.org.
|
||||||
The most recent released version can always be found there in
|
The most recent released version can always be found there in
|
||||||
directory "files". This particular version will be archived as
|
directory "files". This particular version will be archived as
|
||||||
http://www.ijg.org/files/jpegsrc.v9a.tar.gz, and in Windows-compatible
|
http://www.ijg.org/files/jpegsrc.v9b.tar.gz, and in Windows-compatible
|
||||||
"zip" archive format as http://www.ijg.org/files/jpegsr9a.zip.
|
"zip" archive format as http://www.ijg.org/files/jpegsr9b.zip.
|
||||||
|
|
||||||
The JPEG FAQ (Frequently Asked Questions) article is a source of some
|
The JPEG FAQ (Frequently Asked Questions) article is a source of some
|
||||||
general information about JPEG.
|
general information about JPEG.
|
||||||
|
2783
aclocal.m4
vendored
2783
aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
2
ar-lib
2
ar-lib
@ -4,7 +4,7 @@
|
|||||||
me=ar-lib
|
me=ar-lib
|
||||||
scriptversion=2012-03-01.08; # UTC
|
scriptversion=2012-03-01.08; # UTC
|
||||||
|
|
||||||
# Copyright (C) 2010-2013 Free Software Foundation, Inc.
|
# Copyright (C) 2010-2014 Free Software Foundation, Inc.
|
||||||
# Written by Peter Rosin <peda@lysator.liu.se>.
|
# Written by Peter Rosin <peda@lysator.liu.se>.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
23
change.log
23
change.log
@ -1,6 +1,29 @@
|
|||||||
CHANGE LOG for Independent JPEG Group's JPEG software
|
CHANGE LOG for Independent JPEG Group's JPEG software
|
||||||
|
|
||||||
|
|
||||||
|
Version 9b 17-Jan-2016
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Improvements and optimizations in DCT and color calculations.
|
||||||
|
Normalize range limit array composition and access pattern.
|
||||||
|
Thank to Sia Furler and Maddie Ziegler for inspiration.
|
||||||
|
|
||||||
|
Use merged upsample with scaled DCT sizes larger than 8.
|
||||||
|
Thank to Taylor Hatala for inspiration.
|
||||||
|
|
||||||
|
Check for excessive comment lengths in argument parsing in wrjpgcom.c.
|
||||||
|
Thank to Julian Cohen for hint.
|
||||||
|
|
||||||
|
Add makefile.b32 for use with Borland C++ 32-bit (bcc32).
|
||||||
|
Thank to Joe Slater for contribution.
|
||||||
|
|
||||||
|
Document 'f' specifier for jpegtran -crop specification.
|
||||||
|
Thank to Michele Martone for suggestion.
|
||||||
|
|
||||||
|
Use defined value from header instead of hardwired number in rdswitch.c.
|
||||||
|
Thank to Robert Sprowson for hint.
|
||||||
|
|
||||||
|
|
||||||
Version 9a 19-Jan-2014
|
Version 9a 19-Jan-2014
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
4
cjpeg.1
4
cjpeg.1
@ -1,4 +1,4 @@
|
|||||||
.TH CJPEG 1 "23 November 2013"
|
.TH CJPEG 1 "26 July 2015"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
cjpeg \- compress an image file to a JPEG file
|
cjpeg \- compress an image file to a JPEG file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -16,7 +16,7 @@ cjpeg \- compress an image file to a JPEG file
|
|||||||
compresses the named image file, or the standard input if no file is
|
compresses the named image file, or the standard input if no file is
|
||||||
named, and produces a JPEG/JFIF file on the standard output.
|
named, and produces a JPEG/JFIF file on the standard output.
|
||||||
The currently supported input file formats are: PPM (PBMPLUS color
|
The currently supported input file formats are: PPM (PBMPLUS color
|
||||||
format), PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster
|
format), PGM (PBMPLUS grayscale format), BMP, Targa, and RLE (Utah Raster
|
||||||
Toolkit format). (RLE is supported only if the URT library is available.)
|
Toolkit format). (RLE is supported only if the URT library is available.)
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
All switch names may be abbreviated; for example,
|
All switch names may be abbreviated; for example,
|
||||||
|
2
compile
2
compile
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2012-10-14.11; # UTC
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
173
config.guess
vendored
173
config.guess
vendored
@ -1,8 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Attempt to guess a canonical system name.
|
# Attempt to guess a canonical system name.
|
||||||
# Copyright 1992-2013 Free Software Foundation, Inc.
|
# Copyright 1992-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2013-11-29'
|
timestamp='2014-11-04'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -24,12 +24,12 @@ timestamp='2013-11-29'
|
|||||||
# program. This Exception is an additional permission under section 7
|
# program. This Exception is an additional permission under section 7
|
||||||
# of the GNU General Public License, version 3 ("GPLv3").
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
#
|
#
|
||||||
# Originally written by Per Bothner.
|
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
||||||
#
|
#
|
||||||
# You can get the latest version of this script from:
|
# You can get the latest version of this script from:
|
||||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||||
#
|
#
|
||||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
|
|
||||||
|
|
||||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||||
@ -50,7 +50,7 @@ version="\
|
|||||||
GNU config.guess ($timestamp)
|
GNU config.guess ($timestamp)
|
||||||
|
|
||||||
Originally written by Per Bothner.
|
Originally written by Per Bothner.
|
||||||
Copyright 1992-2013 Free Software Foundation, Inc.
|
Copyright 1992-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
|
|||||||
LIBC=gnu
|
LIBC=gnu
|
||||||
#endif
|
#endif
|
||||||
EOF
|
EOF
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -579,8 +579,9 @@ EOF
|
|||||||
else
|
else
|
||||||
IBM_ARCH=powerpc
|
IBM_ARCH=powerpc
|
||||||
fi
|
fi
|
||||||
if [ -x /usr/bin/oslevel ] ; then
|
if [ -x /usr/bin/lslpp ] ; then
|
||||||
IBM_REV=`/usr/bin/oslevel`
|
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
|
||||||
|
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
|
||||||
else
|
else
|
||||||
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
||||||
fi
|
fi
|
||||||
@ -826,7 +827,7 @@ EOF
|
|||||||
*:MINGW*:*)
|
*:MINGW*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-mingw32
|
echo ${UNAME_MACHINE}-pc-mingw32
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:MSYS*:*)
|
*:MSYS*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-msys
|
echo ${UNAME_MACHINE}-pc-msys
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:windows32*:*)
|
i*:windows32*:*)
|
||||||
@ -969,10 +970,10 @@ EOF
|
|||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||||
;;
|
;;
|
||||||
or1k:Linux:*:*)
|
openrisc*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo or1k-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
or32:Linux:*:*)
|
or32:Linux:*:* | or1k*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
padre:Linux:*:*)
|
padre:Linux:*:*)
|
||||||
@ -1371,154 +1372,6 @@ EOF
|
|||||||
exit ;;
|
exit ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
eval $set_cc_for_build
|
|
||||||
cat >$dummy.c <<EOF
|
|
||||||
#ifdef _SEQUENT_
|
|
||||||
# include <sys/types.h>
|
|
||||||
# include <sys/utsname.h>
|
|
||||||
#endif
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
#if defined (sony)
|
|
||||||
#if defined (MIPSEB)
|
|
||||||
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
|
|
||||||
I don't know.... */
|
|
||||||
printf ("mips-sony-bsd\n"); exit (0);
|
|
||||||
#else
|
|
||||||
#include <sys/param.h>
|
|
||||||
printf ("m68k-sony-newsos%s\n",
|
|
||||||
#ifdef NEWSOS4
|
|
||||||
"4"
|
|
||||||
#else
|
|
||||||
""
|
|
||||||
#endif
|
|
||||||
); exit (0);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (__arm) && defined (__acorn) && defined (__unix)
|
|
||||||
printf ("arm-acorn-riscix\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (hp300) && !defined (hpux)
|
|
||||||
printf ("m68k-hp-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (NeXT)
|
|
||||||
#if !defined (__ARCHITECTURE__)
|
|
||||||
#define __ARCHITECTURE__ "m68k"
|
|
||||||
#endif
|
|
||||||
int version;
|
|
||||||
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
|
|
||||||
if (version < 4)
|
|
||||||
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
|
|
||||||
else
|
|
||||||
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
|
|
||||||
exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (MULTIMAX) || defined (n16)
|
|
||||||
#if defined (UMAXV)
|
|
||||||
printf ("ns32k-encore-sysv\n"); exit (0);
|
|
||||||
#else
|
|
||||||
#if defined (CMU)
|
|
||||||
printf ("ns32k-encore-mach\n"); exit (0);
|
|
||||||
#else
|
|
||||||
printf ("ns32k-encore-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (__386BSD__)
|
|
||||||
printf ("i386-pc-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (sequent)
|
|
||||||
#if defined (i386)
|
|
||||||
printf ("i386-sequent-dynix\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
#if defined (ns32000)
|
|
||||||
printf ("ns32k-sequent-dynix\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (_SEQUENT_)
|
|
||||||
struct utsname un;
|
|
||||||
|
|
||||||
uname(&un);
|
|
||||||
|
|
||||||
if (strncmp(un.version, "V2", 2) == 0) {
|
|
||||||
printf ("i386-sequent-ptx2\n"); exit (0);
|
|
||||||
}
|
|
||||||
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
|
|
||||||
printf ("i386-sequent-ptx1\n"); exit (0);
|
|
||||||
}
|
|
||||||
printf ("i386-sequent-ptx\n"); exit (0);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (vax)
|
|
||||||
# if !defined (ultrix)
|
|
||||||
# include <sys/param.h>
|
|
||||||
# if defined (BSD)
|
|
||||||
# if BSD == 43
|
|
||||||
printf ("vax-dec-bsd4.3\n"); exit (0);
|
|
||||||
# else
|
|
||||||
# if BSD == 199006
|
|
||||||
printf ("vax-dec-bsd4.3reno\n"); exit (0);
|
|
||||||
# else
|
|
||||||
printf ("vax-dec-bsd\n"); exit (0);
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
printf ("vax-dec-bsd\n"); exit (0);
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
printf ("vax-dec-ultrix\n"); exit (0);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (alliant) && defined (i860)
|
|
||||||
printf ("i860-alliant-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
|
|
||||||
{ echo "$SYSTEM_NAME"; exit; }
|
|
||||||
|
|
||||||
# Apollos put the system type in the environment.
|
|
||||||
|
|
||||||
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
|
|
||||||
|
|
||||||
# Convex versions that predate uname can use getsysinfo(1)
|
|
||||||
|
|
||||||
if [ -x /usr/convex/getsysinfo ]
|
|
||||||
then
|
|
||||||
case `getsysinfo -f cpu_type` in
|
|
||||||
c1*)
|
|
||||||
echo c1-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
c2*)
|
|
||||||
if getsysinfo -f scalar_acc
|
|
||||||
then echo c32-convex-bsd
|
|
||||||
else echo c2-convex-bsd
|
|
||||||
fi
|
|
||||||
exit ;;
|
|
||||||
c34*)
|
|
||||||
echo c34-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
c38*)
|
|
||||||
echo c38-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
c4*)
|
|
||||||
echo c4-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >&2 <<EOF
|
cat >&2 <<EOF
|
||||||
$0: unable to guess system type
|
$0: unable to guess system type
|
||||||
|
|
||||||
|
36
config.sub
vendored
36
config.sub
vendored
@ -1,8 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright 1992-2013 Free Software Foundation, Inc.
|
# Copyright 1992-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2013-10-01'
|
timestamp='2014-12-03'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -25,7 +25,7 @@ timestamp='2013-10-01'
|
|||||||
# of the GNU General Public License, version 3 ("GPLv3").
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
|
|
||||||
|
|
||||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
#
|
#
|
||||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||||
# Supply the specified configuration type as an argument.
|
# Supply the specified configuration type as an argument.
|
||||||
@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright 1992-2013 Free Software Foundation, Inc.
|
Copyright 1992-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -283,8 +283,10 @@ case $basic_machine in
|
|||||||
| mips64vr5900 | mips64vr5900el \
|
| mips64vr5900 | mips64vr5900el \
|
||||||
| mipsisa32 | mipsisa32el \
|
| mipsisa32 | mipsisa32el \
|
||||||
| mipsisa32r2 | mipsisa32r2el \
|
| mipsisa32r2 | mipsisa32r2el \
|
||||||
|
| mipsisa32r6 | mipsisa32r6el \
|
||||||
| mipsisa64 | mipsisa64el \
|
| mipsisa64 | mipsisa64el \
|
||||||
| mipsisa64r2 | mipsisa64r2el \
|
| mipsisa64r2 | mipsisa64r2el \
|
||||||
|
| mipsisa64r6 | mipsisa64r6el \
|
||||||
| mipsisa64sb1 | mipsisa64sb1el \
|
| mipsisa64sb1 | mipsisa64sb1el \
|
||||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||||
| mipsr5900 | mipsr5900el \
|
| mipsr5900 | mipsr5900el \
|
||||||
@ -296,11 +298,11 @@ case $basic_machine in
|
|||||||
| nds32 | nds32le | nds32be \
|
| nds32 | nds32le | nds32be \
|
||||||
| nios | nios2 | nios2eb | nios2el \
|
| nios | nios2 | nios2eb | nios2el \
|
||||||
| ns16k | ns32k \
|
| ns16k | ns32k \
|
||||||
| open8 \
|
| open8 | or1k | or1knd | or32 \
|
||||||
| or1k | or32 \
|
|
||||||
| pdp10 | pdp11 | pj | pjl \
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
|
| riscv32 | riscv64 \
|
||||||
| rl78 | rx \
|
| rl78 | rx \
|
||||||
| score \
|
| score \
|
||||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||||
@ -311,6 +313,7 @@ case $basic_machine in
|
|||||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||||
| ubicom32 \
|
| ubicom32 \
|
||||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||||
|
| visium \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | xc16x | xstormy16 | xtensa \
|
| x86 | xc16x | xstormy16 | xtensa \
|
||||||
| z8k | z80)
|
| z8k | z80)
|
||||||
@ -325,6 +328,9 @@ case $basic_machine in
|
|||||||
c6x)
|
c6x)
|
||||||
basic_machine=tic6x-unknown
|
basic_machine=tic6x-unknown
|
||||||
;;
|
;;
|
||||||
|
leon|leon[3-9])
|
||||||
|
basic_machine=sparc-$basic_machine
|
||||||
|
;;
|
||||||
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
os=-none
|
os=-none
|
||||||
@ -402,8 +408,10 @@ case $basic_machine in
|
|||||||
| mips64vr5900-* | mips64vr5900el-* \
|
| mips64vr5900-* | mips64vr5900el-* \
|
||||||
| mipsisa32-* | mipsisa32el-* \
|
| mipsisa32-* | mipsisa32el-* \
|
||||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||||
|
| mipsisa32r6-* | mipsisa32r6el-* \
|
||||||
| mipsisa64-* | mipsisa64el-* \
|
| mipsisa64-* | mipsisa64el-* \
|
||||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||||
|
| mipsisa64r6-* | mipsisa64r6el-* \
|
||||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||||
| mipsr5900-* | mipsr5900el-* \
|
| mipsr5900-* | mipsr5900el-* \
|
||||||
@ -415,6 +423,7 @@ case $basic_machine in
|
|||||||
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||||
| open8-* \
|
| open8-* \
|
||||||
|
| or1k*-* \
|
||||||
| orion-* \
|
| orion-* \
|
||||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||||
@ -432,6 +441,7 @@ case $basic_machine in
|
|||||||
| ubicom32-* \
|
| ubicom32-* \
|
||||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||||
| vax-* \
|
| vax-* \
|
||||||
|
| visium-* \
|
||||||
| we32k-* \
|
| we32k-* \
|
||||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||||
| xstormy16-* | xtensa*-* \
|
| xstormy16-* | xtensa*-* \
|
||||||
@ -769,6 +779,9 @@ case $basic_machine in
|
|||||||
basic_machine=m68k-isi
|
basic_machine=m68k-isi
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
leon-*|leon[3-9]-*)
|
||||||
|
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
|
||||||
|
;;
|
||||||
m68knommu)
|
m68knommu)
|
||||||
basic_machine=m68k-unknown
|
basic_machine=m68k-unknown
|
||||||
os=-linux
|
os=-linux
|
||||||
@ -824,6 +837,10 @@ case $basic_machine in
|
|||||||
basic_machine=powerpc-unknown
|
basic_machine=powerpc-unknown
|
||||||
os=-morphos
|
os=-morphos
|
||||||
;;
|
;;
|
||||||
|
moxiebox)
|
||||||
|
basic_machine=moxie-unknown
|
||||||
|
os=-moxiebox
|
||||||
|
;;
|
||||||
msdos)
|
msdos)
|
||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-msdos
|
os=-msdos
|
||||||
@ -1369,14 +1386,14 @@ case $os in
|
|||||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
|
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
@ -1594,9 +1611,6 @@ case $basic_machine in
|
|||||||
mips*-*)
|
mips*-*)
|
||||||
os=-elf
|
os=-elf
|
||||||
;;
|
;;
|
||||||
or1k-*)
|
|
||||||
os=-elf
|
|
||||||
;;
|
|
||||||
or32-*)
|
or32-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
# Configure script for IJG libjpeg
|
# Configure script for IJG libjpeg
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_INIT([libjpeg], [9.1.0])
|
AC_INIT([libjpeg], [9.2.0])
|
||||||
|
|
||||||
# Directory where autotools helper scripts lives.
|
# Directory where autotools helper scripts lives.
|
||||||
AC_CONFIG_AUX_DIR([.])
|
AC_CONFIG_AUX_DIR([.])
|
||||||
|
2
depcomp
2
depcomp
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2013-05-30.07; # UTC
|
scriptversion=2013-05-30.07; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
23
djpeg.1
23
djpeg.1
@ -1,4 +1,4 @@
|
|||||||
.TH DJPEG 1 "23 November 2013"
|
.TH DJPEG 1 "26 July 2015"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
djpeg \- decompress a JPEG file to an image file
|
djpeg \- decompress a JPEG file to an image file
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -55,11 +55,16 @@ default options are chosen for highest quality output.) Currently, this is
|
|||||||
equivalent to \fB\-dct fast \-nosmooth \-onepass \-dither ordered\fR.
|
equivalent to \fB\-dct fast \-nosmooth \-onepass \-dither ordered\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-grayscale
|
.B \-grayscale
|
||||||
Force gray-scale output even if JPEG file is color. Useful for viewing on
|
Force grayscale output even if JPEG file is color.
|
||||||
monochrome displays; also,
|
Useful for viewing on monochrome displays; also,
|
||||||
.B djpeg
|
.B djpeg
|
||||||
runs noticeably faster in this mode.
|
runs noticeably faster in this mode.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-rgb
|
||||||
|
Force RGB output even if JPEG file is grayscale.
|
||||||
|
This is provided to support applications that don't
|
||||||
|
want to cope with grayscale as a separate case.
|
||||||
|
.TP
|
||||||
.BI \-scale " M/N"
|
.BI \-scale " M/N"
|
||||||
Scale the output image by a factor M/N. Currently supported scale factors are
|
Scale the output image by a factor M/N. Currently supported scale factors are
|
||||||
M/N with all M from 1 to 16, where N is the source DCT size, which is 8 for
|
M/N with all M from 1 to 16, where N is the source DCT size, which is 8 for
|
||||||
@ -76,7 +81,7 @@ emitted if
|
|||||||
.B \-colors
|
.B \-colors
|
||||||
or
|
or
|
||||||
.B \-grayscale
|
.B \-grayscale
|
||||||
is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
|
is specified, or if the JPEG file is grayscale; otherwise, 24-bit full-color
|
||||||
format is emitted.
|
format is emitted.
|
||||||
.TP
|
.TP
|
||||||
.B \-gif
|
.B \-gif
|
||||||
@ -90,12 +95,12 @@ emitted if
|
|||||||
.B \-colors
|
.B \-colors
|
||||||
or
|
or
|
||||||
.B \-grayscale
|
.B \-grayscale
|
||||||
is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
|
is specified, or if the JPEG file is grayscale; otherwise, 24-bit full-color
|
||||||
format is emitted.
|
format is emitted.
|
||||||
.TP
|
.TP
|
||||||
.B \-pnm
|
.B \-pnm
|
||||||
Select PBMPLUS (PPM/PGM) output format (this is the default format).
|
Select PBMPLUS (PPM/PGM) output format (this is the default format).
|
||||||
PGM is emitted if the JPEG file is gray-scale or if
|
PGM is emitted if the JPEG file is grayscale or if
|
||||||
.B \-grayscale
|
.B \-grayscale
|
||||||
is specified; otherwise PPM is emitted.
|
is specified; otherwise PPM is emitted.
|
||||||
.TP
|
.TP
|
||||||
@ -103,8 +108,8 @@ is specified; otherwise PPM is emitted.
|
|||||||
Select RLE output format. (Requires URT library.)
|
Select RLE output format. (Requires URT library.)
|
||||||
.TP
|
.TP
|
||||||
.B \-targa
|
.B \-targa
|
||||||
Select Targa output format. Gray-scale format is emitted if the JPEG file is
|
Select Targa output format. Grayscale format is emitted if the JPEG file is
|
||||||
gray-scale or if
|
grayscale or if
|
||||||
.B \-grayscale
|
.B \-grayscale
|
||||||
is specified; otherwise, colormapped format is emitted if
|
is specified; otherwise, colormapped format is emitted if
|
||||||
.B \-colors
|
.B \-colors
|
||||||
@ -162,7 +167,7 @@ faster and needs less memory, but it produces a lower-quality image.
|
|||||||
is ignored unless you also say
|
is ignored unless you also say
|
||||||
.B \-colors
|
.B \-colors
|
||||||
.IR N .
|
.IR N .
|
||||||
Also, the one-pass method is always used for gray-scale output (the two-pass
|
Also, the one-pass method is always used for grayscale output (the two-pass
|
||||||
method is no improvement then).
|
method is no improvement then).
|
||||||
.TP
|
.TP
|
||||||
.BI \-maxmemory " N"
|
.BI \-maxmemory " N"
|
||||||
|
7
djpeg.c
7
djpeg.c
@ -2,7 +2,7 @@
|
|||||||
* djpeg.c
|
* djpeg.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
* Modified 2009-2013 by Guido Vollbeding.
|
* Modified 2009-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -102,6 +102,7 @@ usage (void)
|
|||||||
fprintf(stderr, " -colors N Reduce image to no more than N colors\n");
|
fprintf(stderr, " -colors N Reduce image to no more than N colors\n");
|
||||||
fprintf(stderr, " -fast Fast, low-quality processing\n");
|
fprintf(stderr, " -fast Fast, low-quality processing\n");
|
||||||
fprintf(stderr, " -grayscale Force grayscale output\n");
|
fprintf(stderr, " -grayscale Force grayscale output\n");
|
||||||
|
fprintf(stderr, " -rgb Force RGB output\n");
|
||||||
#ifdef IDCT_SCALING_SUPPORTED
|
#ifdef IDCT_SCALING_SUPPORTED
|
||||||
fprintf(stderr, " -scale M/N Scale output image by fraction M/N, eg, 1/8\n");
|
fprintf(stderr, " -scale M/N Scale output image by fraction M/N, eg, 1/8\n");
|
||||||
#endif
|
#endif
|
||||||
@ -264,6 +265,10 @@ parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
|
|||||||
/* Force monochrome output. */
|
/* Force monochrome output. */
|
||||||
cinfo->out_color_space = JCS_GRAYSCALE;
|
cinfo->out_color_space = JCS_GRAYSCALE;
|
||||||
|
|
||||||
|
} else if (keymatch(arg, "rgb", 3)) {
|
||||||
|
/* Force RGB output. */
|
||||||
|
cinfo->out_color_space = JCS_RGB;
|
||||||
|
|
||||||
} else if (keymatch(arg, "map", 3)) {
|
} else if (keymatch(arg, "map", 3)) {
|
||||||
/* Quantize to a color map taken from an input file. */
|
/* Quantize to a color map taken from an input file. */
|
||||||
if (++argn >= argc) /* advance to next argument */
|
if (++argn >= argc) /* advance to next argument */
|
||||||
|
354
install-sh
354
install-sh
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
scriptversion=2011-11-20.07; # UTC
|
scriptversion=2013-12-25.23; # UTC
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
|
|||||||
# This script is compatible with the BSD install script, but was written
|
# This script is compatible with the BSD install script, but was written
|
||||||
# from scratch.
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
nl='
|
nl='
|
||||||
'
|
'
|
||||||
IFS=" "" $nl"
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit=${DOITPROG-}
|
doit=${DOITPROG-}
|
||||||
if test -z "$doit"; then
|
doit_exec=${doit:-exec}
|
||||||
doit_exec=exec
|
|
||||||
else
|
|
||||||
doit_exec=$doit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put in absolute file names if you don't have them in your path;
|
# Put in absolute file names if you don't have them in your path;
|
||||||
# or use environment vars.
|
# or use environment vars.
|
||||||
@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
|
|||||||
rmprog=${RMPROG-rm}
|
rmprog=${RMPROG-rm}
|
||||||
stripprog=${STRIPPROG-strip}
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
posix_glob='?'
|
|
||||||
initialize_posix_glob='
|
|
||||||
test "$posix_glob" != "?" || {
|
|
||||||
if (set -f) 2>/dev/null; then
|
|
||||||
posix_glob=
|
|
||||||
else
|
|
||||||
posix_glob=:
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
'
|
|
||||||
|
|
||||||
posix_mkdir=
|
posix_mkdir=
|
||||||
|
|
||||||
# Desired mode of installed file.
|
# Desired mode of installed file.
|
||||||
@ -97,7 +82,7 @@ dir_arg=
|
|||||||
dst_arg=
|
dst_arg=
|
||||||
|
|
||||||
copy_on_change=false
|
copy_on_change=false
|
||||||
no_target_directory=
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
usage="\
|
usage="\
|
||||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
@ -137,46 +122,57 @@ while test $# -ne 0; do
|
|||||||
-d) dir_arg=true;;
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
--help) echo "$usage"; exit $?;;
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
-m) mode=$2
|
-m) mode=$2
|
||||||
case $mode in
|
case $mode in
|
||||||
*' '* | *' '* | *'
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
'* | *'*'* | *'?'* | *'['*)
|
echo "$0: invalid mode: $mode" >&2
|
||||||
echo "$0: invalid mode: $mode" >&2
|
exit 1;;
|
||||||
exit 1;;
|
esac
|
||||||
esac
|
shift;;
|
||||||
shift;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
-o) chowncmd="$chownprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
-s) stripcmd=$stripprog;;
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
-t) dst_arg=$2
|
-t)
|
||||||
# Protect names problematic for 'test' and other utilities.
|
is_target_a_directory=always
|
||||||
case $dst_arg in
|
dst_arg=$2
|
||||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
# Protect names problematic for 'test' and other utilities.
|
||||||
esac
|
case $dst_arg in
|
||||||
shift;;
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
-T) no_target_directory=true;;
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
--version) echo "$0 $scriptversion"; exit $?;;
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
--) shift
|
--) shift
|
||||||
break;;
|
break;;
|
||||||
|
|
||||||
-*) echo "$0: invalid option: $1" >&2
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
exit 1;;
|
exit 1;;
|
||||||
|
|
||||||
*) break;;
|
*) break;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
# When -d is used, all remaining arguments are directories to create.
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
# When -t is used, the destination is already specified.
|
# When -t is used, the destination is already specified.
|
||||||
@ -207,6 +203,15 @@ if test $# -eq 0; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$dir_arg"; then
|
if test -z "$dir_arg"; then
|
||||||
do_exit='(exit $ret); exit $ret'
|
do_exit='(exit $ret); exit $ret'
|
||||||
trap "ret=129; $do_exit" 1
|
trap "ret=129; $do_exit" 1
|
||||||
@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
|
|||||||
|
|
||||||
*[0-7])
|
*[0-7])
|
||||||
if test -z "$stripcmd"; then
|
if test -z "$stripcmd"; then
|
||||||
u_plus_rw=
|
u_plus_rw=
|
||||||
else
|
else
|
||||||
u_plus_rw='% 200'
|
u_plus_rw='% 200'
|
||||||
fi
|
fi
|
||||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
*)
|
*)
|
||||||
if test -z "$stripcmd"; then
|
if test -z "$stripcmd"; then
|
||||||
u_plus_rw=
|
u_plus_rw=
|
||||||
else
|
else
|
||||||
u_plus_rw=,u+rw
|
u_plus_rw=,u+rw
|
||||||
fi
|
fi
|
||||||
cp_umask=$mode$u_plus_rw;;
|
cp_umask=$mode$u_plus_rw;;
|
||||||
esac
|
esac
|
||||||
@ -269,41 +274,15 @@ do
|
|||||||
# If destination is a directory, append the input filename; won't work
|
# If destination is a directory, append the input filename; won't work
|
||||||
# if double slashes aren't ignored.
|
# if double slashes aren't ignored.
|
||||||
if test -d "$dst"; then
|
if test -d "$dst"; then
|
||||||
if test -n "$no_target_directory"; then
|
if test "$is_target_a_directory" = never; then
|
||||||
echo "$0: $dst_arg: Is a directory" >&2
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
dstdir=$dst
|
dstdir=$dst
|
||||||
dst=$dstdir/`basename "$src"`
|
dst=$dstdir/`basename "$src"`
|
||||||
dstdir_status=0
|
dstdir_status=0
|
||||||
else
|
else
|
||||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
dstdir=`dirname "$dst"`
|
||||||
dstdir=`
|
|
||||||
(dirname "$dst") 2>/dev/null ||
|
|
||||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
|
||||||
X"$dst" : 'X\(//\)[^/]' \| \
|
|
||||||
X"$dst" : 'X\(//\)$' \| \
|
|
||||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
|
||||||
echo X"$dst" |
|
|
||||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)[^/].*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\).*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
s/.*/./; q'
|
|
||||||
`
|
|
||||||
|
|
||||||
test -d "$dstdir"
|
test -d "$dstdir"
|
||||||
dstdir_status=$?
|
dstdir_status=$?
|
||||||
fi
|
fi
|
||||||
@ -314,74 +293,74 @@ do
|
|||||||
if test $dstdir_status != 0; then
|
if test $dstdir_status != 0; then
|
||||||
case $posix_mkdir in
|
case $posix_mkdir in
|
||||||
'')
|
'')
|
||||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
umask=`umask`
|
umask=`umask`
|
||||||
case $stripcmd.$umask in
|
case $stripcmd.$umask in
|
||||||
# Optimize common cases.
|
# Optimize common cases.
|
||||||
*[2367][2367]) mkdir_umask=$umask;;
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
*[0-7])
|
*[0-7])
|
||||||
mkdir_umask=`expr $umask + 22 \
|
mkdir_umask=`expr $umask + 22 \
|
||||||
- $umask % 100 % 40 + $umask % 20 \
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
- $umask % 10 % 4 + $umask % 2
|
- $umask % 10 % 4 + $umask % 2
|
||||||
`;;
|
`;;
|
||||||
*) mkdir_umask=$umask,go-w;;
|
*) mkdir_umask=$umask,go-w;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# With -d, create the new directory with the user-specified mode.
|
# With -d, create the new directory with the user-specified mode.
|
||||||
# Otherwise, rely on $mkdir_umask.
|
# Otherwise, rely on $mkdir_umask.
|
||||||
if test -n "$dir_arg"; then
|
if test -n "$dir_arg"; then
|
||||||
mkdir_mode=-m$mode
|
mkdir_mode=-m$mode
|
||||||
else
|
else
|
||||||
mkdir_mode=
|
mkdir_mode=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
posix_mkdir=false
|
posix_mkdir=false
|
||||||
case $umask in
|
case $umask in
|
||||||
*[123567][0-7][0-7])
|
*[123567][0-7][0-7])
|
||||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
if (umask $mkdir_umask &&
|
if (umask $mkdir_umask &&
|
||||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
if test -z "$dir_arg" || {
|
if test -z "$dir_arg" || {
|
||||||
# Check for POSIX incompatibilities with -m.
|
# Check for POSIX incompatibilities with -m.
|
||||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
# other-writable bit of parent directory when it shouldn't.
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
case $ls_ld_tmpdir in
|
case $ls_ld_tmpdir in
|
||||||
d????-?r-*) different_mode=700;;
|
d????-?r-*) different_mode=700;;
|
||||||
d????-?--*) different_mode=755;;
|
d????-?--*) different_mode=755;;
|
||||||
*) false;;
|
*) false;;
|
||||||
esac &&
|
esac &&
|
||||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
then posix_mkdir=:
|
then posix_mkdir=:
|
||||||
fi
|
fi
|
||||||
rmdir "$tmpdir/d" "$tmpdir"
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
else
|
else
|
||||||
# Remove any dirs left behind by ancient mkdir implementations.
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
fi
|
fi
|
||||||
trap '' 0;;
|
trap '' 0;;
|
||||||
esac;;
|
esac;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if
|
if
|
||||||
$posix_mkdir && (
|
$posix_mkdir && (
|
||||||
umask $mkdir_umask &&
|
umask $mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
)
|
)
|
||||||
then :
|
then :
|
||||||
else
|
else
|
||||||
@ -391,53 +370,51 @@ do
|
|||||||
# directory the slow way, step by step, checking for races as we go.
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
case $dstdir in
|
case $dstdir in
|
||||||
/*) prefix='/';;
|
/*) prefix='/';;
|
||||||
[-=\(\)!]*) prefix='./';;
|
[-=\(\)!]*) prefix='./';;
|
||||||
*) prefix='';;
|
*) prefix='';;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
eval "$initialize_posix_glob"
|
|
||||||
|
|
||||||
oIFS=$IFS
|
oIFS=$IFS
|
||||||
IFS=/
|
IFS=/
|
||||||
$posix_glob set -f
|
set -f
|
||||||
set fnord $dstdir
|
set fnord $dstdir
|
||||||
shift
|
shift
|
||||||
$posix_glob set +f
|
set +f
|
||||||
IFS=$oIFS
|
IFS=$oIFS
|
||||||
|
|
||||||
prefixes=
|
prefixes=
|
||||||
|
|
||||||
for d
|
for d
|
||||||
do
|
do
|
||||||
test X"$d" = X && continue
|
test X"$d" = X && continue
|
||||||
|
|
||||||
prefix=$prefix$d
|
prefix=$prefix$d
|
||||||
if test -d "$prefix"; then
|
if test -d "$prefix"; then
|
||||||
prefixes=
|
prefixes=
|
||||||
else
|
else
|
||||||
if $posix_mkdir; then
|
if $posix_mkdir; then
|
||||||
(umask=$mkdir_umask &&
|
(umask=$mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
test -d "$prefix" || exit 1
|
test -d "$prefix" || exit 1
|
||||||
else
|
else
|
||||||
case $prefix in
|
case $prefix in
|
||||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
*) qprefix=$prefix;;
|
*) qprefix=$prefix;;
|
||||||
esac
|
esac
|
||||||
prefixes="$prefixes '$qprefix'"
|
prefixes="$prefixes '$qprefix'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
prefix=$prefix/
|
prefix=$prefix/
|
||||||
done
|
done
|
||||||
|
|
||||||
if test -n "$prefixes"; then
|
if test -n "$prefixes"; then
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
(umask $mkdir_umask &&
|
(umask $mkdir_umask &&
|
||||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
test -d "$dstdir" || exit 1
|
test -d "$dstdir" || exit 1
|
||||||
obsolete_mkdir_used=true
|
obsolete_mkdir_used=true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -472,15 +449,12 @@ do
|
|||||||
|
|
||||||
# If -C, don't bother to copy if it wouldn't change the file.
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
if $copy_on_change &&
|
if $copy_on_change &&
|
||||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
eval "$initialize_posix_glob" &&
|
|
||||||
$posix_glob set -f &&
|
|
||||||
set X $old && old=:$2:$4:$5:$6 &&
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
set X $new && new=:$2:$4:$5:$6 &&
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
$posix_glob set +f &&
|
set +f &&
|
||||||
|
|
||||||
test "$old" = "$new" &&
|
test "$old" = "$new" &&
|
||||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
@ -493,24 +467,24 @@ do
|
|||||||
# to itself, or perhaps because mv is so ancient that it does not
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
# support -f.
|
# support -f.
|
||||||
{
|
{
|
||||||
# Now remove or move aside any old file at destination location.
|
# Now remove or move aside any old file at destination location.
|
||||||
# We try this two ways since rm can't unlink itself on some
|
# We try this two ways since rm can't unlink itself on some
|
||||||
# systems and the destination file might be busy for other
|
# systems and the destination file might be busy for other
|
||||||
# reasons. In this case, the final cleanup might fail but the new
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
# file should still install successfully.
|
# file should still install successfully.
|
||||||
{
|
{
|
||||||
test ! -f "$dst" ||
|
test ! -f "$dst" ||
|
||||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
} ||
|
} ||
|
||||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
(exit 1); exit 1
|
(exit 1); exit 1
|
||||||
}
|
}
|
||||||
} &&
|
} &&
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
# Now rename the file to the real destination.
|
||||||
$doit $mvcmd "$dsttmp" "$dst"
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
}
|
}
|
||||||
fi || exit 1
|
fi || exit 1
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
INSTALLATION INSTRUCTIONS for the Independent JPEG Group's JPEG software
|
INSTALLATION INSTRUCTIONS for the Independent JPEG Group's JPEG software
|
||||||
|
|
||||||
Copyright (C) 1991-2013, Thomas G. Lane, Guido Vollbeding.
|
Copyright (C) 1991-2015, Thomas G. Lane, Guido Vollbeding.
|
||||||
This file is part of the Independent JPEG Group's software.
|
This file is part of the Independent JPEG Group's software.
|
||||||
For conditions of distribution and use, see the accompanying README file.
|
For conditions of distribution and use, see the accompanying README file.
|
||||||
|
|
||||||
@ -147,9 +147,10 @@ makefile.bcc jconfig.bcc MS-DOS or OS/2, Borland C
|
|||||||
makefile.dj jconfig.dj MS-DOS, DJGPP (Delorie's port of GNU C)
|
makefile.dj jconfig.dj MS-DOS, DJGPP (Delorie's port of GNU C)
|
||||||
makefile.mc6 jconfig.mc6 MS-DOS, Microsoft C (16-bit only)
|
makefile.mc6 jconfig.mc6 MS-DOS, Microsoft C (16-bit only)
|
||||||
makefile.wat jconfig.wat MS-DOS, OS/2, or Windows NT, Watcom C
|
makefile.wat jconfig.wat MS-DOS, OS/2, or Windows NT, Watcom C
|
||||||
makefile.vc jconfig.vc Windows NT/95, MS Visual C++
|
makefile.vc jconfig.vc Windows NT/9x, MS Visual C++
|
||||||
make*.vc6 jconfig.vc Windows NT/95, MS Visual C++ 6
|
make*.vc6 jconfig.vc Windows NT/9x, MS Visual C++ 6
|
||||||
make*.v10 jconfig.vc Windows NT/95, MS Visual C++ 2010 (v10)
|
make*.v10 jconfig.vc Windows NT/9x, MS Visual C++ 2010 (v10)
|
||||||
|
makefile.b32 jconfig.vc Windows NT/9x, Borland C++ 32-bit (bcc32)
|
||||||
makefile.mms jconfig.vms Digital VMS, with MMS software
|
makefile.mms jconfig.vms Digital VMS, with MMS software
|
||||||
makefile.vms jconfig.vms Digital VMS, without MMS software
|
makefile.vms jconfig.vms Digital VMS, without MMS software
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */
|
/* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 9x or NT. */
|
||||||
|
/* This file also works for Borland C++ 32-bit (bcc32) on Windows 9x or NT. */
|
||||||
/* see jconfig.txt for explanations */
|
/* see jconfig.txt for explanations */
|
||||||
|
|
||||||
#define HAVE_PROTOTYPES
|
#define HAVE_PROTOTYPES
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* jdarith.c
|
* jdarith.c
|
||||||
*
|
*
|
||||||
* Developed 1997-2013 by Guido Vollbeding.
|
* Developed 1997-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -94,7 +94,7 @@ get_byte (j_decompress_ptr cinfo)
|
|||||||
* (instead of fixed) with the bit shift counter CT.
|
* (instead of fixed) with the bit shift counter CT.
|
||||||
* Thus, we also need only one (variable instead of
|
* Thus, we also need only one (variable instead of
|
||||||
* fixed size) shift for the LPS/MPS decision, and
|
* fixed size) shift for the LPS/MPS decision, and
|
||||||
* we can get away with any renormalization update
|
* we can do away with any renormalization update
|
||||||
* of C (except for new data insertion, of course).
|
* of C (except for new data insertion, of course).
|
||||||
*
|
*
|
||||||
* I've also introduced a new scheme for accessing
|
* I've also introduced a new scheme for accessing
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* jdatasrc.c
|
* jdatasrc.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1996, Thomas G. Lane.
|
* Copyright (C) 1994-1996, Thomas G. Lane.
|
||||||
* Modified 2009-2011 by Guido Vollbeding.
|
* Modified 2009-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -247,7 +247,7 @@ jpeg_stdio_src (j_decompress_ptr cinfo, FILE * infile)
|
|||||||
|
|
||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
jpeg_mem_src (j_decompress_ptr cinfo,
|
jpeg_mem_src (j_decompress_ptr cinfo,
|
||||||
unsigned char * inbuffer, unsigned long insize)
|
const unsigned char * inbuffer, unsigned long insize)
|
||||||
{
|
{
|
||||||
struct jpeg_source_mgr * src;
|
struct jpeg_source_mgr * src;
|
||||||
|
|
||||||
@ -271,5 +271,5 @@ jpeg_mem_src (j_decompress_ptr cinfo,
|
|||||||
src->resync_to_restart = jpeg_resync_to_restart; /* use default method */
|
src->resync_to_restart = jpeg_resync_to_restart; /* use default method */
|
||||||
src->term_source = term_source;
|
src->term_source = term_source;
|
||||||
src->bytes_in_buffer = (size_t) insize;
|
src->bytes_in_buffer = (size_t) insize;
|
||||||
src->next_input_byte = (JOCTET *) inbuffer;
|
src->next_input_byte = (const JOCTET *) inbuffer;
|
||||||
}
|
}
|
||||||
|
27
jdcolor.c
27
jdcolor.c
@ -2,7 +2,7 @@
|
|||||||
* jdcolor.c
|
* jdcolor.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
* Modified 2011-2013 by Guido Vollbeding.
|
* Modified 2011-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -25,9 +25,6 @@ typedef struct {
|
|||||||
INT32 * Cr_g_tab; /* => table for Cr to G conversion */
|
INT32 * Cr_g_tab; /* => table for Cr to G conversion */
|
||||||
INT32 * Cb_g_tab; /* => table for Cb to G conversion */
|
INT32 * Cb_g_tab; /* => table for Cb to G conversion */
|
||||||
|
|
||||||
JSAMPLE * range_limit; /* pointer to normal sample range limit table, */
|
|
||||||
/* or extended sample range limit table for BG_YCC */
|
|
||||||
|
|
||||||
/* Private state for RGB->Y conversion */
|
/* Private state for RGB->Y conversion */
|
||||||
INT32 * rgb_y_tab; /* => table for RGB to Y conversion */
|
INT32 * rgb_y_tab; /* => table for RGB to Y conversion */
|
||||||
} my_color_deconverter;
|
} my_color_deconverter;
|
||||||
@ -134,8 +131,6 @@ build_ycc_rgb_table (j_decompress_ptr cinfo)
|
|||||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
(MAXJSAMPLE+1) * SIZEOF(INT32));
|
(MAXJSAMPLE+1) * SIZEOF(INT32));
|
||||||
|
|
||||||
cconvert->range_limit = cinfo->sample_range_limit;
|
|
||||||
|
|
||||||
for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
|
for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
|
||||||
/* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
|
/* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
|
||||||
/* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
|
/* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
|
||||||
@ -176,10 +171,6 @@ build_bg_ycc_rgb_table (j_decompress_ptr cinfo)
|
|||||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
(MAXJSAMPLE+1) * SIZEOF(INT32));
|
(MAXJSAMPLE+1) * SIZEOF(INT32));
|
||||||
|
|
||||||
cconvert->range_limit = (JSAMPLE *)
|
|
||||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
|
||||||
5 * (MAXJSAMPLE+1) * SIZEOF(JSAMPLE));
|
|
||||||
|
|
||||||
for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
|
for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
|
||||||
/* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
|
/* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
|
||||||
/* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
|
/* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
|
||||||
@ -195,20 +186,6 @@ build_bg_ycc_rgb_table (j_decompress_ptr cinfo)
|
|||||||
/* We also add in ONE_HALF so that need not do it in inner loop */
|
/* We also add in ONE_HALF so that need not do it in inner loop */
|
||||||
cconvert->Cb_g_tab[i] = (- FIX(0.688272572)) * x + ONE_HALF;
|
cconvert->Cb_g_tab[i] = (- FIX(0.688272572)) * x + ONE_HALF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cb and Cr portions can extend to double range in wide gamut case,
|
|
||||||
* so we prepare an appropriate extended range limit table.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* First segment of range limit table: limit[x] = 0 for x < 0 */
|
|
||||||
MEMZERO(cconvert->range_limit, 2 * (MAXJSAMPLE+1) * SIZEOF(JSAMPLE));
|
|
||||||
cconvert->range_limit += 2 * (MAXJSAMPLE+1);
|
|
||||||
/* Main part of range limit table: limit[x] = x */
|
|
||||||
for (i = 0; i <= MAXJSAMPLE; i++)
|
|
||||||
cconvert->range_limit[i] = (JSAMPLE) i;
|
|
||||||
/* End of range limit table: limit[x] = MAXJSAMPLE for x > MAXJSAMPLE */
|
|
||||||
for (; i < 3 * (MAXJSAMPLE+1); i++)
|
|
||||||
cconvert->range_limit[i] = MAXJSAMPLE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -235,7 +212,7 @@ ycc_rgb_convert (j_decompress_ptr cinfo,
|
|||||||
register JDIMENSION col;
|
register JDIMENSION col;
|
||||||
JDIMENSION num_cols = cinfo->output_width;
|
JDIMENSION num_cols = cinfo->output_width;
|
||||||
/* copy these pointers into registers if possible */
|
/* copy these pointers into registers if possible */
|
||||||
register JSAMPLE * range_limit = cconvert->range_limit;
|
register JSAMPLE * range_limit = cinfo->sample_range_limit;
|
||||||
register int * Crrtab = cconvert->Cr_r_tab;
|
register int * Crrtab = cconvert->Cr_r_tab;
|
||||||
register int * Cbbtab = cconvert->Cb_b_tab;
|
register int * Cbbtab = cconvert->Cb_b_tab;
|
||||||
register INT32 * Crgtab = cconvert->Cr_g_tab;
|
register INT32 * Crgtab = cconvert->Cr_g_tab;
|
||||||
|
32
jdct.h
32
jdct.h
@ -2,6 +2,7 @@
|
|||||||
* jdct.h
|
* jdct.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1996, Thomas G. Lane.
|
* Copyright (C) 1994-1996, Thomas G. Lane.
|
||||||
|
* Modified 2002-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -78,13 +79,16 @@ typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */
|
|||||||
* converting them to unsigned form (0..MAXJSAMPLE). The raw outputs could
|
* converting them to unsigned form (0..MAXJSAMPLE). The raw outputs could
|
||||||
* be quite far out of range if the input data is corrupt, so a bulletproof
|
* be quite far out of range if the input data is corrupt, so a bulletproof
|
||||||
* range-limiting step is required. We use a mask-and-table-lookup method
|
* range-limiting step is required. We use a mask-and-table-lookup method
|
||||||
* to do the combined operations quickly. See the comments with
|
* to do the combined operations quickly, assuming that MAXJSAMPLE+1
|
||||||
* prepare_range_limit_table (in jdmaster.c) for more info.
|
* is a power of 2. See the comments with prepare_range_limit_table
|
||||||
|
* (in jdmaster.c) for more info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define IDCT_range_limit(cinfo) ((cinfo)->sample_range_limit + CENTERJSAMPLE)
|
|
||||||
|
|
||||||
#define RANGE_MASK (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */
|
#define RANGE_MASK (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */
|
||||||
|
#define RANGE_CENTER (MAXJSAMPLE * 2 + 2)
|
||||||
|
#define RANGE_SUBSET (RANGE_CENTER - CENTERJSAMPLE)
|
||||||
|
|
||||||
|
#define IDCT_range_limit(cinfo) ((cinfo)->sample_range_limit - RANGE_SUBSET)
|
||||||
|
|
||||||
|
|
||||||
/* Short forms of external names for systems with brain-damaged linkers. */
|
/* Short forms of external names for systems with brain-damaged linkers. */
|
||||||
@ -391,3 +395,23 @@ EXTERN(void) jpeg_idct_1x2
|
|||||||
#ifndef MULTIPLY16V16 /* default definition */
|
#ifndef MULTIPLY16V16 /* default definition */
|
||||||
#define MULTIPLY16V16(var1,var2) ((var1) * (var2))
|
#define MULTIPLY16V16(var1,var2) ((var1) * (var2))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Like RIGHT_SHIFT, but applies to a DCTELEM.
|
||||||
|
* We assume that int right shift is unsigned if INT32 right shift is.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef RIGHT_SHIFT_IS_UNSIGNED
|
||||||
|
#define ISHIFT_TEMPS DCTELEM ishift_temp;
|
||||||
|
#if BITS_IN_JSAMPLE == 8
|
||||||
|
#define DCTELEMBITS 16 /* DCTELEM may be 16 or 32 bits */
|
||||||
|
#else
|
||||||
|
#define DCTELEMBITS 32 /* DCTELEM must be 32 bits */
|
||||||
|
#endif
|
||||||
|
#define IRIGHT_SHIFT(x,shft) \
|
||||||
|
((ishift_temp = (x)) < 0 ? \
|
||||||
|
(ishift_temp >> (shft)) | ((~((DCTELEM) 0)) << (DCTELEMBITS-(shft))) : \
|
||||||
|
(ishift_temp >> (shft)))
|
||||||
|
#else
|
||||||
|
#define ISHIFT_TEMPS
|
||||||
|
#define IRIGHT_SHIFT(x,shft) ((x) >> (shft))
|
||||||
|
#endif
|
||||||
|
62
jdmaster.c
62
jdmaster.c
@ -2,7 +2,7 @@
|
|||||||
* jdmaster.c
|
* jdmaster.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
* Modified 2002-2013 by Guido Vollbeding.
|
* Modified 2002-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -45,11 +45,23 @@ LOCAL(boolean)
|
|||||||
use_merged_upsample (j_decompress_ptr cinfo)
|
use_merged_upsample (j_decompress_ptr cinfo)
|
||||||
{
|
{
|
||||||
#ifdef UPSAMPLE_MERGING_SUPPORTED
|
#ifdef UPSAMPLE_MERGING_SUPPORTED
|
||||||
/* Merging is the equivalent of plain box-filter upsampling */
|
/* Merging is the equivalent of plain box-filter upsampling. */
|
||||||
if (cinfo->do_fancy_upsampling || cinfo->CCIR601_sampling)
|
/* The following condition is only needed if fancy shall select
|
||||||
|
* a different upsampling method. In our current implementation
|
||||||
|
* fancy only affects the DCT scaling, thus we can use fancy
|
||||||
|
* upsampling and merged upsample simultaneously, in particular
|
||||||
|
* with scaled DCT sizes larger than the default DCTSIZE.
|
||||||
|
*/
|
||||||
|
#if 0
|
||||||
|
if (cinfo->do_fancy_upsampling)
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
if (cinfo->CCIR601_sampling)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
/* jdmerge.c only supports YCC=>RGB color conversion */
|
/* jdmerge.c only supports YCC=>RGB color conversion */
|
||||||
if (cinfo->jpeg_color_space != JCS_YCbCr || cinfo->num_components != 3 ||
|
if ((cinfo->jpeg_color_space != JCS_YCbCr &&
|
||||||
|
cinfo->jpeg_color_space != JCS_BG_YCC) ||
|
||||||
|
cinfo->num_components != 3 ||
|
||||||
cinfo->out_color_space != JCS_RGB ||
|
cinfo->out_color_space != JCS_RGB ||
|
||||||
cinfo->out_color_components != RGB_PIXELSIZE ||
|
cinfo->out_color_components != RGB_PIXELSIZE ||
|
||||||
cinfo->color_transform)
|
cinfo->color_transform)
|
||||||
@ -199,30 +211,20 @@ jpeg_calc_output_dimensions (j_decompress_ptr cinfo)
|
|||||||
* These processes all use a common table prepared by the routine below.
|
* These processes all use a common table prepared by the routine below.
|
||||||
*
|
*
|
||||||
* For most steps we can mathematically guarantee that the initial value
|
* For most steps we can mathematically guarantee that the initial value
|
||||||
* of x is within MAXJSAMPLE+1 of the legal range, so a table running from
|
* of x is within 2*(MAXJSAMPLE+1) of the legal range, so a table running
|
||||||
* -(MAXJSAMPLE+1) to 2*MAXJSAMPLE+1 is sufficient. But for the initial
|
* from -2*(MAXJSAMPLE+1) to 3*MAXJSAMPLE+2 is sufficient. But for the
|
||||||
* limiting step (just after the IDCT), a wildly out-of-range value is
|
* initial limiting step (just after the IDCT), a wildly out-of-range value
|
||||||
* possible if the input data is corrupt. To avoid any chance of indexing
|
* is possible if the input data is corrupt. To avoid any chance of indexing
|
||||||
* off the end of memory and getting a bad-pointer trap, we perform the
|
* off the end of memory and getting a bad-pointer trap, we perform the
|
||||||
* post-IDCT limiting thus:
|
* post-IDCT limiting thus:
|
||||||
* x = range_limit[x & MASK];
|
* x = (sample_range_limit - SUBSET)[(x + CENTER) & MASK];
|
||||||
* where MASK is 2 bits wider than legal sample data, ie 10 bits for 8-bit
|
* where MASK is 2 bits wider than legal sample data, ie 10 bits for 8-bit
|
||||||
* samples. Under normal circumstances this is more than enough range and
|
* samples. Under normal circumstances this is more than enough range and
|
||||||
* a correct output will be generated; with bogus input data the mask will
|
* a correct output will be generated; with bogus input data the mask will
|
||||||
* cause wraparound, and we will safely generate a bogus-but-in-range output.
|
* cause wraparound, and we will safely generate a bogus-but-in-range output.
|
||||||
* For the post-IDCT step, we want to convert the data from signed to unsigned
|
* For the post-IDCT step, we want to convert the data from signed to unsigned
|
||||||
* representation by adding CENTERJSAMPLE at the same time that we limit it.
|
* representation by adding CENTERJSAMPLE at the same time that we limit it.
|
||||||
* So the post-IDCT limiting table ends up looking like this:
|
* This is accomplished with SUBSET = CENTER - CENTERJSAMPLE.
|
||||||
* CENTERJSAMPLE,CENTERJSAMPLE+1,...,MAXJSAMPLE,
|
|
||||||
* MAXJSAMPLE (repeat 2*(MAXJSAMPLE+1)-CENTERJSAMPLE times),
|
|
||||||
* 0 (repeat 2*(MAXJSAMPLE+1)-CENTERJSAMPLE times),
|
|
||||||
* 0,1,...,CENTERJSAMPLE-1
|
|
||||||
* Negative inputs select values from the upper half of the table after
|
|
||||||
* masking.
|
|
||||||
*
|
|
||||||
* We can save some space by overlapping the start of the post-IDCT table
|
|
||||||
* with the simpler range limiting table. The post-IDCT table begins at
|
|
||||||
* sample_range_limit + CENTERJSAMPLE.
|
|
||||||
*
|
*
|
||||||
* Note that the table is allocated in near data space on PCs; it's small
|
* Note that the table is allocated in near data space on PCs; it's small
|
||||||
* enough and used often enough to justify this.
|
* enough and used often enough to justify this.
|
||||||
@ -237,23 +239,17 @@ prepare_range_limit_table (j_decompress_ptr cinfo)
|
|||||||
|
|
||||||
table = (JSAMPLE *)
|
table = (JSAMPLE *)
|
||||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
(5 * (MAXJSAMPLE+1) + CENTERJSAMPLE) * SIZEOF(JSAMPLE));
|
5 * (MAXJSAMPLE+1) * SIZEOF(JSAMPLE));
|
||||||
table += (MAXJSAMPLE+1); /* allow negative subscripts of simple table */
|
/* First segment of range limit table: limit[x] = 0 for x < 0 */
|
||||||
|
MEMZERO(table, 2 * (MAXJSAMPLE+1) * SIZEOF(JSAMPLE));
|
||||||
|
table += 2 * (MAXJSAMPLE+1); /* allow negative subscripts of table */
|
||||||
cinfo->sample_range_limit = table;
|
cinfo->sample_range_limit = table;
|
||||||
/* First segment of "simple" table: limit[x] = 0 for x < 0 */
|
/* Main part of range limit table: limit[x] = x */
|
||||||
MEMZERO(table - (MAXJSAMPLE+1), (MAXJSAMPLE+1) * SIZEOF(JSAMPLE));
|
|
||||||
/* Main part of "simple" table: limit[x] = x */
|
|
||||||
for (i = 0; i <= MAXJSAMPLE; i++)
|
for (i = 0; i <= MAXJSAMPLE; i++)
|
||||||
table[i] = (JSAMPLE) i;
|
table[i] = (JSAMPLE) i;
|
||||||
table += CENTERJSAMPLE; /* Point to where post-IDCT table starts */
|
/* End of range limit table: limit[x] = MAXJSAMPLE for x > MAXJSAMPLE */
|
||||||
/* End of simple table, rest of first half of post-IDCT table */
|
for (; i < 3 * (MAXJSAMPLE+1); i++)
|
||||||
for (i = CENTERJSAMPLE; i < 2*(MAXJSAMPLE+1); i++)
|
|
||||||
table[i] = MAXJSAMPLE;
|
table[i] = MAXJSAMPLE;
|
||||||
/* Second half of post-IDCT table */
|
|
||||||
MEMZERO(table + (2 * (MAXJSAMPLE+1)),
|
|
||||||
(2 * (MAXJSAMPLE+1) - CENTERJSAMPLE) * SIZEOF(JSAMPLE));
|
|
||||||
MEMCOPY(table + (4 * (MAXJSAMPLE+1) - CENTERJSAMPLE),
|
|
||||||
cinfo->sample_range_limit, CENTERJSAMPLE * SIZEOF(JSAMPLE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
106
jdmerge.c
106
jdmerge.c
@ -2,7 +2,7 @@
|
|||||||
* jdmerge.c
|
* jdmerge.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1996, Thomas G. Lane.
|
* Copyright (C) 1994-1996, Thomas G. Lane.
|
||||||
* Modified 2013 by Guido Vollbeding.
|
* Modified 2013-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -24,7 +24,7 @@
|
|||||||
* multiplications needed for color conversion.
|
* multiplications needed for color conversion.
|
||||||
*
|
*
|
||||||
* This file currently provides implementations for the following cases:
|
* This file currently provides implementations for the following cases:
|
||||||
* YCbCr => RGB color conversion only.
|
* YCC => RGB color conversion only (YCbCr or BG_YCC).
|
||||||
* Sampling ratios of 2h1v or 2h2v.
|
* Sampling ratios of 2h1v or 2h2v.
|
||||||
* No scaling needed at upsample time.
|
* No scaling needed at upsample time.
|
||||||
* Corner-aligned (non-CCIR601) sampling alignment.
|
* Corner-aligned (non-CCIR601) sampling alignment.
|
||||||
@ -76,12 +76,13 @@ typedef my_upsampler * my_upsample_ptr;
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize tables for YCC->RGB colorspace conversion.
|
* Initialize tables for YCbCr->RGB and BG_YCC->RGB colorspace conversion.
|
||||||
* This is taken directly from jdcolor.c; see that file for more info.
|
* This is taken directly from jdcolor.c; see that file for more info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LOCAL(void)
|
LOCAL(void)
|
||||||
build_ycc_rgb_table (j_decompress_ptr cinfo)
|
build_ycc_rgb_table (j_decompress_ptr cinfo)
|
||||||
|
/* Normal case, sYCC */
|
||||||
{
|
{
|
||||||
my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
|
my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
|
||||||
int i;
|
int i;
|
||||||
@ -119,6 +120,46 @@ build_ycc_rgb_table (j_decompress_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LOCAL(void)
|
||||||
|
build_bg_ycc_rgb_table (j_decompress_ptr cinfo)
|
||||||
|
/* Wide gamut case, bg-sYCC */
|
||||||
|
{
|
||||||
|
my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
|
||||||
|
int i;
|
||||||
|
INT32 x;
|
||||||
|
SHIFT_TEMPS
|
||||||
|
|
||||||
|
upsample->Cr_r_tab = (int *)
|
||||||
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
|
(MAXJSAMPLE+1) * SIZEOF(int));
|
||||||
|
upsample->Cb_b_tab = (int *)
|
||||||
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
|
(MAXJSAMPLE+1) * SIZEOF(int));
|
||||||
|
upsample->Cr_g_tab = (INT32 *)
|
||||||
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
|
(MAXJSAMPLE+1) * SIZEOF(INT32));
|
||||||
|
upsample->Cb_g_tab = (INT32 *)
|
||||||
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
|
(MAXJSAMPLE+1) * SIZEOF(INT32));
|
||||||
|
|
||||||
|
for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
|
||||||
|
/* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
|
||||||
|
/* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
|
||||||
|
/* Cr=>R value is nearest int to 2.804 * x */
|
||||||
|
upsample->Cr_r_tab[i] = (int)
|
||||||
|
RIGHT_SHIFT(FIX(2.804) * x + ONE_HALF, SCALEBITS);
|
||||||
|
/* Cb=>B value is nearest int to 3.544 * x */
|
||||||
|
upsample->Cb_b_tab[i] = (int)
|
||||||
|
RIGHT_SHIFT(FIX(3.544) * x + ONE_HALF, SCALEBITS);
|
||||||
|
/* Cr=>G value is scaled-up -1.428272572 * x */
|
||||||
|
upsample->Cr_g_tab[i] = (- FIX(1.428272572)) * x;
|
||||||
|
/* Cb=>G value is scaled-up -0.688272572 * x */
|
||||||
|
/* We also add in ONE_HALF so that need not do it in inner loop */
|
||||||
|
upsample->Cb_g_tab[i] = (- FIX(0.688272572)) * x + ONE_HALF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize for an upsampling pass.
|
* Initialize for an upsampling pass.
|
||||||
*/
|
*/
|
||||||
@ -251,32 +292,32 @@ h2v1_merged_upsample (j_decompress_ptr cinfo,
|
|||||||
/* Do the chroma part of the calculation */
|
/* Do the chroma part of the calculation */
|
||||||
cb = GETJSAMPLE(*inptr1++);
|
cb = GETJSAMPLE(*inptr1++);
|
||||||
cr = GETJSAMPLE(*inptr2++);
|
cr = GETJSAMPLE(*inptr2++);
|
||||||
cred = Crrtab[cr];
|
cred = Crrtab[cr];
|
||||||
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
||||||
cblue = Cbbtab[cb];
|
cblue = Cbbtab[cb];
|
||||||
/* Fetch 2 Y values and emit 2 pixels */
|
/* Fetch 2 Y values and emit 2 pixels */
|
||||||
y = GETJSAMPLE(*inptr0++);
|
y = GETJSAMPLE(*inptr0++);
|
||||||
outptr[RGB_RED] = range_limit[y + cred];
|
outptr[RGB_RED] = range_limit[y + cred];
|
||||||
outptr[RGB_GREEN] = range_limit[y + cgreen];
|
outptr[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr[RGB_BLUE] = range_limit[y + cblue];
|
outptr[RGB_BLUE] = range_limit[y + cblue];
|
||||||
outptr += RGB_PIXELSIZE;
|
outptr += RGB_PIXELSIZE;
|
||||||
y = GETJSAMPLE(*inptr0++);
|
y = GETJSAMPLE(*inptr0++);
|
||||||
outptr[RGB_RED] = range_limit[y + cred];
|
outptr[RGB_RED] = range_limit[y + cred];
|
||||||
outptr[RGB_GREEN] = range_limit[y + cgreen];
|
outptr[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr[RGB_BLUE] = range_limit[y + cblue];
|
outptr[RGB_BLUE] = range_limit[y + cblue];
|
||||||
outptr += RGB_PIXELSIZE;
|
outptr += RGB_PIXELSIZE;
|
||||||
}
|
}
|
||||||
/* If image width is odd, do the last output column separately */
|
/* If image width is odd, do the last output column separately */
|
||||||
if (cinfo->output_width & 1) {
|
if (cinfo->output_width & 1) {
|
||||||
cb = GETJSAMPLE(*inptr1);
|
cb = GETJSAMPLE(*inptr1);
|
||||||
cr = GETJSAMPLE(*inptr2);
|
cr = GETJSAMPLE(*inptr2);
|
||||||
cred = Crrtab[cr];
|
cred = Crrtab[cr];
|
||||||
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
||||||
cblue = Cbbtab[cb];
|
cblue = Cbbtab[cb];
|
||||||
y = GETJSAMPLE(*inptr0);
|
y = GETJSAMPLE(*inptr0);
|
||||||
outptr[RGB_RED] = range_limit[y + cred];
|
outptr[RGB_RED] = range_limit[y + cred];
|
||||||
outptr[RGB_GREEN] = range_limit[y + cgreen];
|
outptr[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr[RGB_BLUE] = range_limit[y + cblue];
|
outptr[RGB_BLUE] = range_limit[y + cblue];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,46 +356,46 @@ h2v2_merged_upsample (j_decompress_ptr cinfo,
|
|||||||
/* Do the chroma part of the calculation */
|
/* Do the chroma part of the calculation */
|
||||||
cb = GETJSAMPLE(*inptr1++);
|
cb = GETJSAMPLE(*inptr1++);
|
||||||
cr = GETJSAMPLE(*inptr2++);
|
cr = GETJSAMPLE(*inptr2++);
|
||||||
cred = Crrtab[cr];
|
cred = Crrtab[cr];
|
||||||
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
||||||
cblue = Cbbtab[cb];
|
cblue = Cbbtab[cb];
|
||||||
/* Fetch 4 Y values and emit 4 pixels */
|
/* Fetch 4 Y values and emit 4 pixels */
|
||||||
y = GETJSAMPLE(*inptr00++);
|
y = GETJSAMPLE(*inptr00++);
|
||||||
outptr0[RGB_RED] = range_limit[y + cred];
|
outptr0[RGB_RED] = range_limit[y + cred];
|
||||||
outptr0[RGB_GREEN] = range_limit[y + cgreen];
|
outptr0[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr0[RGB_BLUE] = range_limit[y + cblue];
|
outptr0[RGB_BLUE] = range_limit[y + cblue];
|
||||||
outptr0 += RGB_PIXELSIZE;
|
outptr0 += RGB_PIXELSIZE;
|
||||||
y = GETJSAMPLE(*inptr00++);
|
y = GETJSAMPLE(*inptr00++);
|
||||||
outptr0[RGB_RED] = range_limit[y + cred];
|
outptr0[RGB_RED] = range_limit[y + cred];
|
||||||
outptr0[RGB_GREEN] = range_limit[y + cgreen];
|
outptr0[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr0[RGB_BLUE] = range_limit[y + cblue];
|
outptr0[RGB_BLUE] = range_limit[y + cblue];
|
||||||
outptr0 += RGB_PIXELSIZE;
|
outptr0 += RGB_PIXELSIZE;
|
||||||
y = GETJSAMPLE(*inptr01++);
|
y = GETJSAMPLE(*inptr01++);
|
||||||
outptr1[RGB_RED] = range_limit[y + cred];
|
outptr1[RGB_RED] = range_limit[y + cred];
|
||||||
outptr1[RGB_GREEN] = range_limit[y + cgreen];
|
outptr1[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr1[RGB_BLUE] = range_limit[y + cblue];
|
outptr1[RGB_BLUE] = range_limit[y + cblue];
|
||||||
outptr1 += RGB_PIXELSIZE;
|
outptr1 += RGB_PIXELSIZE;
|
||||||
y = GETJSAMPLE(*inptr01++);
|
y = GETJSAMPLE(*inptr01++);
|
||||||
outptr1[RGB_RED] = range_limit[y + cred];
|
outptr1[RGB_RED] = range_limit[y + cred];
|
||||||
outptr1[RGB_GREEN] = range_limit[y + cgreen];
|
outptr1[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr1[RGB_BLUE] = range_limit[y + cblue];
|
outptr1[RGB_BLUE] = range_limit[y + cblue];
|
||||||
outptr1 += RGB_PIXELSIZE;
|
outptr1 += RGB_PIXELSIZE;
|
||||||
}
|
}
|
||||||
/* If image width is odd, do the last output column separately */
|
/* If image width is odd, do the last output column separately */
|
||||||
if (cinfo->output_width & 1) {
|
if (cinfo->output_width & 1) {
|
||||||
cb = GETJSAMPLE(*inptr1);
|
cb = GETJSAMPLE(*inptr1);
|
||||||
cr = GETJSAMPLE(*inptr2);
|
cr = GETJSAMPLE(*inptr2);
|
||||||
cred = Crrtab[cr];
|
cred = Crrtab[cr];
|
||||||
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
|
||||||
cblue = Cbbtab[cb];
|
cblue = Cbbtab[cb];
|
||||||
y = GETJSAMPLE(*inptr00);
|
y = GETJSAMPLE(*inptr00);
|
||||||
outptr0[RGB_RED] = range_limit[y + cred];
|
outptr0[RGB_RED] = range_limit[y + cred];
|
||||||
outptr0[RGB_GREEN] = range_limit[y + cgreen];
|
outptr0[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr0[RGB_BLUE] = range_limit[y + cblue];
|
outptr0[RGB_BLUE] = range_limit[y + cblue];
|
||||||
y = GETJSAMPLE(*inptr01);
|
y = GETJSAMPLE(*inptr01);
|
||||||
outptr1[RGB_RED] = range_limit[y + cred];
|
outptr1[RGB_RED] = range_limit[y + cred];
|
||||||
outptr1[RGB_GREEN] = range_limit[y + cgreen];
|
outptr1[RGB_GREEN] = range_limit[y + cgreen];
|
||||||
outptr1[RGB_BLUE] = range_limit[y + cblue];
|
outptr1[RGB_BLUE] = range_limit[y + cblue];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +416,7 @@ jinit_merged_upsampler (j_decompress_ptr cinfo)
|
|||||||
upsample = (my_upsample_ptr)
|
upsample = (my_upsample_ptr)
|
||||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
SIZEOF(my_upsampler));
|
SIZEOF(my_upsampler));
|
||||||
cinfo->upsample = (struct jpeg_upsampler *) upsample;
|
cinfo->upsample = &upsample->pub;
|
||||||
upsample->pub.start_pass = start_pass_merged_upsample;
|
upsample->pub.start_pass = start_pass_merged_upsample;
|
||||||
upsample->pub.need_context_rows = FALSE;
|
upsample->pub.need_context_rows = FALSE;
|
||||||
|
|
||||||
@ -395,7 +436,10 @@ jinit_merged_upsampler (j_decompress_ptr cinfo)
|
|||||||
upsample->spare_row = NULL;
|
upsample->spare_row = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
build_ycc_rgb_table(cinfo);
|
if (cinfo->jpeg_color_space == JCS_BG_YCC)
|
||||||
|
build_bg_ycc_rgb_table(cinfo);
|
||||||
|
else
|
||||||
|
build_ycc_rgb_table(cinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* UPSAMPLE_MERGING_SUPPORTED */
|
#endif /* UPSAMPLE_MERGING_SUPPORTED */
|
||||||
|
29
jdsample.c
29
jdsample.c
@ -2,7 +2,7 @@
|
|||||||
* jdsample.c
|
* jdsample.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1996, Thomas G. Lane.
|
* Copyright (C) 1991-1996, Thomas G. Lane.
|
||||||
* Modified 2002-2008 by Guido Vollbeding.
|
* Modified 2002-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -296,13 +296,12 @@ jinit_upsampler (j_decompress_ptr cinfo)
|
|||||||
my_upsample_ptr upsample;
|
my_upsample_ptr upsample;
|
||||||
int ci;
|
int ci;
|
||||||
jpeg_component_info * compptr;
|
jpeg_component_info * compptr;
|
||||||
boolean need_buffer;
|
|
||||||
int h_in_group, v_in_group, h_out_group, v_out_group;
|
int h_in_group, v_in_group, h_out_group, v_out_group;
|
||||||
|
|
||||||
upsample = (my_upsample_ptr)
|
upsample = (my_upsample_ptr)
|
||||||
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
SIZEOF(my_upsampler));
|
SIZEOF(my_upsampler));
|
||||||
cinfo->upsample = (struct jpeg_upsampler *) upsample;
|
cinfo->upsample = &upsample->pub;
|
||||||
upsample->pub.start_pass = start_pass_upsample;
|
upsample->pub.start_pass = start_pass_upsample;
|
||||||
upsample->pub.upsample = sep_upsample;
|
upsample->pub.upsample = sep_upsample;
|
||||||
upsample->pub.need_context_rows = FALSE; /* until we find out differently */
|
upsample->pub.need_context_rows = FALSE; /* until we find out differently */
|
||||||
@ -325,17 +324,17 @@ jinit_upsampler (j_decompress_ptr cinfo)
|
|||||||
h_out_group = cinfo->max_h_samp_factor;
|
h_out_group = cinfo->max_h_samp_factor;
|
||||||
v_out_group = cinfo->max_v_samp_factor;
|
v_out_group = cinfo->max_v_samp_factor;
|
||||||
upsample->rowgroup_height[ci] = v_in_group; /* save for use later */
|
upsample->rowgroup_height[ci] = v_in_group; /* save for use later */
|
||||||
need_buffer = TRUE;
|
|
||||||
if (! compptr->component_needed) {
|
if (! compptr->component_needed) {
|
||||||
/* Don't bother to upsample an uninteresting component. */
|
/* Don't bother to upsample an uninteresting component. */
|
||||||
upsample->methods[ci] = noop_upsample;
|
upsample->methods[ci] = noop_upsample;
|
||||||
need_buffer = FALSE;
|
continue; /* don't need to allocate buffer */
|
||||||
} else if (h_in_group == h_out_group && v_in_group == v_out_group) {
|
}
|
||||||
|
if (h_in_group == h_out_group && v_in_group == v_out_group) {
|
||||||
/* Fullsize components can be processed without any work. */
|
/* Fullsize components can be processed without any work. */
|
||||||
upsample->methods[ci] = fullsize_upsample;
|
upsample->methods[ci] = fullsize_upsample;
|
||||||
need_buffer = FALSE;
|
continue; /* don't need to allocate buffer */
|
||||||
} else if (h_in_group * 2 == h_out_group &&
|
}
|
||||||
v_in_group == v_out_group) {
|
if (h_in_group * 2 == h_out_group && v_in_group == v_out_group) {
|
||||||
/* Special case for 2h1v upsampling */
|
/* Special case for 2h1v upsampling */
|
||||||
upsample->methods[ci] = h2v1_upsample;
|
upsample->methods[ci] = h2v1_upsample;
|
||||||
} else if (h_in_group * 2 == h_out_group &&
|
} else if (h_in_group * 2 == h_out_group &&
|
||||||
@ -350,12 +349,10 @@ jinit_upsampler (j_decompress_ptr cinfo)
|
|||||||
upsample->v_expand[ci] = (UINT8) (v_out_group / v_in_group);
|
upsample->v_expand[ci] = (UINT8) (v_out_group / v_in_group);
|
||||||
} else
|
} else
|
||||||
ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
|
ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
|
||||||
if (need_buffer) {
|
upsample->color_buf[ci] = (*cinfo->mem->alloc_sarray)
|
||||||
upsample->color_buf[ci] = (*cinfo->mem->alloc_sarray)
|
((j_common_ptr) cinfo, JPOOL_IMAGE,
|
||||||
((j_common_ptr) cinfo, JPOOL_IMAGE,
|
(JDIMENSION) jround_up((long) cinfo->output_width,
|
||||||
(JDIMENSION) jround_up((long) cinfo->output_width,
|
(long) cinfo->max_h_samp_factor),
|
||||||
(long) cinfo->max_h_samp_factor),
|
(JDIMENSION) cinfo->max_v_samp_factor);
|
||||||
(JDIMENSION) cinfo->max_v_samp_factor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
jerror.c
10
jerror.c
@ -2,7 +2,7 @@
|
|||||||
* jerror.c
|
* jerror.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1998, Thomas G. Lane.
|
* Copyright (C) 1991-1998, Thomas G. Lane.
|
||||||
* Modified 2012 by Guido Vollbeding.
|
* Modified 2012-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -19,16 +19,16 @@
|
|||||||
* These routines are used by both the compression and decompression code.
|
* These routines are used by both the compression and decompression code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef USE_WINDOWS_MESSAGEBOX
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
|
/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
|
||||||
#include "jinclude.h"
|
#include "jinclude.h"
|
||||||
#include "jpeglib.h"
|
#include "jpeglib.h"
|
||||||
#include "jversion.h"
|
#include "jversion.h"
|
||||||
#include "jerror.h"
|
#include "jerror.h"
|
||||||
|
|
||||||
#ifdef USE_WINDOWS_MESSAGEBOX
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef EXIT_FAILURE /* define exit() codes if not provided */
|
#ifndef EXIT_FAILURE /* define exit() codes if not provided */
|
||||||
#define EXIT_FAILURE 1
|
#define EXIT_FAILURE 1
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* jfdctflt.c
|
* jfdctflt.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1996, Thomas G. Lane.
|
* Copyright (C) 1994-1996, Thomas G. Lane.
|
||||||
* Modified 2003-2009 by Guido Vollbeding.
|
* Modified 2003-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -54,6 +54,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform the forward DCT on one block of samples.
|
* Perform the forward DCT on one block of samples.
|
||||||
|
*
|
||||||
|
* cK represents cos(K*pi/16).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
@ -89,7 +91,7 @@ jpeg_fdct_float (FAST_FLOAT * data, JSAMPARRAY sample_data, JDIMENSION start_col
|
|||||||
tmp11 = tmp1 + tmp2;
|
tmp11 = tmp1 + tmp2;
|
||||||
tmp12 = tmp1 - tmp2;
|
tmp12 = tmp1 - tmp2;
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = tmp10 + tmp11 - 8 * CENTERJSAMPLE; /* phase 3 */
|
dataptr[0] = tmp10 + tmp11 - 8 * CENTERJSAMPLE; /* phase 3 */
|
||||||
dataptr[4] = tmp10 - tmp11;
|
dataptr[4] = tmp10 - tmp11;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* jfdctfst.c
|
* jfdctfst.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1996, Thomas G. Lane.
|
* Copyright (C) 1994-1996, Thomas G. Lane.
|
||||||
* Modified 2003-2009 by Guido Vollbeding.
|
* Modified 2003-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -109,6 +109,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform the forward DCT on one block of samples.
|
* Perform the forward DCT on one block of samples.
|
||||||
|
*
|
||||||
|
* cK represents cos(K*pi/16).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
@ -145,7 +147,7 @@ jpeg_fdct_ifast (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp11 = tmp1 + tmp2;
|
tmp11 = tmp1 + tmp2;
|
||||||
tmp12 = tmp1 - tmp2;
|
tmp12 = tmp1 - tmp2;
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = tmp10 + tmp11 - 8 * CENTERJSAMPLE; /* phase 3 */
|
dataptr[0] = tmp10 + tmp11 - 8 * CENTERJSAMPLE; /* phase 3 */
|
||||||
dataptr[4] = tmp10 - tmp11;
|
dataptr[4] = tmp10 - tmp11;
|
||||||
|
|
||||||
|
95
jfdctint.c
95
jfdctint.c
@ -2,7 +2,7 @@
|
|||||||
* jfdctint.c
|
* jfdctint.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1996, Thomas G. Lane.
|
* Copyright (C) 1991-1996, Thomas G. Lane.
|
||||||
* Modification developed 2003-2013 by Guido Vollbeding.
|
* Modification developed 2003-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -194,7 +194,7 @@ jpeg_fdct_islow (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[5]);
|
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[5]);
|
||||||
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[4]);
|
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[4]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM) ((tmp10 + tmp11 - 8 * CENTERJSAMPLE) << PASS1_BITS);
|
dataptr[0] = (DCTELEM) ((tmp10 + tmp11 - 8 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
|
dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ jpeg_fdct_7x7 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp12 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[4]);
|
tmp12 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[4]);
|
||||||
|
|
||||||
z1 = tmp0 + tmp2;
|
z1 = tmp0 + tmp2;
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((z1 + tmp1 + tmp3 - 7 * CENTERJSAMPLE) << PASS1_BITS);
|
((z1 + tmp1 + tmp3 - 7 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
tmp3 += tmp3;
|
tmp3 += tmp3;
|
||||||
@ -503,7 +503,7 @@ jpeg_fdct_6x6 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[4]);
|
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[4]);
|
||||||
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[3]);
|
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[3]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 - 6 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 - 6 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[2] = (DCTELEM)
|
dataptr[2] = (DCTELEM)
|
||||||
@ -618,7 +618,7 @@ jpeg_fdct_5x5 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp0 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[4]);
|
tmp0 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[4]);
|
||||||
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[3]);
|
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[3]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp2 - 5 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
((tmp10 + tmp2 - 5 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
||||||
tmp11 = MULTIPLY(tmp11, FIX(0.790569415)); /* (c2+c4)/2 */
|
tmp11 = MULTIPLY(tmp11, FIX(0.790569415)); /* (c2+c4)/2 */
|
||||||
@ -724,7 +724,7 @@ jpeg_fdct_4x4 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp10 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[3]);
|
tmp10 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[3]);
|
||||||
tmp11 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[2]);
|
tmp11 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[2]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp0 + tmp1 - 4 * CENTERJSAMPLE) << (PASS1_BITS+2));
|
((tmp0 + tmp1 - 4 * CENTERJSAMPLE) << (PASS1_BITS+2));
|
||||||
dataptr[2] = (DCTELEM) ((tmp0 - tmp1) << (PASS1_BITS+2));
|
dataptr[2] = (DCTELEM) ((tmp0 - tmp1) << (PASS1_BITS+2));
|
||||||
@ -818,7 +818,7 @@ jpeg_fdct_3x3 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
|
|
||||||
tmp2 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[2]);
|
tmp2 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[2]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp0 + tmp1 - 3 * CENTERJSAMPLE) << (PASS1_BITS+2));
|
((tmp0 + tmp1 - 3 * CENTERJSAMPLE) << (PASS1_BITS+2));
|
||||||
dataptr[2] = (DCTELEM)
|
dataptr[2] = (DCTELEM)
|
||||||
@ -876,7 +876,7 @@ jpeg_fdct_3x3 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
jpeg_fdct_2x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
jpeg_fdct_2x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
||||||
{
|
{
|
||||||
INT32 tmp0, tmp1, tmp2, tmp3;
|
DCTELEM tmp0, tmp1, tmp2, tmp3;
|
||||||
JSAMPROW elemptr;
|
JSAMPROW elemptr;
|
||||||
|
|
||||||
/* Pre-zero output coefficient block. */
|
/* Pre-zero output coefficient block. */
|
||||||
@ -904,13 +904,13 @@ jpeg_fdct_2x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Column 0 */
|
/* Column 0 */
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
data[DCTSIZE*0] = (DCTELEM) ((tmp0 + tmp2 - 4 * CENTERJSAMPLE) << 4);
|
data[DCTSIZE*0] = (tmp0 + tmp2 - 4 * CENTERJSAMPLE) << 4;
|
||||||
data[DCTSIZE*1] = (DCTELEM) ((tmp0 - tmp2) << 4);
|
data[DCTSIZE*1] = (tmp0 - tmp2) << 4;
|
||||||
|
|
||||||
/* Column 1 */
|
/* Column 1 */
|
||||||
data[DCTSIZE*0+1] = (DCTELEM) ((tmp1 + tmp3) << 4);
|
data[DCTSIZE*0+1] = (tmp1 + tmp3) << 4;
|
||||||
data[DCTSIZE*1+1] = (DCTELEM) ((tmp1 - tmp3) << 4);
|
data[DCTSIZE*1+1] = (tmp1 - tmp3) << 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -921,14 +921,17 @@ jpeg_fdct_2x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
jpeg_fdct_1x1 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
jpeg_fdct_1x1 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
||||||
{
|
{
|
||||||
|
DCTELEM dcval;
|
||||||
|
|
||||||
/* Pre-zero output coefficient block. */
|
/* Pre-zero output coefficient block. */
|
||||||
MEMZERO(data, SIZEOF(DCTELEM) * DCTSIZE2);
|
MEMZERO(data, SIZEOF(DCTELEM) * DCTSIZE2);
|
||||||
|
|
||||||
|
dcval = GETJSAMPLE(sample_data[0][start_col]);
|
||||||
|
|
||||||
/* We leave the result scaled up by an overall factor of 8. */
|
/* We leave the result scaled up by an overall factor of 8. */
|
||||||
/* We must also scale the output by (8/1)**2 = 2**6. */
|
/* We must also scale the output by (8/1)**2 = 2**6. */
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
data[0] = (DCTELEM)
|
data[0] = (dcval - CENTERJSAMPLE) << 6;
|
||||||
((GETJSAMPLE(sample_data[0][start_col]) - CENTERJSAMPLE) << 6);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -976,7 +979,7 @@ jpeg_fdct_9x9 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
|
|
||||||
z1 = tmp0 + tmp2 + tmp3;
|
z1 = tmp0 + tmp2 + tmp3;
|
||||||
z2 = tmp1 + tmp4;
|
z2 = tmp1 + tmp4;
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM) ((z1 + z2 - 9 * CENTERJSAMPLE) << 1);
|
dataptr[0] = (DCTELEM) ((z1 + z2 - 9 * CENTERJSAMPLE) << 1);
|
||||||
dataptr[6] = (DCTELEM)
|
dataptr[6] = (DCTELEM)
|
||||||
DESCALE(MULTIPLY(z1 - z2 - z2, FIX(0.707106781)), /* c6 */
|
DESCALE(MULTIPLY(z1 - z2 - z2, FIX(0.707106781)), /* c6 */
|
||||||
@ -1130,7 +1133,7 @@ jpeg_fdct_10x10 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[6]);
|
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[6]);
|
||||||
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[5]);
|
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[5]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 + tmp12 - 10 * CENTERJSAMPLE) << 1);
|
((tmp10 + tmp11 + tmp12 - 10 * CENTERJSAMPLE) << 1);
|
||||||
tmp12 += tmp12;
|
tmp12 += tmp12;
|
||||||
@ -1291,7 +1294,7 @@ jpeg_fdct_11x11 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp13 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[7]);
|
tmp13 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[7]);
|
||||||
tmp14 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[6]);
|
tmp14 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[6]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp0 + tmp1 + tmp2 + tmp3 + tmp4 + tmp5 - 11 * CENTERJSAMPLE) << 1);
|
((tmp0 + tmp1 + tmp2 + tmp3 + tmp4 + tmp5 - 11 * CENTERJSAMPLE) << 1);
|
||||||
tmp5 += tmp5;
|
tmp5 += tmp5;
|
||||||
@ -1480,7 +1483,7 @@ jpeg_fdct_12x12 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[7]);
|
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[7]);
|
||||||
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[6]);
|
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[6]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM) (tmp10 + tmp11 + tmp12 - 12 * CENTERJSAMPLE);
|
dataptr[0] = (DCTELEM) (tmp10 + tmp11 + tmp12 - 12 * CENTERJSAMPLE);
|
||||||
dataptr[6] = (DCTELEM) (tmp13 - tmp14 - tmp15);
|
dataptr[6] = (DCTELEM) (tmp13 - tmp14 - tmp15);
|
||||||
dataptr[4] = (DCTELEM)
|
dataptr[4] = (DCTELEM)
|
||||||
@ -1641,7 +1644,7 @@ jpeg_fdct_13x13 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp14 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[8]);
|
tmp14 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[8]);
|
||||||
tmp15 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[7]);
|
tmp15 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[7]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
(tmp0 + tmp1 + tmp2 + tmp3 + tmp4 + tmp5 + tmp6 - 13 * CENTERJSAMPLE);
|
(tmp0 + tmp1 + tmp2 + tmp3 + tmp4 + tmp5 + tmp6 - 13 * CENTERJSAMPLE);
|
||||||
tmp6 += tmp6;
|
tmp6 += tmp6;
|
||||||
@ -1848,7 +1851,7 @@ jpeg_fdct_14x14 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[8]);
|
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[8]);
|
||||||
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[7]);
|
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[7]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
(tmp10 + tmp11 + tmp12 + tmp13 - 14 * CENTERJSAMPLE);
|
(tmp10 + tmp11 + tmp12 + tmp13 - 14 * CENTERJSAMPLE);
|
||||||
tmp13 += tmp13;
|
tmp13 += tmp13;
|
||||||
@ -2047,7 +2050,7 @@ jpeg_fdct_15x15 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
z1 = tmp0 + tmp4 + tmp5;
|
z1 = tmp0 + tmp4 + tmp5;
|
||||||
z2 = tmp1 + tmp3 + tmp6;
|
z2 = tmp1 + tmp3 + tmp6;
|
||||||
z3 = tmp2 + tmp7;
|
z3 = tmp2 + tmp7;
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM) (z1 + z2 + z3 - 15 * CENTERJSAMPLE);
|
dataptr[0] = (DCTELEM) (z1 + z2 + z3 - 15 * CENTERJSAMPLE);
|
||||||
z3 += z3;
|
z3 += z3;
|
||||||
dataptr[6] = (DCTELEM)
|
dataptr[6] = (DCTELEM)
|
||||||
@ -2234,7 +2237,7 @@ jpeg_fdct_16x16 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[9]);
|
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[9]);
|
||||||
tmp7 = GETJSAMPLE(elemptr[7]) - GETJSAMPLE(elemptr[8]);
|
tmp7 = GETJSAMPLE(elemptr[7]) - GETJSAMPLE(elemptr[8]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 + tmp12 + tmp13 - 16 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 + tmp12 + tmp13 - 16 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[4] = (DCTELEM)
|
dataptr[4] = (DCTELEM)
|
||||||
@ -2443,7 +2446,7 @@ jpeg_fdct_16x8 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[9]);
|
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[9]);
|
||||||
tmp7 = GETJSAMPLE(elemptr[7]) - GETJSAMPLE(elemptr[8]);
|
tmp7 = GETJSAMPLE(elemptr[7]) - GETJSAMPLE(elemptr[8]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 + tmp12 + tmp13 - 16 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 + tmp12 + tmp13 - 16 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[4] = (DCTELEM)
|
dataptr[4] = (DCTELEM)
|
||||||
@ -2624,7 +2627,7 @@ jpeg_fdct_14x7 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[8]);
|
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[8]);
|
||||||
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[7]);
|
tmp6 = GETJSAMPLE(elemptr[6]) - GETJSAMPLE(elemptr[7]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 + tmp12 + tmp13 - 14 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 + tmp12 + tmp13 - 14 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
tmp13 += tmp13;
|
tmp13 += tmp13;
|
||||||
@ -2786,7 +2789,7 @@ jpeg_fdct_12x6 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[7]);
|
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[7]);
|
||||||
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[6]);
|
tmp5 = GETJSAMPLE(elemptr[5]) - GETJSAMPLE(elemptr[6]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 + tmp12 - 12 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 + tmp12 - 12 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[6] = (DCTELEM) ((tmp13 - tmp14 - tmp15) << PASS1_BITS);
|
dataptr[6] = (DCTELEM) ((tmp13 - tmp14 - tmp15) << PASS1_BITS);
|
||||||
@ -2922,7 +2925,7 @@ jpeg_fdct_10x5 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[6]);
|
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[6]);
|
||||||
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[5]);
|
tmp4 = GETJSAMPLE(elemptr[4]) - GETJSAMPLE(elemptr[5]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 + tmp12 - 10 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 + tmp12 - 10 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
tmp12 += tmp12;
|
tmp12 += tmp12;
|
||||||
@ -3057,7 +3060,7 @@ jpeg_fdct_8x4 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[5]);
|
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[5]);
|
||||||
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[4]);
|
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[4]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 - 8 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
((tmp10 + tmp11 - 8 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
||||||
dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << (PASS1_BITS+1));
|
dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << (PASS1_BITS+1));
|
||||||
@ -3192,7 +3195,7 @@ jpeg_fdct_6x3 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[4]);
|
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[4]);
|
||||||
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[3]);
|
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[3]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 - 6 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
((tmp10 + tmp11 - 6 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
||||||
dataptr[2] = (DCTELEM)
|
dataptr[2] = (DCTELEM)
|
||||||
@ -3288,7 +3291,7 @@ jpeg_fdct_4x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp10 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[3]);
|
tmp10 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[3]);
|
||||||
tmp11 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[2]);
|
tmp11 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[2]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp0 + tmp1 - 4 * CENTERJSAMPLE) << (PASS1_BITS+3));
|
((tmp0 + tmp1 - 4 * CENTERJSAMPLE) << (PASS1_BITS+3));
|
||||||
dataptr[2] = (DCTELEM) ((tmp0 - tmp1) << (PASS1_BITS+3));
|
dataptr[2] = (DCTELEM) ((tmp0 - tmp1) << (PASS1_BITS+3));
|
||||||
@ -3342,7 +3345,7 @@ jpeg_fdct_4x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
jpeg_fdct_2x1 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
jpeg_fdct_2x1 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
||||||
{
|
{
|
||||||
INT32 tmp0, tmp1;
|
DCTELEM tmp0, tmp1;
|
||||||
JSAMPROW elemptr;
|
JSAMPROW elemptr;
|
||||||
|
|
||||||
/* Pre-zero output coefficient block. */
|
/* Pre-zero output coefficient block. */
|
||||||
@ -3359,12 +3362,12 @@ jpeg_fdct_2x1 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
data[0] = (DCTELEM) ((tmp0 + tmp1 - 2 * CENTERJSAMPLE) << 5);
|
data[0] = (tmp0 + tmp1 - 2 * CENTERJSAMPLE) << 5;
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
|
|
||||||
data[1] = (DCTELEM) ((tmp0 - tmp1) << 5);
|
data[1] = (tmp0 - tmp1) << 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3417,7 +3420,7 @@ jpeg_fdct_8x16 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[5]);
|
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[5]);
|
||||||
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[4]);
|
tmp3 = GETJSAMPLE(elemptr[3]) - GETJSAMPLE(elemptr[4]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM) ((tmp10 + tmp11 - 8 * CENTERJSAMPLE) << PASS1_BITS);
|
dataptr[0] = (DCTELEM) ((tmp10 + tmp11 - 8 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
|
dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
|
||||||
|
|
||||||
@ -3607,7 +3610,7 @@ jpeg_fdct_7x14 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp12 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[4]);
|
tmp12 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[4]);
|
||||||
|
|
||||||
z1 = tmp0 + tmp2;
|
z1 = tmp0 + tmp2;
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((z1 + tmp1 + tmp3 - 7 * CENTERJSAMPLE) << PASS1_BITS);
|
((z1 + tmp1 + tmp3 - 7 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
tmp3 += tmp3;
|
tmp3 += tmp3;
|
||||||
@ -3789,7 +3792,7 @@ jpeg_fdct_6x12 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[4]);
|
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[4]);
|
||||||
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[3]);
|
tmp2 = GETJSAMPLE(elemptr[2]) - GETJSAMPLE(elemptr[3]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp11 - 6 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp11 - 6 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
dataptr[2] = (DCTELEM)
|
dataptr[2] = (DCTELEM)
|
||||||
@ -3938,7 +3941,7 @@ jpeg_fdct_5x10 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp0 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[4]);
|
tmp0 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[4]);
|
||||||
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[3]);
|
tmp1 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[3]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp10 + tmp2 - 5 * CENTERJSAMPLE) << PASS1_BITS);
|
((tmp10 + tmp2 - 5 * CENTERJSAMPLE) << PASS1_BITS);
|
||||||
tmp11 = MULTIPLY(tmp11, FIX(0.790569415)); /* (c2+c4)/2 */
|
tmp11 = MULTIPLY(tmp11, FIX(0.790569415)); /* (c2+c4)/2 */
|
||||||
@ -4081,7 +4084,7 @@ jpeg_fdct_4x8 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp10 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[3]);
|
tmp10 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[3]);
|
||||||
tmp11 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[2]);
|
tmp11 = GETJSAMPLE(elemptr[1]) - GETJSAMPLE(elemptr[2]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp0 + tmp1 - 4 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
((tmp0 + tmp1 - 4 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
||||||
dataptr[2] = (DCTELEM) ((tmp0 - tmp1) << (PASS1_BITS+1));
|
dataptr[2] = (DCTELEM) ((tmp0 - tmp1) << (PASS1_BITS+1));
|
||||||
@ -4220,7 +4223,7 @@ jpeg_fdct_3x6 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
|
|
||||||
tmp2 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[2]);
|
tmp2 = GETJSAMPLE(elemptr[0]) - GETJSAMPLE(elemptr[2]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM)
|
dataptr[0] = (DCTELEM)
|
||||||
((tmp0 + tmp1 - 3 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
((tmp0 + tmp1 - 3 * CENTERJSAMPLE) << (PASS1_BITS+1));
|
||||||
dataptr[2] = (DCTELEM)
|
dataptr[2] = (DCTELEM)
|
||||||
@ -4321,7 +4324,7 @@ jpeg_fdct_2x4 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp0 = GETJSAMPLE(elemptr[0]);
|
tmp0 = GETJSAMPLE(elemptr[0]);
|
||||||
tmp1 = GETJSAMPLE(elemptr[1]);
|
tmp1 = GETJSAMPLE(elemptr[1]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
dataptr[0] = (DCTELEM) ((tmp0 + tmp1 - 2 * CENTERJSAMPLE) << 3);
|
dataptr[0] = (DCTELEM) ((tmp0 + tmp1 - 2 * CENTERJSAMPLE) << 3);
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
@ -4377,7 +4380,7 @@ jpeg_fdct_2x4 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
jpeg_fdct_1x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
jpeg_fdct_1x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
||||||
{
|
{
|
||||||
INT32 tmp0, tmp1;
|
DCTELEM tmp0, tmp1;
|
||||||
|
|
||||||
/* Pre-zero output coefficient block. */
|
/* Pre-zero output coefficient block. */
|
||||||
MEMZERO(data, SIZEOF(DCTELEM) * DCTSIZE2);
|
MEMZERO(data, SIZEOF(DCTELEM) * DCTSIZE2);
|
||||||
@ -4394,12 +4397,12 @@ jpeg_fdct_1x2 (DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col)
|
|||||||
tmp0 = GETJSAMPLE(sample_data[0][start_col]);
|
tmp0 = GETJSAMPLE(sample_data[0][start_col]);
|
||||||
tmp1 = GETJSAMPLE(sample_data[1][start_col]);
|
tmp1 = GETJSAMPLE(sample_data[1][start_col]);
|
||||||
|
|
||||||
/* Apply unsigned->signed conversion */
|
/* Apply unsigned->signed conversion. */
|
||||||
data[DCTSIZE*0] = (DCTELEM) ((tmp0 + tmp1 - 2 * CENTERJSAMPLE) << 5);
|
data[DCTSIZE*0] = (tmp0 + tmp1 - 2 * CENTERJSAMPLE) << 5;
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
|
|
||||||
data[DCTSIZE*1] = (DCTELEM) ((tmp0 - tmp1) << 5);
|
data[DCTSIZE*1] = (tmp0 - tmp1) << 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* DCT_SCALING_SUPPORTED */
|
#endif /* DCT_SCALING_SUPPORTED */
|
||||||
|
51
jidctflt.c
51
jidctflt.c
@ -2,7 +2,7 @@
|
|||||||
* jidctflt.c
|
* jidctflt.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1998, Thomas G. Lane.
|
* Copyright (C) 1994-1998, Thomas G. Lane.
|
||||||
* Modified 2010 by Guido Vollbeding.
|
* Modified 2010-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -63,6 +63,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform dequantization and inverse DCT on one block of coefficients.
|
* Perform dequantization and inverse DCT on one block of coefficients.
|
||||||
|
*
|
||||||
|
* cK represents cos(K*pi/16).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
@ -77,7 +79,7 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
FLOAT_MULT_TYPE * quantptr;
|
FLOAT_MULT_TYPE * quantptr;
|
||||||
FAST_FLOAT * wsptr;
|
FAST_FLOAT * wsptr;
|
||||||
JSAMPROW outptr;
|
JSAMPROW outptr;
|
||||||
JSAMPLE *range_limit = cinfo->sample_range_limit;
|
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
||||||
int ctr;
|
int ctr;
|
||||||
FAST_FLOAT workspace[DCTSIZE2]; /* buffers data between passes */
|
FAST_FLOAT workspace[DCTSIZE2]; /* buffers data between passes */
|
||||||
|
|
||||||
@ -95,14 +97,14 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
* With typical images and quantization tables, half or more of the
|
* With typical images and quantization tables, half or more of the
|
||||||
* column DCT calculations can be simplified this way.
|
* column DCT calculations can be simplified this way.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 &&
|
if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 &&
|
||||||
inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*4] == 0 &&
|
inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*4] == 0 &&
|
||||||
inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*6] == 0 &&
|
inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*6] == 0 &&
|
||||||
inptr[DCTSIZE*7] == 0) {
|
inptr[DCTSIZE*7] == 0) {
|
||||||
/* AC terms all zero */
|
/* AC terms all zero */
|
||||||
FAST_FLOAT dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
FAST_FLOAT dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
||||||
|
|
||||||
wsptr[DCTSIZE*0] = dcval;
|
wsptr[DCTSIZE*0] = dcval;
|
||||||
wsptr[DCTSIZE*1] = dcval;
|
wsptr[DCTSIZE*1] = dcval;
|
||||||
wsptr[DCTSIZE*2] = dcval;
|
wsptr[DCTSIZE*2] = dcval;
|
||||||
@ -111,13 +113,13 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
wsptr[DCTSIZE*5] = dcval;
|
wsptr[DCTSIZE*5] = dcval;
|
||||||
wsptr[DCTSIZE*6] = dcval;
|
wsptr[DCTSIZE*6] = dcval;
|
||||||
wsptr[DCTSIZE*7] = dcval;
|
wsptr[DCTSIZE*7] = dcval;
|
||||||
|
|
||||||
inptr++; /* advance pointers to next column */
|
inptr++; /* advance pointers to next column */
|
||||||
quantptr++;
|
quantptr++;
|
||||||
wsptr++;
|
wsptr++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
tmp0 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
tmp0 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
||||||
@ -135,7 +137,7 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp3 = tmp10 - tmp13;
|
tmp3 = tmp10 - tmp13;
|
||||||
tmp1 = tmp11 + tmp12;
|
tmp1 = tmp11 + tmp12;
|
||||||
tmp2 = tmp11 - tmp12;
|
tmp2 = tmp11 - tmp12;
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
|
|
||||||
tmp4 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
|
tmp4 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
|
||||||
@ -172,7 +174,7 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
quantptr++;
|
quantptr++;
|
||||||
wsptr++;
|
wsptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pass 2: process rows from work array, store into output array. */
|
/* Pass 2: process rows from work array, store into output array. */
|
||||||
|
|
||||||
wsptr = workspace;
|
wsptr = workspace;
|
||||||
@ -183,16 +185,17 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
* the simplification applies less often (typically 5% to 10% of the time).
|
* the simplification applies less often (typically 5% to 10% of the time).
|
||||||
* And testing floats for zero is relatively expensive, so we don't bother.
|
* And testing floats for zero is relatively expensive, so we don't bother.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Apply signed->unsigned and prepare float->int conversion */
|
/* Prepare range-limit and float->int conversion */
|
||||||
z5 = wsptr[0] + ((FAST_FLOAT) CENTERJSAMPLE + (FAST_FLOAT) 0.5);
|
z5 = wsptr[0] + (((FAST_FLOAT) RANGE_CENTER) + ((FAST_FLOAT) 0.5));
|
||||||
tmp10 = z5 + wsptr[4];
|
tmp10 = z5 + wsptr[4];
|
||||||
tmp11 = z5 - wsptr[4];
|
tmp11 = z5 - wsptr[4];
|
||||||
|
|
||||||
tmp13 = wsptr[2] + wsptr[6];
|
tmp13 = wsptr[2] + wsptr[6];
|
||||||
tmp12 = (wsptr[2] - wsptr[6]) * ((FAST_FLOAT) 1.414213562) - tmp13;
|
tmp12 = (wsptr[2] - wsptr[6]) *
|
||||||
|
((FAST_FLOAT) 1.414213562) - tmp13; /* 2*c4 */
|
||||||
|
|
||||||
tmp0 = tmp10 + tmp13;
|
tmp0 = tmp10 + tmp13;
|
||||||
tmp3 = tmp10 - tmp13;
|
tmp3 = tmp10 - tmp13;
|
||||||
@ -206,28 +209,28 @@ jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
z11 = wsptr[1] + wsptr[7];
|
z11 = wsptr[1] + wsptr[7];
|
||||||
z12 = wsptr[1] - wsptr[7];
|
z12 = wsptr[1] - wsptr[7];
|
||||||
|
|
||||||
tmp7 = z11 + z13;
|
tmp7 = z11 + z13; /* phase 5 */
|
||||||
tmp11 = (z11 - z13) * ((FAST_FLOAT) 1.414213562);
|
tmp11 = (z11 - z13) * ((FAST_FLOAT) 1.414213562); /* 2*c4 */
|
||||||
|
|
||||||
z5 = (z10 + z12) * ((FAST_FLOAT) 1.847759065); /* 2*c2 */
|
z5 = (z10 + z12) * ((FAST_FLOAT) 1.847759065); /* 2*c2 */
|
||||||
tmp10 = z5 - z12 * ((FAST_FLOAT) 1.082392200); /* 2*(c2-c6) */
|
tmp10 = z5 - z12 * ((FAST_FLOAT) 1.082392200); /* 2*(c2-c6) */
|
||||||
tmp12 = z5 - z10 * ((FAST_FLOAT) 2.613125930); /* 2*(c2+c6) */
|
tmp12 = z5 - z10 * ((FAST_FLOAT) 2.613125930); /* 2*(c2+c6) */
|
||||||
|
|
||||||
tmp6 = tmp12 - tmp7;
|
tmp6 = tmp12 - tmp7; /* phase 2 */
|
||||||
tmp5 = tmp11 - tmp6;
|
tmp5 = tmp11 - tmp6;
|
||||||
tmp4 = tmp10 - tmp5;
|
tmp4 = tmp10 - tmp5;
|
||||||
|
|
||||||
/* Final output stage: float->int conversion and range-limit */
|
/* Final output stage: float->int conversion and range-limit */
|
||||||
|
|
||||||
outptr[0] = range_limit[((int) (tmp0 + tmp7)) & RANGE_MASK];
|
outptr[0] = range_limit[(int) (tmp0 + tmp7) & RANGE_MASK];
|
||||||
outptr[7] = range_limit[((int) (tmp0 - tmp7)) & RANGE_MASK];
|
outptr[7] = range_limit[(int) (tmp0 - tmp7) & RANGE_MASK];
|
||||||
outptr[1] = range_limit[((int) (tmp1 + tmp6)) & RANGE_MASK];
|
outptr[1] = range_limit[(int) (tmp1 + tmp6) & RANGE_MASK];
|
||||||
outptr[6] = range_limit[((int) (tmp1 - tmp6)) & RANGE_MASK];
|
outptr[6] = range_limit[(int) (tmp1 - tmp6) & RANGE_MASK];
|
||||||
outptr[2] = range_limit[((int) (tmp2 + tmp5)) & RANGE_MASK];
|
outptr[2] = range_limit[(int) (tmp2 + tmp5) & RANGE_MASK];
|
||||||
outptr[5] = range_limit[((int) (tmp2 - tmp5)) & RANGE_MASK];
|
outptr[5] = range_limit[(int) (tmp2 - tmp5) & RANGE_MASK];
|
||||||
outptr[3] = range_limit[((int) (tmp3 + tmp4)) & RANGE_MASK];
|
outptr[3] = range_limit[(int) (tmp3 + tmp4) & RANGE_MASK];
|
||||||
outptr[4] = range_limit[((int) (tmp3 - tmp4)) & RANGE_MASK];
|
outptr[4] = range_limit[(int) (tmp3 - tmp4) & RANGE_MASK];
|
||||||
|
|
||||||
wsptr += DCTSIZE; /* advance pointer to next row */
|
wsptr += DCTSIZE; /* advance pointer to next row */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
89
jidctfst.c
89
jidctfst.c
@ -2,6 +2,7 @@
|
|||||||
* jidctfst.c
|
* jidctfst.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1998, Thomas G. Lane.
|
* Copyright (C) 1994-1998, Thomas G. Lane.
|
||||||
|
* Modified 2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -133,35 +134,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Like DESCALE, but applies to a DCTELEM and produces an int.
|
|
||||||
* We assume that int right shift is unsigned if INT32 right shift is.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef RIGHT_SHIFT_IS_UNSIGNED
|
|
||||||
#define ISHIFT_TEMPS DCTELEM ishift_temp;
|
|
||||||
#if BITS_IN_JSAMPLE == 8
|
|
||||||
#define DCTELEMBITS 16 /* DCTELEM may be 16 or 32 bits */
|
|
||||||
#else
|
|
||||||
#define DCTELEMBITS 32 /* DCTELEM must be 32 bits */
|
|
||||||
#endif
|
|
||||||
#define IRIGHT_SHIFT(x,shft) \
|
|
||||||
((ishift_temp = (x)) < 0 ? \
|
|
||||||
(ishift_temp >> (shft)) | ((~((DCTELEM) 0)) << (DCTELEMBITS-(shft))) : \
|
|
||||||
(ishift_temp >> (shft)))
|
|
||||||
#else
|
|
||||||
#define ISHIFT_TEMPS
|
|
||||||
#define IRIGHT_SHIFT(x,shft) ((x) >> (shft))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_ACCURATE_ROUNDING
|
|
||||||
#define IDESCALE(x,n) ((int) IRIGHT_SHIFT((x) + (1 << ((n)-1)), n))
|
|
||||||
#else
|
|
||||||
#define IDESCALE(x,n) ((int) IRIGHT_SHIFT(x, n))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform dequantization and inverse DCT on one block of coefficients.
|
* Perform dequantization and inverse DCT on one block of coefficients.
|
||||||
|
*
|
||||||
|
* cK represents cos(K*pi/16).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GLOBAL(void)
|
GLOBAL(void)
|
||||||
@ -180,7 +156,7 @@ jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
int ctr;
|
int ctr;
|
||||||
int workspace[DCTSIZE2]; /* buffers data between passes */
|
int workspace[DCTSIZE2]; /* buffers data between passes */
|
||||||
SHIFT_TEMPS /* for DESCALE */
|
SHIFT_TEMPS /* for DESCALE */
|
||||||
ISHIFT_TEMPS /* for IDESCALE */
|
ISHIFT_TEMPS /* for IRIGHT_SHIFT */
|
||||||
|
|
||||||
/* Pass 1: process columns from input, store into work array. */
|
/* Pass 1: process columns from input, store into work array. */
|
||||||
|
|
||||||
@ -253,12 +229,12 @@ jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562); /* 2*c4 */
|
tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562); /* 2*c4 */
|
||||||
|
|
||||||
z5 = MULTIPLY(z10 + z12, FIX_1_847759065); /* 2*c2 */
|
z5 = MULTIPLY(z10 + z12, FIX_1_847759065); /* 2*c2 */
|
||||||
tmp10 = MULTIPLY(z12, FIX_1_082392200) - z5; /* 2*(c2-c6) */
|
tmp10 = z5 - MULTIPLY(z12, FIX_1_082392200); /* 2*(c2-c6) */
|
||||||
tmp12 = MULTIPLY(z10, - FIX_2_613125930) + z5; /* -2*(c2+c6) */
|
tmp12 = z5 - MULTIPLY(z10, FIX_2_613125930); /* 2*(c2+c6) */
|
||||||
|
|
||||||
tmp6 = tmp12 - tmp7; /* phase 2 */
|
tmp6 = tmp12 - tmp7; /* phase 2 */
|
||||||
tmp5 = tmp11 - tmp6;
|
tmp5 = tmp11 - tmp6;
|
||||||
tmp4 = tmp10 + tmp5;
|
tmp4 = tmp10 - tmp5;
|
||||||
|
|
||||||
wsptr[DCTSIZE*0] = (int) (tmp0 + tmp7);
|
wsptr[DCTSIZE*0] = (int) (tmp0 + tmp7);
|
||||||
wsptr[DCTSIZE*7] = (int) (tmp0 - tmp7);
|
wsptr[DCTSIZE*7] = (int) (tmp0 - tmp7);
|
||||||
@ -266,21 +242,28 @@ jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
wsptr[DCTSIZE*6] = (int) (tmp1 - tmp6);
|
wsptr[DCTSIZE*6] = (int) (tmp1 - tmp6);
|
||||||
wsptr[DCTSIZE*2] = (int) (tmp2 + tmp5);
|
wsptr[DCTSIZE*2] = (int) (tmp2 + tmp5);
|
||||||
wsptr[DCTSIZE*5] = (int) (tmp2 - tmp5);
|
wsptr[DCTSIZE*5] = (int) (tmp2 - tmp5);
|
||||||
wsptr[DCTSIZE*4] = (int) (tmp3 + tmp4);
|
wsptr[DCTSIZE*3] = (int) (tmp3 + tmp4);
|
||||||
wsptr[DCTSIZE*3] = (int) (tmp3 - tmp4);
|
wsptr[DCTSIZE*4] = (int) (tmp3 - tmp4);
|
||||||
|
|
||||||
inptr++; /* advance pointers to next column */
|
inptr++; /* advance pointers to next column */
|
||||||
quantptr++;
|
quantptr++;
|
||||||
wsptr++;
|
wsptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pass 2: process rows from work array, store into output array. */
|
/* Pass 2: process rows from work array, store into output array.
|
||||||
/* Note that we must descale the results by a factor of 8 == 2**3, */
|
* Note that we must descale the results by a factor of 8 == 2**3,
|
||||||
/* and also undo the PASS1_BITS scaling. */
|
* and also undo the PASS1_BITS scaling.
|
||||||
|
*/
|
||||||
|
|
||||||
wsptr = workspace;
|
wsptr = workspace;
|
||||||
for (ctr = 0; ctr < DCTSIZE; ctr++) {
|
for (ctr = 0; ctr < DCTSIZE; ctr++) {
|
||||||
outptr = output_buf[ctr] + output_col;
|
outptr = output_buf[ctr] + output_col;
|
||||||
|
|
||||||
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
|
z5 = (DCTELEM) wsptr[0] +
|
||||||
|
((((DCTELEM) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(1 << (PASS1_BITS+2)));
|
||||||
|
|
||||||
/* Rows of zeroes can be exploited in the same way as we did with columns.
|
/* Rows of zeroes can be exploited in the same way as we did with columns.
|
||||||
* However, the column calculation has created many nonzero AC terms, so
|
* However, the column calculation has created many nonzero AC terms, so
|
||||||
* the simplification applies less often (typically 5% to 10% of the time).
|
* the simplification applies less often (typically 5% to 10% of the time).
|
||||||
@ -293,7 +276,7 @@ jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
|
if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
|
||||||
wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
|
wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
|
||||||
/* AC terms all zero */
|
/* AC terms all zero */
|
||||||
JSAMPLE dcval = range_limit[IDESCALE(wsptr[0], PASS1_BITS+3)
|
JSAMPLE dcval = range_limit[(int) IRIGHT_SHIFT(z5, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
|
|
||||||
outptr[0] = dcval;
|
outptr[0] = dcval;
|
||||||
@ -312,12 +295,12 @@ jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
tmp10 = ((DCTELEM) wsptr[0] + (DCTELEM) wsptr[4]);
|
tmp10 = z5 + (DCTELEM) wsptr[4];
|
||||||
tmp11 = ((DCTELEM) wsptr[0] - (DCTELEM) wsptr[4]);
|
tmp11 = z5 - (DCTELEM) wsptr[4];
|
||||||
|
|
||||||
tmp13 = ((DCTELEM) wsptr[2] + (DCTELEM) wsptr[6]);
|
tmp13 = (DCTELEM) wsptr[2] + (DCTELEM) wsptr[6];
|
||||||
tmp12 = MULTIPLY((DCTELEM) wsptr[2] - (DCTELEM) wsptr[6], FIX_1_414213562)
|
tmp12 = MULTIPLY((DCTELEM) wsptr[2] - (DCTELEM) wsptr[6],
|
||||||
- tmp13;
|
FIX_1_414213562) - tmp13; /* 2*c4 */
|
||||||
|
|
||||||
tmp0 = tmp10 + tmp13;
|
tmp0 = tmp10 + tmp13;
|
||||||
tmp3 = tmp10 - tmp13;
|
tmp3 = tmp10 - tmp13;
|
||||||
@ -335,30 +318,30 @@ jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562); /* 2*c4 */
|
tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562); /* 2*c4 */
|
||||||
|
|
||||||
z5 = MULTIPLY(z10 + z12, FIX_1_847759065); /* 2*c2 */
|
z5 = MULTIPLY(z10 + z12, FIX_1_847759065); /* 2*c2 */
|
||||||
tmp10 = MULTIPLY(z12, FIX_1_082392200) - z5; /* 2*(c2-c6) */
|
tmp10 = z5 - MULTIPLY(z12, FIX_1_082392200); /* 2*(c2-c6) */
|
||||||
tmp12 = MULTIPLY(z10, - FIX_2_613125930) + z5; /* -2*(c2+c6) */
|
tmp12 = z5 - MULTIPLY(z10, FIX_2_613125930); /* 2*(c2+c6) */
|
||||||
|
|
||||||
tmp6 = tmp12 - tmp7; /* phase 2 */
|
tmp6 = tmp12 - tmp7; /* phase 2 */
|
||||||
tmp5 = tmp11 - tmp6;
|
tmp5 = tmp11 - tmp6;
|
||||||
tmp4 = tmp10 + tmp5;
|
tmp4 = tmp10 - tmp5;
|
||||||
|
|
||||||
/* Final output stage: scale down by a factor of 8 and range-limit */
|
/* Final output stage: scale down by a factor of 8 and range-limit */
|
||||||
|
|
||||||
outptr[0] = range_limit[IDESCALE(tmp0 + tmp7, PASS1_BITS+3)
|
outptr[0] = range_limit[(int) IRIGHT_SHIFT(tmp0 + tmp7, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[7] = range_limit[IDESCALE(tmp0 - tmp7, PASS1_BITS+3)
|
outptr[7] = range_limit[(int) IRIGHT_SHIFT(tmp0 - tmp7, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[1] = range_limit[IDESCALE(tmp1 + tmp6, PASS1_BITS+3)
|
outptr[1] = range_limit[(int) IRIGHT_SHIFT(tmp1 + tmp6, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[6] = range_limit[IDESCALE(tmp1 - tmp6, PASS1_BITS+3)
|
outptr[6] = range_limit[(int) IRIGHT_SHIFT(tmp1 - tmp6, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[2] = range_limit[IDESCALE(tmp2 + tmp5, PASS1_BITS+3)
|
outptr[2] = range_limit[(int) IRIGHT_SHIFT(tmp2 + tmp5, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[5] = range_limit[IDESCALE(tmp2 - tmp5, PASS1_BITS+3)
|
outptr[5] = range_limit[(int) IRIGHT_SHIFT(tmp2 - tmp5, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[4] = range_limit[IDESCALE(tmp3 + tmp4, PASS1_BITS+3)
|
outptr[3] = range_limit[(int) IRIGHT_SHIFT(tmp3 + tmp4, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
outptr[3] = range_limit[IDESCALE(tmp3 - tmp4, PASS1_BITS+3)
|
outptr[4] = range_limit[(int) IRIGHT_SHIFT(tmp3 - tmp4, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
|
|
||||||
wsptr += DCTSIZE; /* advance pointer to next row */
|
wsptr += DCTSIZE; /* advance pointer to next row */
|
||||||
|
278
jidctint.c
278
jidctint.c
@ -2,7 +2,7 @@
|
|||||||
* jidctint.c
|
* jidctint.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1998, Thomas G. Lane.
|
* Copyright (C) 1991-1998, Thomas G. Lane.
|
||||||
* Modification developed 2002-2013 by Guido Vollbeding.
|
* Modification developed 2002-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -230,13 +230,6 @@ jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
* The rotator is c(-6).
|
* The rotator is c(-6).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
z2 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]);
|
|
||||||
z3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]);
|
|
||||||
|
|
||||||
z1 = MULTIPLY(z2 + z3, FIX_0_541196100); /* c6 */
|
|
||||||
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
|
||||||
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
|
||||||
|
|
||||||
z2 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
z2 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
||||||
z3 = DEQUANTIZE(inptr[DCTSIZE*4], quantptr[DCTSIZE*4]);
|
z3 = DEQUANTIZE(inptr[DCTSIZE*4], quantptr[DCTSIZE*4]);
|
||||||
z2 <<= CONST_BITS;
|
z2 <<= CONST_BITS;
|
||||||
@ -247,6 +240,13 @@ jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp0 = z2 + z3;
|
tmp0 = z2 + z3;
|
||||||
tmp1 = z2 - z3;
|
tmp1 = z2 - z3;
|
||||||
|
|
||||||
|
z2 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]);
|
||||||
|
z3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]);
|
||||||
|
|
||||||
|
z1 = MULTIPLY(z2 + z3, FIX_0_541196100); /* c6 */
|
||||||
|
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
||||||
|
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
||||||
|
|
||||||
tmp10 = tmp0 + tmp2;
|
tmp10 = tmp0 + tmp2;
|
||||||
tmp13 = tmp0 - tmp2;
|
tmp13 = tmp0 - tmp2;
|
||||||
tmp11 = tmp1 + tmp3;
|
tmp11 = tmp1 + tmp3;
|
||||||
@ -306,6 +306,12 @@ jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
wsptr = workspace;
|
wsptr = workspace;
|
||||||
for (ctr = 0; ctr < DCTSIZE; ctr++) {
|
for (ctr = 0; ctr < DCTSIZE; ctr++) {
|
||||||
outptr = output_buf[ctr] + output_col;
|
outptr = output_buf[ctr] + output_col;
|
||||||
|
|
||||||
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
|
z2 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
|
|
||||||
/* Rows of zeroes can be exploited in the same way as we did with columns.
|
/* Rows of zeroes can be exploited in the same way as we did with columns.
|
||||||
* However, the column calculation has created many nonzero AC terms, so
|
* However, the column calculation has created many nonzero AC terms, so
|
||||||
* the simplification applies less often (typically 5% to 10% of the time).
|
* the simplification applies less often (typically 5% to 10% of the time).
|
||||||
@ -318,7 +324,7 @@ jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
|
if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
|
||||||
wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
|
wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
|
||||||
/* AC terms all zero */
|
/* AC terms all zero */
|
||||||
JSAMPLE dcval = range_limit[(int) DESCALE((INT32) wsptr[0], PASS1_BITS+3)
|
JSAMPLE dcval = range_limit[(int) RIGHT_SHIFT(z2, PASS1_BITS+3)
|
||||||
& RANGE_MASK];
|
& RANGE_MASK];
|
||||||
|
|
||||||
outptr[0] = dcval;
|
outptr[0] = dcval;
|
||||||
@ -339,6 +345,11 @@ jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
* The rotator is c(-6).
|
* The rotator is c(-6).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
z3 = (INT32) wsptr[4];
|
||||||
|
|
||||||
|
tmp0 = (z2 + z3) << CONST_BITS;
|
||||||
|
tmp1 = (z2 - z3) << CONST_BITS;
|
||||||
|
|
||||||
z2 = (INT32) wsptr[2];
|
z2 = (INT32) wsptr[2];
|
||||||
z3 = (INT32) wsptr[6];
|
z3 = (INT32) wsptr[6];
|
||||||
|
|
||||||
@ -346,13 +357,6 @@ jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
||||||
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
|
||||||
z2 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
|
||||||
z3 = (INT32) wsptr[4];
|
|
||||||
|
|
||||||
tmp0 = (z2 + z3) << CONST_BITS;
|
|
||||||
tmp1 = (z2 - z3) << CONST_BITS;
|
|
||||||
|
|
||||||
tmp10 = tmp0 + tmp2;
|
tmp10 = tmp0 + tmp2;
|
||||||
tmp13 = tmp0 - tmp2;
|
tmp13 = tmp0 - tmp2;
|
||||||
tmp11 = tmp1 + tmp3;
|
tmp11 = tmp1 + tmp3;
|
||||||
@ -508,8 +512,10 @@ jpeg_idct_7x7 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp13 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp13 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp13 <<= CONST_BITS;
|
tmp13 <<= CONST_BITS;
|
||||||
|
|
||||||
z1 = (INT32) wsptr[2];
|
z1 = (INT32) wsptr[2];
|
||||||
@ -644,8 +650,10 @@ jpeg_idct_6x6 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
tmp2 = (INT32) wsptr[4];
|
tmp2 = (INT32) wsptr[4];
|
||||||
tmp10 = MULTIPLY(tmp2, FIX(0.707106781)); /* c4 */
|
tmp10 = MULTIPLY(tmp2, FIX(0.707106781)); /* c4 */
|
||||||
@ -763,8 +771,10 @@ jpeg_idct_5x5 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp12 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp12 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp12 <<= CONST_BITS;
|
tmp12 <<= CONST_BITS;
|
||||||
tmp0 = (INT32) wsptr[2];
|
tmp0 = (INT32) wsptr[2];
|
||||||
tmp1 = (INT32) wsptr[4];
|
tmp1 = (INT32) wsptr[4];
|
||||||
@ -875,8 +885,10 @@ jpeg_idct_4x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp2 = (INT32) wsptr[2];
|
tmp2 = (INT32) wsptr[2];
|
||||||
|
|
||||||
tmp10 = (tmp0 + tmp2) << CONST_BITS;
|
tmp10 = (tmp0 + tmp2) << CONST_BITS;
|
||||||
@ -972,8 +984,10 @@ jpeg_idct_3x3 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
tmp2 = (INT32) wsptr[2];
|
tmp2 = (INT32) wsptr[2];
|
||||||
tmp12 = MULTIPLY(tmp2, FIX(0.707106781)); /* c2 */
|
tmp12 = MULTIPLY(tmp2, FIX(0.707106781)); /* c2 */
|
||||||
@ -1014,11 +1028,11 @@ jpeg_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
JCOEFPTR coef_block,
|
JCOEFPTR coef_block,
|
||||||
JSAMPARRAY output_buf, JDIMENSION output_col)
|
JSAMPARRAY output_buf, JDIMENSION output_col)
|
||||||
{
|
{
|
||||||
INT32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
|
DCTELEM tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
|
||||||
ISLOW_MULT_TYPE * quantptr;
|
ISLOW_MULT_TYPE * quantptr;
|
||||||
JSAMPROW outptr;
|
JSAMPROW outptr;
|
||||||
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
||||||
SHIFT_TEMPS
|
ISHIFT_TEMPS
|
||||||
|
|
||||||
/* Pass 1: process columns from input. */
|
/* Pass 1: process columns from input. */
|
||||||
|
|
||||||
@ -1027,8 +1041,8 @@ jpeg_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
/* Column 0 */
|
/* Column 0 */
|
||||||
tmp4 = DEQUANTIZE(coef_block[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
tmp4 = DEQUANTIZE(coef_block[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
||||||
tmp5 = DEQUANTIZE(coef_block[DCTSIZE*1], quantptr[DCTSIZE*1]);
|
tmp5 = DEQUANTIZE(coef_block[DCTSIZE*1], quantptr[DCTSIZE*1]);
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp4 += ONE << 2;
|
tmp4 += (((DCTELEM) RANGE_CENTER) << 3) + (1 << 2);
|
||||||
|
|
||||||
tmp0 = tmp4 + tmp5;
|
tmp0 = tmp4 + tmp5;
|
||||||
tmp2 = tmp4 - tmp5;
|
tmp2 = tmp4 - tmp5;
|
||||||
@ -1045,14 +1059,14 @@ jpeg_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
/* Row 0 */
|
/* Row 0 */
|
||||||
outptr = output_buf[0] + output_col;
|
outptr = output_buf[0] + output_col;
|
||||||
|
|
||||||
outptr[0] = range_limit[(int) RIGHT_SHIFT(tmp0 + tmp1, 3) & RANGE_MASK];
|
outptr[0] = range_limit[(int) IRIGHT_SHIFT(tmp0 + tmp1, 3) & RANGE_MASK];
|
||||||
outptr[1] = range_limit[(int) RIGHT_SHIFT(tmp0 - tmp1, 3) & RANGE_MASK];
|
outptr[1] = range_limit[(int) IRIGHT_SHIFT(tmp0 - tmp1, 3) & RANGE_MASK];
|
||||||
|
|
||||||
/* Row 1 */
|
/* Row 1 */
|
||||||
outptr = output_buf[1] + output_col;
|
outptr = output_buf[1] + output_col;
|
||||||
|
|
||||||
outptr[0] = range_limit[(int) RIGHT_SHIFT(tmp2 + tmp3, 3) & RANGE_MASK];
|
outptr[0] = range_limit[(int) IRIGHT_SHIFT(tmp2 + tmp3, 3) & RANGE_MASK];
|
||||||
outptr[1] = range_limit[(int) RIGHT_SHIFT(tmp2 - tmp3, 3) & RANGE_MASK];
|
outptr[1] = range_limit[(int) IRIGHT_SHIFT(tmp2 - tmp3, 3) & RANGE_MASK];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1069,17 +1083,21 @@ jpeg_idct_1x1 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
JCOEFPTR coef_block,
|
JCOEFPTR coef_block,
|
||||||
JSAMPARRAY output_buf, JDIMENSION output_col)
|
JSAMPARRAY output_buf, JDIMENSION output_col)
|
||||||
{
|
{
|
||||||
int dcval;
|
DCTELEM dcval;
|
||||||
ISLOW_MULT_TYPE * quantptr;
|
ISLOW_MULT_TYPE * quantptr;
|
||||||
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
||||||
SHIFT_TEMPS
|
ISHIFT_TEMPS
|
||||||
|
|
||||||
/* 1x1 is trivial: just take the DC coefficient divided by 8. */
|
/* 1x1 is trivial: just take the DC coefficient divided by 8. */
|
||||||
quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
|
|
||||||
dcval = DEQUANTIZE(coef_block[0], quantptr[0]);
|
|
||||||
dcval = (int) DESCALE((INT32) dcval, 3);
|
|
||||||
|
|
||||||
output_buf[0][output_col] = range_limit[dcval & RANGE_MASK];
|
quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
|
||||||
|
|
||||||
|
dcval = DEQUANTIZE(coef_block[0], quantptr[0]);
|
||||||
|
/* Add range center and fudge factor for descale and range-limit. */
|
||||||
|
dcval += (((DCTELEM) RANGE_CENTER) << 3) + (1 << 2);
|
||||||
|
|
||||||
|
output_buf[0][output_col] =
|
||||||
|
range_limit[(int) IRIGHT_SHIFT(dcval, 3) & RANGE_MASK];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1178,8 +1196,10 @@ jpeg_idct_9x9 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
|
|
||||||
z1 = (INT32) wsptr[2];
|
z1 = (INT32) wsptr[2];
|
||||||
@ -1361,8 +1381,10 @@ jpeg_idct_10x10 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z3 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z3 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z3 <<= CONST_BITS;
|
z3 <<= CONST_BITS;
|
||||||
z4 = (INT32) wsptr[4];
|
z4 = (INT32) wsptr[4];
|
||||||
z1 = MULTIPLY(z4, FIX(1.144122806)); /* c4 */
|
z1 = MULTIPLY(z4, FIX(1.144122806)); /* c4 */
|
||||||
@ -1554,8 +1576,10 @@ jpeg_idct_11x11 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp10 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp10 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp10 <<= CONST_BITS;
|
tmp10 <<= CONST_BITS;
|
||||||
|
|
||||||
z1 = (INT32) wsptr[2];
|
z1 = (INT32) wsptr[2];
|
||||||
@ -1758,8 +1782,10 @@ jpeg_idct_12x12 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z3 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z3 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z3 <<= CONST_BITS;
|
z3 <<= CONST_BITS;
|
||||||
|
|
||||||
z4 = (INT32) wsptr[4];
|
z4 = (INT32) wsptr[4];
|
||||||
@ -1979,8 +2005,10 @@ jpeg_idct_13x13 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z1 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z1 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z1 <<= CONST_BITS;
|
z1 <<= CONST_BITS;
|
||||||
|
|
||||||
z2 = (INT32) wsptr[2];
|
z2 = (INT32) wsptr[2];
|
||||||
@ -2206,8 +2234,10 @@ jpeg_idct_14x14 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z1 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z1 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z1 <<= CONST_BITS;
|
z1 <<= CONST_BITS;
|
||||||
z4 = (INT32) wsptr[4];
|
z4 = (INT32) wsptr[4];
|
||||||
z2 = MULTIPLY(z4, FIX(1.274162392)); /* c4 */
|
z2 = MULTIPLY(z4, FIX(1.274162392)); /* c4 */
|
||||||
@ -2438,8 +2468,10 @@ jpeg_idct_15x15 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z1 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z1 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z1 <<= CONST_BITS;
|
z1 <<= CONST_BITS;
|
||||||
|
|
||||||
z2 = (INT32) wsptr[2];
|
z2 = (INT32) wsptr[2];
|
||||||
@ -2689,8 +2721,10 @@ jpeg_idct_16x16 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
|
|
||||||
z1 = (INT32) wsptr[4];
|
z1 = (INT32) wsptr[4];
|
||||||
@ -2964,8 +2998,10 @@ jpeg_idct_16x8 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
|
|
||||||
z1 = (INT32) wsptr[4];
|
z1 = (INT32) wsptr[4];
|
||||||
@ -3182,8 +3218,10 @@ jpeg_idct_14x7 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z1 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z1 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z1 <<= CONST_BITS;
|
z1 <<= CONST_BITS;
|
||||||
z4 = (INT32) wsptr[4];
|
z4 = (INT32) wsptr[4];
|
||||||
z2 = MULTIPLY(z4, FIX(1.274162392)); /* c4 */
|
z2 = MULTIPLY(z4, FIX(1.274162392)); /* c4 */
|
||||||
@ -3366,8 +3404,10 @@ jpeg_idct_12x6 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z3 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z3 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z3 <<= CONST_BITS;
|
z3 <<= CONST_BITS;
|
||||||
|
|
||||||
z4 = (INT32) wsptr[4];
|
z4 = (INT32) wsptr[4];
|
||||||
@ -3542,8 +3582,10 @@ jpeg_idct_10x5 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
z3 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
z3 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
z3 <<= CONST_BITS;
|
z3 <<= CONST_BITS;
|
||||||
z4 = (INT32) wsptr[4];
|
z4 = (INT32) wsptr[4];
|
||||||
z1 = MULTIPLY(z4, FIX(1.144122806)); /* c4 */
|
z1 = MULTIPLY(z4, FIX(1.144122806)); /* c4 */
|
||||||
@ -3707,6 +3749,15 @@ jpeg_idct_8x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
* The rotator is c(-6).
|
* The rotator is c(-6).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
|
z2 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
|
z3 = (INT32) wsptr[4];
|
||||||
|
|
||||||
|
tmp0 = (z2 + z3) << CONST_BITS;
|
||||||
|
tmp1 = (z2 - z3) << CONST_BITS;
|
||||||
|
|
||||||
z2 = (INT32) wsptr[2];
|
z2 = (INT32) wsptr[2];
|
||||||
z3 = (INT32) wsptr[6];
|
z3 = (INT32) wsptr[6];
|
||||||
|
|
||||||
@ -3714,13 +3765,6 @@ jpeg_idct_8x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
||||||
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
|
||||||
z2 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
|
||||||
z3 = (INT32) wsptr[4];
|
|
||||||
|
|
||||||
tmp0 = (z2 + z3) << CONST_BITS;
|
|
||||||
tmp1 = (z2 - z3) << CONST_BITS;
|
|
||||||
|
|
||||||
tmp10 = tmp0 + tmp2;
|
tmp10 = tmp0 + tmp2;
|
||||||
tmp13 = tmp0 - tmp2;
|
tmp13 = tmp0 - tmp2;
|
||||||
tmp11 = tmp1 + tmp3;
|
tmp11 = tmp1 + tmp3;
|
||||||
@ -3852,8 +3896,10 @@ jpeg_idct_6x3 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
tmp2 = (INT32) wsptr[4];
|
tmp2 = (INT32) wsptr[4];
|
||||||
tmp10 = MULTIPLY(tmp2, FIX(0.707106781)); /* c4 */
|
tmp10 = MULTIPLY(tmp2, FIX(0.707106781)); /* c4 */
|
||||||
@ -3954,8 +4000,8 @@ jpeg_idct_4x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = wsptr[0] + (ONE << 2);
|
tmp0 = wsptr[0] + ((((INT32) RANGE_CENTER) << 3) + (ONE << 2));
|
||||||
tmp2 = wsptr[2];
|
tmp2 = wsptr[2];
|
||||||
|
|
||||||
tmp10 = (tmp0 + tmp2) << CONST_BITS;
|
tmp10 = (tmp0 + tmp2) << CONST_BITS;
|
||||||
@ -4003,11 +4049,11 @@ jpeg_idct_2x1 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
JCOEFPTR coef_block,
|
JCOEFPTR coef_block,
|
||||||
JSAMPARRAY output_buf, JDIMENSION output_col)
|
JSAMPARRAY output_buf, JDIMENSION output_col)
|
||||||
{
|
{
|
||||||
INT32 tmp0, tmp1;
|
DCTELEM tmp0, tmp1;
|
||||||
ISLOW_MULT_TYPE * quantptr;
|
ISLOW_MULT_TYPE * quantptr;
|
||||||
JSAMPROW outptr;
|
JSAMPROW outptr;
|
||||||
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
||||||
SHIFT_TEMPS
|
ISHIFT_TEMPS
|
||||||
|
|
||||||
/* Pass 1: empty. */
|
/* Pass 1: empty. */
|
||||||
|
|
||||||
@ -4019,8 +4065,8 @@ jpeg_idct_2x1 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
tmp0 = DEQUANTIZE(coef_block[0], quantptr[0]);
|
tmp0 = DEQUANTIZE(coef_block[0], quantptr[0]);
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 += ONE << 2;
|
tmp0 += (((DCTELEM) RANGE_CENTER) << 3) + (1 << 2);
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
|
|
||||||
@ -4028,8 +4074,8 @@ jpeg_idct_2x1 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Final output stage */
|
/* Final output stage */
|
||||||
|
|
||||||
outptr[0] = range_limit[(int) RIGHT_SHIFT(tmp0 + tmp1, 3) & RANGE_MASK];
|
outptr[0] = range_limit[(int) IRIGHT_SHIFT(tmp0 + tmp1, 3) & RANGE_MASK];
|
||||||
outptr[1] = range_limit[(int) RIGHT_SHIFT(tmp0 - tmp1, 3) & RANGE_MASK];
|
outptr[1] = range_limit[(int) IRIGHT_SHIFT(tmp0 - tmp1, 3) & RANGE_MASK];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4174,6 +4220,15 @@ jpeg_idct_8x16 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
* The rotator is c(-6).
|
* The rotator is c(-6).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
|
z2 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
|
z3 = (INT32) wsptr[4];
|
||||||
|
|
||||||
|
tmp0 = (z2 + z3) << CONST_BITS;
|
||||||
|
tmp1 = (z2 - z3) << CONST_BITS;
|
||||||
|
|
||||||
z2 = (INT32) wsptr[2];
|
z2 = (INT32) wsptr[2];
|
||||||
z3 = (INT32) wsptr[6];
|
z3 = (INT32) wsptr[6];
|
||||||
|
|
||||||
@ -4181,13 +4236,6 @@ jpeg_idct_8x16 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
tmp2 = z1 + MULTIPLY(z2, FIX_0_765366865); /* c2-c6 */
|
||||||
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
tmp3 = z1 - MULTIPLY(z3, FIX_1_847759065); /* c2+c6 */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
|
||||||
z2 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
|
||||||
z3 = (INT32) wsptr[4];
|
|
||||||
|
|
||||||
tmp0 = (z2 + z3) << CONST_BITS;
|
|
||||||
tmp1 = (z2 - z3) << CONST_BITS;
|
|
||||||
|
|
||||||
tmp10 = tmp0 + tmp2;
|
tmp10 = tmp0 + tmp2;
|
||||||
tmp13 = tmp0 - tmp2;
|
tmp13 = tmp0 - tmp2;
|
||||||
tmp11 = tmp1 + tmp3;
|
tmp11 = tmp1 + tmp3;
|
||||||
@ -4377,8 +4425,10 @@ jpeg_idct_7x14 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp23 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp23 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp23 <<= CONST_BITS;
|
tmp23 <<= CONST_BITS;
|
||||||
|
|
||||||
z1 = (INT32) wsptr[2];
|
z1 = (INT32) wsptr[2];
|
||||||
@ -4558,8 +4608,10 @@ jpeg_idct_6x12 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp10 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp10 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp10 <<= CONST_BITS;
|
tmp10 <<= CONST_BITS;
|
||||||
tmp12 = (INT32) wsptr[4];
|
tmp12 = (INT32) wsptr[4];
|
||||||
tmp20 = MULTIPLY(tmp12, FIX(0.707106781)); /* c4 */
|
tmp20 = MULTIPLY(tmp12, FIX(0.707106781)); /* c4 */
|
||||||
@ -4716,8 +4768,10 @@ jpeg_idct_5x10 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp12 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp12 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp12 <<= CONST_BITS;
|
tmp12 <<= CONST_BITS;
|
||||||
tmp13 = (INT32) wsptr[2];
|
tmp13 = (INT32) wsptr[2];
|
||||||
tmp14 = (INT32) wsptr[4];
|
tmp14 = (INT32) wsptr[4];
|
||||||
@ -4908,8 +4962,10 @@ jpeg_idct_4x8 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp2 = (INT32) wsptr[2];
|
tmp2 = (INT32) wsptr[2];
|
||||||
|
|
||||||
tmp10 = (tmp0 + tmp2) << CONST_BITS;
|
tmp10 = (tmp0 + tmp2) << CONST_BITS;
|
||||||
@ -5021,8 +5077,10 @@ jpeg_idct_3x6 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 = (INT32) wsptr[0] + (ONE << (PASS1_BITS+2));
|
tmp0 = (INT32) wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (PASS1_BITS+3)) +
|
||||||
|
(ONE << (PASS1_BITS+2)));
|
||||||
tmp0 <<= CONST_BITS;
|
tmp0 <<= CONST_BITS;
|
||||||
tmp2 = (INT32) wsptr[2];
|
tmp2 = (INT32) wsptr[2];
|
||||||
tmp12 = MULTIPLY(tmp2, FIX(0.707106781)); /* c2 */
|
tmp12 = MULTIPLY(tmp2, FIX(0.707106781)); /* c2 */
|
||||||
@ -5117,8 +5175,10 @@ jpeg_idct_2x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp10 = wsptr[0] + (ONE << (CONST_BITS+2));
|
tmp10 = wsptr[0] +
|
||||||
|
((((INT32) RANGE_CENTER) << (CONST_BITS+3)) +
|
||||||
|
(ONE << (CONST_BITS+2)));
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
|
|
||||||
@ -5148,20 +5208,20 @@ jpeg_idct_1x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
JCOEFPTR coef_block,
|
JCOEFPTR coef_block,
|
||||||
JSAMPARRAY output_buf, JDIMENSION output_col)
|
JSAMPARRAY output_buf, JDIMENSION output_col)
|
||||||
{
|
{
|
||||||
INT32 tmp0, tmp1;
|
DCTELEM tmp0, tmp1;
|
||||||
ISLOW_MULT_TYPE * quantptr;
|
ISLOW_MULT_TYPE * quantptr;
|
||||||
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
JSAMPLE *range_limit = IDCT_range_limit(cinfo);
|
||||||
SHIFT_TEMPS
|
ISHIFT_TEMPS
|
||||||
|
|
||||||
/* Process 1 column from input, store into output array. */
|
/* Process 1 column from input, store into output array. */
|
||||||
|
|
||||||
quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
|
quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
|
||||||
|
|
||||||
/* Even part */
|
/* Even part */
|
||||||
|
|
||||||
tmp0 = DEQUANTIZE(coef_block[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
tmp0 = DEQUANTIZE(coef_block[DCTSIZE*0], quantptr[DCTSIZE*0]);
|
||||||
/* Add fudge factor here for final descale. */
|
/* Add range center and fudge factor for final descale and range-limit. */
|
||||||
tmp0 += ONE << 2;
|
tmp0 += (((DCTELEM) RANGE_CENTER) << 3) + (1 << 2);
|
||||||
|
|
||||||
/* Odd part */
|
/* Odd part */
|
||||||
|
|
||||||
@ -5169,10 +5229,10 @@ jpeg_idct_1x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|||||||
|
|
||||||
/* Final output stage */
|
/* Final output stage */
|
||||||
|
|
||||||
output_buf[0][output_col] = range_limit[(int) RIGHT_SHIFT(tmp0 + tmp1, 3)
|
output_buf[0][output_col] =
|
||||||
& RANGE_MASK];
|
range_limit[(int) IRIGHT_SHIFT(tmp0 + tmp1, 3) & RANGE_MASK];
|
||||||
output_buf[1][output_col] = range_limit[(int) RIGHT_SHIFT(tmp0 - tmp1, 3)
|
output_buf[1][output_col] =
|
||||||
& RANGE_MASK];
|
range_limit[(int) IRIGHT_SHIFT(tmp0 - tmp1, 3) & RANGE_MASK];
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* IDCT_SCALING_SUPPORTED */
|
#endif /* IDCT_SCALING_SUPPORTED */
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* jpeglib.h
|
* jpeglib.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1998, Thomas G. Lane.
|
* Copyright (C) 1991-1998, Thomas G. Lane.
|
||||||
* Modified 2002-2013 by Guido Vollbeding.
|
* Modified 2002-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -39,7 +39,7 @@ extern "C" {
|
|||||||
|
|
||||||
#define JPEG_LIB_VERSION 90 /* Compatibility version 9.0 */
|
#define JPEG_LIB_VERSION 90 /* Compatibility version 9.0 */
|
||||||
#define JPEG_LIB_VERSION_MAJOR 9
|
#define JPEG_LIB_VERSION_MAJOR 9
|
||||||
#define JPEG_LIB_VERSION_MINOR 1
|
#define JPEG_LIB_VERSION_MINOR 2
|
||||||
|
|
||||||
|
|
||||||
/* Various constants determining the sizes of things.
|
/* Various constants determining the sizes of things.
|
||||||
@ -979,7 +979,7 @@ EXTERN(void) jpeg_mem_dest JPP((j_compress_ptr cinfo,
|
|||||||
unsigned char ** outbuffer,
|
unsigned char ** outbuffer,
|
||||||
unsigned long * outsize));
|
unsigned long * outsize));
|
||||||
EXTERN(void) jpeg_mem_src JPP((j_decompress_ptr cinfo,
|
EXTERN(void) jpeg_mem_src JPP((j_decompress_ptr cinfo,
|
||||||
unsigned char * inbuffer,
|
const unsigned char * inbuffer,
|
||||||
unsigned long insize));
|
unsigned long insize));
|
||||||
|
|
||||||
/* Default parameter setup for compression */
|
/* Default parameter setup for compression */
|
||||||
|
24
jpegtran.1
24
jpegtran.1
@ -1,4 +1,4 @@
|
|||||||
.TH JPEGTRAN 1 "13 September 2013"
|
.TH JPEGTRAN 1 "20 September 2015"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
jpegtran \- lossless transformation of JPEG files
|
jpegtran \- lossless transformation of JPEG files
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -19,6 +19,10 @@ for example from baseline JPEG to progressive JPEG or vice versa. It can also
|
|||||||
perform some rearrangements of the image data, for example turning an image
|
perform some rearrangements of the image data, for example turning an image
|
||||||
from landscape to portrait format by rotation.
|
from landscape to portrait format by rotation.
|
||||||
.PP
|
.PP
|
||||||
|
For EXIF files and JPEG files containing Exif data, you may prefer to use
|
||||||
|
.B exiftran
|
||||||
|
instead.
|
||||||
|
.PP
|
||||||
.B jpegtran
|
.B jpegtran
|
||||||
works by rearranging the compressed data (DCT coefficients), without
|
works by rearranging the compressed data (DCT coefficients), without
|
||||||
ever fully decoding the image. Therefore, its transformations are lossless:
|
ever fully decoding the image. Therefore, its transformations are lossless:
|
||||||
@ -28,7 +32,11 @@ followed by
|
|||||||
.B cjpeg
|
.B cjpeg
|
||||||
to accomplish the same conversion. But by the same token,
|
to accomplish the same conversion. But by the same token,
|
||||||
.B jpegtran
|
.B jpegtran
|
||||||
cannot perform lossy operations such as changing the image quality.
|
cannot perform lossy operations such as changing the image quality. However,
|
||||||
|
while the image data is losslessly transformed, metadata can be removed. See
|
||||||
|
the
|
||||||
|
.B \-copy
|
||||||
|
option for specifics.
|
||||||
.PP
|
.PP
|
||||||
.B jpegtran
|
.B jpegtran
|
||||||
reads the named JPEG/JFIF file, or the standard input if no file is
|
reads the named JPEG/JFIF file, or the standard input if no file is
|
||||||
@ -159,7 +167,8 @@ this does not hold for the given crop parameters, we silently move the upper
|
|||||||
left corner up and/or left to make it so, simultaneously increasing the
|
left corner up and/or left to make it so, simultaneously increasing the
|
||||||
region dimensions to keep the lower right crop corner unchanged. (Thus, the
|
region dimensions to keep the lower right crop corner unchanged. (Thus, the
|
||||||
output image covers at least the requested region, but may cover more.)
|
output image covers at least the requested region, but may cover more.)
|
||||||
The adjustment of the region dimensions may be optionally disabled.
|
The adjustment of the region dimensions may be optionally disabled by
|
||||||
|
attaching an 'f' character ("force") to the width or height number.
|
||||||
|
|
||||||
The image can be losslessly cropped by giving the switch:
|
The image can be losslessly cropped by giving the switch:
|
||||||
.TP
|
.TP
|
||||||
@ -206,16 +215,17 @@ such as comment blocks:
|
|||||||
.TP
|
.TP
|
||||||
.B \-copy none
|
.B \-copy none
|
||||||
Copy no extra markers from source file. This setting suppresses all
|
Copy no extra markers from source file. This setting suppresses all
|
||||||
comments and other excess baggage present in the source file.
|
comments and other metadata in the source file.
|
||||||
.TP
|
.TP
|
||||||
.B \-copy comments
|
.B \-copy comments
|
||||||
Copy only comment markers. This setting copies comments from the source file,
|
Copy only comment markers. This setting copies comments from the source file,
|
||||||
but discards any other inessential (for image display) data.
|
but discards any other metadata.
|
||||||
.TP
|
.TP
|
||||||
.B \-copy all
|
.B \-copy all
|
||||||
Copy all extra markers. This setting preserves miscellaneous markers
|
Copy all extra markers. This setting preserves metadata
|
||||||
found in the source file, such as JFIF thumbnails, Exif data, and Photoshop
|
found in the source file, such as JFIF thumbnails, Exif data, and Photoshop
|
||||||
settings. In some files these extra markers can be sizable.
|
settings. In some files these extra markers can be sizable. Note that this
|
||||||
|
option will copy thumbnails as-is; they will not be transformed.
|
||||||
.IP
|
.IP
|
||||||
The default behavior is
|
The default behavior is
|
||||||
.BR "\-copy comments" .
|
.BR "\-copy comments" .
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* jversion.h
|
* jversion.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-2014, Thomas G. Lane, Guido Vollbeding.
|
* Copyright (C) 1991-2016, Thomas G. Lane, Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -9,6 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define JVERSION "9a 19-Jan-2014"
|
#define JVERSION "9b 17-Jan-2016"
|
||||||
|
|
||||||
#define JCOPYRIGHT "Copyright (C) 2014, Thomas G. Lane, Guido Vollbeding"
|
#define JCOPYRIGHT "Copyright (C) 2016, Thomas G. Lane, Guido Vollbeding"
|
||||||
|
@ -60,17 +60,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
243
makefile.b32
Normal file
243
makefile.b32
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
# Makefile for Independent JPEG Group's software
|
||||||
|
|
||||||
|
# This makefile is suitable for Borland C on MS-DOS.
|
||||||
|
# It works with Borland C++ 32-bit for DOS, revision 5.0 or later.
|
||||||
|
# Thanks to Tom Wright and Ge' Weijers (original DOS) and
|
||||||
|
# Joe Slater for adding 32-bit additions (needed for Borland
|
||||||
|
# revision 5.5).
|
||||||
|
|
||||||
|
# Read installation instructions before saying "make" !!
|
||||||
|
|
||||||
|
# The name of your C compiler:
|
||||||
|
CC= bcc32
|
||||||
|
|
||||||
|
# You may need to adjust these cc options:
|
||||||
|
CFLAGS= -O2 -w-par -w-stu -w-ccc -w-rch -w-aus
|
||||||
|
# -w-par suppresses warnings about unused function parameters
|
||||||
|
# -w-stu suppresses warnings about incomplete structures
|
||||||
|
# -w-ccc suppresses warnings about compile-time-constant conditions
|
||||||
|
# -w-rch suppresses warnings about unreachable code
|
||||||
|
# Generally, we recommend defining any configuration symbols in jconfig.h,
|
||||||
|
# NOT via -D switches here.
|
||||||
|
|
||||||
|
# Link-time cc options:
|
||||||
|
LDFLAGS=
|
||||||
|
# -lc case-significant link
|
||||||
|
|
||||||
|
# Put here the object file name for the correct system-dependent memory
|
||||||
|
# manager file.
|
||||||
|
# SYSDEPMEMLIB must list the same files with "+" signs for the librarian.
|
||||||
|
SYSDEPMEM= jmemnobs.obj
|
||||||
|
SYSDEPMEMLIB= +jmemnobs.obj
|
||||||
|
|
||||||
|
# End of configurable options.
|
||||||
|
|
||||||
|
|
||||||
|
# source files: JPEG library proper
|
||||||
|
LIBSOURCES= jaricom.c jcapimin.c jcapistd.c jcarith.c jccoefct.c jccolor.c \
|
||||||
|
jcdctmgr.c jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c \
|
||||||
|
jcomapi.c jcparam.c jcprepct.c jcsample.c jctrans.c jdapimin.c \
|
||||||
|
jdapistd.c jdarith.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c \
|
||||||
|
jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c jdmaster.c \
|
||||||
|
jdmerge.c jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c \
|
||||||
|
jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c jquant1.c \
|
||||||
|
jquant2.c jutils.c jmemmgr.c
|
||||||
|
# memmgr back ends: compile only one of these into a working library
|
||||||
|
SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
|
||||||
|
# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
|
||||||
|
APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
|
||||||
|
rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
|
||||||
|
rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
|
||||||
|
SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
|
||||||
|
# files included by source files
|
||||||
|
INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
||||||
|
jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
|
||||||
|
# documentation, test, and support files
|
||||||
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
|
coderules.txt filelist.txt change.log
|
||||||
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
|
jconfig.vms
|
||||||
|
CONFIGUREFILES= config.guess config.sub install-sh ltmain.sh depcomp \
|
||||||
|
missing ar-lib
|
||||||
|
OTHERFILES= jconfig.txt ckconfig.c jmemdosa.asm libjpeg.map
|
||||||
|
TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
|
||||||
|
testimgp.jpg
|
||||||
|
DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
|
||||||
|
$(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
|
||||||
|
# library object files common to compression and decompression
|
||||||
|
COMOBJECTS= jaricom.obj jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM)
|
||||||
|
# compression library object files
|
||||||
|
CLIBOBJECTS= jcapimin.obj jcapistd.obj jcarith.obj jctrans.obj jcparam.obj \
|
||||||
|
jdatadst.obj jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj \
|
||||||
|
jcprepct.obj jccoefct.obj jccolor.obj jcsample.obj jchuff.obj \
|
||||||
|
jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj
|
||||||
|
# decompression library object files
|
||||||
|
DLIBOBJECTS= jdapimin.obj jdapistd.obj jdarith.obj jdtrans.obj jdatasrc.obj \
|
||||||
|
jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdmainct.obj \
|
||||||
|
jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj jidctflt.obj \
|
||||||
|
jidctint.obj jdsample.obj jdcolor.obj jquant1.obj jquant2.obj \
|
||||||
|
jdmerge.obj
|
||||||
|
# These objectfiles are included in libjpeg.lib
|
||||||
|
LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
|
||||||
|
# object files for sample applications (excluding library files)
|
||||||
|
COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj \
|
||||||
|
rdswitch.obj cdjpeg.obj
|
||||||
|
DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj \
|
||||||
|
rdcolmap.obj cdjpeg.obj
|
||||||
|
TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj
|
||||||
|
|
||||||
|
|
||||||
|
all: libjpeg.lib cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
|
||||||
|
|
||||||
|
libjpeg.lib: $(LIBOBJECTS)
|
||||||
|
- del libjpeg.lib
|
||||||
|
tlib libjpeg.lib /E /C @&&|
|
||||||
|
+jcapimin.obj +jcapistd.obj +jcarith.obj +jctrans.obj +jcparam.obj &
|
||||||
|
+jdatadst.obj +jcinit.obj +jcmaster.obj +jcmarker.obj +jcmainct.obj &
|
||||||
|
+jcprepct.obj +jccoefct.obj +jccolor.obj +jcsample.obj +jchuff.obj &
|
||||||
|
+jcdctmgr.obj +jfdctfst.obj +jfdctflt.obj +jfdctint.obj +jdapimin.obj &
|
||||||
|
+jdapistd.obj +jdarith.obj +jdtrans.obj +jdatasrc.obj +jdmaster.obj &
|
||||||
|
+jdinput.obj +jdmarker.obj +jdhuff.obj +jdmainct.obj +jdcoefct.obj &
|
||||||
|
+jdpostct.obj +jddctmgr.obj +jidctfst.obj +jidctflt.obj +jidctint.obj &
|
||||||
|
+jdsample.obj +jdcolor.obj +jquant1.obj +jquant2.obj +jdmerge.obj &
|
||||||
|
+jaricom.obj +jcomapi.obj +jutils.obj +jerror.obj +jmemmgr.obj &
|
||||||
|
$(SYSDEPMEMLIB)
|
||||||
|
|
|
||||||
|
|
||||||
|
cjpeg.exe: $(COBJECTS) libjpeg.lib
|
||||||
|
$(CC) $(LDFLAGS) -ecjpeg.exe $(COBJECTS) libjpeg.lib
|
||||||
|
|
||||||
|
djpeg.exe: $(DOBJECTS) libjpeg.lib
|
||||||
|
$(CC) $(LDFLAGS) -edjpeg.exe $(DOBJECTS) libjpeg.lib
|
||||||
|
|
||||||
|
jpegtran.exe: $(TROBJECTS) libjpeg.lib
|
||||||
|
$(CC) $(LDFLAGS) -ejpegtran.exe $(TROBJECTS) libjpeg.lib
|
||||||
|
|
||||||
|
rdjpgcom.exe: rdjpgcom.c
|
||||||
|
$(CC) $(CFLAGS) rdjpgcom.c
|
||||||
|
|
||||||
|
wrjpgcom.exe: wrjpgcom.c
|
||||||
|
$(CC) $(CFLAGS) wrjpgcom.c
|
||||||
|
|
||||||
|
# This "{}" syntax allows Borland Make to "batch" source files.
|
||||||
|
# In this way, each run of the compiler can build many modules.
|
||||||
|
.c.obj:
|
||||||
|
$(CC) $(CFLAGS) -c{ $<}
|
||||||
|
|
||||||
|
jconfig.h: jconfig.txt
|
||||||
|
echo You must prepare a system-dependent jconfig.h file.
|
||||||
|
echo Please read the installation directions in install.txt.
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- del *.obj
|
||||||
|
- del libjpeg.lib
|
||||||
|
- del cjpeg.exe
|
||||||
|
- del djpeg.exe
|
||||||
|
- del jpegtran.exe
|
||||||
|
- del rdjpgcom.exe
|
||||||
|
- del wrjpgcom.exe
|
||||||
|
- del testout*.*
|
||||||
|
|
||||||
|
test: cjpeg.exe djpeg.exe jpegtran.exe
|
||||||
|
- del testout*.*
|
||||||
|
djpeg -dct int -ppm -outfile testout.ppm testorig.jpg
|
||||||
|
djpeg -dct int -bmp -colors 256 -outfile testout.bmp testorig.jpg
|
||||||
|
cjpeg -dct int -outfile testout.jpg testimg.ppm
|
||||||
|
djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
|
||||||
|
cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
|
||||||
|
jpegtran -outfile testoutt.jpg testprog.jpg
|
||||||
|
echo n > n.tmp
|
||||||
|
comp testimg.ppm testout.ppm < n.tmp
|
||||||
|
comp testimg.bmp testout.bmp < n.tmp
|
||||||
|
comp testimg.jpg testout.jpg < n.tmp
|
||||||
|
comp testimg.ppm testoutp.ppm < n.tmp
|
||||||
|
comp testimgp.jpg testoutp.jpg < n.tmp
|
||||||
|
comp testorig.jpg testoutt.jpg < n.tmp
|
||||||
|
del n.tmp
|
||||||
|
|
||||||
|
|
||||||
|
jaricom.obj: jaricom.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcapimin.obj: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcapistd.obj: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcarith.obj: jcarith.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jccoefct.obj: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jccolor.obj: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcdctmgr.obj: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jchuff.obj: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcinit.obj: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcmainct.obj: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcmarker.obj: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcmaster.obj: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcomapi.obj: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcparam.obj: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcprepct.obj: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jcsample.obj: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jctrans.obj: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdapimin.obj: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdapistd.obj: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdarith.obj: jdarith.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdatadst.obj: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
|
||||||
|
jdatasrc.obj: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
|
||||||
|
jdcoefct.obj: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdcolor.obj: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jddctmgr.obj: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jdhuff.obj: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdinput.obj: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdmainct.obj: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdmarker.obj: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdmaster.obj: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdmerge.obj: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdpostct.obj: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdsample.obj: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jdtrans.obj: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jerror.obj: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
|
||||||
|
jfdctflt.obj: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jfdctfst.obj: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jfdctint.obj: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jidctflt.obj: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jidctfst.obj: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jidctint.obj: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
|
||||||
|
jquant1.obj: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jquant2.obj: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jutils.obj: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
|
||||||
|
jmemmgr.obj: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
|
||||||
|
jmemansi.obj: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
|
||||||
|
jmemname.obj: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
|
||||||
|
jmemnobs.obj: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
|
||||||
|
jmemdos.obj: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
|
||||||
|
jmemmac.obj: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
|
||||||
|
cjpeg.obj: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
|
||||||
|
djpeg.obj: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
|
||||||
|
jpegtran.obj: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
|
||||||
|
rdjpgcom.obj: rdjpgcom.c jinclude.h jconfig.h
|
||||||
|
wrjpgcom.obj: wrjpgcom.c jinclude.h jconfig.h
|
||||||
|
cdjpeg.obj: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
rdcolmap.obj: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
rdswitch.obj: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
transupp.obj: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
|
||||||
|
rdppm.obj: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
wrppm.obj: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
rdgif.obj: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
wrgif.obj: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
rdtarga.obj: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
wrtarga.obj: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
rdbmp.obj: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
wrbmp.obj: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
rdrle.obj: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
wrrle.obj: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
|
||||||
|
jmemdosa.obj: jmemdosa.asm
|
||||||
|
tasm /mx jmemdosa.asm
|
22
makefile.bcc
22
makefile.bcc
@ -87,17 +87,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
22
makefile.dj
22
makefile.dj
@ -60,17 +60,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
@ -61,17 +61,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
22
makefile.mc6
22
makefile.mc6
@ -58,17 +58,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
22
makefile.mms
22
makefile.mms
@ -47,17 +47,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
22
makefile.sas
22
makefile.sas
@ -69,17 +69,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
@ -64,17 +64,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
22
makefile.vc
22
makefile.vc
@ -57,17 +57,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt \
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc \
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 \
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 \
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc \
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 \
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 \
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 \
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 \
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 \
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 \
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 \
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 \
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 \
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 \
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 \
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 \
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st \
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac \
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas \
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx \
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
22
makefile.wat
22
makefile.wat
@ -59,17 +59,17 @@ INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h &
|
|||||||
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 &
|
DOCS= README install.txt usage.txt cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 &
|
||||||
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt &
|
wrjpgcom.1 wizard.txt example.c libjpeg.txt structure.txt &
|
||||||
coderules.txt filelist.txt change.log
|
coderules.txt filelist.txt change.log
|
||||||
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.bcc &
|
MKFILES= configure Makefile.in makefile.ansi makefile.unix makefile.b32 &
|
||||||
makefile.mc6 makefile.dj makefile.wat makefile.vc makejdsw.vc6 &
|
makefile.bcc makefile.mc6 makefile.dj makefile.wat makefile.vc &
|
||||||
makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 makecdep.vc6 &
|
makejdsw.vc6 makeadsw.vc6 makejdep.vc6 makejdsp.vc6 makejmak.vc6 &
|
||||||
makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 makedmak.vc6 &
|
makecdep.vc6 makecdsp.vc6 makecmak.vc6 makeddep.vc6 makeddsp.vc6 &
|
||||||
maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 makerdsp.vc6 &
|
makedmak.vc6 maketdep.vc6 maketdsp.vc6 maketmak.vc6 makerdep.vc6 &
|
||||||
makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 makejsln.v10 &
|
makerdsp.vc6 makermak.vc6 makewdep.vc6 makewdsp.vc6 makewmak.vc6 &
|
||||||
makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 makecfil.v10 &
|
makejsln.v10 makeasln.v10 makejvcx.v10 makejfil.v10 makecvcx.v10 &
|
||||||
makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 makervcx.v10 &
|
makecfil.v10 makedvcx.v10 makedfil.v10 maketvcx.v10 maketfil.v10 &
|
||||||
makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac makcjpeg.st &
|
makervcx.v10 makerfil.v10 makewvcx.v10 makewfil.v10 makeproj.mac &
|
||||||
makdjpeg.st makljpeg.st maktjpeg.st makefile.manx makefile.sas &
|
makcjpeg.st makdjpeg.st makljpeg.st maktjpeg.st makefile.manx &
|
||||||
makefile.mms makefile.vms makvms.opt
|
makefile.sas makefile.mms makefile.vms makvms.opt
|
||||||
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat &
|
CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat &
|
||||||
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas &
|
jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas &
|
||||||
jconfig.vms
|
jconfig.vms
|
||||||
|
2
missing
2
missing
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2013-10-28.13; # UTC
|
scriptversion=2013-10-28.13; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
* rdswitch.c
|
* rdswitch.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1996, Thomas G. Lane.
|
* Copyright (C) 1991-1996, Thomas G. Lane.
|
||||||
|
* Modified 2003-2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -347,8 +348,9 @@ set_sample_factors (j_compress_ptr cinfo, char *arg)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
if ((ch1 != 'x' && ch1 != 'X') || ch2 != ',') /* syntax check */
|
if ((ch1 != 'x' && ch1 != 'X') || ch2 != ',') /* syntax check */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (val1 <= 0 || val1 > 4 || val2 <= 0 || val2 > 4) {
|
if (val1 <= 0 || val1 > MAX_SAMP_FACTOR ||
|
||||||
fprintf(stderr, "JPEG sampling factors must be 1..4\n");
|
val2 <= 0 || val2 > MAX_SAMP_FACTOR) {
|
||||||
|
fprintf(stderr, "JPEG sampling factors must be 1..%d\n", MAX_SAMP_FACTOR);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
cinfo->comp_info[ci].h_samp_factor = val1;
|
cinfo->comp_info[ci].h_samp_factor = val1;
|
||||||
|
58
usage.txt
58
usage.txt
@ -14,7 +14,7 @@ INTRODUCTION
|
|||||||
|
|
||||||
These programs implement JPEG image encoding, decoding, and transcoding.
|
These programs implement JPEG image encoding, decoding, and transcoding.
|
||||||
JPEG (pronounced "jay-peg") is a standardized compression method for
|
JPEG (pronounced "jay-peg") is a standardized compression method for
|
||||||
full-color and gray-scale images.
|
full-color and grayscale images.
|
||||||
|
|
||||||
|
|
||||||
GENERAL USAGE
|
GENERAL USAGE
|
||||||
@ -47,12 +47,13 @@ or
|
|||||||
This syntax works on all systems, so it is useful for scripts.
|
This syntax works on all systems, so it is useful for scripts.
|
||||||
|
|
||||||
The currently supported image file formats are: PPM (PBMPLUS color format),
|
The currently supported image file formats are: PPM (PBMPLUS color format),
|
||||||
PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster Toolkit
|
PGM (PBMPLUS grayscale format), BMP, Targa, and RLE (Utah Raster Toolkit
|
||||||
format). (RLE is supported only if the URT library is available.)
|
format). (RLE is supported only if the URT library is available, which it
|
||||||
cjpeg recognizes the input image format automatically, with the exception
|
isn't on most non-Unix systems.) cjpeg recognizes the input image format
|
||||||
of some Targa-format files. You have to tell djpeg which format to generate.
|
automatically, with the exception of some Targa-format files. You have to
|
||||||
|
tell djpeg which format to generate.
|
||||||
|
|
||||||
JPEG files are in the defacto standard JFIF file format. There are other,
|
JPEG files are in the standard JFIF file format. There are other,
|
||||||
less widely used JPEG-based file formats, but we don't support them.
|
less widely used JPEG-based file formats, but we don't support them.
|
||||||
|
|
||||||
All switch names may be abbreviated; for example, -grayscale may be written
|
All switch names may be abbreviated; for example, -grayscale may be written
|
||||||
@ -292,10 +293,14 @@ The basic command line switches for djpeg are:
|
|||||||
highest quality output.) Currently, this is equivalent
|
highest quality output.) Currently, this is equivalent
|
||||||
to "-dct fast -nosmooth -onepass -dither ordered".
|
to "-dct fast -nosmooth -onepass -dither ordered".
|
||||||
|
|
||||||
-grayscale Force gray-scale output even if JPEG file is color.
|
-grayscale Force grayscale output even if JPEG file is color.
|
||||||
Useful for viewing on monochrome displays; also,
|
Useful for viewing on monochrome displays; also,
|
||||||
djpeg runs noticeably faster in this mode.
|
djpeg runs noticeably faster in this mode.
|
||||||
|
|
||||||
|
-rgb Force RGB output even if JPEG file is grayscale.
|
||||||
|
This is provided to support applications that don't
|
||||||
|
want to cope with grayscale as a separate case.
|
||||||
|
|
||||||
-scale M/N Scale the output image by a factor M/N. Currently
|
-scale M/N Scale the output image by a factor M/N. Currently
|
||||||
supported scale factors are M/N with all M from 1 to
|
supported scale factors are M/N with all M from 1 to
|
||||||
16, where N is the source DCT size, which is 8 for
|
16, where N is the source DCT size, which is 8 for
|
||||||
@ -309,7 +314,7 @@ The basic command line switches for djpeg are:
|
|||||||
|
|
||||||
-bmp Select BMP output format (Windows flavor). 8-bit
|
-bmp Select BMP output format (Windows flavor). 8-bit
|
||||||
colormapped format is emitted if -colors or -grayscale
|
colormapped format is emitted if -colors or -grayscale
|
||||||
is specified, or if the JPEG file is gray-scale;
|
is specified, or if the JPEG file is grayscale;
|
||||||
otherwise, 24-bit full-color format is emitted.
|
otherwise, 24-bit full-color format is emitted.
|
||||||
|
|
||||||
-gif Select GIF output format. Since GIF does not support
|
-gif Select GIF output format. Since GIF does not support
|
||||||
@ -319,18 +324,18 @@ The basic command line switches for djpeg are:
|
|||||||
|
|
||||||
-os2 Select BMP output format (OS/2 1.x flavor). 8-bit
|
-os2 Select BMP output format (OS/2 1.x flavor). 8-bit
|
||||||
colormapped format is emitted if -colors or -grayscale
|
colormapped format is emitted if -colors or -grayscale
|
||||||
is specified, or if the JPEG file is gray-scale;
|
is specified, or if the JPEG file is grayscale;
|
||||||
otherwise, 24-bit full-color format is emitted.
|
otherwise, 24-bit full-color format is emitted.
|
||||||
|
|
||||||
-pnm Select PBMPLUS (PPM/PGM) output format (this is the
|
-pnm Select PBMPLUS (PPM/PGM) output format (this is the
|
||||||
default format). PGM is emitted if the JPEG file is
|
default format). PGM is emitted if the JPEG file is
|
||||||
gray-scale or if -grayscale is specified; otherwise
|
grayscale or if -grayscale is specified; otherwise
|
||||||
PPM is emitted.
|
PPM is emitted.
|
||||||
|
|
||||||
-rle Select RLE output format. (Requires URT library.)
|
-rle Select RLE output format. (Requires URT library.)
|
||||||
|
|
||||||
-targa Select Targa output format. Gray-scale format is
|
-targa Select Targa output format. Grayscale format is
|
||||||
emitted if the JPEG file is gray-scale or if
|
emitted if the JPEG file is grayscale or if
|
||||||
-grayscale is specified; otherwise, colormapped format
|
-grayscale is specified; otherwise, colormapped format
|
||||||
is emitted if -colors is specified; otherwise, 24-bit
|
is emitted if -colors is specified; otherwise, 24-bit
|
||||||
full-color format is emitted.
|
full-color format is emitted.
|
||||||
@ -372,7 +377,7 @@ Switches for advanced users:
|
|||||||
The one-pass method is faster and needs less memory,
|
The one-pass method is faster and needs less memory,
|
||||||
but it produces a lower-quality image. -onepass is
|
but it produces a lower-quality image. -onepass is
|
||||||
ignored unless you also say -colors N. Also,
|
ignored unless you also say -colors N. Also,
|
||||||
the one-pass method is always used for gray-scale
|
the one-pass method is always used for grayscale
|
||||||
output (the two-pass method is no improvement then).
|
output (the two-pass method is no improvement then).
|
||||||
|
|
||||||
-maxmemory N Set limit for amount of memory to use in processing
|
-maxmemory N Set limit for amount of memory to use in processing
|
||||||
@ -479,14 +484,16 @@ jpegtran performs various useful transformations of JPEG files.
|
|||||||
It can translate the coded representation from one variant of JPEG to another,
|
It can translate the coded representation from one variant of JPEG to another,
|
||||||
for example from baseline JPEG to progressive JPEG or vice versa. It can also
|
for example from baseline JPEG to progressive JPEG or vice versa. It can also
|
||||||
perform some rearrangements of the image data, for example turning an image
|
perform some rearrangements of the image data, for example turning an image
|
||||||
from landscape to portrait format by rotation.
|
from landscape to portrait format by rotation. For EXIF files and JPEG files
|
||||||
|
containing Exif data, you may prefer to use exiftran instead.
|
||||||
|
|
||||||
jpegtran works by rearranging the compressed data (DCT coefficients), without
|
jpegtran works by rearranging the compressed data (DCT coefficients), without
|
||||||
ever fully decoding the image. Therefore, its transformations are lossless:
|
ever fully decoding the image. Therefore, its transformations are lossless:
|
||||||
there is no image degradation at all, which would not be true if you used
|
there is no image degradation at all, which would not be true if you used
|
||||||
djpeg followed by cjpeg to accomplish the same conversion. But by the same
|
djpeg followed by cjpeg to accomplish the same conversion. But by the same
|
||||||
token, jpegtran cannot perform lossy operations such as changing the image
|
token, jpegtran cannot perform lossy operations such as changing the image
|
||||||
quality.
|
quality. However, while the image data is losslessly transformed, metadata
|
||||||
|
can be removed. See the -copy option for specifics.
|
||||||
|
|
||||||
jpegtran uses a command line syntax similar to cjpeg or djpeg.
|
jpegtran uses a command line syntax similar to cjpeg or djpeg.
|
||||||
On Unix-like systems, you say:
|
On Unix-like systems, you say:
|
||||||
@ -557,7 +564,8 @@ this does not hold for the given crop parameters, we silently move the upper
|
|||||||
left corner up and/or left to make it so, simultaneously increasing the
|
left corner up and/or left to make it so, simultaneously increasing the
|
||||||
region dimensions to keep the lower right crop corner unchanged. (Thus, the
|
region dimensions to keep the lower right crop corner unchanged. (Thus, the
|
||||||
output image covers at least the requested region, but may cover more.)
|
output image covers at least the requested region, but may cover more.)
|
||||||
The adjustment of the region dimensions may be optionally disabled.
|
The adjustment of the region dimensions may be optionally disabled by
|
||||||
|
attaching an 'f' character ("force") to the width or height number.
|
||||||
|
|
||||||
The image can be losslessly cropped by giving the switch:
|
The image can be losslessly cropped by giving the switch:
|
||||||
-crop WxH+X+Y Crop to a rectangular subarea of width W, height H
|
-crop WxH+X+Y Crop to a rectangular subarea of width W, height H
|
||||||
@ -592,16 +600,18 @@ extended JPEG file at all.
|
|||||||
|
|
||||||
jpegtran also recognizes these switches that control what to do with "extra"
|
jpegtran also recognizes these switches that control what to do with "extra"
|
||||||
markers, such as comment blocks:
|
markers, such as comment blocks:
|
||||||
-copy none Copy no extra markers from source file. This setting
|
-copy none Copy no extra markers from source file.
|
||||||
suppresses all comments and other excess baggage
|
This setting suppresses all comments
|
||||||
present in the source file.
|
and other metadata in the source file.
|
||||||
-copy comments Copy only comment markers. This setting copies
|
-copy comments Copy only comment markers.
|
||||||
comments from the source file, but discards
|
This setting copies comments from the source file,
|
||||||
any other inessential (for image display) data.
|
but discards any other metadata.
|
||||||
-copy all Copy all extra markers. This setting preserves
|
-copy all Copy all extra markers. This setting preserves
|
||||||
miscellaneous markers found in the source file, such
|
metadata found in the source file, such as JFIF
|
||||||
as JFIF thumbnails, Exif data, and Photoshop settings.
|
thumbnails, Exif data, and Photoshop settings.
|
||||||
In some files these extra markers can be sizable.
|
In some files these extra markers can be sizable.
|
||||||
|
Note that this option will copy thumbnails as-is;
|
||||||
|
they will not be transformed.
|
||||||
The default behavior is -copy comments. (Note: in IJG releases v6 and v6a,
|
The default behavior is -copy comments. (Note: in IJG releases v6 and v6a,
|
||||||
jpegtran always did the equivalent of -copy none.)
|
jpegtran always did the equivalent of -copy none.)
|
||||||
|
|
||||||
|
7
wrgif.c
7
wrgif.c
@ -2,6 +2,7 @@
|
|||||||
* wrgif.c
|
* wrgif.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
|
* Modified 2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -218,7 +219,7 @@ put_3bytes (gif_dest_ptr dinfo, int val)
|
|||||||
LOCAL(void)
|
LOCAL(void)
|
||||||
emit_header (gif_dest_ptr dinfo, int num_colors, JSAMPARRAY colormap)
|
emit_header (gif_dest_ptr dinfo, int num_colors, JSAMPARRAY colormap)
|
||||||
/* Output the GIF file header, including color map */
|
/* Output the GIF file header, including color map */
|
||||||
/* If colormap==NULL, synthesize a gray-scale colormap */
|
/* If colormap==NULL, synthesize a grayscale colormap */
|
||||||
{
|
{
|
||||||
int BitsPerPixel, ColorMapSize, InitCodeSize, FlagByte;
|
int BitsPerPixel, ColorMapSize, InitCodeSize, FlagByte;
|
||||||
int cshift = dinfo->cinfo->data_precision - 8;
|
int cshift = dinfo->cinfo->data_precision - 8;
|
||||||
@ -270,7 +271,7 @@ emit_header (gif_dest_ptr dinfo, int num_colors, JSAMPARRAY colormap)
|
|||||||
put_3bytes(dinfo, GETJSAMPLE(colormap[0][i]) >> cshift);
|
put_3bytes(dinfo, GETJSAMPLE(colormap[0][i]) >> cshift);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Create a gray-scale map of num_colors values, range 0..255 */
|
/* Create a grayscale map of num_colors values, range 0..255 */
|
||||||
put_3bytes(dinfo, (i * 255 + (num_colors-1)/2) / (num_colors-1));
|
put_3bytes(dinfo, (i * 255 + (num_colors-1)/2) / (num_colors-1));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -393,7 +394,7 @@ jinit_write_gif (j_decompress_ptr cinfo)
|
|||||||
((j_common_ptr) cinfo, JPOOL_IMAGE, cinfo->output_width, (JDIMENSION) 1);
|
((j_common_ptr) cinfo, JPOOL_IMAGE, cinfo->output_width, (JDIMENSION) 1);
|
||||||
dest->pub.buffer_height = 1;
|
dest->pub.buffer_height = 1;
|
||||||
|
|
||||||
return (djpeg_dest_ptr) dest;
|
return &dest->pub;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* GIF_SUPPORTED */
|
#endif /* GIF_SUPPORTED */
|
||||||
|
16
wrjpgcom.c
16
wrjpgcom.c
@ -2,6 +2,7 @@
|
|||||||
* wrjpgcom.c
|
* wrjpgcom.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1994-1997, Thomas G. Lane.
|
* Copyright (C) 1994-1997, Thomas G. Lane.
|
||||||
|
* Modified 2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -453,6 +454,11 @@ main (int argc, char **argv)
|
|||||||
comment_arg = (char *) malloc((size_t) MAX_COM_LENGTH);
|
comment_arg = (char *) malloc((size_t) MAX_COM_LENGTH);
|
||||||
if (comment_arg == NULL)
|
if (comment_arg == NULL)
|
||||||
ERREXIT("Insufficient memory");
|
ERREXIT("Insufficient memory");
|
||||||
|
if (strlen(argv[argn]+1) >= (size_t) MAX_COM_LENGTH) {
|
||||||
|
fprintf(stderr, "Comment text may not exceed %u bytes\n",
|
||||||
|
(unsigned int) MAX_COM_LENGTH);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
strcpy(comment_arg, argv[argn]+1);
|
strcpy(comment_arg, argv[argn]+1);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
comment_length = (unsigned int) strlen(comment_arg);
|
comment_length = (unsigned int) strlen(comment_arg);
|
||||||
@ -462,9 +468,19 @@ main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if (++argn >= argc)
|
if (++argn >= argc)
|
||||||
ERREXIT("Missing ending quote mark");
|
ERREXIT("Missing ending quote mark");
|
||||||
|
if (strlen(comment_arg) + 1 + strlen(argv[argn]) >=
|
||||||
|
(size_t) MAX_COM_LENGTH) {
|
||||||
|
fprintf(stderr, "Comment text may not exceed %u bytes\n",
|
||||||
|
(unsigned int) MAX_COM_LENGTH);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
strcat(comment_arg, " ");
|
strcat(comment_arg, " ");
|
||||||
strcat(comment_arg, argv[argn]);
|
strcat(comment_arg, argv[argn]);
|
||||||
}
|
}
|
||||||
|
} else if (strlen(comment_arg) >= (size_t) MAX_COM_LENGTH) {
|
||||||
|
fprintf(stderr, "Comment text may not exceed %u bytes\n",
|
||||||
|
(unsigned int) MAX_COM_LENGTH);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
comment_length = (unsigned int) strlen(comment_arg);
|
comment_length = (unsigned int) strlen(comment_arg);
|
||||||
} else
|
} else
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
* wrtarga.c
|
* wrtarga.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1996, Thomas G. Lane.
|
* Copyright (C) 1991-1996, Thomas G. Lane.
|
||||||
|
* Modified 2015 by Guido Vollbeding.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@ -73,7 +74,7 @@ write_header (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo, int num_colors)
|
|||||||
targaheader[17] = 0x20; /* Top-down, non-interlaced */
|
targaheader[17] = 0x20; /* Top-down, non-interlaced */
|
||||||
|
|
||||||
if (cinfo->out_color_space == JCS_GRAYSCALE) {
|
if (cinfo->out_color_space == JCS_GRAYSCALE) {
|
||||||
targaheader[2] = 3; /* image type = uncompressed gray-scale */
|
targaheader[2] = 3; /* image type = uncompressed grayscale */
|
||||||
targaheader[16] = 8; /* bits per pixel */
|
targaheader[16] = 8; /* bits per pixel */
|
||||||
} else { /* must be RGB */
|
} else { /* must be RGB */
|
||||||
if (num_colors > 0) {
|
if (num_colors > 0) {
|
||||||
@ -247,7 +248,7 @@ jinit_write_targa (j_decompress_ptr cinfo)
|
|||||||
((j_common_ptr) cinfo, JPOOL_IMAGE, dest->buffer_width, (JDIMENSION) 1);
|
((j_common_ptr) cinfo, JPOOL_IMAGE, dest->buffer_width, (JDIMENSION) 1);
|
||||||
dest->pub.buffer_height = 1;
|
dest->pub.buffer_height = 1;
|
||||||
|
|
||||||
return (djpeg_dest_ptr) dest;
|
return &dest->pub;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* TARGA_SUPPORTED */
|
#endif /* TARGA_SUPPORTED */
|
||||||
|
Loading…
Reference in New Issue
Block a user