chocolate42
chocolate42
As described above there's now a size threshold on the input when ZSTD encoding, if the combination from effort level -1 is >256KiB raw then use that combination, otherwise do...
IIRC the bit encoding of RGB3 is sloppy even when optimising for byte reads, I intended to have the low bits end at byte boundaries which would save some shifts.
demo23 is my favourite, I'm a sucker for compression and it still has above average metrics everywhere except "code complexity". Encode performance isn't too important relative to decode performance and...
Unfortunately the libpng figures are off because qoibench was decoding all input as RGBA (meaning on encode libpng did not correctly store what was originally an RGB source as RGB)....
I noticed d28 was doing some index operations that led nowhere as d28 has no index ops. Removing them improves encode time as gcc was not smart enough to do...
New iteration that's more competitive wrt compression. The code is a spiders web of ifdef's for prototyping but it's attached anyway incase anyone wants to bench this snapshot, WIP. A...
When the diff of R G and B are the same this tag can be used followed by the diff byte that's applied to all three channels, maybe lockstep would...
> We could replace QOI_8_LINEAR_RGB_16 with some sort of "mode toggle". One example could be switching QOI_DIFF_24 between r5g5b5a5 and r7g7b6. That is interesting, basically a conditional >8 bit tag...
I implemented your version as QOI_3_DELTA2_8 (shown in build qoi-d2run5). The delta2 build uses an 8 value RUN_8 because space was needed for the RUN_16 etc flags that normally reside...
Even better to take a leaf from GDIFF's green-based delta's by creating a variant that fits in 8 bits (see delta7). delta6 stores vr vg vb in a distribution skewed...