Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
README.md | 2023-08-23 | 8.3 kB | |
libjpeg-turbo-official_2.1.90_i386.deb | 2023-01-31 | 635.3 kB | |
libjpeg-turbo-official32_2.1.90_amd64.deb | 2023-01-31 | 396.1 kB | |
libjpeg-turbo-official-2.1.90.i386.rpm | 2023-01-31 | 800.5 kB | |
libjpeg-turbo-official-2.1.90.src.rpm | 2023-01-31 | 2.8 MB | |
libjpeg-turbo-official-2.1.90.x86_64.rpm | 2023-01-31 | 721.2 kB | |
libjpeg-turbo-official_2.1.90_amd64.deb | 2023-01-31 | 586.1 kB | |
libjpeg-turbo-official_2.1.90_arm64.deb | 2023-01-31 | 604.2 kB | |
libjpeg-turbo-2.1.90.tar.gz.sig | 2023-01-31 | 543 Bytes | |
libjpeg-turbo-ios-2.1.90.dmg | 2023-01-31 | 8.2 MB | |
libjpeg-turbo-official-2.1.90.aarch64.rpm | 2023-01-31 | 708.2 kB | |
libjpeg-turbo-2.1.90-vc64.exe | 2023-01-31 | 2.0 MB | |
libjpeg-turbo-2.1.90-vc.exe | 2023-01-31 | 1.6 MB | |
libjpeg-turbo-2.1.90.dmg | 2023-01-31 | 3.2 MB | |
libjpeg-turbo-2.1.90.tar.gz | 2023-01-31 | 2.8 MB | |
libjpeg-turbo-2.1.90-gcc64.exe | 2023-01-31 | 2.0 MB | |
libjpeg-turbo-2.1.90-gcc.exe | 2023-01-31 | 1.7 MB | |
Totals: 17 Items | 28.8 MB | 0 |
Package signatures
To ensure the integrity of the libjpeg-turbo binary packages, the RPM and DEB
files and the source tarball are signed using the following key:
https://www.libjpeg-turbo.org/key/LJT-GPG-KEY
https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x0338c8d8d9fda62cf9c421bd7ec2dbb6f4dbf434
and the Windows installers are signed using a code signing certificate.
Packaging changes
- The RPM packages now contain SHA-256 payload digests, which fixes an issue whereby the RPM signatures could not be verified on Red Hat Enterprise Linux with FIPS mode enabled.
- All Linux packages now require GLIBC 2.17 or later.
2.1.90 (3.0 beta1)
Significant changes relative to 2.1.5:
-
Significantly sped up the computation of optimal Huffman tables. This speeds up the compression of tiny images by as much as 2x and provides a noticeable speedup for images as large as 256x256 when using optimal Huffman tables.
-
All deprecated fields, constructors, and methods in the TurboJPEG Java API have been removed.
-
Arithmetic entropy coding is now supported with 12-bit-per-component JPEG images.
-
Overhauled the TurboJPEG API to address long-standing limitations and to make the API more extensible and intuitive:
- All C function names are now prefixed with
tj3
, and all version suffixes have been removed from the function names. Future API overhauls will increment the prefix totj4
, etc., thus retaining backward API/ABI compatibility without versioning each individual function. - Stateless boolean flags have been replaced with stateful integer API
parameters, the values of which persist between function calls. New
functions/methods (
tj3Set()
/TJCompressor.set()
/TJDecompressor.set()
andtj3Get()
/TJCompressor.get()
/TJDecompressor.get()
) can be used to set and query the value of a particular API parameter. - The JPEG quality and subsampling are now implemented using API parameters rather than stateless function arguments (C) or dedicated set/get methods (Java.)
tj3DecompressHeader()
now stores all relevant information about the JPEG image, including the width, height, subsampling type, entropy coding algorithm, etc., in API parameters rather than returning that information through pointer arguments.TJFLAG_LIMITSCANS
/TJ.FLAG_LIMITSCANS
has been reimplemented as an API parameter (TJPARAM_SCANLIMIT
/TJ.PARAM_SCANLIMIT
) that allows the number of scans to be specified.- Optimized baseline entropy coding (the computation of optimal Huffman
tables, as opposed to using the default Huffman tables) can now be specified,
using a new API parameter (
TJPARAM_OPTIMIZE
/TJ.PARAM_OPTIMIZE
), a new transform option (TJXOPT_OPTIMIZE
/TJTransform.OPT_OPTIMIZE
), and a new TJBench option (-optimize
.) - Arithmetic entropy coding can now be specified or queried, using a new
API parameter (
TJPARAM_ARITHMETIC
/TJ.PARAM_ARITHMETIC
), a new transform option (TJXOPT_ARITHMETIC
/TJTransform.OPT_ARITHMETIC
), and a new TJBench option (-arithmetic
.) - The restart marker interval can now be specified, using new API
parameters (
TJPARAM_RESTARTROWS
/TJ.PARAM_RESTARTROWS
andTJPARAM_RESTARTBLOCKS
/TJ.PARAM_RESTARTBLOCKS
) and a new TJBench option (-restart
.) - Pixel density can now be specified or queried, using new API parameters
(
TJPARAM_XDENSITY
/TJ.PARAM_XDENSITY
,TJPARAM_YDENSITY
/TJ.PARAM_YDENSITY
, andTJPARAM_DENSITYUNITS
/TJ.PARAM_DENSITYUNITS
.) - The accurate DCT/IDCT algorithms are now the default for both compression and decompression, since the "fast" algorithms are considered to be a legacy feature. (The "fast" algorithms do not pass the ISO compliance tests, and those algorithms are not any faster than the accurate algorithms on modern x86 CPUs.)
- All C initialization functions have been combined into a single function
(
tj3Init()
) that accepts an integer argument specifying the subsystems to initialize. - All C functions now use the
const
keyword for pointer arguments that point to unmodified buffers (and for both dimensions of pointer arguments that point to sets of unmodified buffers.) - All C functions now use
size_t
rather thanunsigned long
to represent buffer sizes, for compatibility withmalloc()
and to avoid disparities in the size ofunsigned long
between LP64 (Un*x) and LLP64 (Windows) operating systems. - All C buffer size functions now return 0 if an error occurs, rather than trying to awkwardly return -1 in an unsigned data type (which could easily be misinterpreted as a very large value.)
- Decompression scaling is now enabled explicitly, using a new
function/method (
tj3SetScalingFactor()
/TJDecompressor.setScalingFactor()
), rather than implicitly using awkward "desired width"/"desired height" arguments. - Partial image decompression has been implemented, using a new
function/method (
tj3SetCroppingRegion()
/TJDecompressor.setCroppingRegion()
) and a new TJBench option (-crop
.) - The JPEG colorspace can now be specified explicitly when compressing,
using a new API parameter (
TJPARAM_COLORSPACE
/TJ.PARAM_COLORSPACE
.) This allows JPEG images with the RGB and CMYK colorspaces to be created. - TJBench no longer generates error/difference images, since identical functionality is already available in ImageMagick.
- JPEG images with unknown subsampling configurations can now be fully decompressed into packed-pixel images or losslessly transformed (with the exception of lossless cropping.) They cannot currently be partially decompressed or decompressed into planar YUV images.
tj3Destroy()
now silently accepts a NULL handle.tj3Alloc()
andtj3Free()
now return/accept void pointers, asmalloc()
andfree()
do.- The C image I/O functions now accept a TurboJPEG instance handle, which is used to transmit/receive API parameter values and to receive error information.
- All C function names are now prefixed with
-
Added support for 8-bit-per-component, 12-bit-per-component, and 16-bit-per-component lossless JPEG images. A new libjpeg API function (
jpeg_enable_lossless()
), TurboJPEG API parameters (TJPARAM_LOSSLESS
/TJ.PARAM_LOSSLESS
,TJPARAM_LOSSLESSPSV
/TJ.PARAM_LOSSLESSPSV
, andTJPARAM_LOSSLESSPT
/TJ.PARAM_LOSSLESSPT
), and a cjpeg/TJBench option (-lossless
) can be used to create a lossless JPEG image. (Decompression of lossless JPEG images is handled automatically.) Refer to libjpeg.txt, usage.txt, and the TurboJPEG API documentation for more details. -
Added support for 12-bit-per-component (lossy and lossless) and 16-bit-per-component (lossless) JPEG images to the libjpeg and TurboJPEG APIs:
- The existing
data_precision
field injpeg_compress_struct
andjpeg_decompress_struct
has been repurposed to enable the creation of 12-bit-per-component and 16-bit-per-component JPEG images or to detect whether a 12-bit-per-component or 16-bit-per-component JPEG image is being decompressed. - New 12-bit-per-component and 16-bit-per-component versions of
jpeg_write_scanlines()
andjpeg_read_scanlines()
, as well as new 12-bit-per-component versions ofjpeg_write_raw_data()
,jpeg_skip_scanlines()
,jpeg_crop_scanline()
, andjpeg_read_raw_data()
, provide interfaces for compressing from/decompressing to 12-bit-per-component and 16-bit-per-component packed-pixel and planar YUV image buffers. - New 12-bit-per-component and 16-bit-per-component compression,
decompression, and image I/O functions/methods have been added to the TurboJPEG
API, and a new API parameter (
TJPARAM_PRECISION
/TJ.PARAM_PRECISION
) can be used to query the data precision of a JPEG image. (YUV functions are currently limited to 8-bit data precision but can be expanded to accommodate 12-bit data precision in the future, if such is deemed beneficial.) - A new cjpeg and TJBench command-line argument (
-precision
) can be used to create a 12-bit-per-component or 16-bit-per-component JPEG image. (Decompression and transformation of 12-bit-per-component and 16-bit-per-component JPEG images is handled automatically.)
Refer to libjpeg.txt, usage.txt, and the TurboJPEG API documentation for more details.
- The existing