Lines Matching +full:test +full:. +full:rgb
1 1.5.1
4 ### Significant changes relative to 1.5.0:
6 1. Previously, the undocumented `JSIMD_FORCE*` environment variables could be
8 sets were available on a particular platform. On x86 platforms, where CPU
11 use of an instruction set only if that instruction set is available. However,
16 instructions. A new environment variable (`JSIMD_FORCEDSPR2`) was introduced
18 `JSIMD_FORCENONE` environment variable was extended to that implementation.
19 These environment variables provide a workaround for those attempting to test
21 /proc/cpuinfo from the host system.
23 2. libjpeg-turbo previously assumed that AltiVec instructions were always
26 and newer e5500 series.) libjpeg-turbo now examines /proc/cpuinfo on
28 them. It also now provides two environment variables, `JSIMD_FORCEALTIVEC` and
31 detection (such as when running in QEMU.) On OS X, libjpeg-turbo continues to
34 `JSIMD_FORCENONE` to `1`.
36 3. Fixed an issue whereby 64-bit ARM (AArch64) builds of libjpeg-turbo would
37 crash when built with recent releases of the Clang/LLVM compiler. This was
39 routines. Those routines were incorrectly using 64-bit instructions to
41 (unused) 32 bits of a 32-bit argument's register to be undefined. The new
44 conformance issue.
46 4. Fancy upsampling is now supported when decompressing JPEG images that use
47 4:4:0 (h1v2) chroma subsampling. These images are generated when losslessly
48 rotating or transposing JPEG images that use 4:2:2 (h2v1) chroma subsampling.
49 The h1v2 fancy upsampling algorithm is not currently SIMD-accelerated.
51 5. If merged upsampling isn't SIMD-accelerated but YCbCr-to-RGB conversion is,
53 JPEG images into RGB or extended RGB output images. This significantly speeds
56 specified.)
58 6. The TurboJPEG API will now decompress 4:2:2 and 4:4:0 JPEG images with
59 2x2 luminance sampling factors and 2x1 or 1x2 chrominance sampling factors.
63 and the libjpeg API both allow it.
65 7. Fixed an unsigned integer overflow in the libjpeg memory manager, detected
67 attempting to decompress a specially-crafted malformed JPEG image. This issue
70 the future.
72 8. Fixed additional negative left shifts and other issues reported by the GCC
74 specially-crafted malformed JPEG images. None of these issues posed a security
76 issues, should they arise in the future.
78 9. Fixed an out-of-bounds array reference, introduced by 1.4.90[2] (partial
81 than four components. Because the out-of-bounds reference was still within the
84 the future.
86 10. Fixed another ABI conformance issue in the 64-bit ARM (AArch64) NEON SIMD
87 code. Some of the routines were incorrectly reading and storing data below the
89 circumstances.
92 1.5.0
97 1. Fixed an issue whereby a malformed motion-JPEG frame could cause the "fast
98 path" of libjpeg-turbo's Huffman decoder to read from uninitialized memory.
100 2. Added libjpeg-turbo version and build information to the global string table
101 of the libjpeg and TurboJPEG API libraries. This is a common practice in other
104 application was linked against.
106 3. Fixed a couple of issues in the PPM reader that would cause buffer overruns
108 maximum value defined in the file's header. libjpeg-turbo 1.4.2 already
109 included a similar fix for ASCII PPM/PGM files. Note that these issues were
111 affect any of the libjpeg-turbo libraries.
113 4. Fixed an issue whereby attempting to decompress a JPEG file with a corrupt
116 stack. This only occurred if `tjDecompressToYUV2()` was called prior to
119 the TurboJPEG API.)
121 5. Fixed an issue in the ARM 32-bit SIMD-accelerated Huffman encoder that
122 prevented the code from assembling properly with clang.
124 6. The `jpeg_stdio_src()`, `jpeg_mem_src()`, `jpeg_stdio_dest()`, and
127 decompress object by a different function or by the calling program. This
130 it would be big enough to accommodate the new source/destination manager.
133 1.4.90 (1.5 beta1)
136 ### Significant changes relative to 1.4.2:
138 1. Added full SIMD acceleration for PowerPC platforms using AltiVec VMX
139 (128-bit SIMD) instructions. Although the performance of libjpeg-turbo on
141 to the compiler vs. x86, it was still possible to speed up compression by about
143 use of AltiVec instructions.
145 2. Added two new libjpeg API functions (`jpeg_skip_scanlines()` and
146 `jpeg_crop_scanline()`) that can be used to partially decode a JPEG image. See
147 [libjpeg.txt](libjpeg.txt) for more details.
149 3. The TJCompressor and TJDecompressor classes in the TurboJPEG Java API now
151 try-with-resources statement.
153 4. The TurboJPEG Java classes now throw unchecked idiomatic exceptions
156 type (TJException) for errors that are passed through from the C library.
158 5. Source buffers for the TurboJPEG C API functions, as well as the
160 pointers. This facilitates passing read-only buffers to those functions and
161 ensures the caller that the source buffer will not be modified. This should
163 releases.
165 6. The MIPS DSPr2 SIMD code can now be compiled to support either FR=0 or FR=1
166 FPUs.
168 7. Fixed additional negative left shifts and other issues reported by the GCC
169 and Clang undefined behavior sanitizers. Most of these issues affected only
172 arise in the future.
174 8. Removed the unnecessary `.arch` directive from the ARM64 NEON SIMD code.
176 integrated assembler.
178 9. Fixed a regression caused by 1.4.1[6] that prevented 32-bit and 64-bit
180 distributions. This was due to the addition of a macro in jconfig.h that
181 allows the Huffman codec to determine the word size at compile time. Since
184 are not allowed when 32-bit and 64-bit RPMs are installed simultaneously.)
185 Since the macro is used only internally, it has been moved into jconfigint.h.
187 10. The x86-64 SIMD code can now be disabled at run time by setting the
189 already had this capability.)
191 11. Added a new command-line argument to TJBench (`-nowrite`) that prevents the
192 benchmark from outputting any images. This removes any potential operating
194 the consistency of the performance measurements.
196 12. Added SIMD acceleration for Huffman encoding on SSE2-capable x86 and x86-64
197 platforms. This speeds up the compression of full-color JPEGs by about 10-15%
198 on average (relative to libjpeg-turbo 1.4.x) when using modern Intel and AMD
199 CPUs. Additionally, this works around an issue in the clang optimizer that
202 (<https://llvm.org/bugs/show_bug.cgi?id=16035>). For the purposes of
204 disabled by setting the `JSIMD_NOHUFFENC` environment variable to `1`.
206 13. Added ARM 64-bit (ARMv8) NEON SIMD implementations of the commonly-used
209 implementation.) This speeds up the compression of full-color JPEGs by about
211 Cortex-A53 and Cortex-A57 cores.
213 14. Added SIMD acceleration for Huffman encoding on NEON-capable ARM 32-bit
214 and 64-bit platforms.
219 Cortex-A57), relative to libjpeg-turbo 1.4.x. Note that the larger speedup
221 the C Huffman encoder as well as GCC does.
227 [13] above.
231 variable to `1`.
233 15. pkg-config (.pc) scripts are now included for both the libjpeg and
234 TurboJPEG API libraries on Un*x systems. Note that if a project's build system
236 with libjpeg or with a prior version of libjpeg-turbo.
238 16. Optimized the ARM 64-bit (ARMv8) NEON SIMD decompression routines to
239 improve performance on CPUs with in-order pipelines. This speeds up the
241 processor and by about 15% on average on a Cortex-A53 core.
243 17. Fixed an issue in the accelerated Huffman decoder that could have caused
245 specially-crafted JPEG image was being decompressed. In prior versions of
247 if there were > 128 bytes of data in the input buffer. However, it is possible
250 decoder only if there are > 512 bytes of data in the input buffer.
252 18. Fixed a memory leak in tjunittest encountered when running the program
253 with the `-yuv` option.
256 1.4.2
259 ### Significant changes relative to 1.4.1:
261 1. Fixed an issue whereby cjpeg would segfault if a Windows bitmap with a
264 rare and not supported by libjpeg-turbo.)
266 2. Fixed an issue whereby, under certain circumstances, libjpeg-turbo would
268 forward DCT were used. This was known to cause `make test` to fail when the
269 library was built with `-march=haswell` on x86 systems.
271 3. Fixed an issue whereby libjpeg-turbo would crash when built with the latest
272 & greatest development version of the Clang/LLVM compiler. This was caused by
274 routines. Those routines were incorrectly using a 64-bit `mov` instruction to
276 (unused) 32 bits of a 32-bit argument's register to be undefined. The new
279 conformance issue.
281 4. Fixed a bug in the MIPS DSPr2 4:2:0 "plain" (non-fancy and non-merged)
284 pixels. The "plain" upsampling routines are normally only used when
286 a JPEG image whose scaled output height is 1.
288 5. Fixed various negative left shifts and other issues reported by the GCC and
289 Clang undefined behavior sanitizers. None of these was known to pose a
291 security issues, should they arise in the future.
294 1.4.1
297 ### Significant changes relative to 1.4.0:
299 1. tjbench now properly handles CMYK/YCCK JPEG files. Passing an argument of
300 `-cmyk` (instead of, for instance, `-rgb`) will cause tjbench to internally
302 files, and to internally convert the decompressed CMYK pixels back to RGB after
304 passed to tjbench as a source image.) The CMYK<->RGB conversion operation is
305 not benchmarked. NOTE: The quick & dirty CMYK<->RGB conversions that tjbench
306 uses are suitable for testing only. Proper conversion between CMYK and RGB
307 requires a color management system.
309 2. `make test` now performs additional bitwise regression tests using tjbench,
311 of a larger image buffer.
313 3. `make test` no longer tests the regression of the floating point DCT/IDCT
315 question are not implemented using SIMD instructions on a particular platform.
316 See the comments in [Makefile.am](Makefile.am) for information on how to
318 particulars of your platform.
320 4. The NULL color conversion routines have been significantly optimized,
321 which speeds up the compression of RGB and CMYK JPEGs by 5-20% when using
323 images by 10-30% when using 64-bit code and 3-12% when using 32-bit code.
325 5. Fixed an "illegal instruction" error that occurred when djpeg from a
327 on a MIPS machine that lacked DSPr2 support. The MIPS SIMD routines for h2v1
329 DSPr2.
331 6. Performance has been improved significantly on 64-bit non-Linux and
333 decompression.) Due to an oversight, the 64-bit version of the accelerated
335 platforms other than Windows or Linux. Oops.
337 7. Fixed an extremely rare bug in the Huffman encoder that caused 64-bit
338 builds of libjpeg-turbo to incorrectly encode a few specific test images when
340 used.
342 8. The Windows (CMake) build system now supports building only static or only
343 shared libraries. This is accomplished by adding either `-DENABLE_STATIC=0` or
344 `-DENABLE_SHARED=0` to the CMake command line.
346 9. TurboJPEG API functions will now return an error code if a warning is
347 triggered in the underlying libjpeg API. For instance, if a JPEG file is
350 indicate that the decompression was not entirely successful.
352 10. Fixed a bug in the MIPS DSPr2 4:2:2 fancy upsampling routine that caused a
354 in which the right-most MCU was 5 or 6 pixels wide.
357 1.4.0
362 1. Fixed a build issue on OS X PowerPC platforms (md5cmp failed to build
363 because OS X does not provide the `le32toh()` and `htole32()` functions.)
365 2. The non-SIMD RGB565 color conversion code did not work correctly on big
366 endian machines. This has been fixed.
368 3. Fixed an issue in `tjPlaneSizeYUV()` whereby it would erroneously return 1
369 instead of -1 if `componentID` was > 0 and `subsamp` was `TJSAMP_GRAY`.
371 3. Fixed an issue in `tjBufSizeYUV2()` whereby it would erroneously return 0
372 instead of -1 if `width` was < 1.
374 5. The Huffman encoder now uses `clz` and `bsr` instructions for bit counting
375 on ARM64 platforms (see 1.4 beta1[5].)
377 6. The `close()` method in the TJCompressor and TJDecompressor Java classes is
378 now idempotent. Previously, that method would call the native `tjDestroy()`
379 function even if the TurboJPEG instance had already been destroyed. This
381 had already been called. The exception was caught, but it was still an
382 expensive operation.
384 7. The TurboJPEG API previously generated an error (`Could not determine
387 with `cjpeg -grayscale -sample 2x2`). Subsampling technically has no meaning
389 for such images are ignored by the decompressor. However, the TurboJPEG API
391 before it treated the image as a grayscale JPEG.
393 8. cjpeg, djpeg, and jpegtran now accept an argument of `-version`, which will
394 print the library version and exit.
396 9. Referring to 1.4 beta1[15], another extremely rare circumstance was
399 extremely-high-frequency block (basically junk image data) is being encoded.
402 be overrun. Further analysis reveals that, in the absolute worst case (such as
405 size of the unencoded blocks. Thus, the Huffman local buffer was increased to
406 256 bytes, which should prevent any such issue from re-occurring in the future.
408 10. The new `tjPlaneSizeYUV()`, `tjPlaneWidth()`, and `tjPlaneHeight()`
410 because those functions were not included in the libturbojpeg mapfile. This
411 has been fixed.
413 11. Restored the `JPP()`, `JMETHOD()`, and `FAR` macros in the libjpeg-turbo
414 header files. The `JPP()` and `JMETHOD()` macros were originally implemented
416 prototype parameters. libjpeg-turbo has never supported such compilers, but
417 some software packages still use the macros to define their own prototypes.
419 have far symbols, but some software packages still use the `FAR` macro. A
422 easier to fix it here.
424 12. Fixed issues that were preventing the ARM 64-bit SIMD code from compiling
426 the "official" libjpeg-turbo SDK for OS X.
429 1.3.90 (1.4 beta1)
432 ### Significant changes relative to 1.3.1:
434 1. New features in the TurboJPEG API:
438 supported.)
440 scaling.
441 - JPEG images can now be compressed from YUV planar source images.
442 - YUV planar images can now be decoded into RGB or grayscale images.
443 - 4:1:1 subsampling is now supported. This is mainly included for
445 significant advantages relative to 4:2:0.
446 - CMYK images are now supported. This feature allows CMYK source images
448 CMYK destination images. Conversion between CMYK/YCCK and RGB or YUV images is
449 not supported. Such conversion requires a color management system and is thus
450 out of scope for a codec library.
452 refactored and should now be much more intuitive.
454 position in a large image buffer.
456 on separate image planes instead of a unified image buffer. This allows for
458 YUV image. It also allows for handling YUV formats that swap the order of the
459 U and V planes.
461 2. Added SIMD acceleration for DSPr2-capable MIPS platforms. This speeds up
463 decompression by 25-35%.
465 3. If an application attempts to decompress a Huffman-coded JPEG image whose
467 default Huffman tables. In order to save space, many motion JPEG video frames
470 of the application. An application can still override the Huffman tables, for
471 instance to re-use tables from a previous frame of the same video.
473 4. The Mac packaging system now uses pkgbuild and productbuild rather than
474 PackageMaker (which is obsolete and no longer supported.) This means that
477 later. OS X 10.4 "Tiger" is no longer supported.
479 5. The Huffman encoder now uses `clz` and `bsr` instructions for bit counting
480 on ARM platforms rather than a lookup table. This reduces the memory footprint
481 by 64k, which may be important for some mobile applications. Out of four
486 code (~10-20%) when enabling the feature. Actual mileage may vary.
488 6. Worked around an issue with Visual C++ 2010 and later that caused incorrect
490 if compiler optimization was enabled when libjpeg-turbo was built. This caused
492 and later.
494 7. Improved the accuracy and performance of the non-SIMD implementation of the
495 floating point inverse DCT (using code borrowed from libjpeg v8a and later.)
497 implementation. Note, however, that the floating point DCT/IDCT algorithms are
498 mainly a legacy feature. They generally do not produce significantly better
500 slower.
502 8. Added a new output colorspace (`JCS_RGB565`) to the libjpeg API that allows
503 for decompressing JPEG images into RGB565 (16-bit) pixels. If dithering is not
504 used, then this code path is SIMD-accelerated on ARM platforms.
506 9. Numerous obsolete features, such as support for non-ANSI compilers and
508 greatly improving its readability and making it easier to maintain and extend.
510 10. Fixed a segfault that occurred when calling `output_message()` with
511 `msg_code` set to `JMSG_COPYRIGHT`.
513 11. Fixed an issue whereby wrjpgcom was allowing comments longer than 65k
515 incorrect JPEG files.
517 12. Fixed a bug in the build system that was causing the Windows version of
518 wrjpgcom to be built using the rdjpgcom source code.
520 13. Restored 12-bit-per-component JPEG support. A 12-bit version of
522 configure (Unix) or `-DWITH_12BIT=1` to cmake (Windows.) 12-bit JPEG support
523 is included only for convenience. Enabling this feature disables all of the
525 TurboJPEG API. The resulting library still contains the other libjpeg-turbo
527 faster than libjpeg v6b.
529 14. Added ARM 64-bit SIMD acceleration for the YCC-to-RGB color conversion
530 and IDCT algorithms (both are used during JPEG decompression.) For unknown
532 iOS.
534 15. Fixed an extremely rare bug that could cause the Huffman encoder's local
537 resized by the destination manager. This issue was so rare that, even with a
538 test program specifically designed to make the bug occur (by injecting random
540 about every 25 million iterations.
542 16. Fixed an oversight in the TurboJPEG C wrapper: if any of the JPEG
547 compressed JPEG image. If the size of the previous JPEG image was not as large
549 destination buffer.
552 1.3.1
555 ### Significant changes relative to 1.3.0:
557 1. On Un*x systems, `make install` now installs the libjpeg-turbo libraries
560 x86-64. You can override this by overriding either the `prefix` or `libdir`
561 configure variables.
563 2. The Windows installer now places a copy of the TurboJPEG DLLs in the same
564 directory as the rest of the libjpeg-turbo binaries. This was mainly done
565 to support TurboVNC 1.3, which bundles the DLLs in its Windows installation.
568 TurboVNC build scripts to bundle the 64-bit TurboJPEG DLL.
570 3. Fixed a bug whereby attempting to encode a progressive JPEG with arithmetic
573 omitted at compile time`.
575 4. Fixed a couple of issues whereby malformed JPEG images would cause
576 libjpeg-turbo to use uninitialized memory during decompression.
578 5. Fixed an error (`Buffer passed to JPEG library is too small`) that occurred
580 source image, and added a unit test to check for this error.
582 6. The Java classes should now build properly under Visual Studio 2010 and
583 later.
585 7. Fixed an issue that prevented SRPMs generated using the in-tree packaging
586 tools from being rebuilt on certain newer Linux distributions.
588 8. Numerous minor fixes to eliminate compilation and build/packaging system
590 source cleanup.
593 1.3.0
598 1. `make test` now works properly on FreeBSD, and it no longer requires the
599 md5sum executable to be present on other Un*x platforms.
601 2. Overhauled the packaging system:
605 "libjpeg-turbo-official".
608 packages and also to streamline the packaging system.
610 by the configure variables `prefix`, `bindir`, `libdir`, etc. (Un\*x) or by the
611 `CMAKE_INSTALL_PREFIX` variable (Windows.) The exception is that the docs are
614 system directory.
617 /opt/libjpeg-turbo/lib32 and the 64-bit libraries in /opt/libjpeg-turbo/lib64.
620 the same package.
622 `WITH_JAVA=1` would fail if the TurboJPEG JAR had not been previously built.
624 same places that the installer does.
626 3. Fixed a Huffman encoder bug that prevented I/O suspension from working
627 properly.
630 1.2.90 (1.3 beta1)
633 ### Significant changes relative to 1.2.1:
635 1. Added support for additional scaling factors (3/8, 5/8, 3/4, 7/8, 9/8, 5/4,
636 11/8, 3/2, 13/8, 7/4, 15/8, and 2) when decompressing. Note that the IDCT will
637 not be SIMD-accelerated when using any of these new scaling factors.
639 2. The TurboJPEG dynamic library is now versioned. It was not strictly
642 function is provided to maintain backward compatibility. However, certain
644 versioned.
646 3. Extended the TurboJPEG Java API so that it can be used to compress a JPEG
648 image buffer.
650 4. The `tjDecompressToYUV()` function now supports the `TJFLAG_FASTDCT` flag.
652 5. The 32-bit supplementary package for amd64 Debian systems now provides
653 symlinks in /usr/lib/i386-linux-gnu for the TurboJPEG libraries in /usr/lib32.
655 Ubuntu 11 and later) without setting the linker path.
657 6. The TurboJPEG Java wrapper should now find the JNI library on Mac systems
658 without having to pass `-Djava.library.path=/usr/lib` to java.
660 7. TJBench has been ported to Java to provide a convenient way of validating
661 the performance of the TurboJPEG Java API. It can be run with
662 `java -cp turbojpeg.jar TJBench`.
664 8. cjpeg can now be used to generate JPEG files with the RGB colorspace
665 (feature ported from jpeg-8d.)
667 9. The width and height in the `-crop` argument passed to jpegtran can now be
670 corner should be moved by the same amount. In other words, this feature causes
672 bottom right corner (feature ported from jpeg-8d.)
674 10. JPEG files using the RGB colorspace can now be decompressed into grayscale
675 images (feature ported from jpeg-8d.)
677 11. Fixed a regression caused by 1.2.1[7] whereby the build would fail with
679 SIMD code with NASM 0.98.
681 12. The in-memory source/destination managers (`jpeg_mem_src()` and
685 ABI. The "age number" of the libjpeg-turbo library on Un*x systems has been
686 incremented by 1 to reflect this. You can disable this feature with a
688 libjpeg v6b or v7 API/ABI (or with previous versions of libjpeg-turbo.) See
689 [README.md](README.md) for more details.
691 13. Added ARMv7s architecture to libjpeg.a and libturbojpeg.a in the official
693 build applications that leverage the faster CPUs in the iPhone 5 and iPad 4.
696 1.2.1
699 ### Significant changes relative to 1.2.0:
701 1. Creating or decoding a JPEG file that uses the RGB colorspace should now
703 colorspace extensions.
705 2. When libjpeg-turbo was built without SIMD support and merged (non-fancy)
708 0xFF. This has been fixed. TJUnitTest has also been extended to test for the
709 correct behavior of the colorspace extensions when merged upsampling is used.
711 3. Fixed a bug whereby the libjpeg-turbo SSE2 SIMD code would not preserve the
713 calling conventions.
715 4. Fixed a regression caused by 1.2.0[6] whereby decompressing corrupt JPEG
717 to a large value) would cause libjpeg-turbo to segfault.
719 5. Worked around a severe performance issue with "Bobcat" (AMD Embedded APU)
720 processors. The `MASKMOVDQU` instruction, which was used by the libjpeg-turbo
722 it is painfully slow on Bobcat processors in particular. Eliminating the use
724 processors and by a small amount (typically 5%) on AMD desktop processors.
726 6. Added SIMD acceleration for performing 4:2:2 upsampling on NEON-capable ARM
727 platforms. This speeds up the decompression of 4:2:2 JPEGs by 20-25% on such
728 platforms.
730 7. Fixed a regression caused by 1.2.0[2] whereby, on Linux/x86 platforms
732 4:2:2 JPEG image into a 32-bit (RGBX, BGRX, etc.) buffer without using fancy
735 divisible by 16 bytes.
737 8. Fixed an issue whereby attempting to build the SIMD extensions with Xcode
739 "'%define' expects a macro identifier".
741 9. Added flags to the TurboJPEG API that allow the caller to force the use of
742 either the fast or the accurate DCT/IDCT algorithms in the underlying codec.
745 1.2.0
750 1. Fixed build issue with YASM on Unix systems (the libjpeg-turbo build system
752 was not able to find jsimdcfg.inc.)
754 2. Fixed out-of-bounds read in SSE2 SIMD code that occurred when decompressing
755 a JPEG image to a bitmap buffer whose size was not a multiple of 16 bytes.
758 valgrind. See <http://crbug.com/72399> for more information.
760 3. Added a compile-time macro (`LIBJPEG_TURBO_VERSION`) that can be used to
761 check the version of libjpeg-turbo against which an application was compiled.
763 4. Added new RGBA/BGRA/ABGR/ARGB colorspace extension constants (libjpeg API)
765 when decompressing to a 4-component RGB buffer, the unused byte should be set
766 to 0xFF so that it can be interpreted as an opaque alpha channel.
768 5. Fixed regression issue whereby DevIL failed to build against libjpeg-turbo
769 because libjpeg-turbo's distributed version of jconfig.h contained an `INLINE`
770 macro, which conflicted with a similar macro in DevIL. This macro is used only
771 internally when building libjpeg-turbo, so it was moved into config.h.
773 6. libjpeg-turbo will now correctly decompress erroneous CMYK/YCCK JPEGs whose
774 K component is assigned a component ID of 1 instead of 4. Although these files
776 correctly.
778 7. Added ARMv6 and ARMv7 architectures to libjpeg.a and libturbojpeg.a in
780 be used to build both OS X and iOS applications.
783 1.1.90 (1.2 beta1)
786 ### Significant changes relative to 1.1.1:
788 1. Added a Java wrapper for the TurboJPEG API. See [java/README](java/README)
789 for more details.
791 2. The TurboJPEG API can now be used to scale down images during
792 decompression.
794 3. Added SIMD routines for RGB-to-grayscale color conversion, which
796 RGB source image.
798 4. Improved the performance of the C color conversion routines, which are used
799 on platforms for which SIMD acceleration is not available.
801 5. Added a function to the TurboJPEG API that performs lossless transforms.
805 be read once. This is useful when generating image tiles from a single source
806 JPEG.
808 6. Added tests for the new TurboJPEG scaled decompression and lossless
810 "jpgtest".)
812 7. Added support for 4:4:0 (transposed 4:2:2) subsampling in TurboJPEG, which
814 transposed or rotated 90 degrees.
816 8. All legacy VirtualGL code has been re-factored, and this has allowed
817 libjpeg-turbo, in its entirety, to be re-licensed under a BSD-style license.
819 9. libjpeg-turbo can now be built with YASM.
821 10. Added SIMD acceleration for ARM Linux and iOS platforms that support
822 NEON instructions.
824 11. Refactored the TurboJPEG C API and documented it using Doxygen. The
828 level of chrominance subsampling. The refactored implementation of the
830 which allows the TurboJPEG compressor to grow the JPEG buffer as necessary.
832 12. Eliminated errors in the output of jpegtran on Windows that occurred when
834 (`jpegtran <input.jpg >output.jpg`.)
836 13. The inclusion of libjpeg v7 and v8 emulation as well as arithmetic coding
837 support in libjpeg-turbo v1.1.0 introduced several new error constants in
838 jerror.h, and these were mistakenly enabled for all emulation modes, causing
840 same enum in libjpeg. This represents an ABI incompatibility, and it caused
842 error value. The fix was to include the new error constants conditionally
843 based on whether libjpeg v7 or v8 emulation was enabled.
845 14. Fixed an issue whereby Windows applications that used libjpeg-turbo would
846 fail to compile if the Windows system headers were included before jpeglib.h.
847 This issue was caused by a conflict in the definition of the INT32 type.
849 15. Fixed 32-bit supplementary package for amd64 Debian systems, which was
850 broken by enhancements to the packaging system in 1.1.
852 16. When decompressing a JPEG image using an output colorspace of
855 to interpret that byte as an alpha channel (0xFF = opaque).
858 1.1.1
861 ### Significant changes relative to 1.1.0:
863 1. Fixed a 1-pixel error in row 0, column 21 of the luminance plane generated
864 by `tjEncodeYUV()`.
866 2. libjpeg-turbo's accelerated Huffman decoder previously ignored unexpected
867 markers found in the middle of the JPEG data stream during decompression. It
870 decoder can generate an appropriate warning.
872 3. Older versions of MinGW64 prefixed symbol names with underscores by
873 default, which differed from the behavior of 64-bit Visual C++. MinGW64 1.0
876 underscore when building with MinGW64. This means that, when building
878 `-fno-leading-underscore` to the `CFLAGS`.
880 4. Fixed a regression bug in the NSIS script that caused the Windows installer
881 build to fail when using the Visual Studio IDE.
883 5. Fixed a bug in `jpeg_read_coefficients()` whereby it would not initialize
885 was enabled. This specifically caused the jpegoptim program to fail if it was
887 emulation.
889 6. Eliminated excessive I/O overhead that occurred when reading BMP files in
890 cjpeg.
892 7. Eliminated errors in the output of cjpeg on Windows that occurred when the
893 application was invoked using I/O redirection (`cjpeg <inputfile >output.jpg`.)
896 1.1.0
901 1. The algorithm used by the SIMD quantization function cannot produce correct
903 used. Thus, the non-SIMD quantization function is now used for those cases,
905 cases.
907 2. Despite the above, the fast integer forward DCT still degrades somewhat for
910 greater. This reduces compression performance by as much as 15% for these
912 lossless. It also ensures that the library can avoid the performance pitfall
913 created by [1].
915 3. Ported jpgtest.cxx to pure C to avoid the need for a C++ compiler.
917 4. Fixed visual artifacts in grayscale JPEG compression caused by a typo in
918 the RGB-to-luminance lookup tables.
920 5. The Windows distribution packages now include the libjpeg run-time programs
921 (cjpeg, etc.)
923 6. All packages now include jpgtest.
925 7. The TurboJPEG dynamic library now uses versioned symbols.
927 8. Added two new TurboJPEG API functions, `tjEncodeYUV()` and
928 `tjDecompressToYUV()`, to replace the somewhat hackish `TJ_YUV` flag.
931 1.0.90 (1.1 beta1)
934 ### Significant changes relative to 1.0.1:
936 1. Added emulation of the libjpeg v7 and v8 APIs and ABIs. See
937 [README.md](README.md) for more details. This feature was sponsored by
938 CamTrace SAS.
940 2. Created a new CMake-based build system for the Visual C++ and MinGW builds.
942 3. Grayscale bitmaps can now be compressed from/decompressed to using the
943 TurboJPEG API.
945 4. jpgtest can now be used to test decompression performance with existing
946 JPEG images.
948 5. If the default install prefix (/opt/libjpeg-turbo) is used, then
951 packages.
953 6. All symbols in the libjpeg-turbo dynamic library are now versioned, even
954 when the library is built with libjpeg v6b emulation.
956 7. Added arithmetic encoding and decoding support (can be disabled with
959 8. Added a `TJ_YUV` flag to the TurboJPEG API, which causes both the compressor
960 and decompressor to output planar YUV images.
962 9. Added an extended version of `tjDecompressHeader()` to the TurboJPEG API,
964 image.
966 10. Added further protections against invalid Huffman codes.
969 1.0.1
972 ### Significant changes relative to 1.0.0:
974 1. The Huffman decoder will now handle erroneous Huffman codes (for instance,
975 from a corrupt JPEG image.) Previously, these would cause libjpeg-turbo to
976 crash under certain circumstances.
978 2. Fixed typo in SIMD dispatch routines that was causing 4:2:2 upsampling to
979 be used instead of 4:2:0 when decompressing JPEG images using SSE2 code.
981 3. The configure script will now automatically determine whether the
982 `INCOMPLETE_TYPES_BROKEN` macro should be defined.
985 1.0.0
988 ### Significant changes relative to 0.0.93:
990 1. 2983700: Further FreeBSD build tweaks (no longer necessary to specify
993 2. Created symlinks in the Unix/Linux packages so that the TurboJPEG
996 64-bit static libraries can always be found in /opt/libjpeg-turbo/lib64.
998 3. The Unix/Linux distribution packages now include the libjpeg run-time
999 programs (cjpeg, etc.) and man pages.
1001 4. Created a 32-bit supplementary package for amd64 Debian systems, which
1002 contains just the 32-bit libjpeg-turbo libraries.
1004 5. Moved the libraries from */lib32 to */lib in the i386 Debian package.
1006 6. Include distribution package for Cygwin
1008 7. No longer necessary to specify `--without-simd` on non-x86 architectures,
1009 and unit tests now work on those architectures.
1012 0.0.93
1015 ### Significant changes since 0.0.91:
1017 1. 2982659: Fixed x86-64 build on FreeBSD systems
1019 2. 2988188: Added support for Windows 64-bit systems
1022 0.0.91
1025 ### Significant changes relative to 0.0.90:
1027 1. Added documentation to .deb packages
1029 2. 2968313: Fixed data corruption issues when decompressing large JPEG images
1033 0.0.90