From cc7c66bf86edbb5b50866e9ecb9d2fbd68859948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Wed, 9 Sep 2009 20:11:29 +0000 Subject: [PATCH] =?UTF-8?q?Upgrade=20obsolete=20gnre=20MP4=20atoms=20to=20?= =?UTF-8?q?=C2=A9gen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1021692 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- taglib/mp4/Makefile.am | 1 + taglib/mp4/mp4tag.cpp | 16 ++++++++++++++++ taglib/mp4/mp4tag.h | 1 + 3 files changed, 18 insertions(+) diff --git a/taglib/mp4/Makefile.am b/taglib/mp4/Makefile.am index fe4ce810..bc2faa4e 100644 --- a/taglib/mp4/Makefile.am +++ b/taglib/mp4/Makefile.am @@ -2,6 +2,7 @@ DEFS = -DMAKE_TAGLIB_LIB @DEFS@ INCLUDES = \ -I$(top_srcdir)/taglib \ -I$(top_srcdir)/taglib/toolkit \ + -I$(top_srcdir)/taglib/mpeg/id3v1 \ $(all_includes) noinst_LTLIBRARIES = libmp4.la diff --git a/taglib/mp4/mp4tag.cpp b/taglib/mp4/mp4tag.cpp index e73952d7..a774e391 100644 --- a/taglib/mp4/mp4tag.cpp +++ b/taglib/mp4/mp4tag.cpp @@ -33,6 +33,7 @@ #include #include "mp4atom.h" #include "mp4tag.h" +#include "id3v1genres.h" using namespace TagLib; @@ -73,6 +74,9 @@ MP4::Tag::Tag(File *file, MP4::Atoms *atoms) else if(atom->name == "tmpo") { parseInt(atom, file); } + else if(atom->name == "gnre") { + parseGnre(atom, file); + } else { parseText(atom, file); } @@ -130,6 +134,18 @@ MP4::Tag::parseInt(MP4::Atom *atom, TagLib::File *file) } } +void +MP4::Tag::parseGnre(MP4::Atom *atom, TagLib::File *file) +{ + ByteVectorList data = parseData(atom, file); + if(data.size()) { + int idx = (int)data[0].toShort(); + if(!d->items.contains("\251gen")) { + d->items.insert("\251gen", StringList(ID3v1::genre(idx))); + } + } +} + void MP4::Tag::parseIntPair(MP4::Atom *atom, TagLib::File *file) { diff --git a/taglib/mp4/mp4tag.h b/taglib/mp4/mp4tag.h index 41b76657..bd3a360a 100644 --- a/taglib/mp4/mp4tag.h +++ b/taglib/mp4/mp4tag.h @@ -71,6 +71,7 @@ namespace TagLib { void parseText(Atom *atom, TagLib::File *file, int expectedFlags = 1); void parseFreeForm(Atom *atom, TagLib::File *file); void parseInt(Atom *atom, TagLib::File *file); + void parseGnre(Atom *atom, TagLib::File *file); void parseIntPair(Atom *atom, TagLib::File *file); void parseBool(Atom *atom, TagLib::File *file);