[FFmpeg-devel] [PATCH] lavf/aiffenc: write APIC frames at the beginning of ID3 metadata

Matthieu Bouron matthieu.bouron at gmail.com
Tue May 28 19:35:42 CEST 2013

Fixes covert art display for iTunes, Traktor, Serato and Torq.

Hello there,

Actually, ID3 covert arts (APIC frames) in AIFF files are not
recognized/displayed by iTunes, Traktor, Serato and Torq
softwares. This patch fix this issue by writing APIC frames at
the beginning of the ID3 metadata.

To be honest i have no idea why this softwares do not recognize
the APIC frames when there are written at the end of the ID3 metadata.
Looking at the differences between a valid file and the file generated by
ffmpeg did not help me. The main difference was the encoding choosen for
the frame description and forcing it to ISO 8859-1 did not help.

The other difference was that the APIC frames were at the beginning of
the ID3 data.

Nonetheless, it does the trick. Please comment,

 libavformat/aiffenc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/aiffenc.c b/libavformat/aiffenc.c
index 7c0b4fb..e74c8c5 100644
--- a/libavformat/aiffenc.c
+++ b/libavformat/aiffenc.c
@@ -58,12 +58,12 @@ static int put_id3v2_tags(AVFormatContext *s, AIFFOutputContext *aiff)
     pos = avio_tell(pb);
     ff_id3v2_start(&id3v2, pb, aiff->id3v2_version, ID3v2_DEFAULT_MAGIC);
-    ff_id3v2_write_metadata(s, &id3v2);
     while (pict_list) {
         if ((ret = ff_id3v2_write_apic(s, &id3v2, &pict_list->pkt)) < 0)
             return ret;
         pict_list = pict_list->next;
+    ff_id3v2_write_metadata(s, &id3v2);
     ff_id3v2_finish(&id3v2, pb);
     end = avio_tell(pb);

More information about the ffmpeg-devel mailing list