[FFmpeg-devel] [PATCH 2/2] avformat/img2dec: add GEM Raster image demuxer
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Thu Jan 20 14:48:23 EET 2022
On Fri, Sep 17, 2021 at 10:39 AM Peter Ross <pross at xvid.org> wrote:
>
> ---
> 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) &&
The above two lines are tautologically true, suggesting that something
else was intended here.
Looking at the decoder shows that this is the aspect ratio, so
checking for them being >0 makes sense,
yet the checks for them being <= 8 doesn't.
(This has been reported in ticket #9605.)
> + 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;
> +}
> +
More information about the ffmpeg-devel
mailing list