From 76b6d4fc9e028ec214d4dcd90e1e83a5eab01189 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Thu, 29 Oct 2009 15:53:20 +0000 Subject: [PATCH] Fixed ID3v1-style genre to string conversion in MP4 files git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1042312 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- NEWS | 1 + taglib/mp4/mp4tag.cpp | 4 ++-- tests/data/gnre.m4a | Bin 0 -> 5026 bytes tests/test_mp4.cpp | 7 +++++++ 4 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 tests/data/gnre.m4a diff --git a/NEWS b/NEWS index 437af6e1..8531d17e 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ TagLib 1.6.1 * Fixed a failing test on ppc64. * Support for binary 'covr' atom in MP4 files. TagLib 1.6 treated them as text atoms, which corrupted them in some cases. + * Fixed ID3v1-style genre to string conversion in MP4 files. TagLib 1.6 ========== diff --git a/taglib/mp4/mp4tag.cpp b/taglib/mp4/mp4tag.cpp index df74811d..2f400862 100644 --- a/taglib/mp4/mp4tag.cpp +++ b/taglib/mp4/mp4tag.cpp @@ -143,8 +143,8 @@ 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))); + if(!d->items.contains("\251gen") && idx > 0) { + d->items.insert("\251gen", StringList(ID3v1::genre(idx - 1))); } } } diff --git a/tests/data/gnre.m4a b/tests/data/gnre.m4a new file mode 100644 index 0000000000000000000000000000000000000000..f925ea9eb5d1cfc12a1effb51e3208737a97aeb9 GIT binary patch literal 5026 zcmeHL%Wl(95Iu1mS_G(8d9|erCuP9`Arblk4Np}<;-N}(frOmcX|39E@V%)73zR*Z zO0b7*C4PVfQg;0U7HnAa0qnyWKS&y(Zb9OXV$IC)&CK{{=H@y8mb&^?KklzLK@lCQ zBnE1qW8c%?Z6FHUUC-;dH*Yl8f!lcJ+D$yDWAngT#@f&rh6K|IW(v#{{0mdSJ$zm^ zZs6Q@oFx17qj-PUm(6|j^WL|kg}Dfo7YC?aK936IGm&Es;TeBpvhq)sMQ|xhd?h!X z;cz&IN8|CrcnsKDr`{gn=Xx)zrSiL$GKn4B^K9%=6;YU082M zMfm!zAEjj~l?-~NUFhmj9QL|&92Mt*iW^t`9AEX*K<oXF&{EI0zNJds<0%E_yeyaoZA`ohLVV1-G30B71YBG#gFimD=fyGrYf zZ`$I2;FqW*g*D>!o@KlippcK$42IL@G93J+9=OJy>@c^8^sJ1-^+HSYt`;_XyOYos z5!~g{FFtag()->genre()); + } + void testCovrRead() { MP4::File *f = new MP4::File("data/has-tags.m4a"); -- 2.40.0