<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">I am using TagLib-1.8 to try to extract cover art from an ID3v2.3.0 mp3 file which contains the following at the beginning (displayed in hex dump output):<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000000  49 44 33 03 00 00 00 04  4c 39 54 50 45 31 00 00  |ID3.....L9TPE1..|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000010  00 0a 00 00 00 42 6f 62  20 44 79 6c 61 6e 54 59  |.....Bob DylanTY|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000020  45 52 00 00 00 05 00 00  00 31 39 36 35 54 43 4f  |ER.......1965TCO|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000030  4d 00 00 00 01 00 00 00  54 4f 50 45 00 00 00 01  |M.......TOPE....|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000040  00 00 00 54 43 4f 50 00  00 00 01 00 00 00 57 4f  |...TCOP.......WO|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000050  41 52 00 00 00 00 00 00  54 45 4e 43 00 00 00 01  |AR......TENC....|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000060  40 00 00 41 50 49 43 00  01 25 4e 00 00 00 69 6d  |@..APIC..%N...im|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000070  61 67 65 2f 6a 70 65 67  00 00 00 ff d8 ff e0 00  |age/jpeg........|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000080  10 4a 46 49 46 00 01 01  01 00 7e 00 7e 00 00 ff  |.JFIF.....~.~...|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000090  e1 0c 3a 45 78 69 66 00  00 49 49 2a 00 08 00 00  |..:Exif..II*....|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">000000a0  00 02 00 46 47 03 00 01  00 00 00 00 00 00 00 12  |...FG...........|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">000000b0  50 04 00 01 00 00 00 01  00 00 00 26 00 00 00 03  |P..........&....|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">000000c0  00 28 01 03 00 01 00 00  00 02 00 00 00 01 02 04  |.(..............|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">000000d0  00 01 00 00 00 50 00 00  00 02 02 04 00 01 00 00  |.....P..........|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">000000e0  00 e2 0b 00 00 00 00 00  00 ff d8 ff e0 00 10 4a  |...............J|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">000000f0  46 49 46 00 01 01 01 00  0f 00 0f 00 00 ff db 00  |FIF.............|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000100  43 00 08 06 06 07 06 05  08 07 07 07 09 09 08 0a  |C...............|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000110  0c 14 0d 0c 0b 0b 0c 19  12 13 0f 14 1d 1a 1f 1e  |................|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000120  1d 1a 1c 1c 20 24 2e 27  20 22 2c 23 1c 1c 28 37  |.... $.' ",#..(7|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000130  29 2c 30 31 34 34 34 1f  27 39 3d 38 32 3c 2e 33  |),01444.'9=82<.3|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000140  34 32 ff db 00 43 01 09  09 09 0c 0b 0c 18 0d 0d  |42...C..........|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000150  18 32 21 1c 21 32 32 32  32 32 32 32 32 32 32 32  |.2!.!22222222222|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">00000160  32 32 32 32 32 32 32 32  32 32 32 32 32 32 32 32  |2222222222222222|<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">…<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Used the following TagLib framelist.cpp module (framelist program in examples sub-directory) to dump frames but the APIC frame is not picked up i.e. not displayed:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">int main(int argc, char *argv[])<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">  // process the command line args<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">  for(int i = 1; i < argc; i++) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    cout << "******************** \"" << argv[i] << "\"********************" << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    MPEG::File f(argv[i]);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    ID3v2::Tag *id3v2tag = f.ID3v2Tag();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    if(id3v2tag) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">      cout << "ID3v2."<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << id3v2tag->header()->majorVersion()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << "."<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << id3v2tag->header()->revisionNumber()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << ", "<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << id3v2tag->header()->tagSize()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << " bytes in tag"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">           << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">      ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">      for(; it != id3v2tag->frameList().end(); it++)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">        cout << (*it)->frameID() << " - \"" << (*it)->toString() << "\"" << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">    else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">      cout << "file does not have a valid id3v2 tag" << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">…<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If I change APIC’s picture type from 00 (Other) to 03 (front Cover), TagLib-1.8 still fails to extract the APIC frame information via the framelist program.  However,  I am able to see the cover art using MediaMonkey and Mp3tag.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Any suggestions?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Ken<o:p></o:p></p>
</div>
</body>
</html>