summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorParas Chadha <paraschadha18@gmail.com>2017-03-12 02:31:23 +0530
committerPaul B Mahol <onemda@gmail.com>2017-03-12 18:24:49 +0100
commit5dab7b91adf65eb35d4ae0e76fbd988d55b0d764 (patch)
treeb679e255694b6337d777d3be7a2d5e3762c03f9a /libavformat
parentb9acc7fbd9fe6aeb76c9c91a65f1f5dab141fce4 (diff)
avcodec: add XPM decoder and demuxer
Signed-off-by: Paras Chadha <paraschadha18@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/Makefile1
-rw-r--r--libavformat/allformats.c1
-rw-r--r--libavformat/img2.c1
-rw-r--r--libavformat/img2dec.c10
4 files changed, 13 insertions, 0 deletions
diff --git a/libavformat/Makefile b/libavformat/Makefile
index fc2d76067b..f56ef16532 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -241,6 +241,7 @@ OBJS-$(CONFIG_IMAGE_SGI_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_TIFF_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_WEBP_PIPE_DEMUXER) += img2dec.o img2.o
+OBJS-$(CONFIG_IMAGE_XPM_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_INGENIENT_DEMUXER) += ingenientdec.o rawdec.o
OBJS-$(CONFIG_IPMOVIE_DEMUXER) += ipmovie.o
OBJS-$(CONFIG_IRCAM_DEMUXER) += ircamdec.o ircam.o pcm.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 132e58b8b9..09e62c3cfc 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -372,6 +372,7 @@ static void register_all(void)
REGISTER_DEMUXER (IMAGE_SUNRAST_PIPE, image_sunrast_pipe);
REGISTER_DEMUXER (IMAGE_TIFF_PIPE, image_tiff_pipe);
REGISTER_DEMUXER (IMAGE_WEBP_PIPE, image_webp_pipe);
+ REGISTER_DEMUXER (IMAGE_XPM_PIPE, image_xpm_pipe);
/* external libraries */
REGISTER_MUXER (CHROMAPRINT, chromaprint);
diff --git a/libavformat/img2.c b/libavformat/img2.c
index f9f53ff558..29df4f04e2 100644
--- a/libavformat/img2.c
+++ b/libavformat/img2.c
@@ -75,6 +75,7 @@ const IdStrMap ff_img_tags[] = {
{ AV_CODEC_ID_V210X, "yuv10" },
{ AV_CODEC_ID_WEBP, "webp" },
{ AV_CODEC_ID_XBM, "xbm" },
+ { AV_CODEC_ID_XPM, "xpm" },
{ AV_CODEC_ID_XFACE, "xface" },
{ AV_CODEC_ID_XWD, "xwd" },
{ AV_CODEC_ID_NONE, NULL }
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index c3c2cf3640..b454071168 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -943,6 +943,15 @@ static int pam_probe(AVProbeData *p)
return pnm_magic_check(p, 7) ? pnm_probe(p) : 0;
}
+static int xpm_probe(AVProbeData *p)
+{
+ const uint8_t *b = p->buf;
+
+ if (AV_RB64(b) == 0x2f2a2058504d202a && *(b+8) == '/')
+ return AVPROBE_SCORE_MAX - 1;
+ return 0;
+}
+
#define IMAGEAUTO_DEMUXER(imgname, codecid)\
static const AVClass imgname ## _class = {\
.class_name = AV_STRINGIFY(imgname) " demuxer",\
@@ -983,3 +992,4 @@ IMAGEAUTO_DEMUXER(sgi, AV_CODEC_ID_SGI)
IMAGEAUTO_DEMUXER(sunrast, AV_CODEC_ID_SUNRAST)
IMAGEAUTO_DEMUXER(tiff, AV_CODEC_ID_TIFF)
IMAGEAUTO_DEMUXER(webp, AV_CODEC_ID_WEBP)
+IMAGEAUTO_DEMUXER(xpm, AV_CODEC_ID_XPM)