multiplane 0.0.0-stage → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/LICENSE +202 -0
  2. package/README.en.md +322 -0
  3. package/README.md +321 -2
  4. package/THIRD_PARTY_NOTICES.md +30 -0
  5. package/bin/multiplane +98 -0
  6. package/examples/alpha.html +18 -0
  7. package/examples/animation.html +17 -0
  8. package/examples/assets/OFL.txt +93 -0
  9. package/examples/assets/Roboto-Variable.ttf +0 -0
  10. package/examples/assets/card.svg +6 -0
  11. package/examples/assets/readme-card-0.svg +1 -0
  12. package/examples/assets/readme-card-1.svg +1 -0
  13. package/examples/assets/readme-card-2.svg +1 -0
  14. package/examples/assets/readme-detail.svg +1 -0
  15. package/examples/readme-cards.html +23 -0
  16. package/examples/readme-cut.html +13 -0
  17. package/examples/readme-depth.html +15 -0
  18. package/examples/readme-wheel.html +14 -0
  19. package/examples/three-cards.html +17 -0
  20. package/examples/typography.html +17 -0
  21. package/licenses/GPL-3.0.txt +232 -0
  22. package/licenses/LGPL-3.0.txt +304 -0
  23. package/licenses/acorn-LICENSE +21 -0
  24. package/licenses/colour-LICENSE.md +82 -0
  25. package/licenses/detect-libc-LICENSE +201 -0
  26. package/licenses/entities-LICENSE +11 -0
  27. package/licenses/nanoid-LICENSE +20 -0
  28. package/licenses/native/README.ijg +258 -0
  29. package/licenses/native/aom-LICENSE +27 -0
  30. package/licenses/native/aom-PATENTS +108 -0
  31. package/licenses/native/archive-COPYING +65 -0
  32. package/licenses/native/cairo-COPYING +33 -0
  33. package/licenses/native/cairo-COPYING-MPL-1.1 +470 -0
  34. package/licenses/native/cgif-LICENSE +21 -0
  35. package/licenses/native/exif-COPYING +504 -0
  36. package/licenses/native/expat-COPYING +21 -0
  37. package/licenses/native/ffi-LICENSE +21 -0
  38. package/licenses/native/fontconfig-COPYING +200 -0
  39. package/licenses/native/freetype-FTL.TXT +169 -0
  40. package/licenses/native/fribidi-COPYING +501 -0
  41. package/licenses/native/glib-COPYING +175 -0
  42. package/licenses/native/harfbuzz-COPYING +42 -0
  43. package/licenses/native/heif-COPYING +871 -0
  44. package/licenses/native/highway-LICENSE +371 -0
  45. package/licenses/native/imagequant-COPYRIGHT +36 -0
  46. package/licenses/native/lcms-COPYING +22 -0
  47. package/licenses/native/mozjpeg-LICENSE.md +135 -0
  48. package/licenses/native/nsgif-COPYING +21 -0
  49. package/licenses/native/pango-COPYING +482 -0
  50. package/licenses/native/pixman-COPYING +42 -0
  51. package/licenses/native/png-LICENSE +134 -0
  52. package/licenses/native/proxy-libintl-COPYING +482 -0
  53. package/licenses/native/rsvg-COPYING.LIB +502 -0
  54. package/licenses/native/sources.json +240 -0
  55. package/licenses/native/tiff-LICENSE.md +49 -0
  56. package/licenses/native/uhdr-LICENSE +230 -0
  57. package/licenses/native/vips-COPYING +502 -0
  58. package/licenses/native/webp-COPYING +30 -0
  59. package/licenses/native/webp-PATENTS +23 -0
  60. package/licenses/native/xml2-Copyright +24 -0
  61. package/licenses/native/zlib-ng-LICENSE.md +19 -0
  62. package/licenses/parse5-LICENSE +19 -0
  63. package/licenses/picocolors-LICENSE +15 -0
  64. package/licenses/playwright-LICENSE +202 -0
  65. package/licenses/playwright-NOTICE +5 -0
  66. package/licenses/playwright-ThirdPartyNotices.txt +14 -0
  67. package/licenses/playwright-core-ThirdPartyNotices.txt +13 -0
  68. package/licenses/postcss-LICENSE +20 -0
  69. package/licenses/postcss-value-parser-LICENSE +22 -0
  70. package/licenses/semver-LICENSE +15 -0
  71. package/licenses/sharp-LICENSE +191 -0
  72. package/licenses/sharp-win32-x64-LICENSE +191 -0
  73. package/licenses/sharp-win32-x64-NOTICES.md +59 -0
  74. package/licenses/source-map-js-LICENSE +28 -0
  75. package/licenses/three-LICENSE +21 -0
  76. package/package.json +92 -6
  77. package/skills/multiplane/SKILL.md +213 -0
  78. package/src/alpha.mjs +69 -0
  79. package/src/artifacts.mjs +61 -0
  80. package/src/benchmark.mjs +140 -0
  81. package/src/browser-recovery.mjs +26 -0
  82. package/src/capture.mjs +224 -0
  83. package/src/config.mjs +79 -0
  84. package/src/doctor.mjs +56 -0
  85. package/src/draft.mjs +30 -0
  86. package/src/encoder.mjs +16 -0
  87. package/src/environment.mjs +56 -0
  88. package/src/errors.mjs +51 -0
  89. package/src/events.mjs +252 -0
  90. package/src/ffmpeg.mjs +32 -0
  91. package/src/format.mjs +27 -0
  92. package/src/frame-rate.mjs +28 -0
  93. package/src/home-migration.mjs +54 -0
  94. package/src/hosted.mjs +134 -0
  95. package/src/index.mjs +14 -0
  96. package/src/inspect.mjs +20 -0
  97. package/src/jobs.mjs +51 -0
  98. package/src/lint.mjs +248 -0
  99. package/src/output-alpha.mjs +36 -0
  100. package/src/output-check.mjs +110 -0
  101. package/src/pixel-comparison.mjs +43 -0
  102. package/src/platform.mjs +114 -0
  103. package/src/png-native.mjs +12 -0
  104. package/src/png.mjs +74 -0
  105. package/src/post.mjs +433 -0
  106. package/src/preview.mjs +23 -0
  107. package/src/process-identity.mjs +17 -0
  108. package/src/process.mjs +9 -0
  109. package/src/render-pool.mjs +93 -0
  110. package/src/render-worker.mjs +59 -0
  111. package/src/render.mjs +157 -0
  112. package/src/resource-path.mjs +29 -0
  113. package/src/resources.mjs +27 -0
  114. package/src/runtime/camera.js +37 -0
  115. package/src/runtime/shot.css +9 -0
  116. package/src/runtime/shot.js +71 -0
  117. package/src/serve.mjs +23 -0
  118. package/src/server.mjs +93 -0
  119. package/src/setup.mjs +51 -0
  120. package/src/skills.mjs +128 -0
  121. package/src/static-reuse.mjs +265 -0
  122. package/src/stills.mjs +81 -0
  123. package/src/three/index.js +348 -0
  124. package/src/user-home.mjs +105 -0
  125. package/src/verify.mjs +161 -0
  126. package/src/video-pipe.mjs +6 -0
  127. package/src/workers.mjs +62 -0
  128. package/tools/bench/shots/canvas-2d.html +1 -0
  129. package/tools/bench/shots/dom-light.html +1 -0
  130. package/tools/bench/shots/scene.js +45 -0
  131. package/tools/bench/shots/webgl.html +1 -0
  132. package/tools/install-browser.mjs +18 -0
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright {yyyy} {name of copyright owner}
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,11 @@
1
+ Copyright (c) Felix Böhm
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5
+
6
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7
+
8
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9
+
10
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
11
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright 2017 Andrey Sitnik <andrey@sitnik.ru>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,258 @@
1
+ libjpeg-turbo note: This file has been modified by The libjpeg-turbo Project
2
+ to include only information relevant to libjpeg-turbo, to wordsmith certain
3
+ sections, and to remove impolitic language that existed in the libjpeg v8
4
+ README. It is included only for reference. Please see README.md for
5
+ information specific to libjpeg-turbo.
6
+
7
+
8
+ The Independent JPEG Group's JPEG software
9
+ ==========================================
10
+
11
+ This distribution contains a release of the Independent JPEG Group's free JPEG
12
+ software. You are welcome to redistribute this software and to use it for any
13
+ purpose, subject to the conditions under LEGAL ISSUES, below.
14
+
15
+ This software is the work of Tom Lane, Guido Vollbeding, Philip Gladstone,
16
+ Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson,
17
+ Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers,
18
+ and other members of the Independent JPEG Group.
19
+
20
+ IJG is not affiliated with the ISO/IEC JTC1/SC29/WG1 standards committee
21
+ (also known as JPEG, together with ITU-T SG16).
22
+
23
+
24
+ DOCUMENTATION ROADMAP
25
+ =====================
26
+
27
+ This file contains the following sections:
28
+
29
+ OVERVIEW General description of JPEG and the IJG software.
30
+ LEGAL ISSUES Copyright, lack of warranty, terms of distribution.
31
+ REFERENCES Where to learn more about JPEG.
32
+ ARCHIVE LOCATIONS Where to find newer versions of this software.
33
+ FILE FORMAT WARS Software *not* to get.
34
+ TO DO Plans for future IJG releases.
35
+
36
+ Other documentation files in the distribution are:
37
+
38
+ User documentation:
39
+ usage.txt Usage instructions for cjpeg, djpeg, jpegtran,
40
+ rdjpgcom, and wrjpgcom.
41
+ *.1 Unix-style man pages for programs (same info as usage.txt).
42
+ wizard.txt Advanced usage instructions for JPEG wizards only.
43
+ change.log Version-to-version change highlights.
44
+ Programmer and internal documentation:
45
+ libjpeg.txt How to use the JPEG library in your own programs.
46
+ example.c Sample code for calling the JPEG library.
47
+ structure.txt Overview of the JPEG library's internal structure.
48
+ coderules.txt Coding style rules --- please read if you contribute code.
49
+
50
+ Please read at least usage.txt. Some information can also be found in the JPEG
51
+ FAQ (Frequently Asked Questions) article. See ARCHIVE LOCATIONS below to find
52
+ out where to obtain the FAQ article.
53
+
54
+ If you want to understand how the JPEG code works, we suggest reading one or
55
+ more of the REFERENCES, then looking at the documentation files (in roughly
56
+ the order listed) before diving into the code.
57
+
58
+
59
+ OVERVIEW
60
+ ========
61
+
62
+ This package contains C software to implement JPEG image encoding, decoding,
63
+ and transcoding. JPEG (pronounced "jay-peg") is a standardized compression
64
+ method for full-color and grayscale images. JPEG's strong suit is compressing
65
+ photographic images or other types of images that have smooth color and
66
+ brightness transitions between neighboring pixels. Images with sharp lines or
67
+ other abrupt features may not compress well with JPEG, and a higher JPEG
68
+ quality may have to be used to avoid visible compression artifacts with such
69
+ images.
70
+
71
+ JPEG is normally lossy, meaning that the output pixels are not necessarily
72
+ identical to the input pixels. However, on photographic content and other
73
+ "smooth" images, very good compression ratios can be obtained with no visible
74
+ compression artifacts, and extremely high compression ratios are possible if
75
+ you are willing to sacrifice image quality (by reducing the "quality" setting
76
+ in the compressor.)
77
+
78
+ This software implements JPEG baseline, extended-sequential, progressive, and
79
+ lossless compression processes. Provision is made for supporting all variants
80
+ of these processes, although some uncommon parameter settings aren't
81
+ implemented yet. We have made no provision for supporting the hierarchical
82
+ processes defined in the standard.
83
+
84
+ We provide a set of library routines for reading and writing JPEG image files,
85
+ plus two sample applications "cjpeg" and "djpeg", which use the library to
86
+ perform conversion between JPEG and some other popular image file formats.
87
+ The library is intended to be reused in other applications.
88
+
89
+ In order to support file conversion and viewing software, we have included
90
+ considerable functionality beyond the bare JPEG coding/decoding capability;
91
+ for example, the color quantization modules are not strictly part of JPEG
92
+ decoding, but they are essential for output to colormapped file formats. These
93
+ extra functions can be compiled out of the library if not required for a
94
+ particular application.
95
+
96
+ We have also included "jpegtran", a utility for lossless transcoding between
97
+ different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple
98
+ applications for inserting and extracting textual comments in JFIF files.
99
+
100
+ The emphasis in designing this software has been on achieving portability and
101
+ flexibility, while also making it fast enough to be useful. In particular,
102
+ the software is not intended to be read as a tutorial on JPEG. (See the
103
+ REFERENCES section for introductory material.) Rather, it is intended to
104
+ be reliable, portable, industrial-strength code. We do not claim to have
105
+ achieved that goal in every aspect of the software, but we strive for it.
106
+
107
+ We welcome the use of this software as a component of commercial products.
108
+ No royalty is required, but we do ask for an acknowledgement in product
109
+ documentation, as described under LEGAL ISSUES.
110
+
111
+
112
+ LEGAL ISSUES
113
+ ============
114
+
115
+ In plain English:
116
+
117
+ 1. We don't promise that this software works. (But if you find any bugs,
118
+ please let us know!)
119
+ 2. You can use this software for whatever you want. You don't have to pay us.
120
+ 3. You may not pretend that you wrote this software. If you use it in a
121
+ program, you must acknowledge somewhere in your documentation that
122
+ you've used the IJG code.
123
+
124
+ In legalese:
125
+
126
+ The authors make NO WARRANTY or representation, either express or implied,
127
+ with respect to this software, its quality, accuracy, merchantability, or
128
+ fitness for a particular purpose. This software is provided "AS IS", and you,
129
+ its user, assume the entire risk as to its quality and accuracy.
130
+
131
+ This software is copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding.
132
+ All Rights Reserved except as specified below.
133
+
134
+ Permission is hereby granted to use, copy, modify, and distribute this
135
+ software (or portions thereof) for any purpose, without fee, subject to these
136
+ conditions:
137
+ (1) If any part of the source code for this software is distributed, then this
138
+ README file must be included, with this copyright and no-warranty notice
139
+ unaltered; and any additions, deletions, or changes to the original files
140
+ must be clearly indicated in accompanying documentation.
141
+ (2) If only executable code is distributed, then the accompanying
142
+ documentation must state that "this software is based in part on the work of
143
+ the Independent JPEG Group".
144
+ (3) Permission for use of this software is granted only if the user accepts
145
+ full responsibility for any undesirable consequences; the authors accept
146
+ NO LIABILITY for damages of any kind.
147
+
148
+ These conditions apply to any software derived from or based on the IJG code,
149
+ not just to the unmodified library. If you use our work, you ought to
150
+ acknowledge us.
151
+
152
+ Permission is NOT granted for the use of any IJG author's name or company name
153
+ in advertising or publicity relating to this software or products derived from
154
+ it. This software may be referred to only as "the Independent JPEG Group's
155
+ software".
156
+
157
+ We specifically permit and encourage the use of this software as the basis of
158
+ commercial products, provided that all warranty or liability claims are
159
+ assumed by the product vendor.
160
+
161
+
162
+ REFERENCES
163
+ ==========
164
+
165
+ We recommend reading one or more of these references before trying to
166
+ understand the innards of the JPEG software.
167
+
168
+ The best short technical introduction to the JPEG compression algorithm is
169
+ Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
170
+ Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
171
+ (Adjacent articles in that issue discuss MPEG motion picture compression,
172
+ applications of JPEG, and related topics.) If you don't have the CACM issue
173
+ handy, a PDF file containing a revised version of Wallace's article is
174
+ available at http://www.ijg.org/files/Wallace.JPEG.pdf. The file (actually
175
+ a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
176
+ omits the sample images that appeared in CACM, but it includes corrections
177
+ and some added material. Note: the Wallace article is copyright ACM and IEEE,
178
+ and it may not be used for commercial purposes.
179
+
180
+ A somewhat less technical, more leisurely introduction to JPEG can be found in
181
+ "The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
182
+ M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides
183
+ good explanations and example C code for a multitude of compression methods
184
+ including JPEG. It is an excellent source if you are comfortable reading C
185
+ code but don't know much about data compression in general. The book's JPEG
186
+ sample code is far from industrial-strength, but when you are ready to look
187
+ at a full implementation, you've got one here...
188
+
189
+ The best currently available description of JPEG is the textbook "JPEG Still
190
+ Image Data Compression Standard" by William B. Pennebaker and Joan L.
191
+ Mitchell, published by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.
192
+ Price US$59.95, 638 pp. The book includes the complete text of the ISO JPEG
193
+ standards (DIS 10918-1 and draft DIS 10918-2).
194
+
195
+ The original JPEG standard is divided into two parts, Part 1 being the actual
196
+ specification, while Part 2 covers compliance testing methods. Part 1 is
197
+ titled "Digital Compression and Coding of Continuous-tone Still Images,
198
+ Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
199
+ 10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of
200
+ Continuous-tone Still Images, Part 2: Compliance testing" and has document
201
+ numbers ISO/IEC IS 10918-2, ITU-T T.83.
202
+
203
+ The JPEG standard does not specify all details of an interchangeable file
204
+ format. For the omitted details, we follow the "JFIF" conventions, revision
205
+ 1.02. JFIF version 1 has been adopted as ISO/IEC 10918-5 (05/2013) and
206
+ Recommendation ITU-T T.871 (05/2011): Information technology - Digital
207
+ compression and coding of continuous-tone still images: JPEG File Interchange
208
+ Format (JFIF). It is available as a free download in PDF file format from
209
+ https://www.iso.org/standard/54989.html and http://www.itu.int/rec/T-REC-T.871.
210
+ A PDF file of the older JFIF 1.02 specification is available at
211
+ http://www.w3.org/Graphics/JPEG/jfif3.pdf.
212
+
213
+ The TIFF 6.0 file format specification can be obtained from
214
+ http://mirrors.ctan.org/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation
215
+ scheme found in the TIFF 6.0 spec of 3-June-92 has a number of serious
216
+ problems. IJG does not recommend use of the TIFF 6.0 design (TIFF Compression
217
+ tag 6). Instead, we recommend the JPEG design proposed by TIFF Technical Note
218
+ #2 (Compression tag 7). Copies of this Note can be obtained from
219
+ http://www.ijg.org/files/. It is expected that the next revision
220
+ of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
221
+ Although IJG's own code does not support TIFF/JPEG, the free libtiff library
222
+ uses our library to implement TIFF/JPEG per the Note.
223
+
224
+
225
+ ARCHIVE LOCATIONS
226
+ =================
227
+
228
+ The "official" archive site for this software is www.ijg.org.
229
+ The most recent released version can always be found there in
230
+ directory "files".
231
+
232
+ The JPEG FAQ (Frequently Asked Questions) article is a source of some
233
+ general information about JPEG. It is available at
234
+ http://www.faqs.org/faqs/jpeg-faq.
235
+
236
+
237
+ FILE FORMAT COMPATIBILITY
238
+ =========================
239
+
240
+ This software implements ITU T.81 | ISO/IEC 10918 with some extensions from
241
+ ITU T.871 | ISO/IEC 10918-5 (JPEG File Interchange Format-- see REFERENCES).
242
+ Informally, the term "JPEG image" or "JPEG file" most often refers to JFIF or
243
+ a subset thereof, but there are other formats containing the name "JPEG" that
244
+ are incompatible with the original JPEG standard or with JFIF (for instance,
245
+ JPEG 2000 and JPEG XR). This software therefore does not support these
246
+ formats. Indeed, one of the original reasons for developing this free software
247
+ was to help force convergence on a common, interoperable format standard for
248
+ JPEG files.
249
+
250
+ JFIF is a minimal or "low end" representation. TIFF/JPEG (TIFF revision 6.0 as
251
+ modified by TIFF Technical Note #2) can be used for "high end" applications
252
+ that need to record a lot of additional data about an image.
253
+
254
+
255
+ TO DO
256
+ =====
257
+
258
+ Please send bug reports, offers of help, etc. to jpeg-info@jpegclub.org.
@@ -0,0 +1,27 @@
1
+ Copyright (c) 2016, Alliance for Open Media. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions
5
+ are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright
8
+ notice, this list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in
12
+ the documentation and/or other materials provided with the
13
+ distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
25
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
+ POSSIBILITY OF SUCH DAMAGE.
27
+
@@ -0,0 +1,108 @@
1
+ Alliance for Open Media Patent License 1.0
2
+
3
+ 1. License Terms.
4
+
5
+ 1.1. Patent License. Subject to the terms and conditions of this License, each
6
+ Licensor, on behalf of itself and successors in interest and assigns,
7
+ grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive,
8
+ no-charge, royalty-free, irrevocable (except as expressly stated in this
9
+ License) patent license to its Necessary Claims to make, use, sell, offer
10
+ for sale, import or distribute any Implementation.
11
+
12
+ 1.2. Conditions.
13
+
14
+ 1.2.1. Availability. As a condition to the grant of rights to Licensee to make,
15
+ sell, offer for sale, import or distribute an Implementation under
16
+ Section 1.1, Licensee must make its Necessary Claims available under
17
+ this License, and must reproduce this License with any Implementation
18
+ as follows:
19
+
20
+ a. For distribution in source code, by including this License in the
21
+ root directory of the source code with its Implementation.
22
+
23
+ b. For distribution in any other form (including binary, object form,
24
+ and/or hardware description code (e.g., HDL, RTL, Gate Level Netlist,
25
+ GDSII, etc.)), by including this License in the documentation, legal
26
+ notices, and/or other written materials provided with the
27
+ Implementation.
28
+
29
+ 1.2.2. Additional Conditions. This license is directly from Licensor to
30
+ Licensee. Licensee acknowledges as a condition of benefiting from it
31
+ that no rights from Licensor are received from suppliers, distributors,
32
+ or otherwise in connection with this License.
33
+
34
+ 1.3. Defensive Termination. If any Licensee, its Affiliates, or its agents
35
+ initiates patent litigation or files, maintains, or voluntarily
36
+ participates in a lawsuit against another entity or any person asserting
37
+ that any Implementation infringes Necessary Claims, any patent licenses
38
+ granted under this License directly to the Licensee are immediately
39
+ terminated as of the date of the initiation of action unless 1) that suit
40
+ was in response to a corresponding suit regarding an Implementation first
41
+ brought against an initiating entity, or 2) that suit was brought to
42
+ enforce the terms of this License (including intervention in a third-party
43
+ action by a Licensee).
44
+
45
+ 1.4. Disclaimers. The Reference Implementation and Specification are provided
46
+ "AS IS" and without warranty. The entire risk as to implementing or
47
+ otherwise using the Reference Implementation or Specification is assumed
48
+ by the implementer and user. Licensor expressly disclaims any warranties
49
+ (express, implied, or otherwise), including implied warranties of
50
+ merchantability, non-infringement, fitness for a particular purpose, or
51
+ title, related to the material. IN NO EVENT WILL LICENSOR BE LIABLE TO
52
+ ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL,
53
+ INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF
54
+ ACTION OF ANY KIND WITH RESPECT TO THIS LICENSE, WHETHER BASED ON BREACH
55
+ OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR
56
+ NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57
+
58
+ 2. Definitions.
59
+
60
+ 2.1. Affiliate. "Affiliate" means an entity that directly or indirectly
61
+ Controls, is Controlled by, or is under common Control of that party.
62
+
63
+ 2.2. Control. "Control" means direct or indirect control of more than 50% of
64
+ the voting power to elect directors of that corporation, or for any other
65
+ entity, the power to direct management of such entity.
66
+
67
+ 2.3. Decoder. "Decoder" means any decoder that conforms fully with all
68
+ non-optional portions of the Specification.
69
+
70
+ 2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can
71
+ be decoded by a Decoder only to the extent it produces such a bitstream.
72
+
73
+ 2.5. Final Deliverable. "Final Deliverable" means the final version of a
74
+ deliverable approved by the Alliance for Open Media as a Final
75
+ Deliverable.
76
+
77
+ 2.6. Implementation. "Implementation" means any implementation, including the
78
+ Reference Implementation, that is an Encoder and/or a Decoder. An
79
+ Implementation also includes components of an Implementation only to the
80
+ extent they are used as part of an Implementation.
81
+
82
+ 2.7. License. "License" means this license.
83
+
84
+ 2.8. Licensee. "Licensee" means any person or entity who exercises patent
85
+ rights granted under this License.
86
+
87
+ 2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers
88
+ for sale, imports or distributes any Implementation, or (ii) a person
89
+ or entity that has a licensing obligation to the Implementation as a
90
+ result of its membership and/or participation in the Alliance for Open
91
+ Media working group that developed the Specification.
92
+
93
+ 2.10. Necessary Claims. "Necessary Claims" means all claims of patents or
94
+ patent applications, (a) that currently or at any time in the future,
95
+ are owned or controlled by the Licensor, and (b) (i) would be an
96
+ Essential Claim as defined by the W3C Policy as of February 5, 2004
97
+ (https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential)
98
+ as if the Specification was a W3C Recommendation; or (ii) are infringed
99
+ by the Reference Implementation.
100
+
101
+ 2.11. Reference Implementation. "Reference Implementation" means an Encoder
102
+ and/or Decoder released by the Alliance for Open Media as a Final
103
+ Deliverable.
104
+
105
+ 2.12. Specification. "Specification" means the specification designated by
106
+ the Alliance for Open Media as a Final Deliverable for which this
107
+ License was issued.
108
+