I’ve always known that AV1 and Opus are more efficient than HEVC/VP9 and MP3/Vorbis, but exactly how is this achieved? Is it just a matter of more efficient compression?
I’ve always known that AV1 and Opus are more efficient than HEVC/VP9 and MP3/Vorbis, but exactly how is this achieved? Is it just a matter of more efficient compression?
Yes, it’s just more advanced compression as more and more techniques are discovered and fine-tuned.
To give a feeling of how they work, some of the simpler tricks they use are:
Find a polynomial function that closely matches a sound curve - storing 3183x^3 - 1/13847x^2 + 11x - 9 takes less space than one hundred consecutive frequency numbers.
Cut out sounds that humans don’t hear. After a sharp clap, we don’t hear certain frequencies for a few tens of milliseconds.
There are tons more, most too advanced to explain in a lemmy comment. :)
Isn’t it also partly that as processing power increased, you could do more sophisticated compression/decompression in real time compared to previously, allowing these more complex compression algorithms to actually be viable?
I.e. they actually knew how to do it before, they just didn’t have the power to implement it
It’s a combination of that. Compression technology and technology in general are built upon the successes and ideas of the previous generation. What can happen is a bunch of methods are created and the popularity of them dictates their future. Eventually those compression algorithms are put into hardware allowing future devices an easier time using it.
So essentially experimental algorithms are adopted by the industry and power users and whatever ends up winning that popularity contest gets added to weak devices such as netbooks and TVs.
We’re currently at the point where AV1 is starting to be deployed in hardware and streaming services have been switching to it for efficiency.
https://xkcd.com/927/
Processing power in general has improved, but there’s also specific sections of the cpu/gpu built dedicated to en/de-coding in those codecs. (in newer hardware).
Less reliance on software figuring out which stream of commands to send the cpu/gpu to get the desired results, and more just handing the cpu/gpu some file data then receiving the output.