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.
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 mean, it's not a *requirement*, as in the end I'll be using mad's implementation of it either way, but it'd probably be good for users of libmad to have id3 tag support within the library itself.)
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 mean, it's not a *requirement*, as in the end I'll be using mad's implementation of it either way, but it'd probably be good for users of libmad to have id3 tag support within the library itself.)
I haven't looked closely at libmad yet so I don't know how useful the id3 support is but I assume it is as you say and I definitely agree. We intend to use id3 tags in Apollo [1]. Currently, Apollo is just a front-end to mpg123, but I'm looking forward to base Apollo primarily on libmad.
id3 tag support will be important for us (the Apollo developers) in the future, and we've discussed using id3lib [2], but I'd rather not depend on yet another library.
[1] http://www.apolloplayer.org/ [2] http://id3lib.sourceforge.net/
- Marius
I haven't looked closely at libmad yet so I don't know how useful the id3 support is but I assume it is as you say and I definitely agree. We intend to use id3 tags in Apollo [1]. Currently, Apollo is just a front-end to mpg123, but I'm looking forward to base Apollo primarily on libmad.
id3 tag support will be important for us (the Apollo developers) in the future, and we've discussed using id3lib [2], but I'd rather not depend on yet another library.
the id3 support is there, it just needs to made into a module. Not hard, just a little bit of time.
id3 is really easy. it boils down to a few static arrays and some bit walking. index + bit n => artist, index + bit m => title, etc. It basically sits just past the mp3 info and tags along.
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
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.
pulling the id3 support out into a companion library should not be but so difficult, especially for id3v1. Not saying you have to do it it Rob, but these two fellows could certainly whip it up in a few days.