From patchwork Sat Jun 16 20:54:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 9425 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp2219813jad; Sat, 16 Jun 2018 13:54:19 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIl7qVdMEhW06uSCNZMv6YL4XBbwQkgJ3g2UwKmiEAlwow3DRE3OD+WI+7M9Csb7461S2Mh X-Received: by 2002:adf:cd85:: with SMTP id q5-v6mr5376478wrj.275.1529182459840; Sat, 16 Jun 2018 13:54:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529182459; cv=none; d=google.com; s=arc-20160816; b=zlBsKznWQFqX1h251yjPeC9Czf4lQf1rjFQm+8q42eCtcR3dYh/tQ/xLBQXt7fOlbh 5/7nmlIKYvACrohA1kABQ6uG6AQ20syVspxyKkyZTv8Ia2b31rgoKl+I/w/daCjZN4Xu rAYiTPTS2QA+G2n6LAtzalhCqCrZRV8g0VB87MdltOXh7MFDcXohnSzByuc7VHuDBJrt QKn3Wa2oyaa2fVqF45KwtfpidOPKFlDUJH0hGxZf+3xeX5hNUwk69h82Gen46hhfS27t d7BANco7vnpB4SNDzG0i85AGQIokjeT1uonmvugoNEEYbOcPvVJEuHmkjHJZz6J5Huff JSnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:delivered-to:arc-authentication-results; bh=z7C2pXeJ22i7VAWjL2xBROwdkGAOb4Q2SuZAZBcqm3U=; b=Egzu39p1wd5U8BNY7VZ/JLeXcUgjY0Hc8U3fSlGUuBcMEBeYnyKQcIXmibDpTPeVpt 20yONbMnyYik3IAtcpl8XJyVcidqzb4vmT0SVkDccGEM538TyXi52s1eWt2HVSF9rrYL 9h/mAoj+VqOa7tcvCSHNrteG47QZFCT2XiDEBZHP01jd9iMZ5j7UtGrHmKPAmoqB1Bg+ FTum0Iv05VueGqVNAY4uaGIWGczq0pBBDCDFvYAn7MrWRcnbxOpds+mmboaUUsvza+cr dqG2/pIdI9yohahQUDoDQdTchQdb7T834D63Eg+NfNYgnXZ1bqXFnMhoCJtvBS+fXrTW zGrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b="iL2/epq8"; 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 sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id m6-v6si3865098wme.147.2018.06.16.13.54.18; Sat, 16 Jun 2018 13:54:19 -0700 (PDT) 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 header.s=20161025 header.b="iL2/epq8"; 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 sp=QUARANTINE 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 3C56F689FF7; Sat, 16 Jun 2018 23:53:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f53.google.com (mail-it0-f53.google.com [209.85.214.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 624C1689FAB for ; Sat, 16 Jun 2018 23:53:19 +0300 (EEST) Received: by mail-it0-f53.google.com with SMTP id y127-v6so8144339itd.1 for ; Sat, 16 Jun 2018 13:54:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=THBxqtCJJ6zuE99YVNr+vCabT7GTFbl1YMIZ+3wP5qI=; b=iL2/epq8MknraIqTDdLqrBtoaTXgkiZTuiaYvooI9c1iNqfNh3BE6anmWqNZ8aOrDH bPMopSFATgCM8m93CnwLa93oZUlgEc7owrJ5h6pe64visUSRKBPqcz1JdKuEmu03pG2S SnDXvh0q2+4u0qyPxoptn7Zk1wy04bSu+J+xeQEykEXj72gWbCM6xV6pT79NvEM6i0Mg MkQX4sRUQPOzgVI3TxAn8R7oAE1XtPngsMJlB+hHiFJ2xNRDu6Z0ugzPSwU4+xiIIne8 9DQaRpiJrYfhl2C05eXPouwimBPNx79l18fAOai5M59e6iuEnKXGOpXk+gettl1PkGvc xaAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=THBxqtCJJ6zuE99YVNr+vCabT7GTFbl1YMIZ+3wP5qI=; b=XyhScVlbXLgRtRFdS2y6HQsplRrSwv7/bsfyxzQbVu75UaauAoyOBKu6zdnHmUkgBd GYjaH91NzRCS9VnZ60R8nLxr8x0tuzsgh6EV+GQO5qCbG5KLgRNdfDBRJ6QhO+KtYvLZ TmNHZO7/NQUb48Kzu6zs0ghPy4jv62sfjnsWfT0pi80wEIH/Zl/jHQ7qeJ8yaChtTCwh +wKfE6pS5if+lPNww73GFzZyU1i0qPGY25718kf0pJ6zysu763iD3J9obOD3QqBI/266 /4jDe9R9x8EfQgFjcdS+9JNH5yN++pAUMEzt/nvuUJrH8WBlBYRbxxS3a4ShDQ7kaLfW BwFw== X-Gm-Message-State: APt69E0ZKUycEN+tH3q/QBAjsKHFe+n3DkvdL0cxLcErixEHmKY1XeVY xQ/k7a+52/CK0Z1XlTQay/cnt+AQEoHyetrAuNE= X-Received: by 2002:a02:a198:: with SMTP id n24-v6mr5315648jah.61.1529182449542; Sat, 16 Jun 2018 13:54:09 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a02:b09b:0:0:0:0:0 with HTTP; Sat, 16 Jun 2018 13:54:08 -0700 (PDT) In-Reply-To: References: From: Carl Eugen Hoyos Date: Sat, 16 Jun 2018 22:54:08 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH]lavc/dpx: Support 12-bit packing method b (msbpad) 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" 2018-06-16 17:18 GMT+02:00, Carl Eugen Hoyos : > Attached patch allows to decode files that can be created with > GraphicsMagick: > $ gm convert input -depth 12 -define dpx:packing-method=b out.dpx Updated patch attached, hoping I understood Jerome's comment correctly. Please comment, Carl Eugen From 93c9de7a1ca638dfe7bb2a4108974e55ab13c9b8 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sat, 16 Jun 2018 17:11:58 +0200 Subject: [PATCH] lavc/dpx: Support 12-bit packing method b (msbpad). --- libavcodec/dpx.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/libavcodec/dpx.c b/libavcodec/dpx.c index 582a861..69d594b 100644 --- a/libavcodec/dpx.c +++ b/libavcodec/dpx.c @@ -170,10 +170,6 @@ static int decode_frame(AVCodecContext *avctx, packing = read16(&buf, endian); encoding = read16(&buf, endian); - if (packing > 1) { - avpriv_report_missing_feature(avctx, "Packing %d", packing); - return AVERROR_PATCHWELCOME; - } if (encoding) { avpriv_report_missing_feature(avctx, "Encoding %d", encoding); return AVERROR_PATCHWELCOME; @@ -225,7 +221,7 @@ static int decode_frame(AVCodecContext *avctx, stride = avctx->width * elements; break; case 10: - if (!packing) { + if (!packing || packing > 1) { av_log(avctx, AV_LOG_ERROR, "Packing to 32bit required\n"); return -1; } @@ -387,16 +383,16 @@ static int decode_frame(AVCodecContext *avctx, (uint16_t*)ptr[1], (uint16_t*)ptr[2], (uint16_t*)ptr[3]}; + int shift = packing == 1 ? 4 : 0; for (y = 0; y < avctx->width; y++) { if (packing) { - if (elements >= 3) - *dst[2]++ = read16(&buf, endian) >> 4; - *dst[0] = read16(&buf, endian) >> 4; - dst[0]++; - if (elements >= 2) - *dst[1]++ = read16(&buf, endian) >> 4; - if (elements == 4) - *dst[3]++ = read16(&buf, endian) >> 4; + if (elements >= 3) + *dst[2]++ = read16(&buf, endian) >> shift & 0xFFF; + *dst[0]++ = read16(&buf, endian) >> shift & 0xFFF; + if (elements >= 2) + *dst[1]++ = read16(&buf, endian) >> shift & 0xFFF; + if (elements == 4) + *dst[3]++ = read16(&buf, endian) >> shift & 0xFFF; } else { *dst[2]++ = read12in32(&buf, &rgbBuffer, &n_datum, endian); -- 1.7.10.4