Hi Joe,
I'm the author of mpg321, which is a fully free clone of mpg123. I noticed that in the mad source distribution there's a mostly empty mad123 .c file. I just wanted to make it publically known that I'm porting mpg321 to libmad, so it will pretty much act as mad123 once it's finished.
Great to hear it. I was hoping I wouldn't have to finish mad123 myself. :-)
Now, to fully emulate mpg123, I need to have support for id3 tags, which I note (sadly) isn't available in libmad. Is this out of the scope of the project, or difficult to implement? I'm not clear on just how id3 tags are encoded within an mp3 stream, but is it a possibility for the id3 tag support present in madplay to be moved to be more generally useful in the library?
I'm loathe to put ID3 tag support in the basic decoding library because it isn't strictly a part of the MPEG audio bitstream.
There is ID3v1 and rudimentary ID3v2 support included as part of madplay, but my suggestion would be to use a real ID3 tag processing library if possible. ID3v1 tags aren't difficult to deal with, but ID3v2 tags are absurdly complex. You might be able to use madplay's current ID3v2 code as a base for something, but it's far from complete.
Eventually I would like to see a "wrapper" library for libmad that incorporates ID3 tag support and a simplified API, but I don't plan to add these to libmad itself.
Cheers, -rob