1.29 rc3

more improvements, SIMD optimization, and bug fixes: pingo could now compresses losslessly a bit better while improving its speed. also, some changes in auto which could be more efficient

auto

if you run auto against this set, you would observe some changes in savings/speed. pingo could be indeed a bit more agressive because it could use dithering during palettization

PNG

auto
version in saved time
1.00 14.85 MB 7.53 MB 0.60s
1.28 14.85 MB 8.07 MB 0.60s
1.29 14.85 MB 8.31 MB 0.60s

dithering would not be always required. however, it let the run to be more safe if palettization could preserve visual perception. for instance, the new setting would be effective on c6-28.png, c6-43.png or c6-56.png

APNG

since the beginning, the APNG support has been be *very* basic — i mostly have no interest in it, i did not spend much time on this and the code has been the same for years. the new one would be more efficient than previous version

auto
version in saved time
1.28 19.58 MB 6.87 MB 18.15s
1.29 19.58 MB 9.34 MB 3.96s

lossless

ajustements, new more effective filters for both RGBA and palette let pingo to offer savings/speed ratio. also fixed in this version an old bug i spotted years ago but forgot to handle — about savings which could be random

PNG (RGBA)

samples tested: set 1 + set 2 + set 3 + set 4 = 25.69 MB (112 files)

-s4 -lossless
version in saved time
1.28 25.69 MB 7.30 MB 10.37s
1.29 25.69 MB 7.32 MB 8.74s

PNG (palette)

PNG lossless - palette-dr (128 files) — color with tRNS, encoded as palette
version lvl saved time mem
1.28 -s4 1713.68 KB 3.83s 143 MB
1.29 -s4 1720.26 KB 3.58s 144 MB
PNG lossless - palette-sx (200 files) — gray/color with (1) tRNS, *not* encoded as palette
version lvl saved time mem
1.28 -s4 6828.50 KB 5.85s 183 MB
1.29 -s4 6839.00 KB 5.56s 186 MB
PNG lossless - palette-xn (280 files) — gray/color with(out) tRNS, encoded as palette
version lvl saved time mem
1.28 -s4 3510.21 KB 8.01s 196 MB
1.29 -s4 3522.63 KB 7.64s 199 MB

APNG

-lossless
version flag in saved time
1.28 -s0 19.58 MB 4.37 MB 20.76s
1.29 -s0 19.58 MB 4.20 MB 2.80s
1.28 -s1 19.58 MB 4.83 MB 24.70s
1.29 -s1 19.58 MB 4.62 MB 7.31s
1.28 -s2 19.58 MB 5.05 MB 28.90s
1.29 -s2 19.58 MB 4.97 MB 8.44s
1.28 -s3 19.58 MB 5.50 MB 50.69s
1.29 -s3 19.58 MB 5.72 MB 9.98s
1.28 -s4 19.58 MB 5.59 MB 73.09s
1.29 -s4 19.58 MB 5.75 MB 11.36s
-lossless
version flag in saved time
1.28 -s4 2.03 MB 638.71 KB 20.76s
1.29 -s2 2.03 MB 714.56 KB 1.15s

benchmark

-lossless
version flag in saved time
1.00 -s4 201.12 MB 67645.12 KB 62.41s
1.28 -s4 201.12 MB 68706.72 KB 57.27s
1.29 -s4 201.12 MB 68791.48 KB 48.98s

behavior changes

the image transformations have been removed from pingo and introduced (and improved) into beeim. be aware of this change for 16 bits/sample PNG: i need pingo to match another tool (and beeim) bahavior regarding the processing. without any warning, those would be processed as 8 bits/sample. if you do not want this with -lossless, you have to set -no-png16 — it would ignore them