<DIV>Slow, please</DIV>
<DIV> </DIV>
<DIV>First you cannot determine if is syncsafe or not! based on MSB in all bytes. Second in your library you only can put an option to read frame size as syncsafe or as normal integers, you cannot read ID3v2.3 or ID3v2.4 as normal because iTunes write these information as normal integers, look how WindowsMedia Player or Winamp write  these, if what you say is true then iTunes does'n support ID3v2 standard.</DIV>
<DIV><BR><B><I>Ben Bennett <fiji@ayup.limey.net></I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">On Mon, Aug 22, 2005 at 05:40:51AM +0100, Ion Todirel wrote:<BR>> To Ben Bennett:<BR>> <BR>> Both 2.3 and 2.4 use Syncsafe integers. ID3v2.4 its a nice one, i<BR>> recommend you to implement yourself ID3v2.4/Reader-Writer and threat<BR>> there your syncsafe problems, also if you you have problems with<BR>> syncsafe email me, i develop some nice methods.<BR><BR>Strictly speaking both do. But they use them in different places.<BR><BR>Look at the document detailing the changes from 2.3 to 2.4 [1]. It<BR>explicitly says:<BR>Unsynchronisation [S:6.1] is done on frame level, instead of on tag<BR>level, making it easier to skip frames, increasing thestreamability<BR>of the tag. The unsynchronisation flag in the header [S:3.1]<BR>indicates if all frames has been unsynchronized, while the new<BR>unsynchronisation flag in the frame header [S:4.1.2]
 indicates<BR>unsynchronisation. To avoid false synchronisations in the frame<BR>* header the size description and flag field has been rewritten [S:4].<BR>Resynchronisation of the complete tag when the unsynchronisation flag<BR>in the tag header is set might result in a corrupt tag.<BR><BR>The line marked with * is the change that we are discussing. Prior to<BR>2.4 the frame size was a 32 bit integer. In 2.4 it is a 28 bit<BR>syncsafe integer. However, if you generate a large frame in iTunes<BR>and save the tag as 2.4 you will see that the frame size is not syncsafe.<BR><BR>Please tell me how you reliably determine the frame size in 2.4. I<BR>have a bunch of heuristics that are inefficient and annoying:<BR>- Look at the bit pattern to see if it has 1s where a true syncsafe<BR>integer ought to have 0s<BR>- Check to make sure we are at the end of the tag (or in the<BR>padding), or at the start of the next frame. And if not, treat it as<BR>a non-syncsafe int and see if it is
 better<BR><BR>I have excahnged email with the author of the Godfather tagging<BR>program and he only supports reading of 2.4 tags. He will only write<BR>to the 2.3 because the 2.4 implementation is too messed up by various<BR>people.<BR><BR>Which is too bad since 2.4 supports UTF-8 which I want. I think it<BR>would be cool to release a 2.3.1 version that supports the UTF-8<BR>encoding. And I think htere needs to be a 2.4.1 release that just<BR>updates unclear portions of the 2.4 spec and makes sure that people<BR>know that frame sizes are sync-safe now.<BR><BR>-ben<BR><BR>[1] http://www.id3.org/id3v2.4.0-changes.txt<BR><BR>---------------------------------------------------------------------<BR>To unsubscribe, e-mail: id3v2-unsubscribe@id3.org<BR>For additional commands, e-mail: id3v2-help@id3.org<BR><BR></BLOCKQUOTE><p>
                <hr size=1><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://us.rd.yahoo.com/mail/uk/taglines/default/messenger/*http://uk.messenger.yahoo.com 
">Yahoo! Messenger</a> 
 <font color="red">NEW</font> - crystal clear PC to PC 
<a href="http://us.rd.yahoo.com/mail/uk/taglines/default/messenger/*http://uk.messenger.yahoo.com 
">calling worldwide with voicemail 
</a></font>