From b6543421f5cb911d6451dec449783329431ce131 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Mon, 18 Aug 2014 13:36:05 +0000 Subject: avformat/iff: rudimentary support for animations For now only first frame is decoded. Signed-off-by: Paul B Mahol --- libavformat/iff.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavformat/iff.c b/libavformat/iff.c index a46bc92cea..8e2030364a 100644 --- a/libavformat/iff.c +++ b/libavformat/iff.c @@ -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,6 +360,10 @@ 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; -- cgit v1.2.3