QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName, bool useMetaData, QStringList *) { FileInfo *info = new FileInfo(fileName); #if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8)) TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true); TagLib::MPC::File fileRef(&stream); #else TagLib::MPC::File fileRef(fileName.toLocal8Bit().constData()); #endif TagLib::APE::Tag *tag = useMetaData ? fileRef.APETag() : 0; if (tag && !tag->isEmpty()) { info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(tag->album().toCString(true)).trimmed()); info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(tag->artist().toCString(true)).trimmed()); info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(tag->comment().toCString(true)).trimmed()); info->setMetaData(Qmmp::GENRE, QString::fromUtf8(tag->genre().toCString(true)).trimmed()); info->setMetaData(Qmmp::TITLE, QString::fromUtf8(tag->title().toCString(true)).trimmed()); info->setMetaData(Qmmp::YEAR, tag->year()); info->setMetaData(Qmmp::TRACK, tag->track()); } if (fileRef.audioProperties()) info->setLength(fileRef.audioProperties()->length()); //additional metadata if(tag) { TagLib::APE::Item fld; if(!(fld = tag->itemListMap()["ALBUM ARTIST"]).isEmpty()) info->setMetaData(Qmmp::ALBUMARTIST, QString::fromUtf8(fld.toString().toCString(true)).trimmed()); if(!(fld = tag->itemListMap()["COMPOSER"]).isEmpty()) info->setMetaData(Qmmp::COMPOSER, QString::fromUtf8(fld.toString().toCString(true)).trimmed()); } QList <FileInfo*> list; list << info; return list; }