From patchwork Sat Jun 16 15:18:15 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: 9423 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp1990648jad; Sat, 16 Jun 2018 08:18:26 -0700 (PDT) X-Google-Smtp-Source: ADUXVKI9b2FGtQLlO+ukTrt1l1EnQnZc5o8DQNFXO6FRGBZhN7I67iIQtLCZdglIv0Uh5TdWUgTm X-Received: by 2002:a1c:8941:: with SMTP id l62-v6mr4059323wmd.26.1529162306092; Sat, 16 Jun 2018 08:18:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529162306; cv=none; d=google.com; s=arc-20160816; b=rCFKDJ1SsNeQRsVGvqKQ+7anZ5SGqHLxj+4nXy28g9N3ZLpULuuG1gDRYacE/JjZx/ eZTb4I97QdoMLj8Achp1onY0eHeY4Zms+i1VuC5g+vGXopYfkRluM7DLtxDFD58y5U0i GjOXMYyox+VyWJGMNASIueWjlZE3lYaY893feZevnLBk1J9/w7b3sLb7ITiS85Ki81nd 7dG3XHgLJH2fQiGLNms2rYInqnYrHeSpb4KH3+6ApgGF/tXO1X/szKpxZx8xYMm7bEo1 RSdt/+3tTWuG81B6ccL3ThQqNyY16cGugbdPQDFvpQx+YtB8oEhJFM5KxOJItWiOZhKW szSA== 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:mime-version:dkim-signature:delivered-to :arc-authentication-results; bh=TtBrC9Uwvf/Ku+3svrUwDANLq14yBeTbacaO/Pc75fI=; b=sfgcwGuVQHQocQ/Cg7vIOTgkbpJjXkeipMjRvYPHWz4/+X8bntPY8/ihVqNVDiJyTk 2JZC5uVWRQY7ouonLCDiFzT6ChV9BM7NsI5Nfa5eP2LFVJMZL/F+xI2KJwAvKUynPkbN JGXxtoWoVvnS198paR9y55deERLJtswC8zudIRlUrU1gs1m33BIgWB66+rNIXHdWysYr XhLF/4FxLEsM6zap37FzT6QR+VPNx7W4b50+Eshm7oZi0ZNYXn+UY8dacW8M6xqNaB9U UYgPaesV3Dgz99DvXVkoPjbuym+4k/aFhr3dVfJHSstxwIQtPefq1KpMomqG5TKsSW47 lgIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=HRjoeoPf; 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 f9-v6si1587842wro.256.2018.06.16.08.18.25; Sat, 16 Jun 2018 08:18:26 -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=HRjoeoPf; 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 EA5DF689C7E; Sat, 16 Jun 2018 18:17:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io0-f170.google.com (mail-io0-f170.google.com [209.85.223.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA405689923 for ; Sat, 16 Jun 2018 18:17:25 +0300 (EEST) Received: by mail-io0-f170.google.com with SMTP id r24-v6so13241835ioh.9 for ; Sat, 16 Jun 2018 08:18:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=E9xrMTkDox/Jop4nLkNuteMpTDpzoJjilGmG71ycBS0=; b=HRjoeoPfjc22+05w90TbSwiM0wXrOe1Gn+m15jicTml/vCTCQIE4BHcArnYZba7a51 JWqBR0dnQ1DycHDNUsR4U3gULIp0vgaROvzGuzVABIg8J9tunORA6WrZxKuOwlxCjf9J rtYqimQXQjxrGRU0ZSOHoZf+RBvS+WhW6eqdbDJ6kgSJmzfjxc8S+8zzfNUrwlhhzmnf TwhUEv3NAQOffr5H7IzraKQSIiV6IZSb2uhSBFGXuQ0bLRxGtdW8dvcvE6vKJqqNatU3 mMF7RWhTsOeGC0fgfTA1F0DOaf7h+JkXwPWQyVh7uC2VyOBgVohI5+r8+fUsYdawTuvT WS/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=E9xrMTkDox/Jop4nLkNuteMpTDpzoJjilGmG71ycBS0=; b=jWnU1h5fDJq9FScLsoePkO3q64XoehY3nmu1XjF2ZlRiYxhgIw5OeoJBuJWa8+NRUs RVsrb2erjcm4E+oq3Vsde0fJefKBWnZfyqV6Gq1k1gjxZ94oDlVUkwVshQk2e1qUPYhF oZkkyYoZwylHn6epINCjC44XJRGGsIjg0VNbdBggZEdjATEIiBY1dgwTuBMyvMdn8Fvu yqgzv859Gtv6577i81FdmHNRGAt9UN03suEf6quYiwDLhm4IBSX4Hhgu3IKDAw6xvBsh ecVlZJYU4UYA753roACaTmqYfMNfJCCuCgDO2zQkrwtjyb4GIlIy41HSsU6Gjk5C2j5S F8Pg== X-Gm-Message-State: APt69E22vCM1AS3i/ACIFdOMGuOuo1W65gI8y9D2GAqiSxni4InDqojr skJ1763EiG3aZRoc/OR0m/DvCfTYxKMiDUP61Mg= X-Received: by 2002:a6b:5507:: with SMTP id j7-v6mr4933750iob.12.1529162295950; Sat, 16 Jun 2018 08:18:15 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a02:b09b:0:0:0:0:0 with HTTP; Sat, 16 Jun 2018 08:18:15 -0700 (PDT) From: Carl Eugen Hoyos Date: Sat, 16 Jun 2018 17:18:15 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [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" Hi! Attached patch allows to decode files that can be created with GraphicsMagick: $ gm convert input -depth 12 -define dpx:packing-method=b out.dpx 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; + *dst[0]++ = read16(&buf, endian) >> shift; + if (elements >= 2) + *dst[1]++ = read16(&buf, endian) >> shift; + if (elements == 4) + *dst[3]++ = read16(&buf, endian) >> shift; } else { *dst[2]++ = read12in32(&buf, &rgbBuffer, &n_datum, endian); -- 1.7.10.4