Issue copying IDv2 TCON frames with a v1 genre reference

patrick machielse patrick at hieper.nl
Fri Nov 13 14:04:08 CET 2009


I'm having some trouble copying ID3v2 genre tags wich contain refrences to ID3v1 genres. For example, a v2 genre frame referencing the v1 'Soul' genre looks like this:

TCON (42)

When copied to a new v2 tag, the frame is written out like this:

TCON 42

Which is interpreted as a custom genre "42".

This is my tag copying routine (NB. I know it is an ugly way to do it but it works, and I haven't found a cleaner way. If there is a cleaner way, please tell. Better support for copying tags from one file to another would be a welcome feature in TagLib 2):

ID3v2::Tag *destV2Tag = destFile.ID3v2Tag(true);
while ( sourceV2Tag->frameList().size() ) {
    ID3v2::Frame *f = *(sourceV2Tag->frameList().begin());
    if ( shouldCopyFrame(f) ) {
        destV2Tag->addFrame(f);
        sourceV2Tag->removeFrame(f, false /* memory owned by destV2Tag */);
    } else {
        sourceV2Tag->removeFrame(f);
    }
}

I'm working around the genre copy issue by explicitly copying the genre as an extra step, converting it to a string value:

destV2Tag->setGenre(sourceV2Tag->genre());

This works for the case above, but may not handle the more esoteric possibilities like

TCON (4)Eurodisco

patrick
--
Patrick Machielse
Hieper Software

http://www.hieper.nl
info at hieper.nl



More information about the taglib-devel mailing list