pillow-avif-plugin 1.5.3__cp311-cp311-musllinux_1_2_aarch64.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.

Potentially problematic release.


This version of pillow-avif-plugin might be problematic. Click here for more details.

@@ -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.3"
@@ -0,0 +1,55 @@
1
+ Metadata-Version: 2.4
2
+ Name: pillow-avif-plugin
3
+ Version: 1.5.3
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,14 @@
1
+ pillow_avif/AvifImagePlugin.py,sha256=OsS19EQ3KjKNuP-WRamO3xVujD0mU3XiUPuLbUmg5K8,9899
2
+ pillow_avif/__init__.py,sha256=I48RX1MkyzGJJ5-yPrKhDL0uzh_ABKidTXvVRjWUD-o,83
3
+ pillow_avif/_avif.cpython-311-aarch64-linux-musl.so,sha256=AtgpY5KI5SEQt57kpx9hSlbAP8NSQ71E-jhusS0n4nc,200857
4
+ pillow_avif_plugin.libs/libavif-5856a51f.so.16.3.0,sha256=pHzoTGkctCfiEQG_v4_87ZE6AQ6Z6a1cGTVPkOSbYcg,8950233
5
+ pillow_avif_plugin.libs/libgcc_s-2d945d6c.so.1,sha256=dn-5kQf6XkEWhBOx7tnXMZHJQSbDdSYmPhrx8fiYeI8,201673
6
+ pillow_avif_plugin.libs/liblzma-c3598a24.so.5.8.1,sha256=tR6uwwSPi6vp_Ap2wvtIREYAyzhD-HmqtYOTr50yVA4,332329
7
+ pillow_avif_plugin.libs/libunwind-8bccfac5.so.8.1.0,sha256=ucyiZVccIEzfXlO6fDkiB7_rZfhbGNiPHI5zbCR4aFo,198809
8
+ pillow_avif_plugin-1.5.3.dist-info/METADATA,sha256=F-_yStSwbdVbbNg8mhx6B0ePtCHnCZ8bqRu4LJFiLN0,2245
9
+ pillow_avif_plugin-1.5.3.dist-info/WHEEL,sha256=_ZhLbjPClcVGmJlRMiFJtgzsgi_T8cTwUxEwgzQM_X4,114
10
+ pillow_avif_plugin-1.5.3.dist-info/top_level.txt,sha256=xrg4zRnqDyl_JEyEQh3oCcAU4BHneocD-DCFDzf4g9E,12
11
+ pillow_avif_plugin-1.5.3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
12
+ pillow_avif_plugin-1.5.3.dist-info/RECORD,,
13
+ pillow_avif_plugin-1.5.3.dist-info/licenses/LICENSE,sha256=2l49eVdgaNy9JTEPbstz1GaaPKw02gFdtuThTNUi730,25213
14
+ pillow_avif_plugin-1.5.3.dist-info/sboms/auditwheel.cdx.json,sha256=qONd3WmLapQIHJH9BP5xw6s_HMSDlobOlC8cNf-7r4Q,2220
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.1)
3
+ Root-Is-Purelib: false
4
+ Tag: cp311-cp311-musllinux_1_2_aarch64
5
+
@@ -0,0 +1,463 @@
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
+
25
+ ----
26
+
27
+ AOM
28
+
29
+ Copyright (c) 2016, Alliance for Open Media. All rights reserved.
30
+
31
+ Redistribution and use in source and binary forms, with or without
32
+ modification, are permitted provided that the following conditions
33
+ are met:
34
+
35
+ 1. Redistributions of source code must retain the above copyright
36
+ notice, this list of conditions and the following disclaimer.
37
+
38
+ 2. Redistributions in binary form must reproduce the above copyright
39
+ notice, this list of conditions and the following disclaimer in
40
+ the documentation and/or other materials provided with the
41
+ distribution.
42
+
43
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
44
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
45
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
46
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
47
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
48
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
49
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
51
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
53
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
54
+ POSSIBILITY OF SUCH DAMAGE.
55
+
56
+
57
+ ----
58
+
59
+ DAV1D
60
+
61
+ Copyright © 2018-2019, VideoLAN and dav1d authors
62
+ All rights reserved.
63
+
64
+ Redistribution and use in source and binary forms, with or without
65
+ modification, are permitted provided that the following conditions are met:
66
+
67
+ 1. Redistributions of source code must retain the above copyright notice, this
68
+ list of conditions and the following disclaimer.
69
+
70
+ 2. Redistributions in binary form must reproduce the above copyright notice,
71
+ this list of conditions and the following disclaimer in the documentation
72
+ and/or other materials provided with the distribution.
73
+
74
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
75
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
76
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
77
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
78
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
79
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
80
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
81
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
82
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
83
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
84
+
85
+
86
+ ----
87
+
88
+ LIBGAV1
89
+
90
+ Apache License
91
+ Version 2.0, January 2004
92
+ http://www.apache.org/licenses/
93
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
94
+ 1. Definitions.
95
+ "License" shall mean the terms and conditions for use, reproduction,
96
+ and distribution as defined by Sections 1 through 9 of this document.
97
+ "Licensor" shall mean the copyright owner or entity authorized by
98
+ the copyright owner that is granting the License.
99
+ "Legal Entity" shall mean the union of the acting entity and all
100
+ other entities that control, are controlled by, or are under common
101
+ control with that entity. For the purposes of this definition,
102
+ "control" means (i) the power, direct or indirect, to cause the
103
+ direction or management of such entity, whether by contract or
104
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
105
+ outstanding shares, or (iii) beneficial ownership of such entity.
106
+ "You" (or "Your") shall mean an individual or Legal Entity
107
+ exercising permissions granted by this License.
108
+ "Source" form shall mean the preferred form for making modifications,
109
+ including but not limited to software source code, documentation
110
+ source, and configuration files.
111
+ "Object" form shall mean any form resulting from mechanical
112
+ transformation or translation of a Source form, including but
113
+ not limited to compiled object code, generated documentation,
114
+ and conversions to other media types.
115
+ "Work" shall mean the work of authorship, whether in Source or
116
+ Object form, made available under the License, as indicated by a
117
+ copyright notice that is included in or attached to the work
118
+ (an example is provided in the Appendix below).
119
+ "Derivative Works" shall mean any work, whether in Source or Object
120
+ form, that is based on (or derived from) the Work and for which the
121
+ editorial revisions, annotations, elaborations, or other modifications
122
+ represent, as a whole, an original work of authorship. For the purposes
123
+ of this License, Derivative Works shall not include works that remain
124
+ separable from, or merely link (or bind by name) to the interfaces of,
125
+ the Work and Derivative Works thereof.
126
+ "Contribution" shall mean any work of authorship, including
127
+ the original version of the Work and any modifications or additions
128
+ to that Work or Derivative Works thereof, that is intentionally
129
+ submitted to Licensor for inclusion in the Work by the copyright owner
130
+ or by an individual or Legal Entity authorized to submit on behalf of
131
+ the copyright owner. For the purposes of this definition, "submitted"
132
+ means any form of electronic, verbal, or written communication sent
133
+ to the Licensor or its representatives, including but not limited to
134
+ communication on electronic mailing lists, source code control systems,
135
+ and issue tracking systems that are managed by, or on behalf of, the
136
+ Licensor for the purpose of discussing and improving the Work, but
137
+ excluding communication that is conspicuously marked or otherwise
138
+ designated in writing by the copyright owner as "Not a Contribution."
139
+ "Contributor" shall mean Licensor and any individual or Legal Entity
140
+ on behalf of whom a Contribution has been received by Licensor and
141
+ subsequently incorporated within the Work.
142
+ 2. Grant of Copyright License. Subject to the terms and conditions of
143
+ this License, each Contributor hereby grants to You a perpetual,
144
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
145
+ copyright license to reproduce, prepare Derivative Works of,
146
+ publicly display, publicly perform, sublicense, and distribute the
147
+ Work and such Derivative Works in Source or Object form.
148
+ 3. Grant of Patent License. Subject to the terms and conditions of
149
+ this License, each Contributor hereby grants to You a perpetual,
150
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
151
+ (except as stated in this section) patent license to make, have made,
152
+ use, offer to sell, sell, import, and otherwise transfer the Work,
153
+ where such license applies only to those patent claims licensable
154
+ by such Contributor that are necessarily infringed by their
155
+ Contribution(s) alone or by combination of their Contribution(s)
156
+ with the Work to which such Contribution(s) was submitted. If You
157
+ institute patent litigation against any entity (including a
158
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
159
+ or a Contribution incorporated within the Work constitutes direct
160
+ or contributory patent infringement, then any patent licenses
161
+ granted to You under this License for that Work shall terminate
162
+ as of the date such litigation is filed.
163
+ 4. Redistribution. You may reproduce and distribute copies of the
164
+ Work or Derivative Works thereof in any medium, with or without
165
+ modifications, and in Source or Object form, provided that You
166
+ meet the following conditions:
167
+ (a) You must give any other recipients of the Work or
168
+ Derivative Works a copy of this License; and
169
+ (b) You must cause any modified files to carry prominent notices
170
+ stating that You changed the files; and
171
+ (c) You must retain, in the Source form of any Derivative Works
172
+ that You distribute, all copyright, patent, trademark, and
173
+ attribution notices from the Source form of the Work,
174
+ excluding those notices that do not pertain to any part of
175
+ the Derivative Works; and
176
+ (d) If the Work includes a "NOTICE" text file as part of its
177
+ distribution, then any Derivative Works that You distribute must
178
+ include a readable copy of the attribution notices contained
179
+ within such NOTICE file, excluding those notices that do not
180
+ pertain to any part of the Derivative Works, in at least one
181
+ of the following places: within a NOTICE text file distributed
182
+ as part of the Derivative Works; within the Source form or
183
+ documentation, if provided along with the Derivative Works; or,
184
+ within a display generated by the Derivative Works, if and
185
+ wherever such third-party notices normally appear. The contents
186
+ of the NOTICE file are for informational purposes only and
187
+ do not modify the License. You may add Your own attribution
188
+ notices within Derivative Works that You distribute, alongside
189
+ or as an addendum to the NOTICE text from the Work, provided
190
+ that such additional attribution notices cannot be construed
191
+ as modifying the License.
192
+ You may add Your own copyright statement to Your modifications and
193
+ may provide additional or different license terms and conditions
194
+ for use, reproduction, or distribution of Your modifications, or
195
+ for any such Derivative Works as a whole, provided Your use,
196
+ reproduction, and distribution of the Work otherwise complies with
197
+ the conditions stated in this License.
198
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
199
+ any Contribution intentionally submitted for inclusion in the Work
200
+ by You to the Licensor shall be under the terms and conditions of
201
+ this License, without any additional terms or conditions.
202
+ Notwithstanding the above, nothing herein shall supersede or modify
203
+ the terms of any separate license agreement you may have executed
204
+ with Licensor regarding such Contributions.
205
+ 6. Trademarks. This License does not grant permission to use the trade
206
+ names, trademarks, service marks, or product names of the Licensor,
207
+ except as required for reasonable and customary use in describing the
208
+ origin of the Work and reproducing the content of the NOTICE file.
209
+ 7. Disclaimer of Warranty. Unless required by applicable law or
210
+ agreed to in writing, Licensor provides the Work (and each
211
+ Contributor provides its Contributions) on an "AS IS" BASIS,
212
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
213
+ implied, including, without limitation, any warranties or conditions
214
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
215
+ PARTICULAR PURPOSE. You are solely responsible for determining the
216
+ appropriateness of using or redistributing the Work and assume any
217
+ risks associated with Your exercise of permissions under this License.
218
+ 8. Limitation of Liability. In no event and under no legal theory,
219
+ whether in tort (including negligence), contract, or otherwise,
220
+ unless required by applicable law (such as deliberate and grossly
221
+ negligent acts) or agreed to in writing, shall any Contributor be
222
+ liable to You for damages, including any direct, indirect, special,
223
+ incidental, or consequential damages of any character arising as a
224
+ result of this License or out of the use or inability to use the
225
+ Work (including but not limited to damages for loss of goodwill,
226
+ work stoppage, computer failure or malfunction, or any and all
227
+ other commercial damages or losses), even if such Contributor
228
+ has been advised of the possibility of such damages.
229
+ 9. Accepting Warranty or Additional Liability. While redistributing
230
+ the Work or Derivative Works thereof, You may choose to offer,
231
+ and charge a fee for, acceptance of support, warranty, indemnity,
232
+ or other liability obligations and/or rights consistent with this
233
+ License. However, in accepting such obligations, You may act only
234
+ on Your own behalf and on Your sole responsibility, not on behalf
235
+ of any other Contributor, and only if You agree to indemnify,
236
+ defend, and hold each Contributor harmless for any liability
237
+ incurred by, or claims asserted against, such Contributor by reason
238
+ of your accepting any such warranty or additional liability.
239
+ END OF TERMS AND CONDITIONS
240
+ APPENDIX: How to apply the Apache License to your work.
241
+ To apply the Apache License to your work, attach the following
242
+ boilerplate notice, with the fields enclosed by brackets "[]"
243
+ replaced with your own identifying information. (Don't include
244
+ the brackets!) The text should be enclosed in the appropriate
245
+ comment syntax for the file format. We also recommend that a
246
+ file or class name and description of purpose be included on the
247
+ same "printed page" as the copyright notice for easier
248
+ identification within third-party archives.
249
+ Copyright [yyyy] [name of copyright owner]
250
+ Licensed under the Apache License, Version 2.0 (the "License");
251
+ you may not use this file except in compliance with the License.
252
+ You may obtain a copy of the License at
253
+ http://www.apache.org/licenses/LICENSE-2.0
254
+ Unless required by applicable law or agreed to in writing, software
255
+ distributed under the License is distributed on an "AS IS" BASIS,
256
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
257
+ See the License for the specific language governing permissions and
258
+ limitations under the License.
259
+
260
+
261
+ ----
262
+
263
+ LIBYUV
264
+
265
+ Copyright 2011 The LibYuv Project Authors. All rights reserved.
266
+
267
+ Redistribution and use in source and binary forms, with or without
268
+ modification, are permitted provided that the following conditions are
269
+ met:
270
+
271
+ * Redistributions of source code must retain the above copyright
272
+ notice, this list of conditions and the following disclaimer.
273
+
274
+ * Redistributions in binary form must reproduce the above copyright
275
+ notice, this list of conditions and the following disclaimer in
276
+ the documentation and/or other materials provided with the
277
+ distribution.
278
+
279
+ * Neither the name of Google nor the names of its contributors may
280
+ be used to endorse or promote products derived from this software
281
+ without specific prior written permission.
282
+
283
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
284
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
285
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
286
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
287
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
288
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
289
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
290
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
291
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
292
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
293
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
294
+
295
+
296
+ ----
297
+
298
+ RAV1E
299
+
300
+ Copyright (c) 2017-2020, the rav1e contributors. All rights reserved.
301
+
302
+ Redistribution and use in source and binary forms, with or without
303
+ modification, are permitted provided that the following conditions are met:
304
+
305
+ * Redistributions of source code must retain the above copyright notice, this
306
+ list of conditions and the following disclaimer.
307
+
308
+ * Redistributions in binary form must reproduce the above copyright notice,
309
+ this list of conditions and the following disclaimer in the documentation
310
+ and/or other materials provided with the distribution.
311
+
312
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
313
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
314
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
315
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
316
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
317
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
318
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
319
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
320
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
321
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
322
+
323
+
324
+ ----
325
+
326
+ SVT-AV1
327
+
328
+ Copyright (c) 2019, Alliance for Open Media. All rights reserved.
329
+
330
+ Redistribution and use in source and binary forms, with or without
331
+ modification, are permitted provided that the following conditions
332
+ are met:
333
+
334
+ 1. Redistributions of source code must retain the above copyright
335
+ notice, this list of conditions and the following disclaimer.
336
+
337
+ 2. Redistributions in binary form must reproduce the above copyright
338
+ notice, this list of conditions and the following disclaimer in
339
+ the documentation and/or other materials provided with the
340
+ distribution.
341
+
342
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
343
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
344
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
345
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
346
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
347
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
348
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
349
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
350
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
351
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
352
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
353
+ POSSIBILITY OF SUCH DAMAGE.
354
+
355
+
356
+
357
+ Alliance for Open Media Patent License 1.0
358
+
359
+ 1. License Terms.
360
+
361
+ 1.1. Patent License. Subject to the terms and conditions of this License, each
362
+ Licensor, on behalf of itself and successors in interest and assigns,
363
+ grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive,
364
+ no-charge, royalty-free, irrevocable (except as expressly stated in this
365
+ License) patent license to its Necessary Claims to make, use, sell, offer
366
+ for sale, import or distribute any Implementation.
367
+
368
+ 1.2. Conditions.
369
+
370
+ 1.2.1. Availability. As a condition to the grant of rights to Licensee to make,
371
+ sell, offer for sale, import or distribute an Implementation under
372
+ Section 1.1, Licensee must make its Necessary Claims available under
373
+ this License, and must reproduce this License with any Implementation
374
+ as follows:
375
+
376
+ a. For distribution in source code, by including this License in the
377
+ root directory of the source code with its Implementation.
378
+
379
+ b. For distribution in any other form (including binary, object form,
380
+ and/or hardware description code (e.g., HDL, RTL, Gate Level Netlist,
381
+ GDSII, etc.)), by including this License in the documentation, legal
382
+ notices, and/or other written materials provided with the
383
+ Implementation.
384
+
385
+ 1.2.2. Additional Conditions. This license is directly from Licensor to
386
+ Licensee. Licensee acknowledges as a condition of benefiting from it
387
+ that no rights from Licensor are received from suppliers, distributors,
388
+ or otherwise in connection with this License.
389
+
390
+ 1.3. Defensive Termination. If any Licensee, its Affiliates, or its agents
391
+ initiates patent litigation or files, maintains, or voluntarily
392
+ participates in a lawsuit against another entity or any person asserting
393
+ that any Implementation infringes Necessary Claims, any patent licenses
394
+ granted under this License directly to the Licensee are immediately
395
+ terminated as of the date of the initiation of action unless 1) that suit
396
+ was in response to a corresponding suit regarding an Implementation first
397
+ brought against an initiating entity, or 2) that suit was brought to
398
+ enforce the terms of this License (including intervention in a third-party
399
+ action by a Licensee).
400
+
401
+ 1.4. Disclaimers. The Reference Implementation and Specification are provided
402
+ "AS IS" and without warranty. The entire risk as to implementing or
403
+ otherwise using the Reference Implementation or Specification is assumed
404
+ by the implementer and user. Licensor expressly disclaims any warranties
405
+ (express, implied, or otherwise), including implied warranties of
406
+ merchantability, non-infringement, fitness for a particular purpose, or
407
+ title, related to the material. IN NO EVENT WILL LICENSOR BE LIABLE TO
408
+ ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL,
409
+ INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF
410
+ ACTION OF ANY KIND WITH RESPECT TO THIS LICENSE, WHETHER BASED ON BREACH
411
+ OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR
412
+ NOT THE OTHER PARTRY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
413
+
414
+ 2. Definitions.
415
+
416
+ 2.1. Affiliate. “Affiliate” means an entity that directly or indirectly
417
+ Controls, is Controlled by, or is under common Control of that party.
418
+
419
+ 2.2. Control. “Control” means direct or indirect control of more than 50% of
420
+ the voting power to elect directors of that corporation, or for any other
421
+ entity, the power to direct management of such entity.
422
+
423
+ 2.3. Decoder. "Decoder" means any decoder that conforms fully with all
424
+ non-optional portions of the Specification.
425
+
426
+ 2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can
427
+ be decoded by a Decoder only to the extent it produces such a bitstream.
428
+
429
+ 2.5. Final Deliverable. “Final Deliverable” means the final version of a
430
+ deliverable approved by the Alliance for Open Media as a Final
431
+ Deliverable.
432
+
433
+ 2.6. Implementation. "Implementation" means any implementation, including the
434
+ Reference Implementation, that is an Encoder and/or a Decoder. An
435
+ Implementation also includes components of an Implementation only to the
436
+ extent they are used as part of an Implementation.
437
+
438
+ 2.7. License. “License” means this license.
439
+
440
+ 2.8. Licensee. “Licensee” means any person or entity who exercises patent
441
+ rights granted under this License.
442
+
443
+ 2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers
444
+ for sale, imports or distributes any Implementation, or (ii) a person
445
+ or entity that has a licensing obligation to the Implementation as a
446
+ result of its membership and/or participation in the Alliance for Open
447
+ Media working group that developed the Specification.
448
+
449
+ 2.10. Necessary Claims. "Necessary Claims" means all claims of patents or
450
+ patent applications, (a) that currently or at any time in the future,
451
+ are owned or controlled by the Licensor, and (b) (i) would be an
452
+ Essential Claim as defined by the W3C Policy as of February 5, 2004
453
+ (https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential)
454
+ as if the Specification was a W3C Recommendation; or (ii) are infringed
455
+ by the Reference Implementation.
456
+
457
+ 2.11. Reference Implementation. “Reference Implementation” means an Encoder
458
+ and/or Decoder released by the Alliance for Open Media as a Final
459
+ Deliverable.
460
+
461
+ 2.12. Specification. “Specification” means the specification designated by
462
+ the Alliance for Open Media as a Final Deliverable for which this
463
+ License was issued.
@@ -0,0 +1 @@
1
+ {"bomFormat": "CycloneDX", "specVersion": "1.4", "version": 1, "metadata": {"component": {"type": "library", "bom-ref": "pkg:pypi/pillow_avif_plugin@1.5.3?file_name=pillow_avif_plugin-1.5.3-cp311-cp311-musllinux_1_2_aarch64.whl", "name": "pillow_avif_plugin", "version": "1.5.3", "purl": "pkg:pypi/pillow_avif_plugin@1.5.3?file_name=pillow_avif_plugin-1.5.3-cp311-cp311-musllinux_1_2_aarch64.whl"}, "tools": [{"name": "auditwheel", "version": "6.6.0"}]}, "components": [{"type": "library", "bom-ref": "pkg:pypi/pillow_avif_plugin@1.5.3?file_name=pillow_avif_plugin-1.5.3-cp311-cp311-musllinux_1_2_aarch64.whl", "name": "pillow_avif_plugin", "version": "1.5.3", "purl": "pkg:pypi/pillow_avif_plugin@1.5.3?file_name=pillow_avif_plugin-1.5.3-cp311-cp311-musllinux_1_2_aarch64.whl"}, {"type": "library", "bom-ref": "pkg:apk/alpine/libgcc@14.2.0-r6#933a623c9e323e83b1734e630a342f206999adc096732a3fea9896fa0181ea29", "name": "libgcc", "version": "14.2.0-r6", "purl": "pkg:apk/alpine/libgcc@14.2.0-r6"}, {"type": "library", "bom-ref": "pkg:apk/alpine/xz@libs-5.8.1-r0#df53cacb37d27cdc1a3d7140d31d01aa6e754809475a7ddc4fef0a3049d140a9", "name": "xz", "version": "libs-5.8.1-r0", "purl": "pkg:apk/alpine/xz@libs-5.8.1-r0"}, {"type": "library", "bom-ref": "pkg:apk/alpine/libunwind@1.8.1-r0#3b383742b9bdc3b63d50b03b8616a8275fcb844234314ade05fb4b3b46fdb170", "name": "libunwind", "version": "1.8.1-r0", "purl": "pkg:apk/alpine/libunwind@1.8.1-r0"}], "dependencies": [{"ref": "pkg:pypi/pillow_avif_plugin@1.5.3?file_name=pillow_avif_plugin-1.5.3-cp311-cp311-musllinux_1_2_aarch64.whl", "dependsOn": ["pkg:apk/alpine/libgcc@14.2.0-r6#933a623c9e323e83b1734e630a342f206999adc096732a3fea9896fa0181ea29", "pkg:apk/alpine/xz@libs-5.8.1-r0#df53cacb37d27cdc1a3d7140d31d01aa6e754809475a7ddc4fef0a3049d140a9", "pkg:apk/alpine/libunwind@1.8.1-r0#3b383742b9bdc3b63d50b03b8616a8275fcb844234314ade05fb4b3b46fdb170"]}, {"ref": "pkg:apk/alpine/libgcc@14.2.0-r6#933a623c9e323e83b1734e630a342f206999adc096732a3fea9896fa0181ea29"}, {"ref": "pkg:apk/alpine/xz@libs-5.8.1-r0#df53cacb37d27cdc1a3d7140d31d01aa6e754809475a7ddc4fef0a3049d140a9"}, {"ref": "pkg:apk/alpine/libunwind@1.8.1-r0#3b383742b9bdc3b63d50b03b8616a8275fcb844234314ade05fb4b3b46fdb170"}]}
@@ -0,0 +1 @@
1
+ pillow_avif