There are a couple of binary encoding schemes used by ID3v2. One is ``synchsafe'' integers, which use 8-bit bytes to hold 7 bits of data with the MSB set to 0. Another is ``unsynchronization'', which states that if you have two adjacent bytes that look like 11111111 111xxxxx, then to change it to 11111111 00000000 111xxxxx. You also have to change any 0xff 0x00 byte combinations to 0xff 0x00 0x00 to prevent a decoder from seeing those two bytes as the first two-thirds of an unsynched 2 bytes.

Synchsafe integers are mandated in certain sections, mostly headers. Unsynchronization is not ever required, but is suggested when you aren't sure that the tag will always be read by an ID3v2-compliant mp3 decoder, and is turned on by a flag in the main header to indicate unsync for all frames, or in individual frame headers. Both schemes are intended to prevent a decoder from seeing an accidental MPEG sync header within the ID3v2 tag.

Neither one should account for a two-fold increase in size.
_________________________
Bitt Faulk