From patchwork Fri Nov 18 17:27:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Vignali X-Patchwork-Id: 1475 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp204589vsb; Fri, 18 Nov 2016 09:27:34 -0800 (PST) X-Received: by 10.28.66.194 with SMTP id k63mr1017131wmi.140.1479490054691; Fri, 18 Nov 2016 09:27:34 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g1si3239034wmd.9.2016.11.18.09.27.32; Fri, 18 Nov 2016 09:27:34 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CD5BD6805D2; Fri, 18 Nov 2016 19:27:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi0-f44.google.com (mail-oi0-f44.google.com [209.85.218.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0D071689994 for ; Fri, 18 Nov 2016 19:27:22 +0200 (EET) Received: by mail-oi0-f44.google.com with SMTP id z62so95766270oiz.1 for ; Fri, 18 Nov 2016 09:27:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=aFmAa/+oIIOqmZHkr8VnFFKFQ9pksuYXtSuRTGDwL/k=; b=U3xtfcWADDI/2dX1YlB8QElIblSg9oklnJwh2SNphdbFLwAOzPEMuhtf+CDteEQmGU R7bhdFo2/UQbl496T6OB/4XR/Fq8/bW1sCLQSMbmGY5DJvW8JoRuYY1gIqIKAQnLGw9o 7ZZhjVu/tLMBFwlAF0aIrke4IDGOESoh6NTeSjczHVx0UsuaIDDpFPB/jJnqAJwbhKw/ 3/1baqXNcC4b49clVRkhDFR3fkRj9BykW63MEeVl+RPnK9a1iLzsU2ER/AY19dcrJgBB UB85wkxBm0A31n6qMJ3YIULSlArVG/VhOv4K0i4+LAQBYT5v4sWhvFLyQ3H5EMXggeYR SuzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=aFmAa/+oIIOqmZHkr8VnFFKFQ9pksuYXtSuRTGDwL/k=; b=HSEcT/z+yr5K6hy2c3tjSHGBfPZ/jLOLcX26pvjIKBkzFibqsRPuAAITNTlgWWU5lG NGjULfF9zKI7yqLPMrlZu+1JkHJOjxWHJRk8FvxB75qF/vC4hGX1S6RHxjRRKdE/ntqN KOASlfmyKkvo8PtMoDHOjZcJclpfDlAWE5qTmobV6Fl2EoRxSONyfFPw0QWfP/+l+CPZ jT11PzAsDVst7KFyxt35FZBpSxDXXQtFvxL9KOIdYzJLyqWBUsxG4DCgq8w3dUPZAIit iGNM/TFdc2o6f9YP3kQdsg1P7MsBGVv10EKHb/MTzDEmo5yEppdGfEGWtpq7SEh2HiLM PHBA== X-Gm-Message-State: AKaTC011i0GqO/Rk57LMgCatVTGM/MR7sEl4S4HNmCoUJYprCUbJFs8oDaCfM0dGFdUxJ0XWucznYPXPT7+rQA== X-Received: by 10.202.73.146 with SMTP id w140mr523777oia.207.1479490041593; Fri, 18 Nov 2016 09:27:21 -0800 (PST) MIME-Version: 1.0 Received: by 10.202.196.141 with HTTP; Fri, 18 Nov 2016 09:27:20 -0800 (PST) In-Reply-To: References: <20160723180734.GA4887@nb4> <20160725004647.GV4887@nb4> <20160802112826.GP5460@nb4> <20160805102546.GU5460@nb4> <20160807001755.GK5460@nb4> From: Martin Vignali Date: Fri, 18 Nov 2016 18:27:20 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: Re: [FFmpeg-devel] libavcodec : add psd image file decoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Hello, Did you see AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP, AV_PIX_FMT_GBRP16 > and AV_PIX_FMT_GBRAP16? > New patch in attach use AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP, AV_PIX_FMT_GBRP16BE and AV_PIX_FMT_GBRAP16BE for RGB mode I doesn't find a planar, for YA, so there is now two way to store data one for YA, and one for Gray and GBR. > And the more I think of it, the more likely it seems that (GBR) 9, 10, 12 > and 14 > could also be of use. > > Don't think GBR 9, 10, 12, 14, can be use now for psd file. Martin From 1b85107d53ab4e5748156e8e84cb8fbe26317700 Mon Sep 17 00:00:00 2001 From: Martin Vignali Date: Fri, 18 Nov 2016 18:18:36 +0100 Subject: [PATCH 2/2] libavformat : add Photoshop PSD file. --- libavformat/Makefile | 1 + libavformat/allformats.c | 1 + libavformat/img2dec.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 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..d668249 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -822,6 +822,39 @@ 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; + if (p->buf_size < 26) + return 0; + + 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 +980,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) -- 1.9.3 (Apple Git-50)