35 comments

[ 2.4 ms ] story [ 89.6 ms ] thread
I thought HEVC already came with a way to encode images (HEIF)? I don't have any experience in this space so I am probably missing something obvious, but I thought HEVC technology was being used for images for a while.
The release date makes the difference: BPG is from 2018, HEIF is from 2020. At least that's the official standard release date according to Wikipedia.
HEIF was finalized in 2015 and was standardized by ISO in 2017; not sure where you're getting a 2020 date from.

It's been in widespread real-world use since at least 2017, when HEIF support was added to the built-in camera app in iOS 11.

Also BPG is from 2014. 2018 is just the latest release.
Thanks for correcting. Unfortunately I cannot edit my comment now.
JPEG2000 looks better to me, these new "videoframe" formats are blurry at higher compression levels and lose detail.
Indeed, I was looking at encoding black-and-white manga, and I dialed in the quality knob based on "Is the text crisp" "Are cross-hatching textures reasonably preserved" and "Lack of visible artifacts around the edges."

I then compared the file sizes and JP2K won hands down. It also had the advantage of already being supported in PDF, so I can just bundle them up into a PDF for relatively[1] easy reading.

[edit]

Someone pointed me to "Squoosh" and AVIF (which was still very experimental when I previously ran the tests; there was only a single encoder I could find, it took forever and crashed a lot) seems to win over JP2K; a quick estimate makes it look about 30% smaller (My first test image showed up at almost 50% smaller when I tuned it, but experience tells me that I need some padding if I'm just going to point it at a large directory tree).

1: A few PDF readers have failed to properly render the JP2K pages, but modern poppler and muPDF based readers both seem to handle it fine.

I suppose that's what happens with a format originally designed for video --- things that wouldn't be noticeable in a split-second frame but increase compression are valued, whereas in a still image format, it's to be avoided.
"Yes, yes, another image format by... oh, Fabrice Bellard. Alright, tell me more."
Nothing wrong with it, but at first I thought BPG starts with Bellard
Well yes but no. It's a container but not a compression method.
Fabrice Bellard is Mozart when most of us can only hope to be Salieri.
A natural question I've pondered from time to time is whether Fabrice Bellard is really a time traveler from a more advanced civilization in the future, sent back in time to show us, mere mortals, what humankind will be capable of in the future.

If this sounds far-fetched, consider that he has created not only BPG, but FFMPEG, QEMU, LibBF, SoftFP, TinyEMU, a software implementation of 4G/LTE, a PC emulator in Javascript, the TCC compiler, TinyGL, LZEXE, a tiny program for computing the biggest known prime number, and NNCP, a clever lossless data compression system using deep neural networks (transformers, to be precise). And that's just a partial list of his successful projects.

Any of these projects, on its own, would be considered a notable achievement for an ordinary human being.

Source: https://bellard.org

We should have a programmer's hall of fame for people like this!
There really aren't enough awards or halls of fame in our field.
The Hall of Fame should have his name.
This just proves how the following has happened without many noticing:

Fabrice Bellard has released an Artificial Neural Networks library, LibNC, "C Library for Tensor Manipulation" ( https://bellard.org/libnc/ ). Similar to PyTorch, but in sheer C.

It's the library behind that data compressor mentioned: we do not just have the compressor, he gave us the very AI tool. If that does not make one ecstatic... Summary of features:

> * C API ; * Small library, no external dependency, available for Linux and Windows ; * Define-by-run automatic differentiation engine (same idea as PyTorch) ; * High performance for both CPU (x86) and GPU (CUDA support). Optimized support of float32 and bfloat16 data types ; * CPU backend optimized for inference and small batch sizes ; * Optimized for online learning (i.e. simultaneous evaluation and training) using LSTM or Transformer models ; * Fully deterministic: return the same results at each run ; * Reproducible results (CPU backend only): return the same results regardless the CPU brand and OS

Where did Fabrice Bellard work before 2012? I'm interested in seeing how he funded his work over time.
Can we stop using the Lena image please.
I cannot figure out if Bellard’s creations are hobby projects or serious production libraries. This one has a couple of issues: browsers have already settled on AVIF. And HEVC is patent encumbered which makes it not a good choice for deploying on devices.
I wonder if he will update it when x266 is out.

I remember one of the thing we expected to happen with asm.js ( Now Wasm ) was we could swap any new image format decoder. So we could have rapid iteration of image codec. This hasn't happened though.