diff -Naur 1.1.1 1.2.0
1.1.90 (1.2 beta1) ==================  Added a Java wrapper for the TurboJPEG API. See java/README for more details.  The TurboJPEG API can now be used to scale down images during decompression.  Added SIMD routines for RGB-to-grayscale color conversion, which significantly improves the performance of grayscale JPEG compression from an RGB source image.  Improved the performance of the C color conversion routines, which are used on platforms for which SIMD acceleration is not available.  Added a function to the TurboJPEG API that performs lossless transforms. This function is implemented using the same back end as jpegtran, but it performs transcoding entirely in memory and allows multiple transforms and/or crop operations to be batched together, so the source coefficients only need to be read once. This is useful when generating image tiles from a single source JPEG.  Added tests for the new TurboJPEG scaled decompression and lossless transform features to tjbench (the TurboJPEG benchmark, formerly called "jpgtest".)  Added support for 4:4:0 (transposed 4:2:2) subsampling in TurboJPEG, which was necessary in order for it to read 4:2:2 JPEG files that had been losslessly transposed or rotated 90 degrees.  All legacy VirtualGL code has been re-factored, and this has allowed libjpeg-turbo, in its entirety, to be re-licensed under a BSD-style license.  libjpeg-turbo can now be built with YASM.  Added SIMD acceleration for ARM Linux and iOS platforms that support NEON instructions.  Refactored the TurboJPEG C API and documented it using Doxygen. The TurboJPEG 1.2 API uses pixel formats to define the size and component order of the uncompressed source/destination images, and it includes a more efficient version of TJBUFSIZE() that computes a worst-case JPEG size based on the level of chrominance subsampling. The refactored implementation of TurboJPEG/OSS now uses the libjpeg memory source and destination managers, which allows the TurboJPEG compressor to grow the JPEG buffer as necessary.  Eliminated errors in the output of jpegtran on Windows that occurred when the application was invoked using I/O redirection (jpegtran <input.jpg >output.jpg).  The inclusion of libjpeg v7 and v8 emulation as well as arithmetic coding support in libjpeg-turbo v1.1.0 introduced several new error constants in jerror.h, and these were mistakenly enabled for all emulation modes, causing the error enum in libjpeg-turbo to sometimes have different values than the same enum in libjpeg. This represents an ABI incompatibility, and it caused problems with rare applications that took specific action based on a particular error value. The fix was to include the new error constants conditionally based on whether libjpeg v7 or v8 emulation was enabled.  Fixed an issue whereby Windows applications that used libjpeg-turbo would fail to compile if the Windows system headers were included before jpeglib.h. This issue was caused by a conflict in the definition of the INT32 type.  Fixed 32-bit supplementary package for amd64 Debian systems, which was broken by enhancements to the packaging system in 1.1.  When decompressing a JPEG image using an output colorspace of JCS_EXT_RGBX, JCS_EXT_BGRX, JCS_EXT_XBGR, or JCS_EXT_XRGB, libjpeg-turbo will now set the unused byte to 0xFF, which allows applications to interpret that byte as an alpha channel (0xFF = opaque). 1.2.0 =====  Fixed build issue with YASM on Unix systems (the libjpeg-turbo build system was not adding the current directory to the assembler include path, so YASM was not able to find jsimdcfg.inc.)  Fixed out-of-bounds read in SSE2 SIMD code that occurred when decompressing a JPEG image to a bitmap buffer whose size was not a multiple of 16 bytes. This was more of an annoyance than an actual bug, since it did not cause any actual run-time problems, but the issue showed up when running libjpeg-turbo in valgrind. See http://crbug.com/72399 for more information.  Added a compile-time macro (LIBJPEG_TURBO_VERSION) that can be used to check the version of libjpeg-turbo against which an application was compiled.  Added new RGBA/BGRA/ABGR/ARGB colorspace extension constants (libjpeg API) and pixel formats (TurboJPEG API), which allow applications to specify that, when decompressing to a 4-component RGB buffer, the unused byte should be set to 0xFF so that it can be interpreted as an opaque alpha channel.  Fixed regression issue whereby DevIL failed to build against libjpeg-turbo because libjpeg-turbo's distributed version of jconfig.h contained an INLINE macro, which conflicted with a similar macro in DevIL. This macro is used only internally when building libjpeg-turbo, so it was moved into config.h.  libjpeg-turbo will now correctly decompress erroneous CMYK/YCCK JPEGs whose K component is assigned a component ID of 1 instead of 4. Although these files are in violation of the spec, other JPEG implementations handle them correctly.  Added ARM v6 and ARM v7 architectures to libjpeg.a and libturbojpeg.a in the official OS X distribution package, so that those libraries can be used to build both OS X and iOS applications.