xref: /aosp_15_r20/external/webp/NEWS (revision b2055c353e87c8814eb2b6b1b11112a1562253bd)
1- 4/12/2024: version 1.4.0
2  This is a binary compatible release.
3  * API changes:
4    - libwebpmux: WebPAnimEncoderSetChunk, WebPAnimEncoderGetChunk,
5                  WebPAnimEncoderDeleteChunk
6    - libsharpyuv: SharpYuvOptionsInit, SharpYuvConvertWithOptions
7    - extras: SharpYuvEstimate420Risk
8  * further security related hardening in libwebp & examples
9  * some minor optimizations in the lossless encoder
10  * added WEBP_NODISCARD to report unused result warnings; enable with
11    -DWEBP_ENABLE_NODISCARD=1
12  * improvements and corrections in webp-container-spec.txt and
13    webp-lossless-bitstream-spec.txt (#611)
14  * miscellaneous warning, bug & build fixes (#615, #619, #632, #635)
15
16- 9/13/2023: version 1.3.2
17  This is a binary compatible release.
18  * security fix for lossless decoder (chromium: #1479274, CVE-2023-4863)
19
20- 6/23/2023: version 1.3.1
21  This is a binary compatible release.
22  * security fixes for lossless encoder (#603, chromium: #1420107, #1455619,
23    CVE-2023-1999)
24  * improve error reporting through WebPPicture error codes
25  * fix upsampling for RGB565 and RGBA4444 in NEON builds
26  * img2webp: add -sharp_yuv & -near_lossless
27  * Windows builds:
28    - fix compatibility with clang-cl (#607)
29    - improve Arm64 performance with cl.exe
30    - add Arm64EC support
31  * fix webp_js with emcc >= 3.1.27 (stack size change, #614)
32  * CMake fixes (#592, #610, #612)
33  * further updates to the container and lossless bitstream docs (#581, #611)
34
35- 12/16/2022: version 1.3.0
36  This is a binary compatible release.
37  * add libsharpyuv, which exposes -sharp_yuv/config.use_sharp_yuv
38    functionality to other libraries; libwebp now depends on this library
39  * major updates to the container and lossless bitstream docs (#448, #546,
40    #551)
41  * miscellaneous warning, bug & build fixes (#576, #583, #584)
42
43- 8/4/2022: version 1.2.4
44  This is a binary compatible release.
45  * restore CMake libwebpmux target name for compatibility with 1.2.2 (#575)
46  * fix lossless crunch mode encoding with WEBP_REDUCE_SIZE
47    (chromium: #1345547, #1345595, #1345772, #1345804)
48
49- 6/30/2022: version 1.2.3
50  This is a binary compatible release.
51  * security fix for lossless encoder (#565, chromium:1313709)
52  * improved progress granularity in WebPReportProgress() when using lossless
53  * improved precision in Sharp YUV (-sharp_yuv) conversion
54  * many corrections to webp-lossless-bitstream-spec.txt (#551)
55  * crash/leak fixes on error/OOM and other bug fixes (#558, #563, #569, #573)
56
57- 1/11/2022: version 1.2.2
58  This is a binary compatible release.
59  * webpmux: add "-set bgcolor A,R,G,B"
60  * add ARM64 NEON support for MSVC builds (#539)
61  * fix duplicate include error in Xcode when using multiple XCFrameworks in a
62    project (#542)
63  * doc updates and bug fixes (#538, #544, #548, #550)
64
65- 7/20/2021: version 1.2.1
66  This is a binary compatible release.
67  * minor lossless encoder improvements and x86 color conversion speed up
68  * add ARM64 simulator support to xcframeworkbuild.sh (#510)
69  * further security related hardening in libwebp & examples
70    (issues: #497, #508, #518)
71    (chromium: #1196480, #1196773, #1196775, #1196777, #1196778, #1196850)
72    (oss-fuzz: #28658, #28978)
73  * toolchain updates and bug fixes (#498, #501, #502, #504, #505, #506, #509,
74                                     #533)
75  * use more inclusive language within the source (#507)
76
77- 12/23/2020: version 1.2.0
78  * API changes:
79    - libwebp:
80      encode.h: add a qmin / qmax range for quality factor (cwebp adds -qrange)
81  * lossless encoder improvements
82  * SIMD support for Wasm builds
83  * add xcframeworkbuild.sh, supports Mac Catalyst builds
84  * import fuzzers from oss-fuzz & chromium (#409)
85  * webpmux: add an '-set loop <value>' option (#494)
86  * toolchain updates and bug fixes (#449, #463, #470, #475, #477, #478, #479,
87    #488, #491)
88
89- 12/18/2019: version 1.1.0
90  * API changes:
91    - libwebp:
92      WebPMalloc (issue #442)
93    - extras:
94      WebPUnmultiplyARGB
95  * alpha decode fix (issue #439)
96  * toolchain updates and bug fixes
97    (chromium: #1026858, #1027136, #1027409, #1028620, #1028716, #995200)
98    (oss-fuzz: #19430, #19447)
99
100- 7/4/2019: version 1.0.3
101  This is a binary compatible release.
102  * resize fixes for Nx1 sizes and the addition of non-opaque alpha values for
103    odd sizes (issues #418, #434)
104  * lossless encode/decode performance improvements
105  * lossy compression performance improvement at low quality levels with flat
106    content (issue #432)
107  * python swig files updated to support python 3
108  Tool updates:
109    vwebp will now preserve the aspect ratio of images that exceed monitor
110    resolution by scaling the image to fit (issue #433)
111
112- 1/14/2019: version 1.0.2
113  This is a binary compatible release.
114  * (Windows) unicode file support in the tools (linux and mac already had
115    support, issue #398)
116  * lossless encoder speedups
117  * lossy encoder speedup on ARM
118  * lossless multi-threaded security fix (chromium:917029)
119
120- 11/2/2018: version 1.0.1
121  This is a binary compatible release.
122  * lossless encoder speedups
123  * big-endian fix for alpha decoding (issue #393)
124  * gif2webp fix for loop count=65535 transcode (issue #382)
125  * further security related hardening in libwebp & libwebpmux
126    (issues #383, #385, #386, #387, #388, #391)
127    (oss-fuzz #9099, #9100, #9105, #9106, #9111, #9112, #9119, #9123, #9170,
128              #9178, #9179, #9183, #9186, #9191, #9364, #9417, #9496, #10349,
129              #10423, #10634, #10700, #10838, #10922, #11021, #11088, #11152)
130  * miscellaneous bug & build fixes (issues #381, #394, #396, #397, #400)
131
132- 4/2/2018: version 1.0.0
133  This is a binary compatible release.
134  * lossy encoder improvements to avoid chroma shifts in various circumstances
135    (issues #308, #340)
136  * big-endian fixes for decode, RGBA import and WebPPictureDistortion
137  Tool updates:
138    gifwebp, anim_diff - default duration behavior (<= 10ms) changed to match
139                         web browsers, transcoding tools (issue #379)
140    img2webp, webpmux - allow options to be passed in via a file (issue #355)
141
142- 11/24/2017: version 0.6.1
143  This is a binary compatible release.
144  * lossless performance and compression improvements + a new 'cruncher' mode
145    (-m 6 -q 100)
146  * ARM performance improvements with clang (15-20% w/ndk r15c, issue #339)
147  * webp-js: emscripten/webassembly based javascript decoder
148  * miscellaneous bug & build fixes (issue #329, #332, #343, #353, #360, #361,
149    #363)
150  Tool updates / additions:
151    added webpinfo - prints file format information (issue #330)
152    gif2webp - loop behavior modified to match Chrome M63+ (crbug.com/649264);
153               '-loop_compatibility' can be used for the old behavior
154
155- 1/26/2017: version 0.6.0
156  * lossless performance and compression improvements
157  * miscellaneous performance improvements (SSE2, NEON, MSA)
158  * webpmux gained a -duration option allowing for frame timing modification
159  * new img2webp utility allowing a sequence of images to be converted to
160    animated webp
161  * API changes:
162    - libwebp:
163      WebPPictureSharpARGBToYUVA
164      WebPPlaneDistortion
165    - libwebpmux / gif2webp:
166      WebPAnimEncoderOptions: kmax <= 0 now disables keyframes, kmax == 1
167                              forces all keyframes. See mux.h and the gif2webp
168                              manpage for details.
169
170- 12/13/2016: version 0.5.2
171  This is a binary compatible release.
172  This release covers CVE-2016-8888 and CVE-2016-9085.
173  * further security related hardening in the tools; fixes to
174    gif2webp/AnimEncoder (issues #310, #314, #316, #322), cwebp/libwebp (issue
175    #312)
176  * full libwebp (encoder & decoder) iOS framework; libwebpdecoder
177    WebP.framework renamed to WebPDecoder.framework (issue #307)
178  * CMake support for Android Studio (2.2)
179  * miscellaneous build related fixes (issue #306, #313)
180  * miscellaneous documentation improvements (issue #225)
181  * minor lossy encoder fixes and improvements
182
183- 6/14/2016: version 0.5.1
184  This is a binary compatible release.
185  * miscellaneous bug fixes (issues #280, #289)
186  * reverted alpha plane encoding with color cache for compatibility with
187    libwebp 0.4.0->0.4.3 (issues #291, #298)
188  * lossless encoding performance improvements
189  * memory reduction in both lossless encoding and decoding
190  * force mux output to be in the extended format (VP8X) when undefined chunks
191    are present (issue #294)
192  * gradle, cmake build support
193  * workaround for compiler bug causing 64-bit decode failures on android
194    devices using clang-3.8 in the r11c NDK
195  * various WebPAnimEncoder improvements
196
197- 12/17/2015: version 0.5.0
198  * miscellaneous bug & build fixes (issues #234, #258, #274, #275, #278)
199  * encoder & decoder speed-ups on x86/ARM/MIPS for lossy & lossless
200    - note! YUV->RGB conversion was sped-up, but the results will be slightly
201      different from previous releases
202  * various lossless encoder improvements
203  * gif2webp improvements, -min_size option added
204  * tools fully support input from stdin and output to stdout (issue #168)
205  * New WebPAnimEncoder API for creating animations
206  * New WebPAnimDecoder API for decoding animations
207  * other API changes:
208    - libwebp:
209      WebPPictureSmartARGBToYUVA() (-pre 4 in cwebp)
210      WebPConfig::exact (-exact in cwebp; -alpha_cleanup is now the default)
211      WebPConfig::near_lossless (-near_lossless in cwebp)
212      WebPFree() (free'ing webp allocated memory in other languages)
213      WebPConfigLosslessPreset()
214      WebPMemoryWriterClear()
215    - libwebpdemux: removed experimental fragment related fields and functions
216    - libwebpmux: WebPMuxSetCanvasSize()
217  * new libwebpextras library with some uncommon import functions:
218    WebPImportGray/WebPImportRGB565/WebPImportRGB4444
219
220- 10/15/15: version 0.4.4
221  This is a binary compatible release.
222  * rescaling out-of-bounds read fix (issue #254)
223  * various build fixes and improvements (issues #253, #259, #262, #267, #268)
224  * container documentation update
225  * gif2webp transparency fix (issue #245)
226
227- 3/3/15: version 0.4.3
228  This is a binary compatible release.
229  * Android / gcc / iOS / MSVS build fixes and improvements
230  * lossless decode fix (issue #239 -- since 0.4.0)
231  * documentation / vwebp updates for animation
232  * multi-threading fix (issue #234)
233
234- 10/13/14: version 0.4.2
235  This is a binary compatible release.
236  * Android / gcc build fixes
237  * (Windows) fix reading from stdin and writing to stdout
238  * gif2webp: miscellaneous fixes
239  * fix 'alpha-leak' with lossy compression (issue #220)
240  * the lossless bitstream spec has been amended to reflect the current code
241
242- 7/24/14: version 0.4.1
243  This is a binary compatible release.
244  * AArch64 (arm64) & MIPS support/optimizations
245  * NEON assembly additions:
246    - ~25% faster lossy decode / encode (-m 4)
247    - ~10% faster lossless decode
248    - ~5-10% faster lossless encode (-m 3/4)
249  * dwebp/vwebp can read from stdin
250  * cwebp/gif2webp can write to stdout
251  * cwebp can read webp files; useful if storing sources as webp lossless
252
253- 12/19/13: version 0.4.0
254  * improved gif2webp tool
255  * numerous fixes, compression improvement and speed-up
256  * dither option added to decoder (dwebp -dither 50 ...)
257  * improved multi-threaded modes (-mt option)
258  * improved filtering strength determination
259  * New function: WebPMuxGetCanvasSize
260  * BMP and TIFF format output added to 'dwebp'
261  * Significant memory reduction for decoding lossy images with alpha.
262  * Intertwined decoding of RGB and alpha for a shorter
263    time-to-first-decoded-pixel.
264  * WebPIterator has a new member 'has_alpha' denoting whether the frame
265    contains transparency.
266  * Container spec amended with new 'blending method' for animation.
267
268- 6/13/13: version 0.3.1
269  This is a binary compatible release.
270  * Add incremental decoding support for images containing ALPH and ICCP chunks.
271  * Python bindings via swig for the simple encode/decode interfaces similar to
272    Java.
273
274- 3/20/13: version 0.3.0
275  This is a binary compatible release.
276  * WebPINewRGB/WebPINewYUVA accept being passed a NULL output buffer
277    and will perform auto-allocation.
278  * default filter option is now '-strong -f 60'
279  * encoding speed-up for lossy methods 3 to 6
280  * alpha encoding can be done in parallel to lossy using 'cwebp -mt ...'
281  * color profile, metadata (XMP/EXIF) and animation support finalized in the
282    container.
283  * various NEON assembly additions
284  Tool updates / additions:
285    * gif2webp added
286    * vwebp given color profile & animation support
287    * cwebp can preserve color profile / metadata with '-metadata'
288
289- 10/30/12: version 0.2.1
290  * Various security related fixes
291  * cwebp.exe: fix import errors on Windows XP
292  * enable DLL builds for mingw targets
293
294- 8/3/12: version 0.2.0
295  * Add support for ARGB -> YUVA conversion for lossless decoder
296    New functions: WebPINewYUVA, WebPIDecGetYUVA
297  * Add stats for lossless and alpha encoding
298  * Security related hardening: allocation and size checks
299  * Add PAM output support to dwebp
300
301- 7/19/12: version 0.1.99
302  * This is a pre-release of 0.2.0, not an rc to allow for further
303    incompatible changes based on user feedback.
304  * Alpha channel encode/decode support.
305  * Lossless encoder/decoder.
306  * Add TIFF input support to cwebp.
307  Incompatible changes:
308    * The encode ABI has been modified to support alpha encoding.
309    * Deprecated function WebPINew() has been removed.
310    * Decode function signatures have changed to consistently use size_t over
311      int/uint32_t.
312    * decode_vp8.h is no longer installed system-wide.
313    * cwebp will encode the alpha channel if present.
314
315- 9/19/11: version 0.1.3
316  * Advanced decoding APIs.
317  * On-the-fly cropping and rescaling of images.
318  * SSE2 instructions for decoding performance optimizations on x86 based
319    platforms.
320  * Support Multi-threaded decoding.
321  * 40% improvement in Decoding performance.
322  * Add support for RGB565, RGBA4444 & ARGB image colorspace.
323  * Better handling of large picture encoding.
324
325- 3/25/11: version 0.1.2
326  * Incremental decoding: picture can be decoded byte-by-byte if needs be.
327  * lot of bug-fixes, consolidation and stabilization
328
329- 2/23/11: initial release of version 0.1, with the new encoder
330- 9/30/10: initial release version with only the lightweight decoder
331