From patchwork Thu Nov 17 20:30:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Vignali X-Patchwork-Id: 1459 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp983375vsb; Thu, 17 Nov 2016 12:30:50 -0800 (PST) X-Received: by 10.194.174.229 with SMTP id bv5mr3382315wjc.21.1479414650793; Thu, 17 Nov 2016 12:30:50 -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 m88si12804792wmc.167.2016.11.17.12.30.27; Thu, 17 Nov 2016 12:30:50 -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 58F04689FAA; Thu, 17 Nov 2016 22:30:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi0-f47.google.com (mail-oi0-f47.google.com [209.85.218.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A18D9689F75 for ; Thu, 17 Nov 2016 22:30:17 +0200 (EET) Received: by mail-oi0-f47.google.com with SMTP id v84so66590801oie.3 for ; Thu, 17 Nov 2016 12:30:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=ljDIcsx1lGUJ/eXtyM7dSrcLIa0x1iLFCe0IumZ2BB8=; b=wu44BqHmNhXSkpbZx0qLe6iUPgZnHehRsxtqO5QUxU1MpbKW7I9aqGd+9MXBta+IUi N2LxzRYt60bUSA8FJHpGbI2khpwbB+t7kwH5yXybHvHsinKwdUml3rhnFb4qHFMDUvhr VcseRwK46fAIk0ziUu1SgpOqBTf2JtJ9mohLyF8Q7xLyvngwE/zIpqPoJ5a2nXP/+yuO tK9tlCf6ruSLbnqxwCHamVKJQlPMCC4QHzRzOsnuKo9bclOsauII83R93aK4207W+oEY uYJ50w2oGN54dN8xVgz4EEg1U5s0fEfLs+bfaycrnEE1UWlszLWKyMP3zY+5WX4alKeM jBrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ljDIcsx1lGUJ/eXtyM7dSrcLIa0x1iLFCe0IumZ2BB8=; b=HXaAu6Q/lAXCoQpsl6Apt+gzK8HsEVeYdyIrdnAc3Rq7UR1vzgh1lEUx9nHjLfIGxf 50oEoHoZ0piFsofWO6oyVK5KTlzHZATG3nhyPBpaaB5z47CUKIG3bj/Kjd8PL4zJgkDV kJRwPJ2T1c7PVwHBVe8il+QFisgT3VqrzRPQvCKoU8p0LvgBvoNgopiy2aS1TQ0EhHAN tBgac8pwG1M1kKoT6+ZPh/GraJCCeUu16sdYpOSXVthR6BQYUL2lshbnA58EBKxLxVMj DE1qMMtHpW7Ln7mhU5sV68YtPAp7K6d2yxbjLVkGYiLL+LUuc25zsOktwMiLbnmDDWUM eowA== X-Gm-Message-State: AKaTC00V9ZTy+VBR2n8my6Zj9Lvoxn9GPQ2OJFTeLSuU1iNRbk8uO+76599bJgyx9DlQs5RxXF87o+SyJ7bcUA== X-Received: by 10.157.14.240 with SMTP id 103mr2279406otj.133.1479414617307; Thu, 17 Nov 2016 12:30:17 -0800 (PST) MIME-Version: 1.0 Received: by 10.202.196.141 with HTTP; Thu, 17 Nov 2016 12:30:16 -0800 (PST) From: Martin Vignali Date: Thu, 17 Nov 2016 21:30:16 +0100 Message-ID: To: FFmpeg development discussions and patches , Andreas Cadhalpun X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] libavcodec/exr : add support for uint32 channel decoding with pxr24 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, In attach a patch, who fix the decoding of half (or float) layer with pxr24 compression, when there is also an uint32 layer. The uint32 layer is still not decodable. Found by Andreas Cadhalpun sample can be found here : https://we.tl/ULGDVxQXGy Comments welcome Martin From c70a83c38cd9a9434e6434d60dadf0a1c809e074 Mon Sep 17 00:00:00 2001 From: Martin Vignali Date: Thu, 17 Nov 2016 21:24:42 +0100 Subject: [PATCH 2/3] libavcodec/exr : add support for uint32 channel decoding with pxr24 Doesn't decode the uint32 layer, but decode the half part of the file. --- libavcodec/exr.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libavcodec/exr.c b/libavcodec/exr.c index f02337e..7852727 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -882,6 +882,22 @@ static int pxr24_uncompress(EXRContext *s, const uint8_t *src, bytestream_put_le16(&out, pixel); } break; + case EXR_UINT: + ptr[0] = in; + ptr[1] = ptr[0] + s->xdelta; + ptr[2] = ptr[1] + s->xdelta; + ptr[3] = ptr[2] + s->xdelta; + in = ptr[3] + s->xdelta; + + for (j = 0; j < s->xdelta; ++j) { + uint32_t diff = (*(ptr[0]++) << 24) | + (*(ptr[1]++) << 16) | + (*(ptr[2]++) << 8 ) | + (*(ptr[3]++)); + pixel += diff; + bytestream_put_le32(&out, pixel); + } + break; default: return AVERROR_INVALIDDATA; } -- 1.9.3 (Apple Git-50)