public TrackInfo GetTrackInfo(string path)
{
MPGImport.mpg123_init();
handle_mpg = MPGImport.mpg123_new(null, errPtr);
x = MPGImport.mpg123_open(handle_mpg, path);
MPGImport.mpg123_getformat(handle_mpg, out rate, out channels, out encoding);
intRate = rate.ToInt32();
intChannels = channels.ToInt32();
intEncoding = encoding.ToInt32();
MPGImport.mpg123_id3(handle_mpg, out id3v1, out id3v2);
MPGImport.mpg123_format_none(handle_mpg);
MPGImport.mpg123_format(handle_mpg, intRate, intChannels, 208);
if (id3v1 != IntPtr.Zero)
{
MPGImport.mpg123_id3v1 v1 = (MPGImport.mpg123_id3v1)Marshal.PtrToStructure(id3v1, typeof(MPGImport.mpg123_id3v1));
return new TrackInfo
{
Album = new String(v1.album), // "Runnin' Wild"
Artist = new String(v1.artist), // "Airbourne"
Title = new String(v1.title), // "Stand Up For Rock N Roll"
Year = new String(v1.year), // "2007"
Genre = (v1.genre < GenreText.Length ? GenreText[v1.genre] : string.Empty), // "Rock"
Comment = new String(v1.comment), // "Comment"
Tag = new String(v1.tag), // "Comment"
Rate = intRate,
Channels = intChannels,
Encoding = intEncoding
};
}
MPGImport.mpg123_close(handle_mpg);
// TODO: ID3v2 support is more complex.
return new TrackInfo();
}