private bool ParseMetadata()
{
//1. pick up first 3 bytes they must be ID3
var id3 = new byte[3];
if (!MediaFile.ReadBuffer(id3, 3))
{
Logger.FATAL("Unable to read 3 bytes");
return false;
}
if ((id3[0] != 'I') || (id3[1] != 'D') || (id3[2] != '3'))
{
Logger.WARN("ID3 not found");
return false;
}
//2. pick up the major version
byte majorVersion;
byte minorVersion;
if (!MediaFile.ReadUInt8(out majorVersion))
{
Logger.FATAL("Unable to read 1 byte");
return false;
}
if (!MediaFile.ReadUInt8(out minorVersion))
{
Logger.FATAL("Unable to read 1 byte");
return false;
}
//3. Instantiate the proper parser
var pParser = new ID3Parser(majorVersion, minorVersion);
//4. Parse
_tags["tags"] = pParser.GetMetadata();
return pParser.Parse(MediaFile);
//5. Process the metadata
}