diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-04-30 20:53:13 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-04-30 20:53:13 +0000 |
| commit | db23b5ca84741c44ef37c6a5ae5aa8421b3f5a78 (patch) | |
| tree | e076462468a2c9fad076a416913e831419ea8fdf /src/plugins | |
| parent | 744da239bb6fa7a332da181ab0a65221c0de9978 (diff) | |
| download | qmmp-db23b5ca84741c44ef37c6a5ae5aa8421b3f5a78.tar.gz qmmp-db23b5ca84741c44ef37c6a5ae5aa8421b3f5a78.tar.bz2 qmmp-db23b5ca84741c44ef37c6a5ae5aa8421b3f5a78.zip | |
mpeg plugin: improved ape support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4885 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Input/mad/mpegmetadatamodel.cpp | 44 |
2 files changed, 50 insertions, 4 deletions
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index a55627b60..91214f6fb 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -228,6 +228,16 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo info->setMetaData(Qmmp::DISCNUMBER, QString(disc.toCString()).trimmed()); } } + else if(tag == fileRef.APETag()) + { + TagLib::APE::Item fld; + if(!(fld = fileRef.APETag()->itemListMap()["ALBUM ARTIST"]).isEmpty()) + info->setMetaData(Qmmp::ALBUMARTIST, + QString::fromUtf8(fld.toString().toCString(true)).trimmed()); + if(!(fld = fileRef.APETag()->itemListMap()["COMPOSER"]).isEmpty()) + info->setMetaData(Qmmp::COMPOSER, + QString::fromUtf8(fld.toString().toCString(true)).trimmed()); + } } } if (fileRef.audioProperties()) diff --git a/src/plugins/Input/mad/mpegmetadatamodel.cpp b/src/plugins/Input/mad/mpegmetadatamodel.cpp index 5d040f013..c51edce34 100644 --- a/src/plugins/Input/mad/mpegmetadatamodel.cpp +++ b/src/plugins/Input/mad/mpegmetadatamodel.cpp @@ -182,7 +182,13 @@ QList<Qmmp::MetaData> MpegFileTagModel::keys() QList<Qmmp::MetaData> list = TagModel::keys(); if (m_tagType == TagLib::MPEG::File::ID3v2) return list; + else if(m_tagType == TagLib::MPEG::File::APE) + { + list.removeAll(Qmmp::DISCNUMBER); + return list; + } list.removeAll(Qmmp::COMPOSER); + list.removeAll(Qmmp::ALBUMARTIST); list.removeAll(Qmmp::DISCNUMBER); return list; } @@ -207,9 +213,16 @@ const QString MpegFileTagModel::value(Qmmp::MetaData key) str = m_tag->artist(); break; case Qmmp::ALBUMARTIST: - if(m_tagType == TagLib::MPEG::File::ID3v2 - && !m_file->ID3v2Tag()->frameListMap()["TPE2"].isEmpty()) + if(m_tagType == TagLib::MPEG::File::ID3v2 && + !m_file->ID3v2Tag()->frameListMap()["TPE2"].isEmpty()) + { str = m_file->ID3v2Tag()->frameListMap()["TPE2"].front()->toString(); + } + else if(m_tagType == TagLib::MPEG::File::APE && + !m_file->APETag()->itemListMap()["ALBUM ARTIST"].isEmpty()) + { + str = m_file->APETag()->itemListMap()["ALBUM ARTIST"].toString(); + } break; case Qmmp::ALBUM: str = m_tag->album(); @@ -221,9 +234,16 @@ const QString MpegFileTagModel::value(Qmmp::MetaData key) str = m_tag->genre(); break; case Qmmp::COMPOSER: - if(m_tagType == TagLib::MPEG::File::ID3v2 - && !m_file->ID3v2Tag()->frameListMap()["TCOM"].isEmpty()) + if(m_tagType == TagLib::MPEG::File::ID3v2 && + !m_file->ID3v2Tag()->frameListMap()["TCOM"].isEmpty()) + { str = m_file->ID3v2Tag()->frameListMap()["TCOM"].front()->toString(); + } + else if(m_tagType == TagLib::MPEG::File::APE && + !m_file->APETag()->itemListMap()["COMPOSER"].isEmpty()) + { + str = m_file->APETag()->itemListMap()["COMPOSER"].toString(); + } break; case Qmmp::YEAR: return QString::number(m_tag->year()); @@ -296,10 +316,26 @@ void MpegFileTagModel::setValue(Qmmp::MetaData key, const QString &value) } } else if(m_tagType == TagLib::MPEG::File::APE) + { type = TagLib::String::UTF8; + } TagLib::String str = TagLib::String(m_codec->fromUnicode(value).constData(), type); + if(m_tagType == TagLib::MPEG::File::APE) + { + if(key == Qmmp::COMPOSER) + { + m_file->APETag()->addValue("COMPOSER", str, true); + return; + } + else if(key == Qmmp::ALBUMARTIST) + { + m_file->APETag()->addValue("ALBUM ARTIST", str, true); + return; + } + } + switch((int) key) { case Qmmp::TITLE: |
