| Name: libjpeg-turbo |
| URL: https://github.com/libjpeg-turbo/libjpeg-turbo/ |
| Version: 2.0.1 |
| License: Custom license |
| License File: LICENSE.md |
| Security Critical: yes |
| License Android Compatible: yes |
| |
| Description: |
| This consists of the components: |
| * libjpeg-turbo 2.0.1 |
| * This file (README.chromium) |
| * A build file (BUILD.gn) |
| * An OWNERS file |
| * A codereview.settings file |
| * Patched header files used by Chromium |
| * Cherry picked an unused variable/function warning from upstream master: |
| https://github.com/libjpeg-turbo/libjpeg-turbo/commit/b46af82cc159bbd05312417d003cfab67c340156 |
| * Cherry picked checking the maximum supported CPUID leaf: |
| https://github.com/libjpeg-turbo/libjpeg-turbo/commit/aa9db616774e24af7ab2fbcddd5711057b8a901e |
| * Deleted unused directories: ci, cmakescripts, doc, java, md5, release, sharedlib, |
| simd/loongson, simd/mips, simd/powerpc, testimages, and win |
| * Deleted unused files: appveyor.yml, Brewfile, CMakeLists.txt, doxygen.config, |
| doxygen-extra.css, .gitattributes, tjexample.c, tjexampletest.java.in, |
| .travis.yml |
| |
| This libjpeg-turbo can replace our libjpeg-6b without any modifications in the |
| Chromium code. |
| |
| Same as our copy of libjpeg-6b, this libjpeg-turbo also added a new file |
| jpeglibmangler.h and included it from jpeglib.h that changes the names of all |
| externally visible functions to chromium_* so that we can avoid conflicts that |
| arise when system libraries attempt to use our libjpeg. Also, we applied the |
| following changes which are not merged to upstream: |
| |
| * Fix libjpeg_turbo svn r64 libjpeg6b compat issue: make the fast path Huffman |
| decoder fallback to slow decoding if the Huffman decoding bit sentinel > 16, |
| this to match the exact behavior of jpeg_huff_decode(). |
| http://crbug.com/398235 |
| The patch in the above bug removed "& 0xFF". It has been restored from upstream |
| https://github.com/libjpeg-turbo/libjpeg-turbo/commit/fa1d18385d904d530b4aec83ab7757a33397de6e |
| * Configuration files jconfig.h and jconfigint.h were generated and then altered |
| manually to be compatible on all of Chromium's platforms. |
| http://crbug.com/608347 |
| * Fix static const data duplication of jpeg_nbits_table. A unique copy |
| was in the jchuff.obj and jcphuff.obj resulting in an added 65k in |
| .rdata in chrome.dll and chrome_child.dll. Declaring extern const |
| in the header instead of static const and moving the definition to |
| a new .c file fixes this so only one copy is referenced. |
| * Arm NEON patches to improve performance and maintainability. These changes |
| are tracked by the following Chromium issue: https://crbug.com/922430 |
| - Add memory alignment size check in jmemmgr.c |
| - Add 32-byte memory alignment check for Arm NEON |
| - Add Arm NEON implementation of h2v2_fancy_upsample |
| - Add SIMD function stubs for h1v2_fancy_upsample |
| - Add Arm NEON implementation of h1v2_fancy_upsample |
| - Add Arm NEON implementation of h2v1_fancy_upsample |
| - Add extra guard for loop unroll pragma on AArch64 |
| - Add Arm NEON implementation of h2v1_upsample |
| - Add Arm NEON implementation of h2v2_upsample |
| - Implement YCbCr->RGB using Arm NEON intrinsics |
| |
| Refer to working-with-nested-repos [1] for details of how to setup your git |
| svn client to update the code (for making local changes, cherry picking from |
| upstream, etc). |
| |
| [1] https://www.chromium.org/developers/how-tos/get-the-code/working-with-nested-repos |