id3v2: convert metadata after all the tags were read
authorAnton Khirnov <anton@khirnov.net>
Thu, 20 Jan 2011 08:35:59 +0000 (08:35 +0000)
committerMans Rullgard <mans@mansr.com>
Thu, 20 Jan 2011 13:36:28 +0000 (13:36 +0000)
Signed-off-by: Mans Rullgard <mans@mansr.com>
libavformat/id3v2.c

index 9cfff27..4da7ec6 100644 (file)
@@ -231,7 +231,6 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t
         /* Skip to end of tag */
         url_fseek(s->pb, next, SEEK_SET);
     }
-    ff_metadata_conv(&s->metadata, NULL, ff_id3v2_metadata_conv);
 
     if (len > 0) {
         /* Skip padding */
@@ -261,7 +260,7 @@ void ff_id3v2_read(AVFormatContext *s, const char *magic)
         off = url_ftell(s->pb);
         ret = get_buffer(s->pb, buf, ID3v2_HEADER_SIZE);
         if (ret != ID3v2_HEADER_SIZE)
-            return;
+            break;
             found_header = ff_id3v2_match(buf, magic);
             if (found_header) {
             /* parse ID3v2 header */
@@ -274,6 +273,7 @@ void ff_id3v2_read(AVFormatContext *s, const char *magic)
             url_fseek(s->pb, off, SEEK_SET);
         }
     } while (found_header);
+    ff_metadata_conv(&s->metadata, NULL, ff_id3v2_metadata_conv);
 }
 
 const AVMetadataConv ff_id3v2_metadata_conv[] = {