<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>go-libwebp, branch HEAD</title>
<subtitle>Experimental translation from libwebp to Go source. </subtitle>
<entry>
<id>27428b3e2190e966d85e36774e499a6648394a10</id>
<published>2026-09-20T18:31:26Z</published>
<updated>2026-09-20T18:31:33Z</updated>
<title type="text">README: update for libwebp 1.6.0 and the ccgo v4 toolchain</title>
<link rel="alternate" type="text/html" href="commit/27428b3e2190e966d85e36774e499a6648394a10.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 27428b3e2190e966d85e36774e499a6648394a10
parent c39ff56bebedaa274ffee3e7237a470701a77a91
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:31:26 -0300

README: update for libwebp 1.6.0 and the ccgo v4 toolchain

The toolchain section still described the v3 pipeline and its osxcross
requirement, which no longer exists.

</content>
</entry>
<entry>
<id>c39ff56bebedaa274ffee3e7237a470701a77a91</id>
<published>2026-09-20T18:31:26Z</published>
<updated>2026-09-20T18:31:33Z</updated>
<title type="text">webp: cover lossy decode in the backend tests</title>
<link rel="alternate" type="text/html" href="commit/c39ff56bebedaa274ffee3e7237a470701a77a91.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit c39ff56bebedaa274ffee3e7237a470701a77a91
parent 2b3a104db86fd2d93cbf1e09d0ea819d479398e2
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:31:26 -0300

webp: cover lossy decode in the backend tests

Every existing test went through VP8L: the golden is lossless and the fuzz
targets only decode when lossless is set. Nothing decoded a lossy image
through a pure-Go backend, so a transpiled build whose VP8 bit reader aborted
on the first call passed the whole suite.

</content>
</entry>
<entry>
<id>2b3a104db86fd2d93cbf1e09d0ea819d479398e2</id>
<published>2026-09-20T18:07:42Z</published>
<updated>2026-09-20T18:31:33Z</updated>
<title type="text">lib/transpiled: regenerate against libwebp 1.6.0 with ccgo v4</title>
<link rel="alternate" type="text/html" href="commit/2b3a104db86fd2d93cbf1e09d0ea819d479398e2.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 2b3a104db86fd2d93cbf1e09d0ea819d479398e2
parent 381d9ee045117668669b5af569e3414eeb07d87e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:07:42 -0300

lib/transpiled: regenerate against libwebp 1.6.0 with ccgo v4

All six targets, including both darwin ones, which previously needed osxcross
and an Apple SDK.

The output agrees byte-for-byte with the wasm backend again, lossless and
lossy, so backend_transpiled_test.go goes back to asserting equality with the
golden rather than merely checking bitstream compatibility across a version
skew.

capi_linux_amd64.go is dropped. It was a ccgo v3 symbol table that nothing
referenced, and v4 does not emit one.

</content>
</entry>
<entry>
<id>381d9ee045117668669b5af569e3414eeb07d87e</id>
<published>2026-09-20T18:07:42Z</published>
<updated>2026-09-20T18:31:32Z</updated>
<title type="text">lib/wasm: rebuild the embedded module against libwebp 1.6.0</title>
<link rel="alternate" type="text/html" href="commit/381d9ee045117668669b5af569e3414eeb07d87e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 381d9ee045117668669b5af569e3414eeb07d87e
parent d21fe910e3488d0208c11234b687ef6a04bfcd23
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:07:42 -0300

lib/wasm: rebuild the embedded module against libwebp 1.6.0

The golden moves with it: 1.6.0 encodes the test image to 94910 bytes where
1.2.2 produced 94412, so the two have to change together or the golden test
fails in between. Compression is unaffected — across the 14-image bench
corpus the two versions differ by +0.0% total — the bytes differ because the
lossless encoder&#39;s internals changed.

The rebuild is reproducible: rebuilding from a clean v1.6.0 checkout yields a
byte-identical module.

</content>
</entry>
<entry>
<id>d21fe910e3488d0208c11234b687ef6a04bfcd23</id>
<published>2026-09-20T18:07:29Z</published>
<updated>2026-09-20T18:31:32Z</updated>
<title type="text">tools: port transpile.sh to ccgo v4</title>
<link rel="alternate" type="text/html" href="commit/d21fe910e3488d0208c11234b687ef6a04bfcd23.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d21fe910e3488d0208c11234b687ef6a04bfcd23
parent 8b827e0b7a69b5d251c68104c24c5b731256819e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:07:29 -0300

tools: port transpile.sh to ccgo v4

ccgo v3 could not do this job any more: it does not build on Go 1.27, and
against libwebp 1.6.0 it failed to resolve objects at all, either reporting
&quot;no objects to link&quot; from the archive or panicking in ccgo.go:1281:find on
explicit object paths.

v4 is a direct compiler, so the autotools configure, the compile database and
the static archive all go away; it takes the source files. It also supplies
target predefines through --goos/--goarch, but not target libc headers, so
each cross target still needs a header source:

  linux/amd64     the host
  linux/arm64     aarch64-linux-gnu-gcc
  darwin/*        zig&#39;s bundled any-macos-any headers
  windows/*       x86_64-w64-mingw32-gcc

zig is what removes the osxcross requirement, and with it the need for an
Apple SDK that cannot be redistributed. It does not help for linux: ccgo
cannot parse zig&#39;s generic-glibc bits/types.h.

Two patches are carried. libwebp declares GetCoeffs as a volatile function
pointer and v4 cannot emit a call through one; threading is disabled here so
dropping volatile is safe, and it is applied in place with a restore trap
because ccgo resolves modernc.org/libc through the module it runs from.
sharpyuv_stub.c replaces the sharpyuv library, whose sharpyuv_gamma.c is the
only caller of expf/logf in libwebp — modernc.org/libc provides Xexpf and
Xlogf for linux only, so transpiling it fails to link on darwin and windows.
Nothing reaches sharpyuv unless WebPConfig.use_sharp_yuv is set, which this
package never does.

</content>
</entry>
<entry>
<id>8b827e0b7a69b5d251c68104c24c5b731256819e</id>
<published>2026-09-20T18:07:29Z</published>
<updated>2026-09-20T18:31:32Z</updated>
<title type="text">tools: support libwebp 1.6.0 in the build scripts</title>
<link rel="alternate" type="text/html" href="commit/8b827e0b7a69b5d251c68104c24c5b731256819e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 8b827e0b7a69b5d251c68104c24c5b731256819e
parent 313c337a23b4ada012109aef21e6cb2eb73e8332
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:07:29 -0300

tools: support libwebp 1.6.0 in the build scripts

sharpyuv became a separate top-level library in 1.3 and the encoder links
against it, so the source globs missed it and every link failed on
SharpYuvInit. The native build also gives the new AVX2 kernels -mavx2 on
their own translation unit, as it already did for SSE4.1.

Separately, build-wasm.sh wrote straight into lib/wasm/webp/libwebp.wasm, so
running the zig script silently replaced the shipped SIMD module with a scalar
one. Both scripts now write comparison artifacts into bench/lib, and
installing the shipped module is explicit via INSTALL=1.

</content>
</entry>
<entry>
<id>313c337a23b4ada012109aef21e6cb2eb73e8332</id>
<published>2026-09-20T18:16:16Z</published>
<updated>2026-09-20T18:16:16Z</updated>
<title type="text">c-lib: update libwebp to 1.6.0</title>
<link rel="alternate" type="text/html" href="commit/313c337a23b4ada012109aef21e6cb2eb73e8332.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 313c337a23b4ada012109aef21e6cb2eb73e8332
parent 1ca3897e4a6b5f0c06b0308583e65ee9cbb25d0e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:16:16 -0300

c-lib: update libwebp to 1.6.0

</content>
</entry>
<entry>
<id>3dfa50469004e35610506d613f92d0038f210012</id>
<published>2026-09-20T18:16:16Z</published>
<updated>2026-09-20T18:16:16Z</updated>
<title type="text">Squashed &#39;c-lib/&#39; changes from 6f496540..4fa21912</title>
<link rel="alternate" type="text/html" href="commit/3dfa50469004e35610506d613f92d0038f210012.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 3dfa50469004e35610506d613f92d0038f210012
parent 604b2e25eeee8dd6ed0cb0a2ad77607be5e16180
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 15:16:16 -0300

Squashed &#39;c-lib/&#39; changes from 6f496540..4fa21912

4fa21912 update ChangeLog
370aa581 webp_js/README.md: add some more code formatting (``)
f83c6b32 CMakeLists: add warning for incorrect emscripten config
6a3e656b update ChangeLog
bf0bf1e7 api.md: add WebPValidateDecoderConfig to pseudocode
e8ae210d update NEWS
ce53efd7 bump version to 1.6.0
1c333170 update AUTHORS
85e098e5 webpmux: fix heap overflow w/-get/-set
418340d8 Merge &quot;Make histogram allocation and access more readable and type-safe.&quot; into main
23ce76fa Merge &quot;VP8BitReaderSetBuffer: move NULL check to call site&quot; into main
bbf3cbb1 VP8BitReaderSetBuffer: move NULL check to call site
f6b87e03 Fix const style guide
8852f89a Have lossless return the same results with/without -mt
e015dcc0 Make histogram allocation and access more readable and type-safe.
753ed11e enc_neon.c: fix aarch64 compilation w/gcc &lt; 8.5.0
0cd0b7a7 enc_fuzzer.cc: remove duplicate &lt;cstdlib&gt; include
2209ffba swig,cosmetics: normalize includes
15e2e1ee analysis_enc.c: remove unused include
98c27801 IWYU: Include all headers for symbols used in files.
eb3ff781 Only use valid histograms in VP8LHistogramSet
57e324e2 Refactor VP8LHistogram histogram_enc.cc
7191a602 Merge &quot;Generalize trivial histograms&quot; into main
19696e0a Merge &quot;alpha_processing_sse2: quiet signed conv warning&quot; into main
89b01ecc Merge &quot;cwebp: add `-resize_mode`&quot; into main
52a430a7 Generalize trivial histograms
e53e2130 Cache all costs in the histograms
f8b360c4 alpha_processing_sse2: quiet signed conv warning
eb4f8137 cwebp: add `-resize_mode`
ad52d5fc dec/dsp/enc/utils,cosmetics: rm struct member &#39;_&#39; suffix
ed7cd6a7 utils.c,cosmetics: rm struct member &#39;_&#39; suffix
3a23b0f0 random_utils.[hc],cosmetics: rm struct member &#39;_&#39; suffix
a99d0e6f quant_levels_dec_utils.c,cosmetics: rm struct member &#39;_&#39; suffix
1ed4654d huffman_encode_utils.[hc],cosmetics: rm struct member &#39;_&#39; suffix
f0689e48 config_enc.c,cosmetics: rm struct member &#39;_&#39; suffix
24262266 mux,cosmetics: rm struct member &#39;_&#39; suffix
3f54b1aa demux,cosmetics: rm struct member &#39;_&#39; suffix
295804e4 examples,cosmetics: rm struct member &#39;_&#39; suffix
5225592f Refactor VP8LHistogram to hide initializations from the user.
00338240 Remove some computations in histogram clustering
44f91b0d Speed DispatchAlpha_SSE2 up
ee8e8c62 Fix member naming for VP8LHistogram
a1ad3f1e Merge &quot;Remove now unused ExtraCostCombined&quot; into main
321561b4 Remove now unused ExtraCostCombined
e0ae21d2 WebPMemoryWriterClear: use WebPMemoryWriterInit
a4183d94 Remove the computation of ExtraCost when comparing histograms
f2b3f527 Get AVX2 into WebP lossless
7c70ff7a Clean dsp/lossless includes
9dd5ae81 Use the full register in PredictorSub13_SSE2
613be8fc Makefile.vc: add /MP to CFLAGS
1d86819f Merge changes I1437390a,I10a20de5,I1ac777d1 into main
743a5f09 enc_neon: enable vld1q_u8_x4 for clang &amp; msvc
565da148 pngdec.c: add support for &#39;eXIf&#39; tag
319860e9 pngdec.c: support ImageMagick app1 exif text data
815fc1e1 pngdec.c: add missing #ifdef for png_get_iCCP
980b708e enc_neon: fix build w/aarch64 gcc &lt; 9.4.0
73b728cb cmake: bump minimum version to 3.16
6a22b670 Add a function to validate a WebPDecoderConfig
7ed2b10e Use consistently signed stride types.
654bfb04 Avoid nullptr arithmetic in VP8BitReaderSetBuffer
f8f24107 Fix potential &quot;divide by zero&quot; in examples found by coverity
2af6c034 Merge tag &#39;v1.5.0&#39;
a4d7a715 update ChangeLog
c3d85ce4 update NEWS
ad14e811 tests/fuzzer/*: add missing &lt;string_view&gt; include
74cd026e fuzz_utils.cc: fix build error w/WEBP_REDUCE_SIZE
a027aa93 mux_demux_api_fuzzer.cc: fix -Wshadow warning
25e17c68 update ChangeLog
aa2684fc update NEWS
36923846 bump version to 1.5.0
ceea8ff6 update AUTHORS
e4f7a9f0 img2webp: add a warning for unused options
1b4c967f Merge &quot;Properly check the data size against the end of the RIFF chunk&quot; into main
9e5ecfaf Properly check the data size against the end of the RIFF chunk
da0d9c7d examples: exit w/failure w/no args
fcff86c7 {gif,img}2webp: sync -m help w/cwebp
b76c4a84 man/img2webp.1: sync -m text w/cwebp.1 &amp; gif2webp.1
30633519 muxread: fix reading of buffers &gt; riff size
4c85d860 yuv.h: update RGB&lt;-&gt;YUV coefficients in comment
0ab789e0 Merge changes I6dfedfd5,I2376e2dc into main
03236450 {ios,xcframework}build.sh: fix compilation w/Xcode 16
61e2cfda rework AddVectorEq_SSE2
7bda3deb rework AddVector_SSE2
2ddaaf0a Fix variable names in SharpYuvComputeConversionMatrix
a3ba6f19 Makefile.vc: fix gif2webp link error
f999d94f gif2webp: add -sharp_yuv/-near_lossless
dfdcb7f9 Merge &quot;lossless.h: fix function declaration mismatches&quot; into main
78ed6839 fix overread in Intra4Preds_NEON
d516a68e lossless.h: fix function declaration mismatches
87406904 Merge &quot;Improve documentation of SharpYuvConversionMatrix.&quot; into main
fdb229ea Merge changes I07a7e36a,Ib29980f7,I2316122d,I2356e314,I32b53dd3, ... into main
0c3cd9cc Improve documentation of SharpYuvConversionMatrix.
169dfbf9 disable Intra4Preds_NEON
2dd5eb98 dsp/yuv*: use WEBP_RESTRICT qualifier
23bbafbe dsp/upsampling*: use WEBP_RESTRICT qualifier
35915b38 dsp/rescaler*: use WEBP_RESTRICT qualifier
a32b436b dsp/lossless*: use WEBP_RESTRICT qualifier
04d4b4f3 dsp/filters*: use WEBP_RESTRICT qualifier
b1cb37e6 dsp/enc*: use WEBP_RESTRICT qualifier
201894ef dsp/dec*: use WEBP_RESTRICT qualifier
02eac8a7 dsp/cost*: use WEBP_RESTRICT qualifier
84b118c9 Merge &quot;webp-container-spec: normalize notes &amp; unknown chunk link&quot; into main
052cf42f webp-container-spec: normalize notes &amp; unknown chunk link
220ee529 Search for best predictor transform bits
78619478 Try to reduce the sampling for the entropy image
14f09ab7 webp-container-spec: reorder chunk size - N text
a78c5356 Remove a useless malloc for entropy image
bc491763 Merge &quot;Refactor predictor finding&quot; into main
34f92238 man/{cwebp,img2webp}.1: rm &#39;if needed&#39; from -sharp_yuv
367ca938 Refactor predictor finding
a582b53b webp-lossless-bitstream-spec: clarify some text
0fd25d84 Merge &quot;anim_encode.c: fix function ref in comment&quot; into main
f8882913 anim_encode.c: fix function ref in comment
40e4ca60 specs_generation.md: update kramdown command line
57883c78 img2webp: add -exact/-noexact per-frame options
1c8eba97 img2webp,cosmetics: add missing &#39;.&#39; spacers to help
2e81017c Convert predictor_enc.c to fixed point
94de6c7f Merge &quot;Fix fuzztest link errors w/-DBUILD_SHARED_LIBS=1&quot; into main
51d9832a Fix fuzztest link errors w/-DBUILD_SHARED_LIBS=1
7bcb36b8 Merge &quot;Fix static overflow warning.&quot; into main
8e0cc14c Fix static overflow warning.
cea68462 README.md: add security report note
615e5874 Merge &quot;make VP8LPredictor[01]_C() static&quot; into main
233e86b9 Merge changes Ie43dc5ef,I94cd8bab into main
1a29fd2f make VP8LPredictor[01]_C() static
dd9d3770 Do*Filter_*: remove row &amp; num_rows parameters
ab451a49 Do*Filter_C: remove dead &#39;inverse&#39; code paths
f9a480f7 {TrueMotion,TM16}_NEON: remove zero extension
04834aca Merge changes I25c30a9e,I0a192fc6,I4cf89575 into main
39a602af webp-lossless-bitstream-spec: normalize predictor transform ref
f28c837d Merge &quot;webp-container-spec: align anim pseudocode w/prose&quot; into main
74be8e22 Fix implicit conversion issues
0c01db7c Merge &quot;Increase the transform bits if possible.&quot; into main
f2d6dc1e Increase the transform bits if possible.
caa19e5b update link to issue tracker
c9dd9bd4 webp-container-spec: align anim pseudocode w/prose
8a7c8dc6 WASM: Enable VP8L_USE_FAST_LOAD
f0c53cd9 WASM: don&#39;t use USE_GENERIC_TREE
eef903d0 WASM: Enable 64-bit BITS caching
6296cc8d iterator_enc: make VP8IteratorReset() static
fbd93896 histogram_enc: make VP8LGetHistogramSize static
cc7ff545 cost_enc: make VP8CalculateLevelCosts[] static
4e2828ba vp8l_dec: make VP8LClear() static
d742b24a Intra16Preds_NEON: fix truemotion saturation
c7bb4cb5 Intra4Preds_NEON: fix truemotion saturation
952a989b Merge &quot;Remove TODO now that log is using fixed point.&quot; into main
dde11574 Remove TODO now that log is using fixed point.
a1ca153d Fix hidden myerr in my_error_exit
3bd94202 Merge changes Iff6e47ed,I24c67cd5,Id781e761 into main
d27d246e Merge &quot;Convert VP8LFastSLog2 to fixed point&quot; into main
4838611f Disable msg_code use in fuzzing mode
314a142a Use QuantizeBlock_NEON for VP8EncQuantizeBlockWHT on Arm
3bfb05e3 Add AArch64 Neon implementation of Intra16Preds
baa93808 Add AArch64 Neon implementation of Intra4Preds
41a5e582 Fix errors when compiling code as C++
fb444b69 Convert VP8LFastSLog2 to fixed point
c1c89f51 Fix WEBP_NODISCARD comment and C++ version
66408c2c Switch the histogram_enc.h API to fixed point
ac1e410d Remove leftover tiff dep
b78d3957 Disable TIFF on fuzztest.
cff21a7d Do not build statically on oss-fuzz.
6853a8e5 Merge &quot;Move more internal fuzzers to public.&quot; into main
9bc09db4 Merge &quot;Convert VP8LFastLog2 to fixed point&quot; into main
0a9f1c19 Convert VP8LFastLog2 to fixed point
db0cb9c2 Move more internal fuzzers to public.
ff2b5b15 Merge &quot;advanced_api_fuzzer.cc: use crop dims in OOM check&quot; into main
c4af79d0 Put 0 at the end of a palette and do not store it.
0ec80aef Delete last references to delta palettization
96d79f84 advanced_api_fuzzer.cc: use crop dims in OOM check
c35c7e02 Fix huffman fuzzer to not leak.
f2fe8dec Bump fuzztest dependency.
9ce982fd Fix fuzz tests to work on oss-fuzz
3ba8af1a Do not escape quotes anymore in build.sh
ea0e121b Allow centipede to be used as a fuzzing engine.
27731afd make VP8I4ModeOffsets &amp; VP8MakeIntra4Preds static
ddd6245e oss-fuzz/build.sh: use heredoc for script creation
50074930 oss-fuzz/build.sh,cosmetics: fix indent
20e92f7d Limit the possible fuzz engines.
4f200de5 Switch public fuzz tests to fuzztest.
64186bb3 Add huffman_fuzzer to .gitignore
0905f61c Move build script from oss-fuzz repo to here.
e8678758 Fix link to Javascript documentation
5e5b8f0c Fix SSE2 Transform_AC3 function name
45129ee0 Revert &quot;Check all the rows.&quot;
ee26766a Check all the rows.
7ec51c59 Increase the transform bits if possible.
3cd16fd3 Revert &quot;Increase the transform bits if possible.&quot;
971a03d8 Increase the transform bits if possible.
1bf198a2 Allow transform_bits to be different during encoding.
1e462ca8 Define MAX_TRANSFORM_BITS according to the specification.
64d1ec23 Use (MIN/NUM)_(TRANSFORM/HUFFMAN)_BITS where appropriate
a90160e1 Refactor histograms in predictors.
a7aa7525 Fix some function declarations
68ff4e1e Merge &quot;jpegdec: add a hint for EOF/READ errors&quot; into main
79e7968a jpegdec: add a hint for EOF/READ errors
d33455cd man/*: s/BUGS/REPORTING BUGS/
a67ff735 normalize example exit status
edc28909 upsampling_{neon,sse41}: fix int sanitizer warning
3cada4ce ImgIoUtilReadFile: check ftell() return
dc950585 Merge tag &#39;v1.4.0&#39;
845d5476 update ChangeLog
8a6a55bb update NEWS
cf7c5a5d provide a way to opt-out/override WEBP_NODISCARD
cc34288a update ChangeLog
f13c0886 NEWS: fix date
74555950 Merge &quot;vwebp: fix window title when options are given&quot; into 1.4.0
d781646c vwebp: fix window title when options are given
c2e394de update NEWS
f6d15cb7 bump version to 1.4.0
57c388b8 update AUTHORS
b3d1b2cb Merge changes I26f4aa22,I83386b6c,I320ed1a2 into main
07216886 webp-container-spec: fix VP8 chunk ref (&#39;VP8&#39;-&gt;&#39;VP8 &#39;)
f88666eb webp_js/*.html: fix canvas mapping
e2c8f233 cmake,wasm: simplify SDL2 related flags
d537cd37 cmake: fix vwebp_sdl compile w/libsdl-org release
6c484cbf CMakeLists.txt: add missing WEBP_BUILD_EXTRAS check
7b0bc235 man/cwebp.1: add more detail to -partition_limit
3c0011bb WebPMuxGetChunk: add an assert
955a3d14 Merge &quot;muxread,MuxGet: add an assert&quot; into main
00abc000 muxread,MuxGet: add an assert
40e85a0b Have the window title reflect the filename.
1bf46358 man/cwebp.1: clarify -pass &gt; 1 behavior w/o -size/-psnr
eba03acb webp-container-spec: replace &#39;above&#39; with &#39;earlier&#39;
a16d30cb webp-container-spec: clarify chunk order requirements
8a7e9112 Merge &quot;CMakeLists.txt: apply cmake-format&quot; into main
7fac6c1b Merge &quot;Copy C code to not have multiplication overflow&quot; into main
e2922e43 Merge &quot;Check for the presence of the ANDROID_ABI variable&quot; into main
501d9274 Copy C code to not have multiplication overflow
fba7d62e CMakeLists.txt: apply cmake-format
661c1b66 Merge &quot;windows exports: use dllexport attribute, instead of visibility.&quot; into main
8487860a windows exports: use dllexport attribute, instead of visibility.
8ea678b9 webp/mux.h: data lifetime note w/copy_data=0
79e05c7f Check for the presence of the ANDROID_ABI variable
45f995a3 Expose functions for managing non-image chunks on WebPAnimEncoder
1fb9f3dc gifdec: fix ErrorGIFNotAvailable() declaration
4723db65 cosmetics: s/SANITY_CHECK/DCHECK/
f4b9bc9e clear -Wextra-semi-stmt warnings
713982b8 Limit animdecoder_fuzzer to 320MB
cbe825e4 cmake: fix sharpyuv simd files&#39; build
f99305e9 Makefile.vc: add ARM64 support
5efd6300 mv SharpYuvEstimate420Risk to extras/
e78e924f Makefile.vc: add sharpyuv_risk_table.obj
d7a0506d Add YUV420 riskiness metric.
89c5b917 Merge &quot;BuildHuffmanTable check sorted[] array bounds before writing&quot; into main
34c80749 Remove alpha encoding pessimization.
13d9c30b Add a WEBP_NODISCARD
24d7f9cb Switch code to SDL2.
0b56dedc BuildHuffmanTable check sorted[] array bounds before writing
a429c0de sharpyuv: convert some for() to do/while
f0cd7861 DoSharpArgbToYuv: remove constant from loop
339231cc SharpYuvConvertWithOptions,cosmetics: fix formatting
307071f1 Remove medium/large code model-specific inline asm
deadc339 Fix transfer functions where toGamma and toLinear are swapped.
e7b78d43 Merge &quot;Fix bug in FromLinearLog100.&quot; into main
15a1309e Merge &quot;webp-lossless-bitstream-spec: delete extra blank line&quot; into main
54ca9752 Fix bug in FromLinearLog100.
d2cb2d8c Dereference after NULL check.
e9d50107 webp-lossless-bitstream-spec: delete extra blank line
78657971 Merge changes Ief442c90,Ie6e9c9a5 into main
e30a5884 webp-lossless-bitstream-spec: update variable names
09ca1368 Merge &quot;webp-container-spec: change assert to MUST be TRUE&quot; into main
38cb4fc0 iosbuild,xcframeworkbuild: add SharpYuv framework
40afa926 webp-lossless-bitstream-spec: simplify abstract
9db21143 webp-container-spec: change assert to MUST be TRUE
cdbf88ae Fix typo in API docs for incremental decoding
05c46984 Reformat vcpkg build instructions.
8534f539 Merge &quot;Never send VP8_STATUS_SUSPENDED back in non-incremental.&quot; into main
35e197bd Never send VP8_STATUS_SUSPENDED back in non-incremental.
61441425 Add vcpkg installation instructions
dce8397f Fix next is invalid pointer when WebPSafeMalloc fails
57c58105 Cmake: wrong public macro WEBP_INCLUDE_DIRS
c1ffd9ac Merge &quot;vp8l_enc: fix non-C90 code&quot; into main
a3965948 Merge changes If628bb93,Ic79f6309,I45f0db23 into main
f80e9b7e vp8l_enc: fix non-C90 code
accd141d Update lossless spec for two simple codes.
ac17ffff Fix non-C90 code.
433c7dca Fix static analyzer warnings.
5fac76cf Merge tag &#39;v1.3.2&#39;
ca332209 update ChangeLog
1ace578c update NEWS
63234c42 bump version to 1.3.2
a35ea50d Add a fuzzer for ReadHuffmanCodes
95ea5226 Fix invalid incremental decoding check.
2af26267 Fix OOB write in BuildHuffmanTable.
902bc919 Fix OOB write in BuildHuffmanTable.
7ba44f80 Homogenize &quot;__asm__ volatile&quot; vs &quot;asm volatile&quot;
68e27135 webp-container-spec: reorder example chunk layout
943b932a Merge changes I6a4d0a04,Ibc37b91e into main
1cc94f95 decode.h: wrap idec example in /* */
63acdd1e decode.h: fix decode example
aac5c5d0 ReadHuffmanCode: rm redundant num code lengths check
a2de25f6 webp-lossless-bitstream-spec: normalize list item case
68820f0e webp-lossless-bitstream-spec: normalize pixel ref
cdb31aa8 webp-lossless-bitstream-spec: add missing periods
0535a8cf webp-lossless-bitstream-spec: fix grammar
b6c4ce26 normalize numbered list item format
dd7364c3 Merge &quot;palette.c: fix msvc warnings&quot; into main
c63c5df6 palette.c: fix msvc warnings
0a2cad51 webp-container-spec: move terms from intro section
dd88d2ff webp-lossless-bitstream-spec: color_cache -&gt; color cache
6e750547 Merge changes I644d7d39,Icf05491e,Ic02e6652,I63b11258 into main
67a7cc2b webp-lossless-bitstream-spec: fix code blocks
1432ebba Refactor palette sorting computation.
cd436142 webp-lossless-bitstream-spec: block -&gt; chunk
3cb66f64 webp-lossless-bitstream-spec: add some missing commas
56471a53 webp-lossless-bitstream-spec: normalize item text in 5.1
af7fbfd2 vp8l_dec,ReadTransform: improve error status reporting
7d8e0896 vp8l_dec: add VP8LSetError()
a71ce1cf animencoder_fuzzer: fix error check w/Nallocfuzz
e94b36d6 webp-lossless-bitstream-spec: relocate details from 5.1
84628e56 webp-lossless-bitstream-spec: clarify image width changes
ee722997 alpha_dec: add missing VP8SetError()
0081693d enc_dec_fuzzer: use WebPDecode()
0fcb311c enc_dec_fuzzer: fix WebPEncode/pic.error_code check
982c177c webp-lossless-bitstream-spec: fix struct member refs
56cf5625 webp-lossless-bitstream-spec: use RFC 7405 for ABNF
6c6b3fd3 webp-lossless-bitstream-spec,cosmetics: delete blank lines
29b9eb15 Merge changes Id56ca4fd,I662bd1d7 into main
47c0af8d ReadHuffmanCodes: rm max_alphabet_size calc
b92deba3 animencoder_fuzzer: no WebPAnimEncoderAssemble check w/nallocfuzz
6be9bf8b animencoder_fuzzer: fix leak on alloc failure
5c965e55 vp8l_dec,cosmetics: add some /*param=*/ comments
e4fc2f78 webp-lossless-bitstream-spec: add validity note for max_symbol
71916726 webp-lossless-bitstream-spec: fix max_symbol definition
eac3bd5c Have the palette code be in its own file.
e2c85878 Add an initializer for the SharpYuvOptions struct.
4222b006 Merge tag &#39;v1.3.1&#39;
25d94f47 Implement more transfer functions in libsharpyuv
2153a679 Merge changes Id0300937,I5dba5ccf,I57bb68e0,I2dba7b4e,I172aca36, ... into main
4298e976 webp-lossless-bitstream-spec: add PredictorTransformOutput
cd7e02be webp-lossless-bitstream-spec: fix RIFF-header ABNF
6c3845f9 webp-lossless-bitstream-spec: split LZ77 Backward Ref section
7f1b6799 webp-lossless-bitstream-spec: split Meta Prefix Codes section
7b634d8f webp-lossless-bitstream-spec: note transform order
6d6d4915 webp-lossless-bitstream-spec: update transformations text
fd7bb21c update ChangeLog
e1adea50 update NEWS
6b1c722a lossless_common.h,cosmetics: fix a typo
08d60d60 webp-lossless-bitstream-spec: split code length section
7a12afcc webp-lossless-bitstream-spec: rm unused anchor
43393320 enc/*: normalize WebPEncodingSetError() calls
287fdefe enc/*: add missing WebPEncodingSetError() calls
c3bd7cff EncodeAlphaInternal: add missing error check
14a9dbfb webp-lossless-bitstream-spec: refine single node text
64819c7c Implement ExtractGreen_SSE2
d49cfbb3 vp8l_enc,WriteImage: add missing error check
2e5a9ec3 muxread,MuxImageParse: add missing error checks
ebb6f949 cmake,emscripten: explicitly set stack size
59a2b1f9 WebPDecodeYUV: check u/v/stride/uv_stride ptrs
8e965ccb Call png_get_channels() to see if image has alpha
fe80fbbd webp-container-spec: add some missing commas
e8ed3176 Merge &quot;treat FILTER_NONE as a regular Unfilter[] call&quot; into main
03a7a048 webp-lossless-bitstream-spec: rm redundant statement
c437c7aa webp-lossless-bitstream-spec: mv up prefix code group def
e4f17a31 webp-lossless-bitstream-spec: fix section reference
e2ecd5e9 webp-lossless-bitstream-spec: clarify ABNF syntax
8b55425a webp-lossless-bitstream-spec: refine pixel copy text
29c9f2d4 webp-lossless-bitstream-spec: minor wording updates
6b02f660 treat FILTER_NONE as a regular Unfilter[] call
7f75c91c webp-container-spec: fix location of informative msg
f6499943 webp-container-spec: consistently quote FourCCs
49918af3 webp-container-spec: minor wording updates
7f0a3419 update ChangeLog
bab7efbe update NEWS
7138bf8f bump version to 1.3.1
435b4ded update AUTHORS
47351229 update .mailmap
46bc4fc9 Merge &quot;Switch ExtraCost to ints and implement it in SSE.&quot; into main
828b4ce0 Switch ExtraCost to ints and implement it in SSE.
ff6c7f4e CONTRIBUTING.md: add C style / cmake-format notes
dd530437 add .cmake-format.py
adbe2cb1 cmake,cosmetics: apply cmake-format
15b36508 doc/webp-container-spec: rm future codec comment
c369c4bf doc/webp-lossless-bitstream-spec: improve link text
1de35f47 doc/webp-container-spec: don&#39;t use &#39;currently&#39;
bb06a16e doc/webp-container-spec: prefer present tense
9f38b71e doc/webp-lossless-bitstream-spec: prefer present tense
7acb6b82 doc/webp-container-spec: avoid i.e. &amp; e.g.
4967e7cd doc/webp-lossless-bitstream-spec: avoid i.e. &amp; e.g.
e3366659 Merge &quot;Do not find_package image libraries if not needed.&quot; into main
428588ef clarify single leaf node trees and use of canonical prefix coding
709ec152 Do not find_package image libraries if not needed.
8dd80ef8 fuzz_utils.h: lower kFuzzPxLimit w/ASan
8f187b9f Clean message calls in CMake
cba30078 WebPConfig.cmake.in: use calculated include path
6cf9a76a Merge &quot;webp-lossless-bitstream-spec: remove use of &#39;dynamics&#39;&quot; into main
740943b2 Merge &quot;Specialize and optimize ITransform_SSE2 using do_two&quot; into main
2d547e24 Compare kFuzzPxLimit to max_num_operations
ac42dde1 Specialize and optimize ITransform_SSE2 using do_two
17e0ef1d webp-lossless-bitstream-spec: remove use of &#39;dynamics&#39;
ed274371 neon.h,cosmetics: clear a couple lint warnings
3fb82947 cpu.h,cosmetics: segment defines
0c496a4f cpu.h: add WEBP_AARCH64
8151f388 move VP8GetCPUInfo declaration to cpu.c
916548c2 Make kFuzzPxLimit sanitizer dependent
4070b271 advanced_api_fuzzer: reduce scaling limit
761f49c3 Merge &quot;webp-lossless-bitstream-spec: add missing bits to ABNF&quot; into main
84d04c48 webp-lossless-bitstream-spec: add missing bits to ABNF
0696e1a7 advanced_api_fuzzer: reduce scaling limit
93d88aa2 Merge &quot;deps.cmake: remove unneeded header checks&quot; into main
118e0035 deps.cmake: remove unneeded header checks
4c3d7018 webp-lossless-bitstream-spec: condense normal-prefix-code
a6a09b32 webp-lossless-bitstream-spec: fix 2 code typos
50ac4f7c Merge &quot;cpu.h: enable NEON w/_M_ARM64EC&quot; into main
4b7d7b4f Add contribution instructions
0afbd97b cpu.h: enable NEON w/_M_ARM64EC
349f4353 Merge changes Ibd89e56b,Ic57e7f84,I89096614 into main
8f7513b7 upsampling_neon.c: fix WEBP_SWAP_16BIT_CSP check
cbf624b5 advanced_api_fuzzer: reduce scaling limit
89edfdd1 Skip slow scaling in libwebp advanced_api_fuzzer
859f19f7 Reduce libwebp advanced_api_fuzzer threshold
a4f04835 Merge changes Ic389aaa2,I329ccd79 into main
1275fac8 Makefile.vc: fix img2webp link w/dynamic cfg
2fe27bb9 img2webp: normalize help output
24bed3d9 cwebp: reflow -near_lossless help text
0825faa4 img2webp: add -sharp_yuv/-near_lossless
d64e6d7d Merge &quot;PaletteSortModifiedZeng: fix leak on error&quot; into main
0e12a22d Merge &quot;EncodeAlphaInternal: clear result-&gt;bw on error&quot; into main
0edbb6ea PaletteSortModifiedZeng: fix leak on error
41ffe04e Merge &quot;Update yapf style from &quot;chromium&quot; to &quot;yapf&quot;&quot; into main
2d9d9265 Update yapf style from &quot;chromium&quot; to &quot;yapf&quot;
a486d800 EncodeAlphaInternal: clear result-&gt;bw on error
1347a32d Skip big scaled advanced_api_fuzzer
52b6f067 Fix scaling limit in advanced_api_fuzzer.c
73618428 Limit scaling in libwebp advanced_api_fuzzer.c
b54d21a0 Merge &quot;CMakeLists.txt: allow CMAKE_INSTALL_RPATH to be set empty&quot; into main
31c28db5 libwebp{,demux,mux}.pc.in: Requires -&gt; Requires.private
d9a505ff CMakeLists.txt: allow CMAKE_INSTALL_RPATH to be set empty
bdf33d03 Merge tag &#39;v1.3.0&#39;
b5577769 update ChangeLog
0ba77244 update NEWS
e763eb1e bump version to 1.3.0
2a8686fc update AUTHORS
106a57c1 Merge &quot;*/Android.mk: add a check for NDK_ROOT&quot; into main
c5e841c4 Merge &quot;extras: WebpToSDL -&gt; WebPToSDL&quot; into main
dbc30715 Merge &quot;xcframeworkbuild.sh: bump MACOSX_CATALYST_MIN_VERSION&quot; into main
6fc1a9f9 */Android.mk: add a check for NDK_ROOT
d3e151fc doc/api.md,webp_js/README.md: Webp -&gt; WebP
ed92a626 extras: WebpToSDL -&gt; WebPToSDL
6eb0189b xcframeworkbuild.sh: bump MACOSX_CATALYST_MIN_VERSION
1d58575b CMake: align .pc variables with autoconf
e5fe2cfc webp-lossless-bitstream-spec,cosmetics: reflow paragraphs
0ceeeab9 webp-lossless-bitstream-spec: add amendment note
607611cd Merge &quot;webp-container-spec: normalize section title case&quot; into main
f853685e lossless: SUBTRACT_GREEN -&gt; SUBTRACT_GREEN_TRANSFORM
786497e4 webp-lossless-bitstream-spec: fix inv color txfm description
c6ac672d webp-lossless-bitstream-spec: fix num_code_lengths check
b5700efb webp-lossless-bitstream-spec,cosmetics: grammar/capitalization
d8ed8c11 webp-container-spec: normalize section title case
52ec0b8f Merge changes Ie975dbb5,Ifc8c93af,I6ca7c5d6,I2e8d66f5,I152477b8 into main
5097ef62 webp-container-spec,cosmetics: grammar/capitalization
e3ba2b1f webp-lossless-bitstream-spec,cosmetics: reflow abstract
1e8e3ded webp-lossless-bitstream-spec: reword abstract re alpha
017cb6fa webp-container-spec,cosmetics: normalize range syntax
f6a4684b webp-lossless-bitstream-spec,cosmetics: normalize range syntax
54ebd5a3 webp-lossless-bitstream-spec: limit dist map lut to 69 cols
44741f9c webp-lossless-bitstream-spec: fix dist mapping example
fad0ece7 pnmdec.c: use snprintf instead of sprintf
3f73e8f7 sharpyuv: add SharpYuvGetVersion()
ce2f2d66 SharpYuvConvert: fix a race on SharpYuvGetCPUInfo
a458e308 sharpyuv_dsp.h: restore sharpyuv_cpu.h include
9ba800a7 Merge changes Id72fbf3b,Ic59d23a2 into main
979c0ebb sharpyuv: add SharpYuvGetCPUInfo
8bab09a4 Merge &quot;*.pc.in: rename lib_prefix to webp_libname_prefix&quot; into main
769387c5 cpu.c,cosmetics: fix a typo
a02978c2 sharpyuv/Makefile.am+cmake: add missing -lm
28aedcb9 *.pc.in: rename lib_prefix to webp_libname_prefix
c42e6d5a configure.ac: export an empty lib_prefix variable
dfc843aa Merge &quot;*.pc.in: add lib prefix to lib names w/MSVC&quot; into main
2498209b *.pc.in: add lib prefix to lib names w/MSVC
ac252b61 Merge &quot;analysis_enc.c: fix a dead store warning&quot; into main
56944762 analysis_enc.c: fix a dead store warning
d34f9b99 Merge &quot;webp-lossless-bitstream-spec: convert BNF to ABNF&quot; into main
dc05b4db Merge changes I96bc063c,I45880467,If9e18e5a,I6ee938e4,I0a410b28, ... into main
83270c7f webp-container-spec: add prose for rendering process
73b19b64 webp-container-spec: note reserved fields MUST be ignored
57101d3f webp-lossless-bitstream-spec: improve &#39;small&#39; color table stmt
dfd32e45 webp-container-spec: remove redundant sentence
8a6185dd doc/webp-*: fix some punctuation, grammar
72776530 webp-lossless-bitstream-spec: convert BNF to ABNF
d992bb08 cmake: rename cpufeatures target to cpufeatures-webp
3ed2b275 webp-container-spec: clarify background color note
951c292d webp-container-spec: come too late -&gt; out of order
902dd787 webp-container-spec: prefer hex literals
a8f6b5ee webp-container-spec: change SHOULD to MUST w/ANIM chunk
1dc59435 webp-container-spec: add unknown fields MUST be ignored
280a810f webp-container-spec: make padding byte=0 a MUST
41f0bf68 webp-container-spec: update note on trailing data
6bdd36db webp-container-spec: clarify Chunk Size is in bytes
87e36c48 Merge &quot;webp_js/README.md,cosmetics: reflow some lines&quot; into main
5b01f321 Merge &quot;Update Windows makefile to build libsharpyuv library.&quot; into main
19b1a71c webp_js/README.md,cosmetics: reflow some lines
780db756 Update Windows makefile to build libsharpyuv library.
e407d4b3 CMakeLists.txt: replace GLUT_glut_LIBRARY w/GLUT::GLUT
abf73d62 Merge &quot;WebPConfig.cmake.in: add find_dependency(Threads)&quot; into main
25807fb4 Merge &quot;cmake: restore compatibility with cmake &lt; 3.12&quot; into main
5dbc4bfa WebPConfig.cmake.in: add find_dependency(Threads)
b2a175dd Merge &quot;Update wasm instructions.&quot; into main
cb90f76b Update wasm instructions.
02d15258 cmake: restore compatibility with cmake &lt; 3.12
5ba046e2 CMake: add_definitions -&gt; add_compile_options
e68765af dsp,neon: use vaddv in a few more places
e8f83de2 Set libsharpyuv include dir to &#39;webp&#39; subdirectory.
15a91ab1 cmake,cosmetics: apply cmake-format
0dd49d1a CMakeLists.txt: set @ONLY in configure_file() calls
62b1bfe8 Merge changes I2877e7bb,I777cad70,I15af7d1a,I686e6740,If10538a9, ... into main
95c8fe5f Merge changes Iecea3603,I9dc228ab into main
e7c805cf picture_csp_enc.c: remove SafeInitSharpYuv
6af8845a sharpyuv: prefer webp/types.h
639619ce cmake: fix dll exports
782ed48c sharpyuv,SharpYuvInit: add mutex protection when available
cad0d5ad sharyuv_{neon,sse2}.c: merge WEBP_USE_* sections
ef70ee06 add a few missing &lt;stddef.h&gt; includes for NULL
f0f9eda4 sharpyuv.h: remove &lt;inttypes.h&gt;
9b902cba Merge &quot;picture_csp_enc.c,CheckNonOpaque: rm unneeded local&quot; into main
9c1d457c cmake/cpu.cmake: remove unused variable
9ac25bcb CMakeLists.txt,win32: match naming convention used by nmake
76c353ba picture_csp_enc.c,CheckNonOpaque: rm unneeded local
5000de54 Merge &quot;cwebp: fix WebPPictureHasTransparency call&quot; into main
e1729309 Merge &quot;WebPPictureHasTransparency: add missing pointer check&quot; into main
00ff988a vp8l_enc,AddSingleSubGreen: clear int sanitizer warnings
e2fecc22 dsp/lossless_enc.c: clear int sanitizer warnings
129cf9e9 dsp/lossless.c: clear int sanitizer warnings
ad7d1753 dsp/lossless_enc.c: clear int sanitizer warnings
5037220e VP8LSubtractGreenFromBlueAndRed_C: clear int sanitizer warnings
2ee786c7 upsampling_sse2.c: clear int sanitizer warnings
4cc157d4 ParseOptionalChunks: clear int sanitizer warning
892cf033 BuildHuffmanTable: clear int sanitizer warning
3a9a4d45 VP8GetSigned: clear int sanitizer warnings
704a3d0a dsp/lossless.c: quiet int sanitizer warnings
1a6c109c WebPPictureHasTransparency: add missing pointer check
c626e7d5 cwebp: fix WebPPictureHasTransparency call
866e349c Merge tag &#39;v1.2.4&#39;
c170df38 Merge &quot;Create libsharpyuv.a in makefile.unix.&quot; into main
9d7ff74a Create libsharpyuv.a in makefile.unix.
0d1f1254 update ChangeLog
fcbc2d78 Merge &quot;doc/*.txt: restrict code to 69 columns&quot; into main
4ad0e189 Merge &quot;webp-container-spec.txt: normalize fourcc spelling&quot; into main
980d2488 update NEWS
9fde8127 bump version to 1.2.4
7a0a9935 doc/*.txt: restrict code to 69 columns
c040a615 webp-container-spec.txt: normalize fourcc spelling
aff1c546 dsp,x86: normalize types w/_mm_cvtsi128_si32 calls
ab540ae0 dsp,x86: normalize types w/_mm_cvtsi32_si128 calls
8980362e dsp,x86: normalize types w/_mm_set* calls (2)
e626925c lossless: fix crunch mode w/WEBP_REDUCE_SIZE
83539239 dsp,x86: normalize types w/_mm_set* calls
8a4576ce webp-container-spec.txt: replace &amp;amp; with &amp;
db870881 Merge &quot;webp-container-spec.txt: make reserved 0 values a MUST&quot; into main
01d7d378 webp-lossless-bitstream-spec: number all sections
337cf69f webp-lossless-bitstream-spec: mv Nomenclature after Intro
79be856e Merge changes I7111d1f7,I872cd62c into main
5b87983a webp-container-spec.txt: make reserved 0 values a MUST
bd939123 Merge changes I7a25b1a6,I51b2c2a0,I87d0cbcf,I6ec60af6,I0a3fe9dc into main
04764b56 libwebp.pc: add libsharpyuv to requires
7deee810 libsharpyuv: add pkg-config file
1a64a7e6 webp-container-spec.txt: clarify some SHOULDs
bec2c88a webp-container-spec.txt: move ChunkHeader to terminology
c9359332 webp-container-spec.txt: clarify &#39;VP8 &#39;/&#39;XMP &#39; fourccs
70fe3063 webp-container-spec.txt: rightsize table entries
ddbf3f3f webp-container-spec.txt: update &#39;key words&#39; text
c151e95b utils.h,WEBP_ALIGN: make bitmask unsigned
748e92bb add WebPInt32ToMem
3fe15b67 Merge &quot;Build libsharpyuv as a full installable library.&quot; into main
4f402f34 add WebPMemToInt32
a3b68c19 Build libsharpyuv as a full installable library.
b4994eaa CMake: set rpath for shared objects
94cd7117 Merge &quot;CMake: fix dylib versioning&quot; into main
e91451b6 Fix the lossless specs a bit more.
231bdfb7 CMake: fix dylib versioning
bfad7ab5 CMakeLists.txt: correct libwebpmux name in WebPConfig.cmake
c2e3fd30 Revert &quot;cmake: fix webpmux lib name for cmake linking&quot;
7366f7f3 Merge &quot;lossless: fix crunch mode w/WEBP_REDUCE_SIZE&quot; into main
84163d9d lossless: fix crunch mode w/WEBP_REDUCE_SIZE
d01c1eb3 webp-lossless-bitstream-spec,cosmetics: normalize capitalization
8813ca8e Merge tag &#39;v1.2.3&#39;
3c4a0fbf update ChangeLog
56a480e8 dsp/cpu.h: add missing extern &quot;C&quot;
62b45bdd update ChangeLog
8764ec7a Merge changes Idb037953,Id582e395 into 1.2.3
bcb872c3 vwebp: fix file name display in windows unicode build
67c44ac5 webpmux: fix -frame option in windows unicode build
8278825a makefile.unix: add sharpyuv objects to clean target
14a49e01 update NEWS
34b1dc33 bump version to 1.2.3
0b397fda update AUTHORS
c16488ac update .mailmap
5a2d929c Merge &quot;unicode.h: set console mode before using wprintf&quot; into main
169f867f unicode.h: set console mode before using wprintf
a94b855c Merge &quot;libsharpyuv: add version defines&quot; into main
f83bdb52 libsharpyuv: add version defines
bef0d797 unicode_gif.h: fix -Wdeclaration-after-statement
404c1622 Rename Huffman coding to prefix coding in the bitstream spec
8895f8a3 Merge &quot;run_static_analysis.sh: fix scan-build archive path&quot; into main
92a673d2 Merge &quot;Add -fvisibility=hidden flag in CMakeLists.&quot; into main
67c1d722 Merge &quot;add WEBP_MSAN&quot; into main
1124ff66 Add -fvisibility=hidden flag in CMakeLists.
e15b3560 add WEBP_MSAN
ec9e782a sharpyuv: remove minimum image size from sharpyuv library
7bd07f3b run_static_analysis.sh: fix scan-build archive path
5ecee06f Merge &quot;sharpyuv: increase precision of gamma&lt;-&gt;linear conversion&quot; into main
f81dd7d6 Merge changes I3d17d529,I53026880,I1bd61639,I6bd4b25d,Icfec8fba into main
2d607ee6 sharpyuv: increase precision of gamma&lt;-&gt;linear conversion
266cbbc5 sharpyuv: add 32bit version of SharpYuvFilterRow.
9fc12274 CMake: add src to webpinfo includes
7d18f40a CMake: add WEBP_BUILD_WEBPINFO to list of checks for exampleutil
11309aa5 CMake: add WEBP_BUILD_WEBPMUX to list of checks for exampleutil
4bc762f7 CMake: link imageioutil to exampleutil after defined
0d1b9bc4 WEBP_DEP_LIBRARIES: use Threads::Threads
20ef48f0 Merge &quot;sharpyuv: add support for 10/12/16 bit rgb and 10/12 bit yuv.&quot; into main
93c54371 sharpyuv: add support for 10/12/16 bit rgb and 10/12 bit yuv.
53cf2b49 normalize WebPValidatePicture declaration w/definition
d3006f4b sharpyuv: slightly improve precision
ea967098 Merge changes Ia01bd397,Ibf3771af into main
11bc8410 Merge changes I2d317c4b,I9e77f6db into main
30453ea4 Add an internal WebPValidatePicture.
6c43219a Some renamings for consistency.
4f59fa73 update .mailmap
e74f8a62 webp-lossless-bitstream-spec,cosmetics: normalize range syntax
5a709ec0 webp-lossless-bitstream-spec,cosmetics: fix code typo
a2093acc webp-lossless-bitstream-spec: add amendment note
86c66930 webp-lossless-bitstream-spec: fix BNF
232f22da webp-lossless-bitstream-spec: fix &#39;simple code&#39; snippet
44dd765d webp-lossless-bitstream-spec: fix ColorTransform impl
7a7e33e9 webp-lossless-bitstream-spec: fix TR-pixel right border note
86f94ee0 Update lossless spec with Huffman codes.
a3927cc8 sharpyuv.c,cosmetics: fix indent
6c45cef7 Make sure the stride has a minimum value in the importer.
0c8b0e67 sharpyuv: cleanup/cosmetic changes
dc3841e0 {histogram,predictor}_enc: quiet int -&gt; float warnings
a19a25bb Replace doubles by floats in lossless misc cost estimations.
42888f6c Add an option to enable static builds.
7efcf3cc Merge &quot;Fix typo in color constants: Marix -&gt; Matrix&quot; into main
8f4b5c62 Fix typo in color constants: Marix -&gt; Matrix
90084d84 Merge &quot;demux,IsValidExtendedFormat: remove unused variable&quot; into main
ed643f61 Merge changes I452d2485,Ic6d75475 into main
8fa053d1 Rename SharpYUV to SharpYuv for consistency.
99a87562 SharpYuvComputeConversionMatrix: quiet int-&gt;float warnings
deb426be Makefile.vc: add sharpyuv_csp.obj to SHARPYUV_OBJS
779597d4 demux,IsValidExtendedFormat: remove unused variable
40e8aa57 Merge &quot;libsharpyuv: add colorspace utilities&quot; into main
01a05de1 libsharpyuv: add colorspace utilities
2de4b05a Merge changes Id9890a60,I376d81e6,I1c958838 into main
b8bca81f Merge &quot;configure.ac: use LT_INIT if available&quot; into main
e8e77b9c Merge changes I479bc487,I39864691,I5d486c2c,I186d13be into main
7e7d5d50 Merge &quot;.gitignore: add Android Studio &amp; VS code dirs&quot; into main
10c50848 normalize label indent
89f774e6 mux{edit,internal}: fix leaks on error
2d3293ad ExUtilInitCommandLineArguments: fix leak on error
ec34fd70 anim_util: fix leaks on error
e4717287 gif2webp: fix segfault on OOM
e3cfafaf GetBackwardReferences: fail on alloc error
a828a59b BackwardReferencesHashChainDistanceOnly: fix segfault on OOM
fe153fae VP8LEncodeStream: fix segfault on OOM
919acc0e .gitignore: add Android Studio &amp; VS code dirs
efa0731b configure.ac: use LT_INIT if available
0957fd69 tiffdec: add grayscale support
e685feef Merge &quot;Make libsharpyuv self-contained by removing dependency on cpu.c&quot; into main
841960b6 Make libsharpyuv self-contained by removing dependency on cpu.c
617cf036 image_dec: add WebPGetEnabledInputFileFormats()
7a68afaa Let SharpArgbToYuv caller pass in an RGB&gt;YUV conversion matrix.
34bb332c man/cwebp.1: add note about crop/resize order
f0e9351c webp-lossless-bitstream-spec,cosmetics: fix some typos
5ccbd6ed vp8l_dec.c,cosmetics: fix a few typos
c3d0c2d7 fix ios build scripts after sharpyuv dep added
d0d2292e Merge &quot;Make libwebp depend on libsharpyuv.&quot; into main
03d12190 alpha_processing_neon.c: fix 0x01... typo
d55d447c Make libwebp depend on libsharpyuv.
e4cbcdd2 Fix lossless encoding for MIPS.
924e7ca6 alpha_processing_neon.c: fix Dispatch/ExtractAlpha_NEON
0fa0ea54 Makefile.vc: use /MANIFEST:EMBED
29cc95ce Basic version of libsharpyuv in libwebp, in C.
a30f2190 examples/webpmux.c: fix a couple of typos
66b3ce23 Fix bad overflow check in ReadTIFF()
54e61a38 Markdownify libwebp docs and reorganize them.
b4533deb CMakeLists.txt,cosmetics: break long line
b9d2f9cd quant_enc.c: use WEBP_RESTRICT qualifier
ec178f2c Add progress hook granularity in lossless
26139c73 Rename MAX_COST to MAX_BIT_COST in histogram_enc.c
13b82816 cmake: fix webpmux lib name for cmake linking
88b6a396 webp-container-spec.txt,cosmetics: normalize formatting

git-subtree-dir: c-lib
git-subtree-split: 4fa21912338357f89e4fd51cf2368325b59e9bd9

</content>
</entry>
<entry>
<id>1ca3897e4a6b5f0c06b0308583e65ee9cbb25d0e</id>
<published>2026-09-20T12:12:10Z</published>
<updated>2026-09-20T12:17:04Z</updated>
<title type="text">README: document the backends, build tags and benchmarks</title>
<link rel="alternate" type="text/html" href="commit/1ca3897e4a6b5f0c06b0308583e65ee9cbb25d0e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 1ca3897e4a6b5f0c06b0308583e65ee9cbb25d0e
parent 4c5b328b64936ef33eab2764e83994974b100691
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:12:10 -0300

README: document the backends, build tags and benchmarks

Tag matrix with measured binary sizes, benchmark results across the corpus in
./bench, and the commands to reproduce them.

</content>
</entry>
<entry>
<id>4c5b328b64936ef33eab2764e83994974b100691</id>
<published>2026-09-20T12:08:29Z</published>
<updated>2026-09-20T12:08:29Z</updated>
<title type="text">bench: add a backend benchmark harness</title>
<link rel="alternate" type="text/html" href="commit/4c5b328b64936ef33eab2764e83994974b100691.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 4c5b328b64936ef33eab2764e83994974b100691
parent d163123589e9e2ed6dde377b66d7668b80616ac5
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:08:29 -0300

bench: add a backend benchmark harness

Compares the backends across a 14-image synthetic corpus chosen to exercise
what the codec actually branches on: predictor effectiveness, palette and
colour-cache eligibility, the separate alpha plane, and the transform&#39;s
response to smooth versus high-frequency content. Sizes run from 128x128 to
3840x2160 so scaling behaviour is visible.

It also verifies that every backend encodes byte-identically, which is the
property the whole per-target build story exists to protect.

build-native-bench-libs.sh supplies the two native shared objects it compares
against. The scalar one exists to separate the cost of a sandbox or a
transpiler from the cost of simply not having SIMD.

</content>
</entry>
<entry>
<id>d163123589e9e2ed6dde377b66d7668b80616ac5</id>
<published>2026-09-20T12:08:29Z</published>
<updated>2026-09-20T12:08:29Z</updated>
<title type="text">tools: add a backend tag matrix test</title>
<link rel="alternate" type="text/html" href="commit/d163123589e9e2ed6dde377b66d7668b80616ac5.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d163123589e9e2ed6dde377b66d7668b80616ac5
parent edcd2eab9a587add7df9a97628e7cf7f7420f411
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:08:29 -0300

tools: add a backend tag matrix test

Builds and tests every supported tag combination, and asserts that disabling
all backends fails the build rather than producing a binary that only errors
at run time.

Tag-guarded files rot silently: the wasm backend was excluded from every
build by an implicit GOARCH constraint and the suite still passed, because
the dynamic backend covered for it.

</content>
</entry>
<entry>
<id>edcd2eab9a587add7df9a97628e7cf7f7420f411</id>
<published>2026-09-20T12:08:13Z</published>
<updated>2026-09-20T12:08:13Z</updated>
<title type="text">webp: select the backend at build time</title>
<link rel="alternate" type="text/html" href="commit/edcd2eab9a587add7df9a97628e7cf7f7420f411.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit edcd2eab9a587add7df9a97628e7cf7f7420f411
parent 6854c67d68b354ffd4fae62df8df00b2ab6f427d
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:08:13 -0300

webp: select the backend at build time

Every binary previously linked every backend. Which ones are compiled in is
now a build tag choice, so a consumer pays only for what they use:

    (default)                    dynamic, then wasm        5.7 MiB
    -tags transpiled             dynamic, then transpiled  3.4 MiB
    -tags nowasm                 dynamic only              1.8 MiB
    -tags nodynamic              wasm only                 5.7 MiB
    -tags nodynamic,transpiled   transpiled only           3.3 MiB
    -tags nodynamic,nowasm       build error

The transpiled tag displaces wasm rather than adding to it, so no build
carries both pure-Go fallbacks. Preference lives in two explicit slots filled
by the tag-guarded files, rather than emerging from init order, and only one
file ever assigns the fallback slot, so exclusivity is enforced by the tags.

Selection is now cached instead of re-probed on every call, and Backend()
reports which backend is live. That matters because the dynamic backend binds
whatever libwebp the host provides, which may be a different version than the
one this package was built against and may legitimately encode to different
bytes than the other backends.

The backend file is named for wazero, not wasm: wasm is a valid GOARCH, so a
_wasm.go suffix applies an implicit GOARCH=wasm constraint and silently drops
the backend from every ordinary build.

The previous backend.go was dead code, referenced by nothing.

</content>
</entry>
<entry>
<id>6854c67d68b354ffd4fae62df8df00b2ab6f427d</id>
<published>2026-09-20T12:08:13Z</published>
<updated>2026-09-20T12:08:13Z</updated>
<title type="text">lib/wasm: add a WebAssembly backend</title>
<link rel="alternate" type="text/html" href="commit/6854c67d68b354ffd4fae62df8df00b2ab6f427d.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 6854c67d68b354ffd4fae62df8df00b2ab6f427d
parent 4dd33a3a91ea730d6e6721b58508be1d7a6991df
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:08:13 -0300

lib/wasm: add a WebAssembly backend

Runs libwebp as a sandboxed wasm module under wazero. One embedded artifact
serves every platform, so unlike the transpiled backend there is no per-target
output to regenerate and keep in sync, and a bug in the codec traps inside the
sandbox instead of corrupting the Go heap.

The module is instantiated per call rather than pooled. Instantiation costs
~120us against millisecond-to-second codec work, and a pooled instance would
retain its high-water mark forever: linear memory only ever grows, so one
3840x2160 lossless encode leaves an instance holding 213 MiB. CompileBytes is
exported so several modules can be compared in one process.

Compiling the module costs ~120ms, so it is deferred behind a sync.Once and
paid only on first real use.

Requires Go 1.25 via wazero; the module already targets a newer toolchain.

</content>
</entry>
<entry>
<id>4dd33a3a91ea730d6e6721b58508be1d7a6991df</id>
<published>2026-09-20T12:07:56Z</published>
<updated>2026-09-20T12:07:56Z</updated>
<title type="text">tools: add wasm build scripts for zig and emscripten</title>
<link rel="alternate" type="text/html" href="commit/4dd33a3a91ea730d6e6721b58508be1d7a6991df.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 4dd33a3a91ea730d6e6721b58508be1d7a6991df
parent d95f8e51faa5bfc46e88f564ae4cf0966f9c4f17
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:07:56 -0300

tools: add wasm build scripts for zig and emscripten

Both produce a wasm32 reactor module that wazero can run, from the vendored
c-lib source, as a single artifact for every GOOS/GOARCH.

build-wasm-emscripten.sh builds the shipped module. Emscripten is required
for SIMD specifically: libwebp has no simd128 DSP backend, so its SSE2 and
SSE4.1 kernels are only reachable through Emscripten&#39;s SSE-to-simd128 compat
headers, which wasi-sdk and zig do not ship and clang&#39;s own x86 headers
refuse to provide off-x86. It also needs -DEMSCRIPTEN, because libwebp gates
its compile-time CPU feature reporting on that bare macro rather than on
__EMSCRIPTEN__; without it the kernels are compiled but never dispatched.

build-wasm.sh is a zig-only scalar build, kept as the lighter-weight
toolchain and as a control when comparing. Both write comparison artifacts
into bench/lib; installing the shipped module is explicit via INSTALL=1.

</content>
</entry>
<entry>
<id>d95f8e51faa5bfc46e88f564ae4cf0966f9c4f17</id>
<published>2026-09-20T12:07:56Z</published>
<updated>2026-09-20T12:07:56Z</updated>
<title type="text">lib/dynamic/webp: load the shared object exactly once</title>
<link rel="alternate" type="text/html" href="commit/d95f8e51faa5bfc46e88f564ae4cf0966f9c4f17.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d95f8e51faa5bfc46e88f564ae4cf0966f9c4f17
parent b61bbe314a666f0d4cf4acb35d0ab4ae8ef62bdb
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 20 Sep 2026 09:07:56 -0300

lib/dynamic/webp: load the shared object exactly once

Init returned early only when the library had already loaded. On failure
_libwebp stayed zero, so the next call retried, and since Encode and Decode
called Init per call, a process without libwebp installed paid two failed
dlopens on every single operation — precisely the machines that fall through
to a pure-Go backend.

</content>
</entry>
<entry>
<id>b61bbe314a666f0d4cf4acb35d0ab4ae8ef62bdb</id>
<published>2025-11-25T21:19:47Z</published>
<updated>2025-11-25T21:19:47Z</updated>
<title type="text">all: refactor imports to v2</title>
<link rel="alternate" type="text/html" href="commit/b61bbe314a666f0d4cf4acb35d0ab4ae8ef62bdb.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit b61bbe314a666f0d4cf4acb35d0ab4ae8ef62bdb
parent 584e42fc5f8fe3650d01cd1ce3e73acc27d5f91d
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Nov 2025 18:19:47 -0300

all: refactor imports to v2

This was a silly oversight. All the imports need to be updated to match
the module name, which now includes a v2 suffix.

</content>
</entry>
<entry>
<id>584e42fc5f8fe3650d01cd1ce3e73acc27d5f91d</id>
<published>2025-11-18T11:22:10Z</published>
<updated>2025-11-18T11:22:10Z</updated>
<title type="text">mod: fix module name</title>
<link rel="alternate" type="text/html" href="commit/584e42fc5f8fe3650d01cd1ce3e73acc27d5f91d.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 584e42fc5f8fe3650d01cd1ce3e73acc27d5f91d
parent 1e4e98598b7e5206a43c8445b820cb1dfe774e85
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 18 Nov 2025 08:22:10 -0300

mod: fix module name

Major version changes need to reflect that version in the module name.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>1e4e98598b7e5206a43c8445b820cb1dfe774e85</id>
<published>2025-10-19T20:57:03Z</published>
<updated>2025-10-19T20:57:03Z</updated>
<title type="text">.ignore: ignore blobs in editor</title>
<link rel="alternate" type="text/html" href="commit/1e4e98598b7e5206a43c8445b820cb1dfe774e85.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 1e4e98598b7e5206a43c8445b820cb1dfe774e85
parent 9c9445ba17a5b642305b42884aee015d48dad0de
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 19 Oct 2025 17:57:03 -0300

.ignore: ignore blobs in editor

Ignore blobs and C files since we mostly care about the Go source.

</content>
</entry>
<entry>
<id>9c9445ba17a5b642305b42884aee015d48dad0de</id>
<published>2025-10-19T20:56:10Z</published>
<updated>2025-10-19T20:56:10Z</updated>
<title type="text">lib/{dynamic,transpiled}: fix quality param</title>
<link rel="alternate" type="text/html" href="commit/9c9445ba17a5b642305b42884aee015d48dad0de.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9c9445ba17a5b642305b42884aee015d48dad0de
parent 5089b45b2813af6723b8133fe90a73ee95ca1290
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sun, 19 Oct 2025 17:56:10 -0300

lib/{dynamic,transpiled}: fix quality param

I thought the C api wanted the quality in the range 0-1 because they
picked float as the numeric type.

Turns out they actually just cast it to int and assume the range 0-100.

Thanks to JP Hastings-Edrei for calling this out!

</content>
</entry>
<entry>
<id>5089b45b2813af6723b8133fe90a73ee95ca1290</id>
<published>2024-07-10T08:51:29Z</published>
<updated>2024-07-10T08:51:29Z</updated>
<title type="text">lib/dynamic/webp: [Linux] remove lossless hack</title>
<link rel="alternate" type="text/html" href="commit/5089b45b2813af6723b8133fe90a73ee95ca1290.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 5089b45b2813af6723b8133fe90a73ee95ca1290
parent c47859304e78ea6698ba3c3d33a0a29c999a9a4b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 10 Jul 2024 16:51:29 +0800

lib/dynamic/webp: [Linux] remove lossless hack

After some testing it seems that we can use float arguments just fine.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>c47859304e78ea6698ba3c3d33a0a29c999a9a4b</id>
<published>2024-07-10T07:04:12Z</published>
<updated>2024-07-10T07:04:12Z</updated>
<title type="text">go.*: update deps</title>
<link rel="alternate" type="text/html" href="commit/c47859304e78ea6698ba3c3d33a0a29c999a9a4b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit c47859304e78ea6698ba3c3d33a0a29c999a9a4b
parent 734eccbd13a1146ed1887b459c3e797315657b5b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 10 Jul 2024 15:04:12 +0800

go.*: update deps

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>734eccbd13a1146ed1887b459c3e797315657b5b</id>
<published>2024-03-26T06:58:32Z</published>
<updated>2024-03-26T06:58:32Z</updated>
<title type="text">go.*: update deps</title>
<link rel="alternate" type="text/html" href="commit/734eccbd13a1146ed1887b459c3e797315657b5b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 734eccbd13a1146ed1887b459c3e797315657b5b
parent a9212ed0cd264c0a33ed49ac1a072b3d79b72121
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 26 Mar 2024 14:58:32 +0800

go.*: update deps

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>a9212ed0cd264c0a33ed49ac1a072b3d79b72121</id>
<published>2024-03-26T06:55:57Z</published>
<updated>2024-03-26T06:55:57Z</updated>
<title type="text">lib/dynamic: eagerly check init functions</title>
<link rel="alternate" type="text/html" href="commit/a9212ed0cd264c0a33ed49ac1a072b3d79b72121.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit a9212ed0cd264c0a33ed49ac1a072b3d79b72121
parent 8979a905cefe51e1defa798ca9ad938bff72c326
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 26 Mar 2024 14:55:57 +0800

lib/dynamic: eagerly check init functions

For early error reporting.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>8979a905cefe51e1defa798ca9ad938bff72c326</id>
<published>2024-03-26T06:48:56Z</published>
<updated>2024-03-26T06:48:56Z</updated>
<title type="text">lib/dynamic: nil guard function pointers</title>
<link rel="alternate" type="text/html" href="commit/8979a905cefe51e1defa798ca9ad938bff72c326.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 8979a905cefe51e1defa798ca9ad938bff72c326
parent 66763fde44257f5366633282ba6124b166f250a5
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 26 Mar 2024 14:48:56 +0800

lib/dynamic: nil guard function pointers

In the case of bad init we can avoid panicking.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>66763fde44257f5366633282ba6124b166f250a5</id>
<published>2024-03-07T07:41:58Z</published>
<updated>2024-03-07T07:41:58Z</updated>
<title type="text">lib/dynamic/webp: actually use library name param</title>
<link rel="alternate" type="text/html" href="commit/66763fde44257f5366633282ba6124b166f250a5.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 66763fde44257f5366633282ba6124b166f250a5
parent 75195ca41678d8ff1d21aafe03b0dec5bdd03f7e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu,  7 Mar 2024 15:41:58 +0800

lib/dynamic/webp: actually use library name param

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>75195ca41678d8ff1d21aafe03b0dec5bdd03f7e</id>
<published>2024-03-07T07:24:39Z</published>
<updated>2024-03-07T07:37:24Z</updated>
<title type="text">lib/dynamic/webp: allow generic naming</title>
<link rel="alternate" type="text/html" href="commit/75195ca41678d8ff1d21aafe03b0dec5bdd03f7e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 75195ca41678d8ff1d21aafe03b0dec5bdd03f7e
parent 3bdb8c52844faed6a2cef991282bb0a2dfaaca1b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu,  7 Mar 2024 15:24:39 +0800

lib/dynamic/webp: allow generic naming

Allow for arch delineated naming and generic naming.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>3bdb8c52844faed6a2cef991282bb0a2dfaaca1b</id>
<published>2024-03-07T07:17:13Z</published>
<updated>2024-03-07T07:18:48Z</updated>
<title type="text">webp: benchmark decode</title>
<link rel="alternate" type="text/html" href="commit/3bdb8c52844faed6a2cef991282bb0a2dfaaca1b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 3bdb8c52844faed6a2cef991282bb0a2dfaaca1b
parent 9c8b739f420eb05dfa848dabfe89309d5af9344b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu,  7 Mar 2024 15:17:13 +0800

webp: benchmark decode

Benchmark stdlib webp vs transpiled vs dynamic.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>9c8b739f420eb05dfa848dabfe89309d5af9344b</id>
<published>2024-02-29T07:39:06Z</published>
<updated>2024-02-29T07:39:34Z</updated>
<title type="text">tools/compile-dynamic-libraries: fixup blobs path</title>
<link rel="alternate" type="text/html" href="commit/9c8b739f420eb05dfa848dabfe89309d5af9344b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9c8b739f420eb05dfa848dabfe89309d5af9344b
parent 3d2240a7f2d0d2062666873e2dee82a7a6cf1937
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 29 Feb 2024 15:39:06 +0800

tools/compile-dynamic-libraries: fixup blobs path

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>3d2240a7f2d0d2062666873e2dee82a7a6cf1937</id>
<published>2024-02-29T07:37:40Z</published>
<updated>2024-02-29T07:37:40Z</updated>
<title type="text">lib/dynamic: allow multi arch support</title>
<link rel="alternate" type="text/html" href="commit/3d2240a7f2d0d2062666873e2dee82a7a6cf1937.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 3d2240a7f2d0d2062666873e2dee82a7a6cf1937
parent 156db145c43d831d7b9b5378e02b23503ebd35bd
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 29 Feb 2024 15:37:40 +0800

lib/dynamic: allow multi arch support

Let an application be distributed with an amd64 and arm64 shared object.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>156db145c43d831d7b9b5378e02b23503ebd35bd</id>
<published>2024-02-29T07:14:37Z</published>
<updated>2024-02-29T07:14:37Z</updated>
<title type="text">webp.Decode: attempt to use shared library if available</title>
<link rel="alternate" type="text/html" href="commit/156db145c43d831d7b9b5378e02b23503ebd35bd.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 156db145c43d831d7b9b5378e02b23503ebd35bd
parent 0bdc61d161006630b031bee57a0c9034712bd323
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 29 Feb 2024 15:14:37 +0800

webp.Decode: attempt to use shared library if available

Mirror the Encode logic, where we try to use a shared object if one is
available.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>0bdc61d161006630b031bee57a0c9034712bd323</id>
<published>2024-02-28T05:20:08Z</published>
<updated>2024-02-28T05:20:39Z</updated>
<title type="text">lib/transpiled: add arm64 copies for darwin and windows</title>
<link rel="alternate" type="text/html" href="commit/0bdc61d161006630b031bee57a0c9034712bd323.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 0bdc61d161006630b031bee57a0c9034712bd323
parent d1b56df68fbb9e61fc94392054c99d1acc4a8d93
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 28 Feb 2024 13:20:08 +0800

lib/transpiled: add arm64 copies for darwin and windows

Given that the only difference between architectures has proven to be
use of inline assembly for SIMD acceleration, we can simply copy the
transpiled output for arm64 variants.

Ideally, we would setup a full cross compile for these artifacts, though
that is proving to be a total pain. If this causes issues we can revert.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d1b56df68fbb9e61fc94392054c99d1acc4a8d93</id>
<published>2024-02-28T03:16:23Z</published>
<updated>2024-02-28T03:16:23Z</updated>
<title type="text">lib/dynamic: dry up dlopen definitions</title>
<link rel="alternate" type="text/html" href="commit/d1b56df68fbb9e61fc94392054c99d1acc4a8d93.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit d1b56df68fbb9e61fc94392054c99d1acc4a8d93
parent 5f5890417f1837a7cd5ec20a6b170f454c147e5c
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 28 Feb 2024 11:16:23 +0800

lib/dynamic: dry up dlopen definitions

They don&#39;t change per architecture, so we can fold them together.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>5f5890417f1837a7cd5ec20a6b170f454c147e5c</id>
<published>2024-02-08T16:41:04Z</published>
<updated>2024-02-09T02:52:08Z</updated>
<title type="text">Add support for dynamic linux/arm64</title>
<link rel="alternate" type="text/html" href="commit/5f5890417f1837a7cd5ec20a6b170f454c147e5c.html" />
<author>
<name>Milan Nikolic</name>
<email>gen2brain@gmail.com</email>
</author>
<content type="text">commit 5f5890417f1837a7cd5ec20a6b170f454c147e5c
parent 44e7b984c4d0ac98a00e2f9ca6fdb77551b6337e
Author: Milan Nikolic &lt;gen2brain@gmail.com&gt;
Date:   Thu,  8 Feb 2024 17:41:04 +0100

Add support for dynamic linux/arm64

</content>
</entry>
<entry>
<id>44e7b984c4d0ac98a00e2f9ca6fdb77551b6337e</id>
<published>2024-01-03T11:04:18Z</published>
<updated>2024-01-03T11:05:46Z</updated>
<title type="text">tools(transpile): ensure all compiler names match</title>
<link rel="alternate" type="text/html" href="commit/44e7b984c4d0ac98a00e2f9ca6fdb77551b6337e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 44e7b984c4d0ac98a00e2f9ca6fdb77551b6337e
parent 91d4abc35e3ec60ee61f6ba7456d18c7c6bc8451
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 19:04:18 +0800

tools(transpile): ensure all compiler names match

If the configure CC doesn&#39;t match the environment CC ccgo fails to work.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>91d4abc35e3ec60ee61f6ba7456d18c7c6bc8451</id>
<published>2024-01-03T10:10:14Z</published>
<updated>2024-01-03T10:13:49Z</updated>
<title type="text">all: use NRGBA images (not pre-multiplied)</title>
<link rel="alternate" type="text/html" href="commit/91d4abc35e3ec60ee61f6ba7456d18c7c6bc8451.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 91d4abc35e3ec60ee61f6ba7456d18c7c6bc8451
parent 55f202710aba7f22fc3fd31da03651c1d48fe100
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 18:10:14 +0800

all: use NRGBA images (not pre-multiplied)

This is what WebP is expecting.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>55f202710aba7f22fc3fd31da03651c1d48fe100</id>
<published>2024-01-03T10:09:10Z</published>
<updated>2024-01-03T10:09:10Z</updated>
<title type="text">docs: reflect current use</title>
<link rel="alternate" type="text/html" href="commit/55f202710aba7f22fc3fd31da03651c1d48fe100.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 55f202710aba7f22fc3fd31da03651c1d48fe100
parent e4a3608cbc8d9fe44478cce306710d3e07b7a1e7
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 18:09:10 +0800

docs: reflect current use

The package will use any shared object if available and fallback to transpiled.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>e4a3608cbc8d9fe44478cce306710d3e07b7a1e7</id>
<published>2024-01-03T08:37:45Z</published>
<updated>2024-01-03T08:40:32Z</updated>
<title type="text">webp: use new lib API</title>
<link rel="alternate" type="text/html" href="commit/e4a3608cbc8d9fe44478cce306710d3e07b7a1e7.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit e4a3608cbc8d9fe44478cce306710d3e07b7a1e7
parent 82741fa8693af21b7c819edd160275b50302b60e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 16:37:45 +0800

webp: use new lib API

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>82741fa8693af21b7c819edd160275b50302b60e</id>
<published>2024-01-03T08:37:13Z</published>
<updated>2024-01-03T08:40:32Z</updated>
<title type="text">webp: use webp decoder</title>
<link rel="alternate" type="text/html" href="commit/82741fa8693af21b7c819edd160275b50302b60e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 82741fa8693af21b7c819edd160275b50302b60e
parent 8b9f86c3cf35e5319469a98f6a6a0a707757aadd
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 16:37:13 +0800

webp: use webp decoder

Instead of the stdlib decoder.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>8b9f86c3cf35e5319469a98f6a6a0a707757aadd</id>
<published>2024-01-03T08:31:37Z</published>
<updated>2024-01-03T08:40:32Z</updated>
<title type="text">lib/dynamic: add decode and fix lossy panic with cgo</title>
<link rel="alternate" type="text/html" href="commit/8b9f86c3cf35e5319469a98f6a6a0a707757aadd.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 8b9f86c3cf35e5319469a98f6a6a0a707757aadd
parent 61bcd809df050051345098e0c46884ccc52c8c97
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 16:31:37 +0800

lib/dynamic: add decode and fix lossy panic with cgo

Due a bug in purego, we cannot use float parameters while cgo is enabled on linux.
When cgo is enabled, we force the use of lossless encoding.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>61bcd809df050051345098e0c46884ccc52c8c97</id>
<published>2024-01-03T08:30:32Z</published>
<updated>2024-01-03T08:30:32Z</updated>
<title type="text">lib/transpiled: add decode and fix asm panic</title>
<link rel="alternate" type="text/html" href="commit/61bcd809df050051345098e0c46884ccc52c8c97.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 61bcd809df050051345098e0c46884ccc52c8c97
parent 55f31ea7f7298c3aeb2a7b051784a7ff313f0d35
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 16:30:32 +0800

lib/transpiled: add decode and fix asm panic

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>55f31ea7f7298c3aeb2a7b051784a7ff313f0d35</id>
<published>2024-01-03T08:26:56Z</published>
<updated>2024-01-03T08:26:56Z</updated>
<title type="text">lib/common: capture unsafe logic</title>
<link rel="alternate" type="text/html" href="commit/55f31ea7f7298c3aeb2a7b051784a7ff313f0d35.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 55f31ea7f7298c3aeb2a7b051784a7ff313f0d35
parent 40afa63773a71fe1e7f88fd6e0676ac4ce26324b
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 16:26:56 +0800

lib/common: capture unsafe logic

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>40afa63773a71fe1e7f88fd6e0676ac4ce26324b</id>
<published>2024-01-03T08:26:17Z</published>
<updated>2024-01-03T08:26:17Z</updated>
<title type="text">cmd: handle flags properly</title>
<link rel="alternate" type="text/html" href="commit/40afa63773a71fe1e7f88fd6e0676ac4ce26324b.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 40afa63773a71fe1e7f88fd6e0676ac4ce26324b
parent 41dac6f1dc7e1dd9044068167f7f0bedb9dc5d5a
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed,  3 Jan 2024 16:26:17 +0800

cmd: handle flags properly

Set the lossless and quality options.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>41dac6f1dc7e1dd9044068167f7f0bedb9dc5d5a</id>
<published>2024-01-02T00:41:33Z</published>
<updated>2024-01-02T00:41:33Z</updated>
<title type="text">webp: [fuzz] ensure output is decodable</title>
<link rel="alternate" type="text/html" href="commit/41dac6f1dc7e1dd9044068167f7f0bedb9dc5d5a.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 41dac6f1dc7e1dd9044068167f7f0bedb9dc5d5a
parent 98a093fa7067145893f248ab2e4c8f083659c566
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  2 Jan 2024 08:41:33 +0800

webp: [fuzz] ensure output is decodable

This provides a sanity check on the encoded image.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>98a093fa7067145893f248ab2e4c8f083659c566</id>
<published>2023-12-21T04:23:44Z</published>
<updated>2024-01-02T00:34:51Z</updated>
<title type="text">all: provide multiple backends</title>
<link rel="alternate" type="text/html" href="commit/98a093fa7067145893f248ab2e4c8f083659c566.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 98a093fa7067145893f248ab2e4c8f083659c566
parent cea42bec9134033fdddcfa1d4c452959bb4cb08a
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 21 Dec 2023 12:23:44 +0800

all: provide multiple backends

This commit makes a major structural change to the package.

If shared objects are avialable (dll, so, dylib) they will be used.
Otherwise, transpiled will be used.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>cea42bec9134033fdddcfa1d4c452959bb4cb08a</id>
<published>2023-10-19T05:56:53Z</published>
<updated>2023-10-19T05:56:53Z</updated>
<title type="text">webp: add lossless test case</title>
<link rel="alternate" type="text/html" href="commit/cea42bec9134033fdddcfa1d4c452959bb4cb08a.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit cea42bec9134033fdddcfa1d4c452959bb4cb08a
parent c653dffa3b536524690f5f3fa4aa5980308b8154
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 13:56:53 +0800

webp: add lossless test case

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>c653dffa3b536524690f5f3fa4aa5980308b8154</id>
<published>2023-10-19T05:56:28Z</published>
<updated>2023-10-19T05:56:28Z</updated>
<title type="text">webp: randomize pixel colors during fuzz</title>
<link rel="alternate" type="text/html" href="commit/c653dffa3b536524690f5f3fa4aa5980308b8154.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit c653dffa3b536524690f5f3fa4aa5980308b8154
parent eafaf278cfd93252ee33e0cddfa9385b93654c21
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 13:56:28 +0800

webp: randomize pixel colors during fuzz

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>eafaf278cfd93252ee33e0cddfa9385b93654c21</id>
<published>2023-10-19T05:55:12Z</published>
<updated>2023-10-19T05:55:12Z</updated>
<title type="text">webp/encode: use memory pinning</title>
<link rel="alternate" type="text/html" href="commit/eafaf278cfd93252ee33e0cddfa9385b93654c21.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit eafaf278cfd93252ee33e0cddfa9385b93654c21
parent 515e5ffe955010e2d37bd28886d73f12ae59cc57
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 13:55:12 +0800

webp/encode: use memory pinning

This commit uses memory pinning instead struct field to hold the uintptr.
This is the more correct way to do things.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>515e5ffe955010e2d37bd28886d73f12ae59cc57</id>
<published>2023-10-19T08:45:45Z</published>
<updated>2023-10-19T08:54:49Z</updated>
<title type="text">webp/encode: fuzz test</title>
<link rel="alternate" type="text/html" href="commit/515e5ffe955010e2d37bd28886d73f12ae59cc57.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 515e5ffe955010e2d37bd28886d73f12ae59cc57
parent 9881b32bd1cda8b6dac428b03eadedeb276baadf
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 16:45:45 +0800

webp/encode: fuzz test

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>9881b32bd1cda8b6dac428b03eadedeb276baadf</id>
<published>2023-10-19T08:44:40Z</published>
<updated>2023-10-19T08:44:40Z</updated>
<title type="text">webp/encode: [perf] special-case *RGBA to avoid conversion penalty</title>
<link rel="alternate" type="text/html" href="commit/9881b32bd1cda8b6dac428b03eadedeb276baadf.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 9881b32bd1cda8b6dac428b03eadedeb276baadf
parent 2c27660c379f4dc04d54852fccc8f883b0fdef72
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 16:44:40 +0800

webp/encode: [perf] special-case *RGBA to avoid conversion penalty

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>2c27660c379f4dc04d54852fccc8f883b0fdef72</id>
<published>2023-10-19T08:09:53Z</published>
<updated>2023-10-19T08:44:33Z</updated>
<title type="text">webp: add basic encode test</title>
<link rel="alternate" type="text/html" href="commit/2c27660c379f4dc04d54852fccc8f883b0fdef72.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 2c27660c379f4dc04d54852fccc8f883b0fdef72
parent 5b89d308e57cde1ac64afa7cb259ec89c9013e96
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 16:09:53 +0800

webp: add basic encode test

This is a smoke test to make sure we can produce a valid webp and not
error along the way.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>5b89d308e57cde1ac64afa7cb259ec89c9013e96</id>
<published>2023-10-19T08:08:19Z</published>
<updated>2023-10-19T08:08:19Z</updated>
<title type="text">webp/encode: fix use of out pointer</title>
<link rel="alternate" type="text/html" href="commit/5b89d308e57cde1ac64afa7cb259ec89c9013e96.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 5b89d308e57cde1ac64afa7cb259ec89c9013e96
parent 6e91d0e9e45341b48781fb3ff4cccecee6770af0
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 16:08:19 +0800

webp/encode: fix use of out pointer

First, we must use a uintptr so we don&#39;t truncate the memory address.
Second, we must declare the uintptr in a place the runtime will not
optimize away.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>6e91d0e9e45341b48781fb3ff4cccecee6770af0</id>
<published>2023-10-19T03:41:15Z</published>
<updated>2023-10-19T03:41:32Z</updated>
<title type="text">cmd: show help at command level</title>
<link rel="alternate" type="text/html" href="commit/6e91d0e9e45341b48781fb3ff4cccecee6770af0.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 6e91d0e9e45341b48781fb3ff4cccecee6770af0
parent ed19491a4e06bcb31bf2e877975727d017f554ed
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 11:41:15 +0800

cmd: show help at command level

Be a bit more useful at the high level, telling the user what commands
are available.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>ed19491a4e06bcb31bf2e877975727d017f554ed</id>
<published>2023-10-19T03:35:22Z</published>
<updated>2023-10-19T03:35:22Z</updated>
<title type="text">mod: update deps and require Go 1.21</title>
<link rel="alternate" type="text/html" href="commit/ed19491a4e06bcb31bf2e877975727d017f554ed.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit ed19491a4e06bcb31bf2e877975727d017f554ed
parent 3a3b6556d77cf0aa3539356dac169eb65edca55e
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Thu, 19 Oct 2023 11:35:22 +0800

mod: update deps and require Go 1.21

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>3a3b6556d77cf0aa3539356dac169eb65edca55e</id>
<published>2023-01-24T06:30:09Z</published>
<updated>2023-01-24T06:30:09Z</updated>
<title type="text">webp(encode): use libc for bool -&gt; int32 conversion</title>
<link rel="alternate" type="text/html" href="commit/3a3b6556d77cf0aa3539356dac169eb65edca55e.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 3a3b6556d77cf0aa3539356dac169eb65edca55e
parent 04855e6c1cf5a06864b6e62493e047bcd4af5510
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 24 Jan 2023 14:30:09 +0800

webp(encode): use libc for bool -&gt; int32 conversion

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>04855e6c1cf5a06864b6e62493e047bcd4af5510</id>
<published>2023-01-24T06:27:17Z</published>
<updated>2023-01-24T06:27:17Z</updated>
<title type="text">webp(encode): disable lossless option due to error</title>
<link rel="alternate" type="text/html" href="commit/04855e6c1cf5a06864b6e62493e047bcd4af5510.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 04855e6c1cf5a06864b6e62493e047bcd4af5510
parent 48a2487ef9e1a6b1bb6373a8ec693da54ed243d0
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 24 Jan 2023 14:27:17 +0800

webp(encode): disable lossless option due to error

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>48a2487ef9e1a6b1bb6373a8ec693da54ed243d0</id>
<published>2023-01-24T06:10:50Z</published>
<updated>2023-01-24T06:10:50Z</updated>
<title type="text">deps: upgrade</title>
<link rel="alternate" type="text/html" href="commit/48a2487ef9e1a6b1bb6373a8ec693da54ed243d0.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 48a2487ef9e1a6b1bb6373a8ec693da54ed243d0
parent 67544289ce45a7aecbac7d2cad9d69884a28bca4
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 24 Jan 2023 14:10:50 +0800

deps: upgrade

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>67544289ce45a7aecbac7d2cad9d69884a28bca4</id>
<published>2023-01-24T06:10:34Z</published>
<updated>2023-01-24T06:10:34Z</updated>
<title type="text">deps: depend on go 1.19</title>
<link rel="alternate" type="text/html" href="commit/67544289ce45a7aecbac7d2cad9d69884a28bca4.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 67544289ce45a7aecbac7d2cad9d69884a28bca4
parent 7437946464cba14d6bb607f6bcb342c2728f5ab6
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 24 Jan 2023 14:10:34 +0800

deps: depend on go 1.19

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>7437946464cba14d6bb607f6bcb342c2728f5ab6</id>
<published>2023-01-24T06:09:14Z</published>
<updated>2023-01-24T06:09:14Z</updated>
<title type="text">git: ignore .DS_Store</title>
<link rel="alternate" type="text/html" href="commit/7437946464cba14d6bb607f6bcb342c2728f5ab6.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 7437946464cba14d6bb607f6bcb342c2728f5ab6
parent 5253a955293dc9686cd7fdeb068573e8e610b063
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 24 Jan 2023 14:09:14 +0800

git: ignore .DS_Store

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>5253a955293dc9686cd7fdeb068573e8e610b063</id>
<published>2022-02-01T11:08:19Z</published>
<updated>2022-02-01T11:08:19Z</updated>
<title type="text">webp: copy pixel data to unmanaged memory</title>
<link rel="alternate" type="text/html" href="commit/5253a955293dc9686cd7fdeb068573e8e610b063.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 5253a955293dc9686cd7fdeb068573e8e610b063
parent 6cad32149c38524a6a24a9dd2b08fb64d95eb7fa
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue,  1 Feb 2022 19:08:19 +0800

webp: copy pixel data to unmanaged memory

The code was being unsafe by relying on the pixel buffer
to remain stable. This is not guaranteed by the Go compiler.

Therefore, we copy the data to unmanaged memory instead.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>6cad32149c38524a6a24a9dd2b08fb64d95eb7fa</id>
<published>2022-01-31T11:46:34Z</published>
<updated>2022-01-31T11:46:34Z</updated>
<title type="text">webp(encode): close tls to avoid memory leak</title>
<link rel="alternate" type="text/html" href="commit/6cad32149c38524a6a24a9dd2b08fb64d95eb7fa.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 6cad32149c38524a6a24a9dd2b08fb64d95eb7fa
parent 868dfe7ba157101b308ba4ae90661acbb3486829
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Mon, 31 Jan 2022 19:46:34 +0800

webp(encode): close tls to avoid memory leak

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>868dfe7ba157101b308ba4ae90661acbb3486829</id>
<published>2022-01-29T11:31:46Z</published>
<updated>2022-01-29T11:31:46Z</updated>
<title type="text">docs: add context</title>
<link rel="alternate" type="text/html" href="commit/868dfe7ba157101b308ba4ae90661acbb3486829.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 868dfe7ba157101b308ba4ae90661acbb3486829
parent 09329a8ab82ad1a5948b0115d7d71218c2c6267c
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sat, 29 Jan 2022 19:31:46 +0800

docs: add context

- update example
- explain why this package exists
- explain the use of x/image/webp
- todo about handling encoding errors

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>09329a8ab82ad1a5948b0115d7d71218c2c6267c</id>
<published>2022-01-29T11:31:28Z</published>
<updated>2022-01-29T11:31:28Z</updated>
<title type="text">webp: free out buffer</title>
<link rel="alternate" type="text/html" href="commit/09329a8ab82ad1a5948b0115d7d71218c2c6267c.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 09329a8ab82ad1a5948b0115d7d71218c2c6267c
parent 8000e873f42d591bd04c69a3479ee4f467eda880
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sat, 29 Jan 2022 19:31:28 +0800

webp: free out buffer

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>8000e873f42d591bd04c69a3479ee4f467eda880</id>
<published>2022-01-29T11:30:45Z</published>
<updated>2022-01-29T11:30:45Z</updated>
<title type="text">webp/cmd: showcase decoding</title>
<link rel="alternate" type="text/html" href="commit/8000e873f42d591bd04c69a3479ee4f467eda880.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 8000e873f42d591bd04c69a3479ee4f467eda880
parent b2fb224c1f9613d70f27c7ac28a185acabc7901c
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sat, 29 Jan 2022 19:30:45 +0800

webp/cmd: showcase decoding

Nothing special, since it just defers to x/image/webp.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>b2fb224c1f9613d70f27c7ac28a185acabc7901c</id>
<published>2022-01-29T11:27:42Z</published>
<updated>2022-01-29T11:27:42Z</updated>
<title type="text">webp: wrap x/image/webp for decoding</title>
<link rel="alternate" type="text/html" href="commit/b2fb224c1f9613d70f27c7ac28a185acabc7901c.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit b2fb224c1f9613d70f27c7ac28a185acabc7901c
parent 6be5ab5f797e71adea62b6aec71b9bad343b7cf0
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sat, 29 Jan 2022 19:27:42 +0800

webp: wrap x/image/webp for decoding

I attempted to decode with the translated code
but C was using inline instructions which is
not supported.

However, we can still offer a convenient decoding
interface by wrapping x/image/webp thus creating
a single unified package that can encode and decode.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>6be5ab5f797e71adea62b6aec71b9bad343b7cf0</id>
<published>2022-01-29T09:35:34Z</published>
<updated>2022-01-29T09:35:34Z</updated>
<title type="text">webp: bifurcate encoding and decoding logic</title>
<link rel="alternate" type="text/html" href="commit/6be5ab5f797e71adea62b6aec71b9bad343b7cf0.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 6be5ab5f797e71adea62b6aec71b9bad343b7cf0
parent cb025bcd4e24edd37e5bb7687c15c9576a3fde9c
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sat, 29 Jan 2022 17:35:34 +0800

webp: bifurcate encoding and decoding logic

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>cb025bcd4e24edd37e5bb7687c15c9576a3fde9c</id>
<published>2022-01-29T09:32:14Z</published>
<updated>2022-01-29T09:32:14Z</updated>
<title type="text">webp: functional options</title>
<link rel="alternate" type="text/html" href="commit/cb025bcd4e24edd37e5bb7687c15c9576a3fde9c.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit cb025bcd4e24edd37e5bb7687c15c9576a3fde9c
parent dbf7df92d89cfa1a3ca545de90bc1bd7cb3bbf47
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Sat, 29 Jan 2022 17:32:14 +0800

webp: functional options

Configure encoding with functional options.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>dbf7df92d89cfa1a3ca545de90bc1bd7cb3bbf47</id>
<published>2022-01-26T05:44:44Z</published>
<updated>2022-01-26T05:44:44Z</updated>
<title type="text">doc: include original source license</title>
<link rel="alternate" type="text/html" href="commit/dbf7df92d89cfa1a3ca545de90bc1bd7cb3bbf47.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit dbf7df92d89cfa1a3ca545de90bc1bd7cb3bbf47
parent 22c5efa9218599cff6fb7e616e78e44196dd0cab
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 26 Jan 2022 13:44:44 +0800

doc: include original source license

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>22c5efa9218599cff6fb7e616e78e44196dd0cab</id>
<published>2022-01-26T06:04:29Z</published>
<updated>2022-01-26T06:04:29Z</updated>
<title type="text">doc: update usage to reflect new structure</title>
<link rel="alternate" type="text/html" href="commit/22c5efa9218599cff6fb7e616e78e44196dd0cab.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 22c5efa9218599cff6fb7e616e78e44196dd0cab
parent 6bc1e4d456a0d8d5f68ab979ba46c212a75884cb
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 26 Jan 2022 14:04:29 +0800

doc: update usage to reflect new structure

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>6bc1e4d456a0d8d5f68ab979ba46c212a75884cb</id>
<published>2022-01-26T06:03:58Z</published>
<updated>2022-01-26T06:04:27Z</updated>
<title type="text">cmd: move test image</title>
<link rel="alternate" type="text/html" href="commit/6bc1e4d456a0d8d5f68ab979ba46c212a75884cb.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 6bc1e4d456a0d8d5f68ab979ba46c212a75884cb
parent b9bc1b74b5bb6254beace6ad9b27414eb8f14bd6
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 26 Jan 2022 14:03:58 +0800

cmd: move test image

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>b9bc1b74b5bb6254beace6ad9b27414eb8f14bd6</id>
<published>2022-01-25T18:21:41Z</published>
<updated>2022-01-25T18:21:41Z</updated>
<title type="text">webp: improve docs and handle invalid quality settings</title>
<link rel="alternate" type="text/html" href="commit/b9bc1b74b5bb6254beace6ad9b27414eb8f14bd6.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit b9bc1b74b5bb6254beace6ad9b27414eb8f14bd6
parent 656734b171d252f78a17f215075cf95fdd694456
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 13:21:41 -0500

webp: improve docs and handle invalid quality settings

Signed-off-by: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>656734b171d252f78a17f215075cf95fdd694456</id>
<published>2022-01-25T18:21:17Z</published>
<updated>2022-01-25T18:21:17Z</updated>
<title type="text">docs: update README with current progress</title>
<link rel="alternate" type="text/html" href="commit/656734b171d252f78a17f215075cf95fdd694456.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit 656734b171d252f78a17f215075cf95fdd694456
parent 0cec354450a887af7a4eae02782b0968e30ec0ff
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 13:21:17 -0500

docs: update README with current progress

Signed-off-by: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>0cec354450a887af7a4eae02782b0968e30ec0ff</id>
<published>2022-01-25T17:52:41Z</published>
<updated>2022-01-25T17:55:54Z</updated>
<title type="text">restructure package</title>
<link rel="alternate" type="text/html" href="commit/0cec354450a887af7a4eae02782b0968e30ec0ff.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 0cec354450a887af7a4eae02782b0968e30ec0ff
parent d27df34bac65eeeab98a67c3a14a94d74b7a1767
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 26 Jan 2022 01:52:41 +0800

restructure package

c-lib: source C package
  lib: raw transpiled Go
 webp: porcelain Go package
  cmd: cli util exercising api

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>d27df34bac65eeeab98a67c3a14a94d74b7a1767</id>
<published>2022-01-25T17:13:35Z</published>
<updated>2022-01-25T17:13:35Z</updated>
<title type="text">feat: improve code generation process</title>
<link rel="alternate" type="text/html" href="commit/d27df34bac65eeeab98a67c3a14a94d74b7a1767.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit d27df34bac65eeeab98a67c3a14a94d74b7a1767
parent 4162a9daeb226b849103bedab702f7f38c429d40
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 12:13:35 -0500

feat: improve code generation process

Signed-off-by: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>604b2e25eeee8dd6ed0cb0a2ad77607be5e16180</id>
<published>2022-01-25T17:05:45Z</published>
<updated>2022-01-25T17:05:45Z</updated>
<title type="text">Squashed &#39;c-lib/&#39; content from commit 6f496540</title>
<link rel="alternate" type="text/html" href="commit/604b2e25eeee8dd6ed0cb0a2ad77607be5e16180.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit 604b2e25eeee8dd6ed0cb0a2ad77607be5e16180
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 12:05:45 -0500

Squashed &#39;c-lib/&#39; content from commit 6f496540

git-subtree-dir: c-lib
git-subtree-split: 6f496540241b2390df42e06458acbd2cae9b4351

</content>
</entry>
<entry>
<id>4162a9daeb226b849103bedab702f7f38c429d40</id>
<published>2022-01-25T17:05:45Z</published>
<updated>2022-01-25T17:05:45Z</updated>
<title type="text">Merge commit &#39;604b2e25eeee8dd6ed0cb0a2ad77607be5e16180&#39; as &#39;c-lib&#39;</title>
<link rel="alternate" type="text/html" href="commit/4162a9daeb226b849103bedab702f7f38c429d40.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit 4162a9daeb226b849103bedab702f7f38c429d40
parent e90b46f14d96460408f122499b2a8a78ca1e9032
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 12:05:45 -0500

Merge commit &#39;604b2e25eeee8dd6ed0cb0a2ad77607be5e16180&#39; as &#39;c-lib&#39;

</content>
</entry>
<entry>
<id>e90b46f14d96460408f122499b2a8a78ca1e9032</id>
<published>2022-01-25T16:55:26Z</published>
<updated>2022-01-25T17:05:29Z</updated>
<title type="text">feat: enable regenerating the Go code with go generate</title>
<link rel="alternate" type="text/html" href="commit/e90b46f14d96460408f122499b2a8a78ca1e9032.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit e90b46f14d96460408f122499b2a8a78ca1e9032
parent 20a84951fc7c5df4eecb97cfd2fa199f7e1bd95d
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 11:55:26 -0500

feat: enable regenerating the Go code with go generate

Signed-off-by: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>20a84951fc7c5df4eecb97cfd2fa199f7e1bd95d</id>
<published>2022-01-25T16:11:17Z</published>
<updated>2022-01-25T16:56:22Z</updated>
<title type="text">feat: convert input image to RGBA automatically</title>
<link rel="alternate" type="text/html" href="commit/20a84951fc7c5df4eecb97cfd2fa199f7e1bd95d.html" />
<author>
<name>Chris Waldon</name>
<email>christopher.waldon.dev@gmail.com</email>
</author>
<content type="text">commit 20a84951fc7c5df4eecb97cfd2fa199f7e1bd95d
parent b410cf6d30e70ae5057fc0698422c1f0b5e53858
Author: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 11:11:17 -0500

feat: convert input image to RGBA automatically

Signed-off-by: Chris Waldon &lt;christopher.waldon.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>b410cf6d30e70ae5057fc0698422c1f0b5e53858</id>
<published>2022-01-25T16:47:23Z</published>
<updated>2022-01-25T16:47:23Z</updated>
<title type="text">webp: add flags to control quality</title>
<link rel="alternate" type="text/html" href="commit/b410cf6d30e70ae5057fc0698422c1f0b5e53858.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit b410cf6d30e70ae5057fc0698422c1f0b5e53858
parent 69259af52c815d64657b5c38782f08681c57c6e6
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 26 Jan 2022 00:47:23 +0800

webp: add flags to control quality

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>69259af52c815d64657b5c38782f08681c57c6e6</id>
<published>2022-01-25T16:21:30Z</published>
<updated>2022-01-25T16:21:30Z</updated>
<title type="text">webp: upgrade deps</title>
<link rel="alternate" type="text/html" href="commit/69259af52c815d64657b5c38782f08681c57c6e6.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 69259af52c815d64657b5c38782f08681c57c6e6
parent 1af6a17bd21050902fb88e6b134a0fa9273c73b2
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Wed, 26 Jan 2022 00:21:30 +0800

webp: upgrade deps

Bump libc to include bsearch and regenerate libwebp.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>1af6a17bd21050902fb88e6b134a0fa9273c73b2</id>
<published>2022-01-25T14:02:15Z</published>
<updated>2022-01-25T14:02:15Z</updated>
<title type="text">doc: todos</title>
<link rel="alternate" type="text/html" href="commit/1af6a17bd21050902fb88e6b134a0fa9273c73b2.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 1af6a17bd21050902fb88e6b134a0fa9273c73b2
parent c6720b22ffa412fd2e74c76f2b8ebf21bb372d7f
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 22:02:15 +0800

doc: todos

- high level tests for various image formats
- porcelain wrapper package to integrate with image.Decode
- build script for recompiling from upstream

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>c6720b22ffa412fd2e74c76f2b8ebf21bb372d7f</id>
<published>2022-01-25T13:59:04Z</published>
<updated>2022-01-25T13:59:04Z</updated>
<title type="text">docs: attribution to Chris Waldon</title>
<link rel="alternate" type="text/html" href="commit/c6720b22ffa412fd2e74c76f2b8ebf21bb372d7f.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit c6720b22ffa412fd2e74c76f2b8ebf21bb372d7f
parent fe80f51a22e3ccdf2b85f859fa603f0ecc41cb95
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 21:59:04 +0800

docs: attribution to Chris Waldon

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>fe80f51a22e3ccdf2b85f859fa603f0ecc41cb95</id>
<published>2022-01-25T13:50:45Z</published>
<updated>2022-01-25T13:50:45Z</updated>
<title type="text">webp: accept generic color spaces</title>
<link rel="alternate" type="text/html" href="commit/fe80f51a22e3ccdf2b85f859fa603f0ecc41cb95.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit fe80f51a22e3ccdf2b85f859fa603f0ecc41cb95
parent 254ea970859cbc90d79c6d7814217bfa22952ed7
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 21:50:45 +0800

webp: accept generic color spaces

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>254ea970859cbc90d79c6d7814217bfa22952ed7</id>
<published>2022-01-25T11:26:14Z</published>
<updated>2022-01-25T11:26:14Z</updated>
<title type="text">webp: doc fundamental assumptions</title>
<link rel="alternate" type="text/html" href="commit/254ea970859cbc90d79c6d7814217bfa22952ed7.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 254ea970859cbc90d79c6d7814217bfa22952ed7
parent 3bdb494d680194db381a9af72985f142bfbe5d9d
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 19:26:14 +0800

webp: doc fundamental assumptions

Add context to this implementation.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>3bdb494d680194db381a9af72985f142bfbe5d9d</id>
<published>2022-01-25T11:25:38Z</published>
<updated>2022-01-25T11:25:38Z</updated>
<title type="text">webp: inline data conversion</title>
<link rel="alternate" type="text/html" href="commit/3bdb494d680194db381a9af72985f142bfbe5d9d.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit 3bdb494d680194db381a9af72985f142bfbe5d9d
parent fbd765f1fb8df873b11a1fadc29fb2dbab2ac1fa
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 19:25:38 +0800

webp: inline data conversion

Avoid allocating an extra slice of i32
and just consume them inline.

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
<entry>
<id>fbd765f1fb8df873b11a1fadc29fb2dbab2ac1fa</id>
<published>2022-01-25T02:08:12Z</published>
<updated>2022-01-25T02:14:14Z</updated>
<title type="text">webp: initial working sketch</title>
<link rel="alternate" type="text/html" href="commit/fbd765f1fb8df873b11a1fadc29fb2dbab2ac1fa.html" />
<author>
<name>Jack Mordaunt</name>
<email>jackmordaunt.dev@gmail.com</email>
</author>
<content type="text">commit fbd765f1fb8df873b11a1fadc29fb2dbab2ac1fa
Author: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;
Date:   Tue, 25 Jan 2022 10:08:12 +0800

webp: initial working sketch

libwebp.go is generated with gocc and manually fixed up:

1) iterators corrected to use integers as per the C idiom
2) bsearch is implemented (as linear search stub) since it is missing from modernc.org/libc

The sample program executes and generates a webp from a source image.

Follow the happy path and experience the joy of transliterated zombified
raw memory programming in Go!

Signed-off-by: Jack Mordaunt &lt;jackmordaunt.dev@gmail.com&gt;

</content>
</entry>
</feed>
