public override void ReadMetadata() { PrimitiveReader reader = new PrimitiveReader( this ); while( true ) { string header = reader.ReadASCIIString( 4 ); if( header == "TAG+" ) { // ID3 1.1 Extended tag ReadID31Extended( reader ); } else if( header.StartsWith( "TAG" ) ) { // ID3 1 reader.Seek( -1, SeekOrigin.Current ); ReadID31( reader ); } else if( header.StartsWith( "ID3" ) ) { // ID3 2 ID3v2Frame tag = new ID3v2Frame( this, reader, (byte)header[3] ); } else { // Unrecognised header, it's probably the start of the actual MPEG audio stream. reader.Seek( -4, SeekOrigin.Current ); break; } } }