[ID3 Dev] Some questions on the spec

Grits Lars kochakaden at gmail.com
Fri Nov 18 04:12:05 PST 2005

Hi everyone,

I'm attempting a java implementation of the id3 tag scheme, but I've run
into some difficulties interpreting the specs.
Could someone help explain some of the following?


Section 3.2:
Here, the CRC value is described as "a 35 bit synchsafe integer, leaving the
upper four bits always zeroed". Are the bits cleared from the 35-bit result
to give a 31 bit value, or are the bits cleared from the encoded (5 byte)
value to give a 32-bit result once decoded?


Section 4.5
According to the description, the only allowed timing formats are absolute
times from the beginning of the file.
Later, the following description is given: "The 'Time stamp' is set to zero
if directly at the beginning of the sound or after the previous event."
Does this mean that the time stamps are not always absolute?
Also, what is meant by "the beginning of the sound"? Is that the point that
would be marked by $02 (intro start)?

Section 4.6:
Am I correct in assuming that "Bytes between reference" and "Milliseconds
between reference" are both 24-bit values?
Are the deviation values to be interpreted as signed or unsigned integers?

Section 4.7:
This section describes a tag that starts with a time format byte, followed
by a series of tempo codes. Each tempo code has a tempo part (1-2 bytes)
followed by a time part.
The next paragraph talks about a tempo descriptor, which is not defined
elsewhere in the document. How is a tempo descriptor composed? How is it
stored in the tag? Is a tempo descriptor the collection of all the tempo
codes? If so, how do you know when the tempo codes finish and the time stamp

Section 4.9:
"The 'time stamp' is set to zero or the whole sync is omitted if located
directly at the beginning of the sound."

I don't really understand this part... Why would you omit a sync if you need
to show lyrics at the start of the song? Is the beginning of the sound
equivalent to the beginning of the audio stream? If so, then it's
self-evident that the timestamp would be 0... Or am I missing something?

Section 4.11:
What are the units for peak volume? Is it the same fixed point integer
format as the volume adjustment, but as unsigned values?

Section 4.19:
If more than one encryption frame is present in a tag, does that mean that
the file has been encrypted with multiple schemes? If so, is there a set
order that the decryption must be applied? (for example, if there's an AES
encryption frame, and then a Blowfish encryption frame, does this mean that
the file has been run through both algorithms and must be run through both
decryptors before becoming readable? Which decryptor runs first?)
Also, what happens if the encryption frames have different preview windows?
Is this considered an error?

Best regards,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.id3.org/pipermail/id3v2/attachments/20051118/aaf21a01/attachment.html>

More information about the ID3v2 mailing list