chocolate42

Results 105 comments of chocolate42

Implemented the first iteration of a smart crunch encode path: - Use with `-smart` flag - Currently incompatible with `-custom` argument - Three phases: Stat pass, x combination passes for...

The current state of the smart function is much improved: ``` # Grand total for images decode_ms encode_ms decode_mpps encode_mpps size kb rate 1.945 2.335 238.71 198.81 463 28.2%: qoi-c04a975...

- Implemented `smarter-crunch-function` which can reasonably quickly test thousands of combinations - Add qoipcrunch controller, which picks which crunch function to use depending on the effort level - Level 0...

tl;dr the stat integer method is a way to test a small set of combinations quicker than brute force but it doesn't scale up to thousands of combinations well. The...

- Added INDEX9 and INDEX10 as 512/1024 value caches - Manually tested some combinations to find a better one for effort level 0. It's not used for effort levels 1..3...

- Optimised smarter function to the point that it can replace the smart function at lower combination counts - Removed smart function and the list it used - Updated and...

- Rework qoip_encode_run() - Rework luma1_232b encode - Reintroduce -effort -1 as a single fast combination, using only luma ops and OP_RGB/OP_RGBA/OP_RUN1/OP_RUN2 - Implement encode/decode fastpaths for effort levels -1/0...

- Finally implemented FIFO caches, only for the 1 byte indexes - Hacked in FIFO caches for effort level 6. Being able to choose between hash cache and FIFO cache...

FIFO caches might not be the way to go. In the presence of entropy coding they actually perform worse because they decorelate the binary of same-index matches (even LZ4, which...

After doing some deeper investigation it looks like for large images with ZSTD coding it makes sense to avoid index ops entirely. Even hash indexing appears to be detrimental to...