Posted Jun 21, 2013 11:41 UTC (Fri) by ledow (guest, #11753)
Parent article: Introducing Daala
Well, I followed it right up until all the nice explanations went away and were replaced with matrix maths. (BTW: I have a maths degree, I just got bored of having to trace what it was actually talking about).
As far as I can tell, most conventional codecs convert the image into blocks and then converts those into lists frequencies, rather than the actual data itself. You then remove the low-order parts of that frequency (i.e. the bits you'll hardly notice), transmit compressed versions of the rest, and when you reassemble you get something very similar with not much loss.
This technique, unfortunately, leaves little blocky "leftovers" from the way that the initial cutting into blocks is done, and the fact that you don't get a smooth transition from one block to the next if you remove the low-order errors.
The new codec uses something more akin to that within MP3's and similar audio files, where blocks "overlap" each other so that there's no initial blockiness to transfer into the final image. This is an old technique but they have a new twist - they transform the image FIRST into a traditional blocky mess, deliberately, but in a way so that part of the "smoothing"
originally present is remembered and can be put back in later.
Then they do the usual conversion to a frequency map, knock out the low frequencies, and compress. When they reassemble the other end, they get the blocky image back and - using some clever maths - they are apply to "put back" the smooth parts over the top of that data. Because of the way that even the frequency conversion, and the overlapping and the "undo-able" blockiness creation is implemented, they are all basically doing similar operations at the same time to do all the different steps (which helps performance and optimisation to the codec, I assume).
And they reckon it might even be possible to do entirely lossless compression of some kind with the same technique.