blob: 1831dae75377b8571740214fd6a0b1744441b5e4 [file] [log] [blame]
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, release, sharedlib,
simd/loongson, simd/mips, simd/powerpc, 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. Also added
extern wrappers around usage in asm files. The jpeg_nbits_table.inc
file was also deleted.
* 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
- Implement YCbCr->RGB565 using Arm NEON intrinsics
- Add Arm NEON implementation of h2v1_merged_upsample
- Add Arm NEON implementation of h2v2_merged_upsample
- Implement 2x2 IDCT using Arm NEON intrinsics
- Implement 4x4 IDCT using Arm NEON intrinsics
- Implement slow IDCT using Arm NEON intrinsics
- Precompute DCT block output pointers in IDCT functions
- Implement fast IDCT using Arm NEON intrinsics
* Patches to enable running the upstream unit tests through gtest.
The upstream unit tests are defined here under the section 'TESTS':
https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/CMakeLists.txt
These changes are tracked by Chromium issue: https://crbug.com/993876
- Refactor tjunittest.c to provide test interface
- Add gtest wrapper for tjunittests
- Move tjunittest logs from stdout to stderr
- Refactor tjbench.c to provide test interface
- Add gtest wrapper for tjbench tests
- Move tbench logs from stdout to stderr
- Write tjunittest output files to sdcard on Android
- Refactor cjpeg.c to provide test interface
- Add gtest wrapper for cjpeg tests
- Refactor jpegtran.c to provide test interface
- Add input JPEG images for djpeg and jpegtran tests
- Add gtest wrapper for jpegtran tests
- Refactor djpeg.c to provide test interface
- Add gtest wrapper for djpeg tests
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