[ID3 Dev] Determining an offset

Morton, Christopher CMorton at caiso.com
Thu Feb 16 13:54:29 PST 2006


Well, yeah, been there. I'm wanting the no-brainer approach; you folks
have been down this road before. If the author of the code I submitted
(not me) is able to so-easily find the binary offsets of all the other
tag data, then why not the frame offset containing the album art YES/NO
indicator?

Thanks

-----Original Message-----
From: Brian Mearns [mailto:bmearns at coe.neu.edu] 
Sent: Thursday, February 16, 2006 1:35 PM
To: id3v2 at id3.org
Subject: Re: [ID3 Dev] Determining an offset

I'm sure others can give a better answer, but the ID3Tag is broken into 
Frames. Each frame has a frame title that identifies what data is stored

in the frame and how to parse it. It has some other header information 
in the frame, and then the frame data. The Album art frame is one such 
frame, and there is no set location for it. Frames can be in any order. 
I don't see any other option than to parse the whole tag and just look 
for the appropriate frame, and identified by the frame title. That's not

to say you have to parse every frame, you just need to parse the first 
however many bytes (8?) to determine it's size and frame title, and then

you can skip over the rest of the frame to the next one. You'll probably

want to look at the Informal Standard: 
http://www.id3.org/id3v2.3.0.html, it will tell you how to determine the

frame size for each frame, and what the frame title for the album art 
frame is.

Good luck, I hope that answers your question.

-Brian

Morton, Christopher wrote:
> Hello,
> 
> Please consider the following code (the language doesn't matter) for a
> routine that dumps ID3v2 tag data into Excel. As you do, note the
binary
> offset numbers. My question is, what might be the offset number where
> the "album art" flag (1/0) is located? That's a pressing matter for
this
> exercise (and that's what it is)-to determine if a given MP3 has 1)
been
> tagged and 2) if the metadata includes (YES/NO) the album JPG. Thanks.
> 
> 
>>Chris Morton
> 
> 
> ;;START CODE
> ;; BinaryPeekStr extracts a string from a binary buffer (handle,
offset,
> maxsize)
> ;; BinaryPeek returns the 8-bit value of a byte from a binary buffer
> 
> bb = BinaryAlloc(150)
> ThisFile = ItemExtract(FileIndex, List, @TAB)
> size = FileSize(ThisFile)
> BinaryReadEx(bb, 0, ThisFile, size - 128, 128)
> id3 = BinaryPeekStr(bb, 0, 3)
> If id3 == "TAG" 
> 
> song_title = StrTrim(BinaryPeekStr(bb, 3, 30))
> DDEPoke(channel1, "R%row%C2", song_title)
>       
> artist_name = StrTrim(BinaryPeekStr(bb, 33, 30))
> DDEPoke(channel1, "R%row%C3", artist_name)
>    	
>  album_name = StrTrim(BinaryPeekStr(bb, 63, 30))
> DDEPoke(channel1, "R%row%C4", album_name)
> 
> album_label = "Not Present"
> DDEPoke(channel1, "R%row%C5", album_label)
> 
> album_pub_date = StrTrim(BinaryPeekStr(bb, 93, 4))
> DDEPoke(channel1, "R%row%C6", album_pub_date)
>       
>  album_type_desc = "Not Present"
>  DDEPoke(channel1, "R%row%C7", album_type_desc)
> 
> genre = StrTrim(BinaryPeek(bb, 127))
> DDEPoke(channel1, "R%row%C8", genre)
> 
> EndIf
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: id3v2-unsubscribe at id3.org
> For additional commands, e-mail: id3v2-help at id3.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: id3v2-unsubscribe at id3.org
For additional commands, e-mail: id3v2-help at id3.org




---------------------------------------------------------------------
To unsubscribe, e-mail: id3v2-unsubscribe at id3.org
For additional commands, e-mail: id3v2-help at id3.org



More information about the ID3v2 mailing list