My god in heaven, the stb_vorbis implementation uses filterbanks for its iMDCT!
That's SO oldschool, its practically Victorian.
That's like using Eidophor projectors nowadays despite the fact they were only popular and usable for a very narrow band of time.
Eidophor for those who don't know: https://youtu.be/3-BvMcqEc98?t=83
It's a very byzantine way of high power image projection using high voltage, hot oil, vacuum pumps and refrigeration.
It's only in the unoptimized/naive path... but still.
Using hybrid time domain filters to perform iMDCT made sense in analogue days, and I suppose in ASICs.
But floating point multiplications haven't been slow enough in decades to justify that. The memory access cost, especially on ARM, has to be through the roof.
And a normal modern iMDCT takes no more than 50 lines in total.
Oh well, it's a single-header meme-size "library".
@null It's insane.
I feel sorry for the vacuum pumps used in the early units, since they had to deal with a ton of oil vapor.
A Mastodon instance for people interested in multimedia, codecs, assembly, SIMD, and the occasional weeb stuff.