Miguel links to Mirage, which looks cool. At least, until you read the one bit of text that Miguel didn’t quote in his blog, which is the list of dependencies. Sox ? mpg123 ? ogg123 ? faad ?
So you write a plug-in for a player that uses an excellent media framework that supports a lot more formats than just mp3, Vorbis and AAC, and you do it using 90’s single-purpose libraries ?
Here’s how Mirage could have actually been useful:
- write a simple GStreamer element that analyzes decoded audio for this similarity information
- write the Banshee playlist plug-in that interfaces with this GStreamer element
Now it’s just like getting a car, then buying a nice horse that you put in the trunk to increase the horse power of the car.
the author commented that he chose mpg123 for speed reasons, claiming that GStreamer is a lot slower. Apparently for him libmad is already 4-5 times slower than mpg123. I did a quick comparison between mpg321 (the free version of mpg123) and GStreamer with the mad decoder, and the mad decoder is actually a little bit faster.
In any case, it seems my lowly Pentium IV 1.3 GHz laptop decodes 3 minutes of mp3 in 4 seconds. That’s about 50 times faster than realtime. I just checked – my current Rhythmbox library is about 19446 songs, for around 58 days. So using GStreamer, the decoding part of the analysis would take a bit more than a day. A day or 6 hours, the difference to me is pretty much the same. It’s not immediately usable, and it’s not an impossibly long wait either.
I’d much prefer the ability to use it from any application, and on any sound format supported by GStreamer.