[ID3 Dev] Help request

Pisacreta Michele info at pisacretamichele.it
Fri Aug 4 20:16:58 PDT 2006


Thanks for your feedback.

It's a 2.3 tag.
So the synchsafe mode can't be applied...
wow!

I' m trying to avoid parsing every byte of tag header seeking frame ID matches ...
So I thing I'll use both method to evaluate each frame size than check the right value...


  ----- Original Message ----- 
  From: Robert Manson 
  To: id3v2 at id3.org 
  Sent: Friday, August 04, 2006 10:46 PM
  Subject: RE: [ID3 Dev] Help request


  Is this a 2.2, 2.3 or 2.4 tag?


  ID3 v2.4 is the only standard that uses synchsafe frame sizes - although iTunes breaks with the standard and uses un-syncsafe frame sizes.

   


------------------------------------------------------------------------------

  From: Pisacreta Michele [mailto:info at pisacretamichele.it] 
  Sent: Friday, August 04, 2006 1:30 PM
  To: id3v2 at id3.org
  Subject: [ID3 Dev] Help request

   

  Hii.

  I am Michele from Italy.

   

  I'm developing a little mp3 player (  c# /.NET ) able to read ID3 tag (ver 2.x).

  I'm not going to use UltraID3Lib  because i'm trying developing my own library.

   

  The trouble i have is about 'synchsafe integer'.

   

  On www.id3.org web site I've found:

  An ID3v2 tag can be detected with the following pattern:
  $49 44 33 yy yy xx zz zz zz zz
  Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80.

  and 

  ID3v2 size             4 * %0xxxxxxx

  My routine to evaluate synchsafe integer seems to work correctly....

  Application read correctly all frames supported ( GEOB and APIC too...)

  but in some files i've found a frame (Always a PRIV) sized more than $7F in last size byte. (eg $8A).

   

  this is an example I've found:

   

  ID3v2   Header Unsynchronisation flag           : 0;

  ID3v2   Header Extended header flag             : 0;

  ID3v2   Header Experimental indicator flag    : 0;

  ID3v2   Header Footer present flag                 : 0;

   

   

   

  PRIV .... ..WM/UniqueFileIdentifier.A.M.G.a._.i.d.=.R. . . . .1.1.4.6.0.;.A.M.G.p._.i.d.=.P. . . . . .4.7.3.9.;.A.M.G.t._.i.d.=.T. . .2.7.7.7.7.5.7...

  |----- 10 -----|----------------------------------------------------------------------------------------- 138 ------------------------------------------------------------------------------------------------| 

   

   

  Value of .... is $00 00 00 8A  

                                      %10001010

   

  using synchsafe integer my routine doesn't returns 138 but 266, so application skips next frames...

  if I convert frame size using standard procedure it works....

   

  So how i can prevent it?

  Can you help me?

   

  Thanks and excuse me for my english...

   

  Michele Pisacreta.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.id3.org/pipermail/id3v2/attachments/20060805/39ef99c5/attachment.html>


More information about the ID3v2 mailing list