org.metasyntactic.id3.v2
Class ExtendedHeader

java.lang.Object
  |
  +--org.metasyntactic.id3.v2.ExtendedHeader

public class ExtendedHeader
extends java.lang.Object

The extended header contains information that can provide further insight in the structure of the tag, but is not vital to the correct parsing of the tag information; hence the extended header is optional.

 Extended header size   4 * %0xxxxxxx
 Number of flag bytes       $01
 Extended Flags             $xx
 

Where the 'Extended header size' is the size of the whole extended header, stored as a 32 bit synchsafe integer. An extended header can thus never have a size of fewer than six bytes.

The extended flags field, with its size described by 'number of flag bytes', is defined as:

%0bcd0000

Each flag that is set in the extended header has data attached, which comes in the order in which the flags are encountered (i.e. the data for flag 'b' comes before the data for flag 'c'). Unset flags cannot have any attached data. All unknown flags MUST be unset and their corresponding data removed when a tag is modified.

Every set flag's data starts with a length byte, which contains a value between 0 and 128 ($00 - $7f), followed by data that has the field length indicated by the length byte. If a flag has no attached data, the value $00 is used as length byte.


Constructor Summary
ExtendedHeader(boolean update, java.util.zip.CRC32 crc32, Restriction restriction)
           
 
Method Summary
 int getSize()
           
static ExtendedHeader read(java.io.InputStream in)
           
 void write(java.io.OutputStream out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExtendedHeader

public ExtendedHeader(boolean update,
                      java.util.zip.CRC32 crc32,
                      Restriction restriction)
Method Detail

getSize

public int getSize()

read

public static ExtendedHeader read(java.io.InputStream in)
                           throws java.io.IOException
java.io.IOException

write

public void write(java.io.OutputStream out)
           throws java.io.IOException
java.io.IOException