feedme java project

is free software, licensed under the terms of the GNU General Public License, that feeds/imports media from anywhere to xbox360 media center extenders, ipods, web servers, file servers, etc. using Java.

Please read the license here.

Wednesday, September 5, 2007

id3v2.4.0-structure


ID3v2.4 is the latest version of the standard, dated November 1, 2000.

The bitorder in ID3v2 is most significant bit first (MSB). The
byteorder in multibyte numbers is most significant byte first
(e.g. $12345678 would be encoded $12 34 56 78),
also known as big endian and network byte order.

In some parts of the tag it is inconvenient to use the
unsychronisation scheme because the size of unsynchronised data is
not known in advance, which is particularly problematic with size
descriptors. The solution in ID3v2 is to use synchsafe integers,
in which there can never be any false synchs.
255 (%11111111) encoded as a 16 bit synchsafe integer is 383(000001 01111111).

Overall tag structure:

+-----------------------------+
| Header (10 bytes) |
+-----------------------------+
| Extended Header |
| (variable length, OPTIONAL) |
+-----------------------------+
| Frames (variable length) |
+-----------------------------+
| Padding |
| (variable length, OPTIONAL) |
+-----------------------------+
| Footer (10 bytes, OPTIONAL) |
+-----------------------------+

In general, padding and footer are mutually exclusive. See details in
sections 3.3, 3.4 and 5.

Header:
ID3v2/file identifier "ID3"
ID3v2 version $04 00
ID3v2 flags %abcd0000
ID3v2 size 4 * %0xxxxxxx

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

Footer:
ID3v2 identifier "3DI"
ID3v2 version $04 00
ID3v2 flags %abcd0000
ID3v2 size 4 * %0xxxxxxx

No comments: