Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / ffmpeg / libavformat / iff.c
index 62f0b83..8e20303 100644 (file)
@@ -59,6 +59,7 @@
 #define ID_RGB8       MKTAG('R','G','B','8')
 #define ID_RGBN       MKTAG('R','G','B','N')
 #define ID_DSD        MKTAG('D','S','D',' ')
+#define ID_ANIM       MKTAG('A','N','I','M')
 
 #define ID_FORM       MKTAG('F','O','R','M')
 #define ID_FRM8       MKTAG('F','R','M','8')
@@ -147,6 +148,7 @@ static int iff_probe(AVProbeData *p)
           AV_RL32(d+8) == ID_ILBM ||
           AV_RL32(d+8) == ID_RGB8 ||
           AV_RL32(d+8) == ID_RGB8 ||
+          AV_RL32(d+8) == ID_ANIM ||
           AV_RL32(d+8) == ID_RGBN)) ||
          (AV_RL32(d) == ID_FRM8 && AV_RL32(d+12) == ID_DSD))
         return AVPROBE_SCORE_MAX;
@@ -358,12 +360,16 @@ static int iff_read_header(AVFormatContext *s)
     avio_skip(pb, iff->is_64bit ? 8 : 4);
     // codec_tag used by ByteRun1 decoder to distinguish progressive (PBM) and interlaced (ILBM) content
     st->codec->codec_tag = avio_rl32(pb);
+    if (st->codec->codec_tag == ID_ANIM) {
+        avio_skip(pb, 8);
+        st->codec->codec_tag = avio_rl32(pb);
+    }
     iff->bitmap_compression = -1;
     iff->svx8_compression = -1;
     iff->maud_bits = -1;
     iff->maud_compression = -1;
 
-    while(!url_feof(pb)) {
+    while(!avio_feof(pb)) {
         uint64_t orig_pos;
         int res;
         const char *metadata_tag = NULL;
@@ -584,7 +590,7 @@ static int iff_read_header(AVFormatContext *s)
                     }
                     break;
                 case 2:
-                    tag = ref < FF_ARRAY_ELEMS(dsd_source_comment) ? dsd_history_comment[ref] : "source_comment";
+                    tag = ref < FF_ARRAY_ELEMS(dsd_source_comment) ? dsd_source_comment[ref] : "source_comment";
                     break;
                 case 3:
                     tag = ref < FF_ARRAY_ELEMS(dsd_history_comment) ? dsd_history_comment[ref] : "file_history";