Version: 1.4.1 (using KDE 3.5.3, compiled sources) Compiler: gcc version 3.4.4 [FreeBSD] 20050518 OS: FreeBSD (i386) release 6.1-STABLE I have a file tagged with libid3tag. It is a id3v4 tag with expanded header and CRC32 sum in it. That is the first bytes of this file: $ hexdump -C -n 50 \#dummy2.mp3 00000000 49 44 33 04 00 40 00 00 08 10 00 00 00 0c 01 20 |ID3..@......... | 00000010 05 06 35 75 4d 78 54 49 54 32 00 00 00 0a 00 01 |..5uMxTIT2......| 00000020 00 00 00 06 03 74 69 74 6c 65 00 00 00 00 00 00 |.....title......| Please pay your attention at 6-th byte. It have a value of 0x40 (symbol @). It is an ID3v2 flags byte. The bit 6 indicates that the header is followed by an extended header. And that it is in this tag. But when I change and save this file in amarok, I get the following tag: $ hexdump -C -n 50 \#dummy.mp3 00000000 49 44 33 04 00 40 00 00 08 10 54 49 54 32 00 00 |ID3..@....TIT2..| 00000010 00 07 00 00 03 74 69 74 6c 65 32 00 00 00 00 00 |.....title2.....| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| As you see, amarok has removed extended header, but do not change ID3v2 flags byte. Is is still have value of 0x40, but there is no extended header any more. It is really confuses libid3tag. It thinks that such tag are wrong and does not read them. I will attach this file, but it is reproducable on many tags.
Created attachment 17325 [details] Id3V2.4 tag with extended header.
are you using ATF?
What version of TagLib are you using?
CCing Scott Wheeler, this does look like a bug.
Yeah, I think I remember fixing something like that a while back, but I'll check it out and make sure that it's not happening for the upcoming 1.5 release.
No i don't. I'm read about ATF there: amarok.kde.org/wiki/Advanced_Tag_Features_(ATF) but i'm not found chebox "Enable writing ATF tags" in options. I use Amarok 1.4.1 with taglib-1.4_2 from FreeBSD ports collection.
Erm, this one got switched back to amarok (I presume editing at the same time). Switching it back to TagLib.
Alexey, the option is in the Collection page in the config dialog, at the top.
SVN commit 578697 by wheeler: Make sure that these flags are set to the values that are actually used. BUG:132191 M +6 -0 id3v2header.cpp M +2 -2 id3v2header.h --- trunk/kdesupport/taglib/mpeg/id3v2/id3v2header.cpp #578696:578697 @@ -158,6 +158,12 @@ v.append(char(4)); v.append(char(0)); + // Currently we don't actually support writing extended headers or footers, so + // make sure that the flags are set accordingly. + + d->extendedHeader = false; + d->footerPresent = false; + // render and add the flags std::bitset<8> flags; --- trunk/kdesupport/taglib/mpeg/id3v2/id3v2header.h #578696:578697 @@ -128,8 +128,8 @@ static ByteVector fileIdentifier(); /*! - * Sets the data that will be used as the extended header. 10 bytes, - * starting from \a data will be used. + * Sets the data that will be used as the header. 10 bytes, starting from + * the beginning of \a data are used. */ void setData(const ByteVector &data);