id3v2: strip trailing spaces from APIC tag
authorwm4 <nfxjfg@googlemail.com>
Thu, 7 May 2015 21:56:37 +0000 (23:56 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 18 Jun 2015 17:15:49 +0000 (19:15 +0200)
The APIC description must be unique, and some ID3v2 tag writers add
spaces to write several APIC entries with the same description. The
trailing spaces simply serve as a way to disambiguate the description.
Do this so that API users do not have to special-case mp3 to fix this
cosmetic issue.

Requested-by: wm4
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/id3v2.c

index 52d8531..6eec60e 100644 (file)
@@ -535,6 +535,13 @@ static void free_apic(void *obj)
     av_freep(&apic);
 }
 
+static void rstrip_spaces(char *buf)
+{
+    size_t len = strlen(buf);
+    while (len > 0 && buf[len - 1] == ' ')
+        buf[--len] = 0;
+}
+
 static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
                       const char *tag, ID3v2ExtraMeta **extra_meta,
                       int isv34)
@@ -608,6 +615,10 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
     new_extra->next = *extra_meta;
     *extra_meta     = new_extra;
 
+    // The description must be unique, and some ID3v2 tag writers add spaces
+    // to write several APIC entries with the same description.
+    rstrip_spaces(apic->description);
+
     return;
 
 fail: