]> granicus.if.org Git - taglib/commitdiff
Don't upgrade ID3v2.2 TDA frame when upgrading to TRCD
authorLukáš Lalinský <lalinsky@gmail.com>
Sat, 3 Apr 2010 16:58:03 +0000 (16:58 +0000)
committerLukáš Lalinský <lalinsky@gmail.com>
Sat, 3 Apr 2010 16:58:03 +0000 (16:58 +0000)
We already do this for TDAT. Using both parts, the year and the date,
would be better we the code currently doesn't have enough context to
do that.

BUG:228968

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1110552 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

taglib/mpeg/id3v2/id3v2framefactory.cpp
tests/data/id3v22-tda.mp3 [new file with mode: 0644]
tests/test_id3v2.cpp

index e412cb30c9ada811522284b32792a32dbaf0bf45..1d39a713d4d5db6a5ecd45859e826cac0ecca436 100644 (file)
@@ -282,7 +282,8 @@ bool FrameFactory::updateFrame(Frame::Header *header) const
        frameID == "LNK" ||
        frameID == "RVA" ||
        frameID == "TIM" ||
-       frameID == "TSI")
+       frameID == "TSI" ||
+       frameID == "TDA")
     {
       debug("ID3v2.4 no longer supports the frame type " + String(frameID) +
             ".  It will be discarded from the tag.");
@@ -310,7 +311,6 @@ bool FrameFactory::updateFrame(Frame::Header *header) const
     convertFrame("TCM", "TCOM", header);
     convertFrame("TCO", "TCON", header);
     convertFrame("TCR", "TCOP", header);
-    convertFrame("TDA", "TDRC", header);
     convertFrame("TDY", "TDLY", header);
     convertFrame("TEN", "TENC", header);
     convertFrame("TFT", "TFLT", header);
diff --git a/tests/data/id3v22-tda.mp3 b/tests/data/id3v22-tda.mp3
new file mode 100644 (file)
index 0000000..d89ae1c
Binary files /dev/null and b/tests/data/id3v22-tda.mp3 differ
index 64f6461f1d1d597d3ea9d8a0ffc9b5824d37476a..860e911901f74f9be87b119701ae194fa37862d0 100644 (file)
@@ -59,6 +59,8 @@ class TestID3v2 : public CppUnit::TestFixture
   CPPUNIT_TEST(testUpdateGenre23_1);
   CPPUNIT_TEST(testUpdateGenre23_2);
   CPPUNIT_TEST(testUpdateGenre24);
+  CPPUNIT_TEST(testUpdateDate22);
+  // CPPUNIT_TEST(testUpdateFullDate22); TODO TYE+TDA should be upgraded to TDRC together
   CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -439,6 +441,20 @@ public:
     CPPUNIT_ASSERT_EQUAL(String("R&B Eurodisco"), tag.genre());
   }
 
+  void testUpdateDate22()
+  {
+    MPEG::File f("data/id3v22-tda.mp3", false);
+    CPPUNIT_ASSERT(f.tag());
+    CPPUNIT_ASSERT_EQUAL(TagLib::uint(2010), f.tag()->year());
+  }
+
+  void testUpdateFullDate22()
+  {
+    MPEG::File f("data/id3v22-tda.mp3", false);
+    CPPUNIT_ASSERT(f.tag());
+    CPPUNIT_ASSERT_EQUAL(String("2010-04-03"), f.ID3v2Tag()->frameListMap()["TDRC"].front()->toString());
+  }
+
 };
 
 CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v2);