Add option to compression library and cjpeg (-block N) to use
different DCT block size.
All N from 1 to 16 are possible. Default is 8 (baseline format).
Larger values produce higher compression,
smaller values produce higher quality.
SmartScale capable decoder (introduced with IJG JPEG 8) required.
changes:
-Writing tables-only datastreams via jpeg_write_tables works again.
-Support 32-bit BMPs (RGB image with Alpha channel) for read in cjpeg.
-Improve accuracy in floating point IDCT calculation.
Specifying a version script that doesn't contain anything is pointless,
and seems to trigger toolchain bugs on DragonFlyBSD (PR pkg/42639).
Bump revision.
The current version is release 8 of 10-Jan-2010. Version 8 of the
JPEG software introduces basic new features for image coding
application and comes with an essential update of the original JPEG
specification.
New features and enhancements have been developed for the three
major parts of the IJG library: the compression, the decompression,
and the transcoding parts. These parts are represented by the three
major tools of the IJG software: cjpeg (compress JPEG), djpeg
(decompress JPEG), and jpegtran (transcode JPEG - lossless): IJG
Tools New jpegtran -scale lossless resize feature
A new option has been added to the jpegtran tool and transcoding
library:
-scale M/N Scale output image by fraction M/N, eg, 1/8
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 baseline JPEG. If
the /N part is omitted, then M specifies the DCT scaled size to be
applied on the given input. For baseline JPEG this is equivalent
to M/8 scaling, since the source DCT size for baseline JPEG is 8.
CAUTION: An implementation of the JPEG SmartScale extension is
required for this feature. SmartScale enabled JPEG is not yet widely
implemented, so many decoders will be unable to view a SmartScale
extended JPEG file at all.
New djpeg -scale feature
The -scale option of the djpeg tool and decompression library has
been extended:
-scale M/N Scale output image by fraction M/N, eg, 1/8
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 baseline JPEG. If
the /N part is omitted, then M specifies the DCT scaled size to be
applied on the given input. For baseline JPEG this is equivalent
to M/8 scaling, since the source DCT size for baseline JPEG is 8.
New cjpeg features
Two new features have been added to the cjpeg tool and compression
library:
-quality N[,...] Compression quality (0..100; 5-95 is
useful range) -scale M/N Scale image by fraction M/N,
eg, 1/2
The -quality option has been extended for support of separate
quality settings for luminance and chrominance (or in general, for
every provided quantization table slot). This feature is useful
for high-quality applications which cannot accept the damage of
color data by coarse subsampling settings. You can now easily reduce
the color data amount more smoothly with finer control without
separate subsampling. The resulting file is fully compliant with
standard JPEG decoders.
A new -scale option is provided with cjpeg which complements the
corresponding djpeg -scale option. The supported range of scaling
factors is 8/N with all N=1...16. This means you can now easily
alter the nominal spatial resolution of a given source image while
compressing to JPEG without additional resampling. For example,
if you have an image sensor providing an effective capture resolution
of 2268x1512 pixels (HI resolution), you can now directly generate
a MED resolution of 1512x1008 pixels (-scale 2/3) and a LOW resolution
of 1134x756 pixels (-scale 1/2) from the sensor source resolution
with the library while compressing to JPEG without additional
resampling. (An efficient 12x12 FDCT is used in the -scale 2/3
case, and an efficient 16x16 FDCT is used in the -scale 1/2 case
instead of the standard 8x8 FDCT inside the library, ensuring
high-quality downscaled results - the resulting file is fully
compliant with standard JPEG decoders.)
pkgsrc changes:
- update MASTER_SITES
- bump ApI_DEPENDS in buildlink3.mk
Upstream changes:
- The new features added with version 6bnb4 are now added upstream (except
exifautotran and jpegexiforient)
Version 7 27-Jun-2009
----------------------
New scaled DCTs implemented.
djpeg now supports scalings N/8 with all N from 1 to 16.
cjpeg now supports scalings 8/N with all N from 1 to 16.
Scaled DCTs with size larger than 8 are now also used for resolving the
common 2x2 chroma subsampling case without additional spatial resampling.
Separate spatial resampling for those kind of files is now only necessary
for N>8 scaling cases.
Furthermore, separate scaled DCT functions are provided for direct resolving
of the common asymmetric subsampling cases (2x1 and 1x2) without additional
spatial resampling.
cjpeg -quality option has been extended for support of separate quality
settings for luminance and chrominance (or in general, for every provided
quantization table slot).
New API function jpeg_default_qtables() and q_scale_factor array in library.
Added -nosmooth option to cjpeg, complementary to djpeg.
New variable "do_fancy_downsampling" in library, complement to fancy
upsampling. Fancy upsampling now uses direct DCT scaling with sizes
larger than 8. The old method is not reversible and has been removed.
Support arithmetic entropy encoding and decoding.
Added files jaricom.c, jcarith.c, jdarith.c.
Straighten the file structure:
Removed files jidctred.c, jcphuff.c, jchuff.h, jdphuff.c, jdhuff.h.
jpegtran has a new "lossless" cropping feature.
Implement -perfect option in jpegtran, new API function
jtransform_perfect_transform() in transupp. (DP 204_perfect.dpatch)
Better error messages for jpegtran fopen failure.
(DP 203_jpegtran_errmsg.dpatch)
Fix byte order issue with 16bit PPM/PGM files in rdppm.c/wrppm.c:
according to Netpbm, the de facto standard implementation of the PNM formats,
the most significant byte is first. (DP 203_rdppm.dpatch)
Add -raw option to rdjpgcom not to mangle the output.
(DP 205_rdjpgcom_raw.dpatch)
Make rdjpgcom locale aware. (DP 201_rdjpgcom_locale.dpatch)
Add extern "C" to jpeglib.h.
This avoids the need to put extern "C" { ... } around #include "jpeglib.h"
in your C++ application. Defining the symbol DONT_USE_EXTERN_C in the
configuration prevents this. (DP 202_jpeglib.h_c++.dpatch)
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
adopted by many Linux distributions as well as FreeBSD ports:
o jpegtran: add "-perfect" switch:
Fail if there are non-transformable edge blocks.
o jpegtran: add "-crop" switch:
Crop to a rectangular subarea.
o jpegtran: correct EXIF handling.
o jpegexiforient: Get and set the Exif Orientation Tag.
o exifautotran: Transforms Exif files so that Orientation becomes 1.
Suggested by dzoe on #NetBSD IRCNet.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
And use PKGMANDIR for the INSTALLATION_DIRS.
PKGREVISION not bumped -- no change in default build. And before
would have failed if PKGMANDIR was set to non-default.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
All library names listed by *.la files no longer need to be listed
in the PLIST, e.g., instead of:
lib/libfoo.a
lib/libfoo.la
lib/libfoo.so
lib/libfoo.so.0
lib/libfoo.so.0.1
one simply needs:
lib/libfoo.la
and bsd.pkg.mk will automatically ensure that the additional library
names are listed in the installed package +CONTENTS file.
Also make LIBTOOLIZE_PLIST default to "yes".
the normal case when BUILDLINK_DEPENDS.<pkg> isn't specified, it receives
a value only once due to the multiple inclusion protection in the
bulldlink3.mk files. In the case where a package includes several
buildlink3.mk files that each want a slightly different version of another
dependency, having BUILDLINK_DEPENDS.<pkg> be a list allows for the
strictest <pkg> dependency to be matched.
buildlink2.mk files back into the main trunk. This provides sufficient
buildlink2 infrastructure to start merging other packages from the
buildlink2 branch that have already been converted to use the buildlink2
framework.