id3lib: копирование кадров не работает

Я пытаюсь скопировать все теги ID3v2 из одного файла в другой. Но мой код не работает (теги остаются неизменными), и я не знаю почему.

ID3_Tag sFile, tFile;

sFile.Link("source.mp3", ID3TT_ID3V2);
tFile.Link("target.mp3");

tFile.Strip();

ID3_Tag::Iterator* sFrItr = sFile.CreateIterator();
ID3_Frame* sFrame = NULL;
while (NULL != (sFrame = sFrItr->GetNext()))
{
tFile.AddFrame(sFrame);
}
delete sFrItr;

tFile.Update();

Этот код в основном основан на Пример API id3lib. Раньше у меня не было ничего общего с id3, поэтому я просто не понимаю, как работают фреймы и поля.

1

Решение

Проблема в том, что когда Update() срабатывает, ID3_Frameдобавлено в tFile больше не существует Правильный способ заключается в создании указателей на копии ID3_Frameи прикрепить их к ID3_Tag:

while (NULL != (sFrame = sFrItr->GetNext()))
{
tFile.AttachFrame(new ID3_Frame(*sFrame));
}

AttachFrame() заботится о памяти и впоследствии удаляет сами данные.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]