• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name: libjpeg-turbo
2URL: https://github.com/libjpeg-turbo/libjpeg-turbo/
3Version: 2.1.0
4License: Custom license
5License File: LICENSE.md
6Security Critical: yes
7License Android Compatible: yes
8
9Description:
10This consists of the components:
11* libjpeg-turbo 2.1.0
12* This file (README.chromium)
13* A build file (BUILD.gn)
14* An OWNERS file
15* A codereview.settings file
16* Patched header files used by Chromium
17* Deleted unused directories: cmakescripts, doc, fuzz, java, release,
18  sharedlib, simd/loongson, simd/mips, simd/powerpc, and win
19* Deleted unused files: appveyor.yml, CMakeLists.txt, doxygen.config,
20  doxygen-extra.css, .gitattributes, md5/CMakeLists.txt, md5/md5cmp.c,
21  simd/CMakeLists.txt, tjexample.c, tjexampletest.in, tjexampletest.java.in and
22  .travis.yml
23* Deleted legacy Arm Neon assembly files (supporting old compiler versions that
24  do not generate performant code from intrinsics):
25  simd/arm/aarch32/jsimd_neon.S, simd/arm/aarch64/jsimd_neon.S.
26
27This libjpeg-turbo can replace our libjpeg-6b without any modifications in the
28Chromium code.
29
30Same as our copy of libjpeg-6b, this libjpeg-turbo also added a new file
31jpeglibmangler.h and included it from jpeglib.h that changes the names of all
32externally visible functions to chromium_* so that we can avoid conflicts that
33arise when system libraries attempt to use our libjpeg. Also, we applied the
34following changes which are not merged to upstream:
35
36* Configuration files jconfig.h, jconfigint.h and neon-compat.h were generated
37  and then altered manually to be compatible on all of Chromium's platforms.
38  http://crbug.com/608347
39* Fix static const data duplication of jpeg_nbits_table. A unique copy
40  was in the jchuff.obj and jcphuff.obj resulting in an added 65k in
41  .rdata in chrome.dll and chrome_child.dll.  Declaring extern const
42  in the header instead of static const and moving the definition to
43  a new .c file fixes this so only one copy is referenced. Also added
44  extern wrappers around usage in asm files. The jpeg_nbits_table.inc
45  file was also deleted. It was also necessary to give this table hidden
46  visibility to avoid invalid relocations (ignored by ld but rejected by
47  lld) arising from attempts to reference the table from assembler on
48  32-bit x86. This only affects shared libraries, but that's important
49  for downstream Android builds.
50* Patches to enable running the upstream unit tests through GTest.
51  The upstream unit tests are defined here under the section 'TESTS':
52  https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/CMakeLists.txt
53  These changes are tracked by Chromium issue: https://crbug.com/993876
54  - Refactor tjunittest.c to provide test interface
55  - Move tjunittest logs from stdout to stderr
56  - Refactor tjbench.c to provide test interface
57  - Move tbench logs from stdout to stderr
58  - Write tjunittest output files to sdcard on Android
59  - Refactor cjpeg.c to provide test interface
60  - Refactor jpegtran.c to provide test interface
61  - Add input JPEG images for djpeg and jpegtran tests
62  - Refactor djpeg.c to provide test interface
63  A new gtest directory contains GTest wrappers (and associated utilities) for
64  each of tjunittest, tjbench, cjpeg, djpeg and jpegtran.
65
66Refer to working-with-nested-repos [1] for details of how to setup your git
67svn client to update the code (for making local changes, cherry picking from
68upstream, etc).
69
70[1] https://www.chromium.org/developers/how-tos/get-the-code/working-with-nested-repos
71