[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