| ▲ | nigeltao 3 hours ago | |
Wuffs author here. We got a pull request (https://github.com/google/wuffs/pull/168) in February to add lossy WebP support. Lossless WebP (which in some sense is an entirely different format, just reusing the WebP "brand") has had a Wuffs implementation for a couple of years now. Anyway, the PR included SIMD acceleration and performance was on par with libwebp (C code). The PR's code was, as far as I could tell, somewhat or mostly AI assisted. While that's great in terms of features, I still have more confidence in hand-crafted code. I have since been working to manually rewrite the PR. I'd also like to add animation support, and last month I landed some Wuffs tooling changes re animated PNG, to be better able to (as a comparison baseline) decode and test animated WebP. A lot of that manual rewrite has been committed, but the SIMD parts haven't landed yet. So yes, for what's on the main branch (not the PR), performance is not as good as libwebp yet, but landing the SIMD parts should fix that. > wuffs is not bit-identical to libwebp That's news to me. PR 168 says it produces pixel-identical output to libwebp. And what's in the main branch aims to be pixel-identical, e.g. for YUV to RGB conversion, it implements libwebp's formulae, not libjpeg's formulae. Both use BT.601, but libwebp uses studio range and libjpeg uses full range. Can you link to some example .webp images that are not bit-identical? | ||
| ▲ | computerbuster an hour ago | parent [-] | |
Would love to help all implementations improve – would you be able to send Halide an email so we can take this offline? Happy to help if possible! | ||