diff options
author | Peter Ross <pross@xvid.org> | 2021-09-15 20:15:42 +1000 |
---|---|---|
committer | Peter Ross <pross@xvid.org> | 2021-10-08 20:37:36 +1100 |
commit | 4ff884069787161138e604b7aae495d27c457287 (patch) | |
tree | 3384759a1bbecf088fd92d6a4b8e7f0109a61bd7 /libavformat/img2dec.c | |
parent | 60a9d3778f87a1e458abf89eaa66edd5ba298935 (diff) | |
download | ffmpeg-4ff884069787161138e604b7aae495d27c457287.tar.gz |
avformat/img2dec: add GEM Raster image demuxer
Signed-off-by: Peter Ross <pross@xvid.org>
Diffstat (limited to 'libavformat/img2dec.c')
-rw-r--r-- | libavformat/img2dec.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index ad4cc623c8..b535831e1c 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -1105,6 +1105,27 @@ static int photocd_probe(const AVProbeData *p) return AVPROBE_SCORE_MAX - 1; } +static int gem_probe(const AVProbeData *p) +{ + const uint8_t *b = p->buf; + int ret = 0; + if ( AV_RB16(b ) >= 1 && AV_RB16(b ) <= 3 && + AV_RB16(b + 2) >= 8 && AV_RB16(b + 2) <= 779 && + (AV_RB16(b + 4) > 0 || AV_RB16(b + 4) <= 8) && + (AV_RB16(b + 6) > 0 || AV_RB16(b + 6) <= 8) && + AV_RB16(b + 8) && + AV_RB16(b + 10) && + AV_RB16(b + 12) && + AV_RB16(b + 14)) { + ret = AVPROBE_SCORE_EXTENSION / 4; + if (AV_RN32(b + 16) == AV_RN32("STTT") || + AV_RN32(b + 16) == AV_RN32("TIMG") || + AV_RN32(b + 16) == AV_RN32("XIMG")) + ret += 1; + } + return ret; +} + #define IMAGEAUTO_DEMUXER(imgname, codecid)\ const AVInputFormat ff_image_ ## imgname ## _pipe_demuxer = {\ .name = AV_STRINGIFY(imgname) "_pipe",\ @@ -1123,6 +1144,7 @@ IMAGEAUTO_DEMUXER(cri, AV_CODEC_ID_CRI) IMAGEAUTO_DEMUXER(dds, AV_CODEC_ID_DDS) IMAGEAUTO_DEMUXER(dpx, AV_CODEC_ID_DPX) IMAGEAUTO_DEMUXER(exr, AV_CODEC_ID_EXR) +IMAGEAUTO_DEMUXER(gem, AV_CODEC_ID_GEM) IMAGEAUTO_DEMUXER(gif, AV_CODEC_ID_GIF) IMAGEAUTO_DEMUXER(j2k, AV_CODEC_ID_JPEG2000) IMAGEAUTO_DEMUXER(jpeg, AV_CODEC_ID_MJPEG) |