On 7/9/2016 12:29 PM, Martin Vignali wrote: > Hello, > > In attach patch to add decoding of .psd file (Photoshop file). > > PSD file can contain merge layers data at the end of the file (Image Data > Section) > > This patch add support for this kind of files, using uncompress data Image > Data Section > > Support Gray/A, and RGB/A with 8b or 16 bits by channel. > > > Samples can be found here : > > https://we.tl/GK6yQhUV8j > > > Comments welcome > > Martin > > > 0001-libavcodec-add-decoder-for-.psd-image-file.patch > > > From a4b9c1373cc62d1bb38997704a924ecfe78ee4b4 Mon Sep 17 00:00:00 2001 > From: Martin Vignali <martin.vign...@gmail.com> > Date: Sat, 9 Jul 2016 15:59:41 +0200 > Subject: [PATCH] libavcodec : add decoder for .psd image file. Decode the > Image Data Section (who contain merge picture) Support RGB/A and Grayscale/A > in 8bits and 16 bits by channel. Only support now, uncompress Image Data > Section. > > --- > Changelog | 2 +- > doc/general.texi | 2 + > libavcodec/Makefile | 1 + > libavcodec/allcodecs.c | 1 + > libavcodec/avcodec.h | 1 + > libavcodec/codec_desc.c | 7 ++ > libavcodec/psd.c | 310 > +++++++++++++++++++++++++++++++++++++++++++++++ > libavformat/Makefile | 1 + > libavformat/allformats.c | 1 + > libavformat/img2.c | 1 + > libavformat/img2dec.c | 10 ++ > libavformat/isom.c | 1 + > 12 files changed, 337 insertions(+), 1 deletion(-) > create mode 100644 libavcodec/psd.c >
[...] > diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c > index 9d6796f..a6a2148 100644 > --- a/libavformat/img2dec.c > +++ b/libavformat/img2dec.c > @@ -821,6 +821,15 @@ static int png_probe(AVProbeData *p) > return 0; > } > > +static int psd_probe(AVProbeData *p) > +{ > + const uint8_t *b = p->buf; > + > + if (AV_RL32(b) == 1397768760) if (AV_RL32(b) == MKTAG('S','P','B','8')) > + return AVPROBE_SCORE_EXTENSION + 1; > + return 0; > +} > + > static int sgi_probe(AVProbeData *p) > { > const uint8_t *b = p->buf; > @@ -946,6 +955,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) > diff --git a/libavformat/isom.c b/libavformat/isom.c > index d412f06..75fbf2f 100644 > --- a/libavformat/isom.c > +++ b/libavformat/isom.c > @@ -254,6 +254,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = { > { AV_CODEC_ID_SGI, MKTAG('s', 'g', 'i', ' ') }, /* SGI */ > { AV_CODEC_ID_DPX, MKTAG('d', 'p', 'x', ' ') }, /* DPX */ > { AV_CODEC_ID_EXR, MKTAG('e', 'x', 'r', ' ') }, /* OpenEXR */ > + { AV_CODEC_ID_EXR, MKTAG('p', 's', 'd', ' ') }, /* Psd */ You probably meant to use AV_CODEC_ID_PSD here. > > { AV_CODEC_ID_PRORES, MKTAG('a', 'p', 'c', 'h') }, /* Apple ProRes 422 > High Quality */ > { AV_CODEC_ID_PRORES, MKTAG('a', 'p', 'c', 'n') }, /* Apple ProRes 422 > Standard Definition */ > -- 1.9.3 (Apple Git-50) > Wait for a real review before resending the patch. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel