mirror of
https://github.com/taglib/taglib.git
synced 2025-06-04 01:28:21 -04:00
parent
2db13ad8cf
commit
e116824380
@ -495,6 +495,7 @@ void ID3v2::Tag::downgradeFrames(FrameList *frames, FrameList *newFrames) const
|
||||
ID3v2::TextIdentificationFrame *frameTDRC = 0;
|
||||
ID3v2::TextIdentificationFrame *frameTIPL = 0;
|
||||
ID3v2::TextIdentificationFrame *frameTMCL = 0;
|
||||
ID3v2::TextIdentificationFrame *frameTCON = 0;
|
||||
|
||||
for(FrameList::ConstIterator it = d->frameList.begin(); it != d->frameList.end(); it++) {
|
||||
ID3v2::Frame *frame = *it;
|
||||
@ -516,6 +517,8 @@ void ID3v2::Tag::downgradeFrames(FrameList *frames, FrameList *newFrames) const
|
||||
frameTIPL = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame);
|
||||
else if(frameID == "TMCL")
|
||||
frameTMCL = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame);
|
||||
else if(frame && frameID == "TCON")
|
||||
frameTCON = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame);
|
||||
else
|
||||
frames->append(frame);
|
||||
}
|
||||
@ -582,6 +585,22 @@ void ID3v2::Tag::downgradeFrames(FrameList *frames, FrameList *newFrames) const
|
||||
frames->append(frameIPLS);
|
||||
newFrames->append(frameIPLS);
|
||||
}
|
||||
|
||||
if(frameTCON) {
|
||||
StringList genres = frameTCON->fieldList();
|
||||
String combined;
|
||||
|
||||
for(StringList::ConstIterator it = genres.begin(); it != genres.end(); ++it) {
|
||||
bool ok = false;
|
||||
int number = it->toInt(&ok);
|
||||
combined += (ok && number >= 0 && number <= 255) ? ('(' + *it + ')') : *it;
|
||||
}
|
||||
|
||||
frameTCON = new ID3v2::TextIdentificationFrame("TCON", String::Latin1);
|
||||
frameTCON->setText(combined);
|
||||
frames->append(frameTCON);
|
||||
newFrames->append(frameTCON);
|
||||
}
|
||||
}
|
||||
|
||||
ByteVector ID3v2::Tag::render(int version) const
|
||||
|
@ -1,4 +1,4 @@
|
||||
/***************************************************************************
|
||||
/***************************************************************************
|
||||
copyright : (C) 2007 by Lukas Lalinsky
|
||||
email : lukas@oxygene.sk
|
||||
***************************************************************************/
|
||||
@ -798,7 +798,16 @@ public:
|
||||
CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOP"));
|
||||
#endif
|
||||
CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSST"));
|
||||
}
|
||||
}
|
||||
|
||||
ScopedFileCopy rareFramesCopy("rare_frames", ".mp3");
|
||||
|
||||
{
|
||||
MPEG::File f(rareFramesCopy.fileName().c_str());
|
||||
f.save(MPEG::File::AllTags, File::StripOthers, ID3v2::v3);
|
||||
f.seek(f.find("TCON") + 11);
|
||||
CPPUNIT_ASSERT_EQUAL(ByteVector("(13)"), f.readBlock(4));
|
||||
}
|
||||
}
|
||||
|
||||
void testCompressedFrameWithBrokenLength()
|
||||
|
Loading…
x
Reference in New Issue
Block a user