]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/aiffdec.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavformat / aiffdec.c
index 4083316450db677fa5227681ef4fd17daf68421b..f89ed93dd51d744327d05bd3ebf1988f26750bcc 100644 (file)
@@ -26,6 +26,7 @@
 #include "pcm.h"
 #include "aiff.h"
 #include "isom.h"
+#include "id3v2.h"
 
 #define AIFF                    0
 #define AIFF_C_VERSION1         0xA2805140
@@ -195,6 +196,7 @@ static int aiff_read_header(AVFormatContext *s)
     AVIOContext *pb = s->pb;
     AVStream * st;
     AIFFInputContext *aiff = s->priv_data;
+    ID3v2ExtraMeta *id3v2_extra_meta = NULL;
 
     /* check FORM header */
     filesize = get_tag(pb, &tag);
@@ -231,6 +233,10 @@ static int aiff_read_header(AVFormatContext *s)
             if (offset > 0) // COMM is after SSND
                 goto got_sound;
             break;
+        case MKTAG('I', 'D', '3', ' '):
+            ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta);
+            ff_id3v2_free_extra_meta(&id3v2_extra_meta);
+            break;
         case MKTAG('F', 'V', 'E', 'R'):     /* Version chunk */
             version = avio_rb32(pb);
             break;
@@ -269,9 +275,8 @@ static int aiff_read_header(AVFormatContext *s)
             avio_read(pb, st->codec->extradata, size);
             break;
         case MKTAG('C','H','A','N'):
-            if (size < 12)
+            if(ff_mov_read_chan(s, st, size) < 0)
                 return AVERROR_INVALIDDATA;
-            ff_mov_read_chan(s, size, st->codec);
             break;
         default: /* Jump */
             if (size & 1)   /* Always even aligned */