[FFmpeg-devel] [PATCH 2/2] avformat/img2dec: add GEM Raster image demuxer

Peter Ross pross at xvid.org
Fri Sep 17 11:39:01 EEST 2021


---
 libavformat/allformats.c |  1 +
 libavformat/img2.c       |  3 +++
 libavformat/img2dec.c    | 22 ++++++++++++++++++++++
 3 files changed, 26 insertions(+)

diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 5471f7c16f..99d8c91e00 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -499,6 +499,7 @@ extern const AVInputFormat  ff_image_cri_pipe_demuxer;
 extern const AVInputFormat  ff_image_dds_pipe_demuxer;
 extern const AVInputFormat  ff_image_dpx_pipe_demuxer;
 extern const AVInputFormat  ff_image_exr_pipe_demuxer;
+extern const AVInputFormat  ff_image_gem_pipe_demuxer;
 extern const AVInputFormat  ff_image_gif_pipe_demuxer;
 extern const AVInputFormat  ff_image_j2k_pipe_demuxer;
 extern const AVInputFormat  ff_image_jpeg_pipe_demuxer;
diff --git a/libavformat/img2.c b/libavformat/img2.c
index 6bdd7efe26..4153102c92 100644
--- a/libavformat/img2.c
+++ b/libavformat/img2.c
@@ -84,6 +84,9 @@ const IdStrMap ff_img_tags[] = {
     { AV_CODEC_ID_XPM,        "xpm"      },
     { AV_CODEC_ID_XFACE,      "xface"    },
     { AV_CODEC_ID_XWD,        "xwd"      },
+    { AV_CODEC_ID_GEM,        "img"      },
+    { AV_CODEC_ID_GEM,        "ximg"     },
+    { AV_CODEC_ID_GEM,        "timg"     },
     { AV_CODEC_ID_NONE,       NULL       }
 };
 
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 485444ed31..acfd5910de 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)
-- 
2.33.0

-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20210917/f7191d5f/attachment.sig>


More information about the ffmpeg-devel mailing list