pillow-avif-plugin 1.5.5__cp310-cp310-win_amd64.whl

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.
@@ -0,0 +1,326 @@
1
+ from __future__ import division
2
+
3
+ from io import BytesIO
4
+ import sys
5
+
6
+ from PIL import ExifTags, Image, ImageFile
7
+
8
+ try:
9
+ from pillow_avif import _avif
10
+
11
+ SUPPORTED = True
12
+ except ImportError:
13
+ SUPPORTED = False
14
+
15
+ # Decoder options as module globals, until there is a way to pass parameters
16
+ # to Image.open (see https://github.com/python-pillow/Pillow/issues/569)
17
+ DECODE_CODEC_CHOICE = "auto"
18
+ CHROMA_UPSAMPLING = "auto"
19
+ # Decoding is only affected by this for libavif **0.8.4** or greater.
20
+ DEFAULT_MAX_THREADS = 0
21
+
22
+ if sys.version_info[0] == 2:
23
+ text_type = unicode # noqa
24
+ else:
25
+ text_type = str
26
+
27
+
28
+ def _accept(prefix):
29
+ if prefix[4:8] != b"ftyp":
30
+ return False
31
+ major_brand = prefix[8:12]
32
+ if major_brand in (
33
+ # coding brands
34
+ b"avif",
35
+ b"avis",
36
+ # We accept files with AVIF container brands; we can't yet know if
37
+ # the ftyp box has the correct compatible brands, but if it doesn't
38
+ # then the plugin will raise a SyntaxError which Pillow will catch
39
+ # before moving on to the next plugin that accepts the file.
40
+ #
41
+ # Also, because this file might not actually be an AVIF file, we
42
+ # don't raise an error if AVIF support isn't properly compiled.
43
+ b"mif1",
44
+ b"msf1",
45
+ ):
46
+ if not SUPPORTED:
47
+ return (
48
+ "image file could not be identified because AVIF support not installed"
49
+ )
50
+ return True
51
+ return False
52
+
53
+
54
+ class AvifImageFile(ImageFile.ImageFile):
55
+ format = "AVIF"
56
+ format_description = "AVIF image"
57
+ __frame = -1
58
+
59
+ def _open(self):
60
+ if not SUPPORTED:
61
+ msg = "image file could not be opened because AVIF support not installed"
62
+ raise SyntaxError(msg)
63
+
64
+ if DECODE_CODEC_CHOICE != "auto" and not _avif.decoder_codec_available(
65
+ DECODE_CODEC_CHOICE
66
+ ):
67
+ msg = "Invalid opening codec"
68
+ raise ValueError(msg)
69
+ self._decoder = _avif.AvifDecoder(
70
+ self.fp.read(), DECODE_CODEC_CHOICE, CHROMA_UPSAMPLING, DEFAULT_MAX_THREADS
71
+ )
72
+
73
+ # Get info from decoder
74
+ (
75
+ width,
76
+ height,
77
+ self.n_frames,
78
+ mode,
79
+ icc,
80
+ exif,
81
+ exif_orientation,
82
+ xmp,
83
+ ) = self._decoder.get_info()
84
+ self._size = (width, height)
85
+ self.is_animated = self.n_frames > 1
86
+ try:
87
+ self.mode = self.rawmode = mode
88
+ except AttributeError:
89
+ self._mode = self.rawmode = mode
90
+
91
+ if icc:
92
+ self.info["icc_profile"] = icc
93
+ if xmp:
94
+ self.info["xmp"] = xmp
95
+
96
+ if exif_orientation != 1 or exif:
97
+ exif_data = Image.Exif()
98
+ orientation_tag = next(
99
+ k for k, v in ExifTags.TAGS.items() if v == "Orientation"
100
+ )
101
+ if exif:
102
+ exif_data.load(exif)
103
+ original_orientation = exif_data.get(orientation_tag, 1)
104
+ else:
105
+ original_orientation = 1
106
+ if exif_orientation != original_orientation:
107
+ exif_data[orientation_tag] = exif_orientation
108
+ exif = exif_data.tobytes()
109
+ if exif:
110
+ self.info["exif"] = exif
111
+ self.seek(0)
112
+
113
+ def seek(self, frame):
114
+ if not self._seek_check(frame):
115
+ return
116
+
117
+ # Set tile
118
+ self.__frame = frame
119
+ if hasattr(ImageFile, "_Tile"):
120
+ self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, self.mode)]
121
+ else:
122
+ self.tile = [("raw", (0, 0) + self.size, 0, self.mode)]
123
+
124
+ def load(self):
125
+ if self.tile:
126
+ # We need to load the image data for this frame
127
+ (
128
+ data,
129
+ timescale,
130
+ pts_in_timescales,
131
+ duration_in_timescales,
132
+ ) = self._decoder.get_frame(self.__frame)
133
+ self.info["timestamp"] = round(1000 * (pts_in_timescales / timescale))
134
+ self.info["duration"] = round(1000 * (duration_in_timescales / timescale))
135
+
136
+ if self.fp and self._exclusive_fp:
137
+ self.fp.close()
138
+ self.fp = BytesIO(data)
139
+
140
+ return super(AvifImageFile, self).load()
141
+
142
+ def load_seek(self, pos):
143
+ pass
144
+
145
+ def tell(self):
146
+ return self.__frame
147
+
148
+
149
+ def _save_all(im, fp, filename):
150
+ _save(im, fp, filename, save_all=True)
151
+
152
+
153
+ def _save(im, fp, filename, save_all=False):
154
+ info = im.encoderinfo.copy()
155
+ if save_all:
156
+ append_images = list(info.get("append_images", []))
157
+ else:
158
+ append_images = []
159
+
160
+ total = 0
161
+ for ims in [im] + append_images:
162
+ total += getattr(ims, "n_frames", 1)
163
+
164
+ qmin = info.get("qmin", -1)
165
+ qmax = info.get("qmax", -1)
166
+ quality = info.get("quality", 75)
167
+ if not isinstance(quality, int) or quality < 0 or quality > 100:
168
+ msg = "Invalid quality setting"
169
+ raise ValueError(msg)
170
+
171
+ duration = info.get("duration", 0)
172
+ subsampling = info.get("subsampling", "4:2:0")
173
+ speed = info.get("speed", 6)
174
+ max_threads = info.get("max_threads", DEFAULT_MAX_THREADS)
175
+ codec = info.get("codec", "auto")
176
+ if codec != "auto" and not _avif.encoder_codec_available(codec):
177
+ msg = "Invalid saving codec"
178
+ raise ValueError(msg)
179
+ range_ = info.get("range", "full")
180
+ tile_rows_log2 = info.get("tile_rows", 0)
181
+ tile_cols_log2 = info.get("tile_cols", 0)
182
+ alpha_premultiplied = bool(info.get("alpha_premultiplied", False))
183
+ autotiling = bool(info.get("autotiling", tile_rows_log2 == tile_cols_log2 == 0))
184
+
185
+ icc_profile = info.get("icc_profile", im.info.get("icc_profile"))
186
+ exif = info.get("exif", im.info.get("exif"))
187
+ if isinstance(exif, Image.Exif):
188
+ exif = exif.tobytes()
189
+
190
+ exif_orientation = 0
191
+ if exif:
192
+ exif_data = Image.Exif()
193
+ try:
194
+ exif_data.load(exif)
195
+ except SyntaxError:
196
+ pass
197
+ else:
198
+ orientation_tag = next(
199
+ k for k, v in ExifTags.TAGS.items() if v == "Orientation"
200
+ )
201
+ exif_orientation = exif_data.get(orientation_tag) or 0
202
+
203
+ xmp = info.get("xmp", im.info.get("xmp") or im.info.get("XML:com.adobe.xmp"))
204
+
205
+ if isinstance(xmp, text_type):
206
+ xmp = xmp.encode("utf-8")
207
+
208
+ advanced = info.get("advanced")
209
+ if advanced is not None:
210
+ if isinstance(advanced, dict):
211
+ advanced = tuple(advanced.items())
212
+ try:
213
+ advanced = tuple(advanced)
214
+ except TypeError:
215
+ invalid = True
216
+ else:
217
+ invalid = any(not isinstance(v, tuple) or len(v) != 2 for v in advanced)
218
+ if invalid:
219
+ msg = (
220
+ "advanced codec options must be a dict of key-value string "
221
+ "pairs or a series of key-value two-tuples"
222
+ )
223
+ raise ValueError(msg)
224
+ advanced = tuple(
225
+ [(str(k).encode("utf-8"), str(v).encode("utf-8")) for k, v in advanced]
226
+ )
227
+
228
+ # Setup the AVIF encoder
229
+ enc = _avif.AvifEncoder(
230
+ im.size[0],
231
+ im.size[1],
232
+ subsampling,
233
+ qmin,
234
+ qmax,
235
+ quality,
236
+ speed,
237
+ max_threads,
238
+ codec,
239
+ range_,
240
+ tile_rows_log2,
241
+ tile_cols_log2,
242
+ alpha_premultiplied,
243
+ autotiling,
244
+ icc_profile or b"",
245
+ exif or b"",
246
+ exif_orientation,
247
+ xmp or b"",
248
+ advanced,
249
+ )
250
+
251
+ # Add each frame
252
+ frame_idx = 0
253
+ frame_duration = 0
254
+ cur_idx = im.tell()
255
+ is_single_frame = total == 1
256
+ try:
257
+ for ims in [im] + append_images:
258
+ # Get # of frames in this image
259
+ nfr = getattr(ims, "n_frames", 1)
260
+
261
+ for idx in range(nfr):
262
+ ims.seek(idx)
263
+ ims.load()
264
+
265
+ # Make sure image mode is supported
266
+ frame = ims
267
+ rawmode = ims.mode
268
+ if ims.mode not in {"RGB", "RGBA"}:
269
+ alpha = (
270
+ "A" in ims.mode
271
+ or "a" in ims.mode
272
+ or (ims.mode == "P" and "A" in ims.im.getpalettemode())
273
+ or (
274
+ ims.mode == "P"
275
+ and ims.info.get("transparency", None) is not None
276
+ )
277
+ )
278
+ rawmode = "RGBA" if alpha else "RGB"
279
+ frame = ims.convert(rawmode)
280
+
281
+ # Update frame duration
282
+ if isinstance(duration, (list, tuple)):
283
+ frame_duration = duration[frame_idx]
284
+ else:
285
+ frame_duration = duration
286
+
287
+ # Append the frame to the animation encoder
288
+ enc.add(
289
+ frame.tobytes("raw", rawmode),
290
+ int(frame_duration),
291
+ frame.size[0],
292
+ frame.size[1],
293
+ rawmode,
294
+ is_single_frame,
295
+ )
296
+
297
+ # Update frame index
298
+ frame_idx += 1
299
+
300
+ if not save_all:
301
+ break
302
+
303
+ finally:
304
+ im.seek(cur_idx)
305
+
306
+ # Get the final output from the encoder
307
+ data = enc.finish()
308
+ if data is None:
309
+ msg = "cannot write file as AVIF (encoder returned None)"
310
+ raise OSError(msg)
311
+
312
+ fp.write(data)
313
+
314
+
315
+ # Prevent Pillow's AVIF plugin from replacing this plugin
316
+ try:
317
+ from PIL import AvifImagePlugin # noqa: F401
318
+ except ImportError:
319
+ pass
320
+
321
+ Image.register_open(AvifImageFile.format, AvifImageFile, _accept)
322
+ if SUPPORTED:
323
+ Image.register_save(AvifImageFile.format, _save)
324
+ Image.register_save_all(AvifImageFile.format, _save_all)
325
+ Image.register_extensions(AvifImageFile.format, [".avif", ".avifs"])
326
+ Image.register_mime(AvifImageFile.format, "image/avif")
@@ -0,0 +1,4 @@
1
+ from . import AvifImagePlugin
2
+
3
+ __all__ = ["AvifImagePlugin"]
4
+ __version__ = "1.5.5"
Binary file
@@ -0,0 +1,55 @@
1
+ Metadata-Version: 2.4
2
+ Name: pillow-avif-plugin
3
+ Version: 1.5.5
4
+ Summary: A pillow plugin that adds avif support via libavif
5
+ Home-page: https://github.com/fdintino/pillow-avif-plugin/
6
+ Download-URL: https://github.com/fdintino/pillow-avif-plugin/releases
7
+ Author: Frankie Dintino
8
+ Author-email: fdintino@theatlantic.com
9
+ License: MIT License
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Environment :: Web Environment
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: C
16
+ Classifier: Programming Language :: C++
17
+ Classifier: Programming Language :: Python :: 2.7
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.7
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
27
+ Classifier: Programming Language :: Python :: Implementation :: CPython
28
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
29
+ Classifier: Topic :: Multimedia :: Graphics
30
+ Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
31
+ Description-Content-Type: text/markdown
32
+ License-File: LICENSE
33
+ Provides-Extra: tests
34
+ Requires-Dist: pytest; extra == "tests"
35
+ Requires-Dist: packaging; extra == "tests"
36
+ Requires-Dist: pytest-cov; extra == "tests"
37
+ Requires-Dist: test-image-results; extra == "tests"
38
+ Requires-Dist: pillow; extra == "tests"
39
+ Dynamic: author
40
+ Dynamic: author-email
41
+ Dynamic: classifier
42
+ Dynamic: description
43
+ Dynamic: description-content-type
44
+ Dynamic: download-url
45
+ Dynamic: home-page
46
+ Dynamic: license
47
+ Dynamic: license-file
48
+ Dynamic: provides-extra
49
+ Dynamic: summary
50
+
51
+ # pillow-avif-plugin
52
+
53
+ This is a plugin that adds support for AVIF files until official support has been added (see [this pull request](https://github.com/python-pillow/Pillow/pull/5201)).
54
+
55
+ To register this plugin with pillow you will need to add `import pillow_avif` somewhere in your application.
@@ -0,0 +1,9 @@
1
+ pillow_avif/AvifImagePlugin.py,sha256=Rh4UnjzXBRaCmPt0shGb3MdI1F4QwMMF7kJoWVte2hI,10225
2
+ pillow_avif/__init__.py,sha256=Wup2alB02aaBQE7C3ExbW43o_MtLAp-EA9XoSq0AFzs,87
3
+ pillow_avif/_avif.cp310-win_amd64.pyd,sha256=3Kjeb_Xa054XjzKa-7f827JOLZ0BW5EThK31k9fII74,23535104
4
+ pillow_avif_plugin-1.5.5.dist-info/licenses/LICENSE,sha256=IzUqqhLzu25BvOwXCkpotw9G0JxYA_vpw8_YTnaMmeE,22192
5
+ pillow_avif_plugin-1.5.5.dist-info/METADATA,sha256=SuKyUoDJ5liheTYMxaD1CmqgT9ftjQxzuiHaaZBQew4,2300
6
+ pillow_avif_plugin-1.5.5.dist-info/WHEEL,sha256=Md6pi9WBnWjtXz7PkJLaZS7dOAWttdmi_ECA8AHRXrk,102
7
+ pillow_avif_plugin-1.5.5.dist-info/top_level.txt,sha256=xrg4zRnqDyl_JEyEQh3oCcAU4BHneocD-DCFDzf4g9E,12
8
+ pillow_avif_plugin-1.5.5.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
9
+ pillow_avif_plugin-1.5.5.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.1)
3
+ Root-Is-Purelib: false
4
+ Tag: cp310-cp310-win_amd64
5
+
@@ -0,0 +1,412 @@
1
+ Copyright (c) 2021, Frankie Dintino. 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 are met:
5
+
6
+ * Redistributions of source code must retain the above copyright notice, this
7
+ list of conditions and the following disclaimer.
8
+
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
17
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
+
24
+ ===== libavif-af69350248af4cf63a24927c13ce2fe86fccecc8 =====
25
+
26
+ Copyright 2019 Joe Drago. All rights reserved.
27
+
28
+ Redistribution and use in source and binary forms, with or without
29
+ modification, are permitted provided that the following conditions are met:
30
+
31
+ 1. Redistributions of source code must retain the above copyright notice, this
32
+ list of conditions and the following disclaimer.
33
+
34
+ 2. Redistributions in binary form must reproduce the above copyright notice,
35
+ this list of conditions and the following disclaimer in the documentation
36
+ and/or other materials provided with the distribution.
37
+
38
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
39
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
40
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
41
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
42
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
43
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
44
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
45
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
47
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48
+
49
+ ------------------------------------------------------------------------------
50
+
51
+ Files: src/obu.c
52
+
53
+ Copyright © 2018-2019, VideoLAN and dav1d authors
54
+ All rights reserved.
55
+
56
+ Redistribution and use in source and binary forms, with or without
57
+ modification, are permitted provided that the following conditions are met:
58
+
59
+ 1. Redistributions of source code must retain the above copyright notice, this
60
+ list of conditions and the following disclaimer.
61
+
62
+ 2. Redistributions in binary form must reproduce the above copyright notice,
63
+ this list of conditions and the following disclaimer in the documentation
64
+ and/or other materials provided with the distribution.
65
+
66
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
67
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
68
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
69
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
70
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
71
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
72
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
73
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
74
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
75
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
76
+
77
+ ------------------------------------------------------------------------------
78
+
79
+ Files: third_party/iccjpeg/*
80
+
81
+ In plain English:
82
+
83
+ 1. We don't promise that this software works. (But if you find any bugs,
84
+ please let us know!)
85
+ 2. You can use this software for whatever you want. You don't have to pay us.
86
+ 3. You may not pretend that you wrote this software. If you use it in a
87
+ program, you must acknowledge somewhere in your documentation that
88
+ you've used the IJG code.
89
+
90
+ In legalese:
91
+
92
+ The authors make NO WARRANTY or representation, either express or implied,
93
+ with respect to this software, its quality, accuracy, merchantability, or
94
+ fitness for a particular purpose. This software is provided "AS IS", and you,
95
+ its user, assume the entire risk as to its quality and accuracy.
96
+
97
+ This software is copyright (C) 1991-2013, Thomas G. Lane, Guido Vollbeding.
98
+ All Rights Reserved except as specified below.
99
+
100
+ Permission is hereby granted to use, copy, modify, and distribute this
101
+ software (or portions thereof) for any purpose, without fee, subject to these
102
+ conditions:
103
+ (1) If any part of the source code for this software is distributed, then this
104
+ README file must be included, with this copyright and no-warranty notice
105
+ unaltered; and any additions, deletions, or changes to the original files
106
+ must be clearly indicated in accompanying documentation.
107
+ (2) If only executable code is distributed, then the accompanying
108
+ documentation must state that "this software is based in part on the work of
109
+ the Independent JPEG Group".
110
+ (3) Permission for use of this software is granted only if the user accepts
111
+ full responsibility for any undesirable consequences; the authors accept
112
+ NO LIABILITY for damages of any kind.
113
+
114
+ These conditions apply to any software derived from or based on the IJG code,
115
+ not just to the unmodified library. If you use our work, you ought to
116
+ acknowledge us.
117
+
118
+ Permission is NOT granted for the use of any IJG author's name or company name
119
+ in advertising or publicity relating to this software or products derived from
120
+ it. This software may be referred to only as "the Independent JPEG Group's
121
+ software".
122
+
123
+ We specifically permit and encourage the use of this software as the basis of
124
+ commercial products, provided that all warranty or liability claims are
125
+ assumed by the product vendor.
126
+
127
+
128
+ The Unix configuration script "configure" was produced with GNU Autoconf.
129
+ It is copyright by the Free Software Foundation but is freely distributable.
130
+ The same holds for its supporting scripts (config.guess, config.sub,
131
+ ltmain.sh). Another support script, install-sh, is copyright by X Consortium
132
+ but is also freely distributable.
133
+
134
+ The IJG distribution formerly included code to read and write GIF files.
135
+ To avoid entanglement with the Unisys LZW patent, GIF reading support has
136
+ been removed altogether, and the GIF writer has been simplified to produce
137
+ "uncompressed GIFs". This technique does not use the LZW algorithm; the
138
+ resulting GIF files are larger than usual, but are readable by all standard
139
+ GIF decoders.
140
+
141
+ We are required to state that
142
+ "The Graphics Interchange Format(c) is the Copyright property of
143
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
144
+ CompuServe Incorporated."
145
+
146
+ ------------------------------------------------------------------------------
147
+
148
+ Files: contrib/gdk-pixbuf/*
149
+
150
+ Copyright 2020 Emmanuel Gil Peyrot. All rights reserved.
151
+
152
+ Redistribution and use in source and binary forms, with or without
153
+ modification, are permitted provided that the following conditions are met:
154
+
155
+ 1. Redistributions of source code must retain the above copyright notice, this
156
+ list of conditions and the following disclaimer.
157
+
158
+ 2. Redistributions in binary form must reproduce the above copyright notice,
159
+ this list of conditions and the following disclaimer in the documentation
160
+ and/or other materials provided with the distribution.
161
+
162
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
163
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
164
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
165
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
166
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
167
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
168
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
169
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
170
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
171
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
172
+
173
+ ------------------------------------------------------------------------------
174
+
175
+ Files: android_jni/gradlew*
176
+
177
+
178
+ Apache License
179
+ Version 2.0, January 2004
180
+ http://www.apache.org/licenses/
181
+
182
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
183
+
184
+ 1. Definitions.
185
+
186
+ "License" shall mean the terms and conditions for use, reproduction,
187
+ and distribution as defined by Sections 1 through 9 of this document.
188
+
189
+ "Licensor" shall mean the copyright owner or entity authorized by
190
+ the copyright owner that is granting the License.
191
+
192
+ "Legal Entity" shall mean the union of the acting entity and all
193
+ other entities that control, are controlled by, or are under common
194
+ control with that entity. For the purposes of this definition,
195
+ "control" means (i) the power, direct or indirect, to cause the
196
+ direction or management of such entity, whether by contract or
197
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
198
+ outstanding shares, or (iii) beneficial ownership of such entity.
199
+
200
+ "You" (or "Your") shall mean an individual or Legal Entity
201
+ exercising permissions granted by this License.
202
+
203
+ "Source" form shall mean the preferred form for making modifications,
204
+ including but not limited to software source code, documentation
205
+ source, and configuration files.
206
+
207
+ "Object" form shall mean any form resulting from mechanical
208
+ transformation or translation of a Source form, including but
209
+ not limited to compiled object code, generated documentation,
210
+ and conversions to other media types.
211
+
212
+ "Work" shall mean the work of authorship, whether in Source or
213
+ Object form, made available under the License, as indicated by a
214
+ copyright notice that is included in or attached to the work
215
+ (an example is provided in the Appendix below).
216
+
217
+ "Derivative Works" shall mean any work, whether in Source or Object
218
+ form, that is based on (or derived from) the Work and for which the
219
+ editorial revisions, annotations, elaborations, or other modifications
220
+ represent, as a whole, an original work of authorship. For the purposes
221
+ of this License, Derivative Works shall not include works that remain
222
+ separable from, or merely link (or bind by name) to the interfaces of,
223
+ the Work and Derivative Works thereof.
224
+
225
+ "Contribution" shall mean any work of authorship, including
226
+ the original version of the Work and any modifications or additions
227
+ to that Work or Derivative Works thereof, that is intentionally
228
+ submitted to Licensor for inclusion in the Work by the copyright owner
229
+ or by an individual or Legal Entity authorized to submit on behalf of
230
+ the copyright owner. For the purposes of this definition, "submitted"
231
+ means any form of electronic, verbal, or written communication sent
232
+ to the Licensor or its representatives, including but not limited to
233
+ communication on electronic mailing lists, source code control systems,
234
+ and issue tracking systems that are managed by, or on behalf of, the
235
+ Licensor for the purpose of discussing and improving the Work, but
236
+ excluding communication that is conspicuously marked or otherwise
237
+ designated in writing by the copyright owner as "Not a Contribution."
238
+
239
+ "Contributor" shall mean Licensor and any individual or Legal Entity
240
+ on behalf of whom a Contribution has been received by Licensor and
241
+ subsequently incorporated within the Work.
242
+
243
+ 2. Grant of Copyright License. Subject to the terms and conditions of
244
+ this License, each Contributor hereby grants to You a perpetual,
245
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
246
+ copyright license to reproduce, prepare Derivative Works of,
247
+ publicly display, publicly perform, sublicense, and distribute the
248
+ Work and such Derivative Works in Source or Object form.
249
+
250
+ 3. Grant of Patent License. Subject to the terms and conditions of
251
+ this License, each Contributor hereby grants to You a perpetual,
252
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
253
+ (except as stated in this section) patent license to make, have made,
254
+ use, offer to sell, sell, import, and otherwise transfer the Work,
255
+ where such license applies only to those patent claims licensable
256
+ by such Contributor that are necessarily infringed by their
257
+ Contribution(s) alone or by combination of their Contribution(s)
258
+ with the Work to which such Contribution(s) was submitted. If You
259
+ institute patent litigation against any entity (including a
260
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
261
+ or a Contribution incorporated within the Work constitutes direct
262
+ or contributory patent infringement, then any patent licenses
263
+ granted to You under this License for that Work shall terminate
264
+ as of the date such litigation is filed.
265
+
266
+ 4. Redistribution. You may reproduce and distribute copies of the
267
+ Work or Derivative Works thereof in any medium, with or without
268
+ modifications, and in Source or Object form, provided that You
269
+ meet the following conditions:
270
+
271
+ (a) You must give any other recipients of the Work or
272
+ Derivative Works a copy of this License; and
273
+
274
+ (b) You must cause any modified files to carry prominent notices
275
+ stating that You changed the files; and
276
+
277
+ (c) You must retain, in the Source form of any Derivative Works
278
+ that You distribute, all copyright, patent, trademark, and
279
+ attribution notices from the Source form of the Work,
280
+ excluding those notices that do not pertain to any part of
281
+ the Derivative Works; and
282
+
283
+ (d) If the Work includes a "NOTICE" text file as part of its
284
+ distribution, then any Derivative Works that You distribute must
285
+ include a readable copy of the attribution notices contained
286
+ within such NOTICE file, excluding those notices that do not
287
+ pertain to any part of the Derivative Works, in at least one
288
+ of the following places: within a NOTICE text file distributed
289
+ as part of the Derivative Works; within the Source form or
290
+ documentation, if provided along with the Derivative Works; or,
291
+ within a display generated by the Derivative Works, if and
292
+ wherever such third-party notices normally appear. The contents
293
+ of the NOTICE file are for informational purposes only and
294
+ do not modify the License. You may add Your own attribution
295
+ notices within Derivative Works that You distribute, alongside
296
+ or as an addendum to the NOTICE text from the Work, provided
297
+ that such additional attribution notices cannot be construed
298
+ as modifying the License.
299
+
300
+ You may add Your own copyright statement to Your modifications and
301
+ may provide additional or different license terms and conditions
302
+ for use, reproduction, or distribution of Your modifications, or
303
+ for any such Derivative Works as a whole, provided Your use,
304
+ reproduction, and distribution of the Work otherwise complies with
305
+ the conditions stated in this License.
306
+
307
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
308
+ any Contribution intentionally submitted for inclusion in the Work
309
+ by You to the Licensor shall be under the terms and conditions of
310
+ this License, without any additional terms or conditions.
311
+ Notwithstanding the above, nothing herein shall supersede or modify
312
+ the terms of any separate license agreement you may have executed
313
+ with Licensor regarding such Contributions.
314
+
315
+ 6. Trademarks. This License does not grant permission to use the trade
316
+ names, trademarks, service marks, or product names of the Licensor,
317
+ except as required for reasonable and customary use in describing the
318
+ origin of the Work and reproducing the content of the NOTICE file.
319
+
320
+ 7. Disclaimer of Warranty. Unless required by applicable law or
321
+ agreed to in writing, Licensor provides the Work (and each
322
+ Contributor provides its Contributions) on an "AS IS" BASIS,
323
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
324
+ implied, including, without limitation, any warranties or conditions
325
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
326
+ PARTICULAR PURPOSE. You are solely responsible for determining the
327
+ appropriateness of using or redistributing the Work and assume any
328
+ risks associated with Your exercise of permissions under this License.
329
+
330
+ 8. Limitation of Liability. In no event and under no legal theory,
331
+ whether in tort (including negligence), contract, or otherwise,
332
+ unless required by applicable law (such as deliberate and grossly
333
+ negligent acts) or agreed to in writing, shall any Contributor be
334
+ liable to You for damages, including any direct, indirect, special,
335
+ incidental, or consequential damages of any character arising as a
336
+ result of this License or out of the use or inability to use the
337
+ Work (including but not limited to damages for loss of goodwill,
338
+ work stoppage, computer failure or malfunction, or any and all
339
+ other commercial damages or losses), even if such Contributor
340
+ has been advised of the possibility of such damages.
341
+
342
+ 9. Accepting Warranty or Additional Liability. While redistributing
343
+ the Work or Derivative Works thereof, You may choose to offer,
344
+ and charge a fee for, acceptance of support, warranty, indemnity,
345
+ or other liability obligations and/or rights consistent with this
346
+ License. However, in accepting such obligations, You may act only
347
+ on Your own behalf and on Your sole responsibility, not on behalf
348
+ of any other Contributor, and only if You agree to indemnify,
349
+ defend, and hold each Contributor harmless for any liability
350
+ incurred by, or claims asserted against, such Contributor by reason
351
+ of your accepting any such warranty or additional liability.
352
+
353
+ END OF TERMS AND CONDITIONS
354
+
355
+ APPENDIX: How to apply the Apache License to your work.
356
+
357
+ To apply the Apache License to your work, attach the following
358
+ boilerplate notice, with the fields enclosed by brackets "[]"
359
+ replaced with your own identifying information. (Don't include
360
+ the brackets!) The text should be enclosed in the appropriate
361
+ comment syntax for the file format. We also recommend that a
362
+ file or class name and description of purpose be included on the
363
+ same "printed page" as the copyright notice for easier
364
+ identification within third-party archives.
365
+
366
+ Copyright [yyyy] [name of copyright owner]
367
+
368
+ Licensed under the Apache License, Version 2.0 (the "License");
369
+ you may not use this file except in compliance with the License.
370
+ You may obtain a copy of the License at
371
+
372
+ http://www.apache.org/licenses/LICENSE-2.0
373
+
374
+ Unless required by applicable law or agreed to in writing, software
375
+ distributed under the License is distributed on an "AS IS" BASIS,
376
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
377
+ See the License for the specific language governing permissions and
378
+ limitations under the License.
379
+
380
+ ------------------------------------------------------------------------------
381
+
382
+ Files: third_party/libyuv/*
383
+
384
+ Copyright 2011 The LibYuv Project Authors. All rights reserved.
385
+
386
+ Redistribution and use in source and binary forms, with or without
387
+ modification, are permitted provided that the following conditions are
388
+ met:
389
+
390
+ * Redistributions of source code must retain the above copyright
391
+ notice, this list of conditions and the following disclaimer.
392
+
393
+ * Redistributions in binary form must reproduce the above copyright
394
+ notice, this list of conditions and the following disclaimer in
395
+ the documentation and/or other materials provided with the
396
+ distribution.
397
+
398
+ * Neither the name of Google nor the names of its contributors may
399
+ be used to endorse or promote products derived from this software
400
+ without specific prior written permission.
401
+
402
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
403
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
404
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
405
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
406
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
407
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
408
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
409
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
410
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
411
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
412
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1 @@
1
+ pillow_avif