On 2013-03-12 18:34, Oliver Joos <oliver joos hispeed ch> wrote:
I have created test files with different APIC description texts: 1. APIC_v2.3_ASCII.mp3 APIC desc. with ASCII chars only 2. APIC_v2.3_ISO-8859-1.mp3 APIC desc. with 'äöü' (within ISO-8859-1) 3. APIC_v2.3_NoDesc.mp3 No APIC text description at all 4. APIC_v2.3_UTF-16.mp3 APIC desc. with '←→' (Unicode only) 5. APIC_v2.4_UTF-8.mp3 APIC desc. with '←→' (Unicode only) The files are here: http://homepage.hispeed.ch/joos/oliver/APIC-Test.zip Number 1-4 were written by EasyTAG configured to ID3v2.3/UTF-16. Number 5 was written as ID3v2.4/UTF-8 (EasyTAG default settings). I attached a screenshot of a diagnosis of these files using MP3 Diags: 1-3 are ok, 4+5 have issues. And (no surprise) my Nokia Symbian S60 phone shows the APIC image for file 1-3, but shows no image for 4+5!
File 5 seems fine, as the warning mentions that there is no ID3v2.3 tag present, which is expected for a file with only a v2.4 tag. File 4 seems to show evidence of a bug, but I looked at the description string in the file and it seems to be correct (UTF-16 little-endian). I will try to test this more when I have the time, as I would consider my results to be inconclusive at this stage.
So I still think that EasyTAG should add no (= empty) APIC text descriptions by default. An optimal fix could re-encode Unicode APIC descriptions to ISO-8859-1/TRANSLIT, at least for ID3v2.3 headers. (Players that are fully v2.4-capable might be fine with Unicode APIC descriptions)
ID3v2.3 allows ISO-8859-1 and UCS-2 (UTF-16 with a BOM, in practice), so there is either a bug in EasyTAG while writing UTF-16 fields in ID3v2.3 or a bug in whatever is reading those fields, and I am currently not sure which. This is unlikely to be isolated to APIC description fields, as much of the tag writing code is common among all fields, so I would rather not change any behaviour in EasyTAG until the bug is found.
I sneaked at the source: id3v24_tag.c:1010 looks interesting. But until now I did not dare to fix it myself. I guess an EasyTAG expert is more efficient in fixing this and won't add regressions either.
A unit test should be able to uncover the problem, but EasyTAG currently has none.
-- http://amigadave.com/
Attachment:
pgpfHcHKFSDuJ.pgp
Description: PGP signature