The definition of the attached picture frame type
changed slightly but crucially between v2.2 (PIC) and
v2.3 (APIC). In PIC, there is an "Image Format" field
that is a fixed three bytes long. In APIC, there is a
"MIME Type" field that is a null-terminated string.
Currently, jid3lib treats both PIC and APIC as APIC.
This means that the "Image Format" and any fields
following it will likely be incorrectly parsed.
The attached fix consists of three full java files and
a patch:
- AbstractPictureFrameBody.java is an abstract
superclass containing most of the functionality
presently found in FrameBodyAPIC.java.
- FrameBodyAPIC.java replaces the existing class of
that name with a subclass of AbstractPictureFrameBody.
- FrameBodyPIC.java replaces the existing (but
apparently unused) class of that name with a subclass
of AbstractPictureFrameBody.
- AbstractID3v2Frame.java.patch alters that class so
that FrameBodyPIC instances are created instead of
FrameBodyAPICs when appropriate. (The patch is against
version 0.5 of jid3lib.)
Suggested fix (three source files & a patch)