[FFmpeg-cvslog] libavformat : add Photoshop PSD demuxer.
Martin Vignali
git at videolan.org
Wed Dec 14 04:22:06 EET 2016
ffmpeg | branch: master | Martin Vignali <martin.vignali at gmail.com> | Thu Nov 24 21:26:56 2016 +0100| [a534862b278a52c09ddf7d6e78e72397b6b4048b] | committer: Michael Niedermayer
libavformat : add Photoshop PSD demuxer.
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a534862b278a52c09ddf7d6e78e72397b6b4048b
---
libavformat/Makefile | 1 +
libavformat/allformats.c | 1 +
libavformat/img2dec.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+)
diff --git a/libavformat/Makefile b/libavformat/Makefile
index f93658d..f803d04 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -235,6 +235,7 @@ OBJS-$(CONFIG_IMAGE_PGM_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_PICTOR_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_PNG_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_PPM_PIPE_DEMUXER) += img2dec.o img2.o
+OBJS-$(CONFIG_IMAGE_PSD_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_QDRAW_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_SGI_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER) += img2dec.o img2.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 6a216ef..9d77b9c 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -366,6 +366,7 @@ void av_register_all(void)
REGISTER_DEMUXER (IMAGE_PICTOR_PIPE, image_pictor_pipe);
REGISTER_DEMUXER (IMAGE_PNG_PIPE, image_png_pipe);
REGISTER_DEMUXER (IMAGE_PPM_PIPE, image_ppm_pipe);
+ REGISTER_DEMUXER (IMAGE_PSD_PIPE, image_psd_pipe);
REGISTER_DEMUXER (IMAGE_QDRAW_PIPE, image_qdraw_pipe);
REGISTER_DEMUXER (IMAGE_SGI_PIPE, image_sgi_pipe);
REGISTER_DEMUXER (IMAGE_SUNRAST_PIPE, image_sunrast_pipe);
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index a920f46..f1a0e7f 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -822,6 +822,37 @@ static int png_probe(AVProbeData *p)
return 0;
}
+static int psd_probe(AVProbeData *p)
+{
+ const uint8_t *b = p->buf;
+ int ret = 0;
+ uint16_t color_mode;
+
+ if (AV_RL32(b) == MKTAG('8','B','P','S')) {
+ ret += 1;
+ } else {
+ return 0;
+ }
+
+ if ((b[4] == 0) && (b[5] == 1)) {/* version 1 is PSD, version 2 is PSB */
+ ret += 1;
+ } else {
+ return 0;
+ }
+
+ if ((AV_RL32(b+6) == 0) && (AV_RL16(b+10) == 0))/* reserved must be 0 */
+ ret += 1;
+
+ color_mode = AV_RB16(b+24);
+ if ((color_mode <= 9) && (color_mode != 5) && (color_mode != 6))
+ ret += 1;
+
+ if (ret)
+ return AVPROBE_SCORE_EXTENSION + ret;
+
+ return 0;
+}
+
static int sgi_probe(AVProbeData *p)
{
const uint8_t *b = p->buf;
@@ -947,6 +978,7 @@ IMAGEAUTO_DEMUXER(pgmyuv, AV_CODEC_ID_PGMYUV)
IMAGEAUTO_DEMUXER(pictor, AV_CODEC_ID_PICTOR)
IMAGEAUTO_DEMUXER(png, AV_CODEC_ID_PNG)
IMAGEAUTO_DEMUXER(ppm, AV_CODEC_ID_PPM)
+IMAGEAUTO_DEMUXER(psd, AV_CODEC_ID_PSD)
IMAGEAUTO_DEMUXER(qdraw, AV_CODEC_ID_QDRAW)
IMAGEAUTO_DEMUXER(sgi, AV_CODEC_ID_SGI)
IMAGEAUTO_DEMUXER(sunrast, AV_CODEC_ID_SUNRAST)
More information about the ffmpeg-cvslog
mailing list