]> granicus.if.org Git - taglib/commitdiff
Upgrade obsolete gnre MP4 atoms to ©gen
authorLukáš Lalinský <lalinsky@gmail.com>
Wed, 9 Sep 2009 20:11:29 +0000 (20:11 +0000)
committerLukáš Lalinský <lalinsky@gmail.com>
Wed, 9 Sep 2009 20:11:29 +0000 (20:11 +0000)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1021692 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

taglib/mp4/Makefile.am
taglib/mp4/mp4tag.cpp
taglib/mp4/mp4tag.h

index fe4ce810aa2ed94d0dcafb9f0ae4121a72ad9e9d..bc2faa4ec4b13ae0448998854ad3f9cb6c37313e 100644 (file)
@@ -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
index e73952d78c9121345bddb3134c5c67fc81e31b8f..a774e3910a8edcd0511ce8d69129382718258424 100644 (file)
@@ -33,6 +33,7 @@
 #include <tstring.h>
 #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)
 {
index 41b76657a5f6092fa3deec14d741bddcfbaf0f47..bd3a360a41891ed5a4d8cc4f7272a377dffd80d3 100644 (file)
@@ -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);