From patchwork Thu Mar 22 09:33:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 8098 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp595160jad; Thu, 22 Mar 2018 02:34:26 -0700 (PDT) X-Google-Smtp-Source: AG47ELuX5WPDJT0saDT64lKRKWPeLm5G/xILqlShRRYciHOVIA3IBjS8eJCqLRbYZHjc3oLOmrp+ X-Received: by 10.28.48.70 with SMTP id w67mr4878948wmw.47.1521711265982; Thu, 22 Mar 2018 02:34:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521711265; cv=none; d=google.com; s=arc-20160816; b=C70Gn5STR2PfR3s1w3yq1v5i3xsScsyjnKx9vN8MqTv49xuKvDTFVBw32Da7B1kfso TSKH6jZRVueaBJnmyIAUpXb/+/qAXkWCOu8q8XKO6AZ8RvXOgp4CDkYOH0fDYYfo3zyF XZACKLISot/3XpeEcMv2wk1qQjRO0FvcAIx2LFFFwWkHQWahzPuElufMnotWpIZKIjup FOlAVAIjgb9Qvi/INaQvQcgm0nUF/JUmxBK+I2nNpQj7AeMtVRFhrgiWgACVJ9yWAJHr 6EcHKN62wj+/H51rCPZwI/ICV1GTldDnugR0gIIAn9fqIea+6NL+UZCxUKGvebhq+iCV tQrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=1XEp/LXhvlyLFmCX1MlxG3cOIpCvf9S9q9ju7j1DV+s=; b=gX7qsVPQcH/a0dK5i2oixlcxOc0iehFHXtRTrIQLU+3nKSRMfSn9b0NW99HK9CYBqp LitfNhwiR74jWZeW5lMsyZYb6JyE9df+az3fppNIRoA+CBpSRV/GkgUdqn9egymeKlCs 94kkgt0WBXbKwYuJY7eEZ0zMl1T+7d4k1eG8dVSI5ghrnoBvco/iFtBBdcveTUf9eKxV k+ewhjHu4mvfrkSDgqUS8/cE1vCjdzyqcYpmoyRelIq2nCqIOHqr1VPOikrxCO3s1dcR QciHW6cIMBslQaKc677lAijZ4ANDXCFzfK2rZDL5K/L3g7meF/WaagEpjzbuxGNBUb/N E6vQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=nDBrozud; 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 y187si3999604wmy.241.2018.03.22.02.34.25; Thu, 22 Mar 2018 02:34:25 -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=nDBrozud; 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 E582168996D; Thu, 22 Mar 2018 11:34:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io0-f175.google.com (mail-io0-f175.google.com [209.85.223.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 982F8680293 for ; Thu, 22 Mar 2018 11:34:01 +0200 (EET) Received: by mail-io0-f175.google.com with SMTP id h23so10132872iob.11 for ; Thu, 22 Mar 2018 02:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=8O5JMkuUw+4u4lmpT+2pNceGzzQ4kFrq05VBCOX9/8U=; b=nDBrozudUyl/5IXiVo6xP9S79zVvLXWOndXOPoflGGrGe7tj3bZAlucCn8f6u58ohV ty/oSOJtMgyj35edfJ5LA5oF2T01/R74myzFQslekXD5uXbTBj8DaflzA/V6JWjxHdWt eWlN4VYBOse0Pu6bgFtDjIcIW32Nrc3D93pFJwqV44rNS89TFeeoYBHGbmsMs3mSN/e6 ICRx63SuBhzhnMwG8L3cHcyLwYdpmtU9c0dYDsTJIaj2VEqN7U16lp68YDVC0Jw31EUF TjNC2r7wIt6jfkhYYcudvjWo3DRzAvKsS4MkNTzH03hNfKoRk0THc6vRBtTRz/VxfH57 SYnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=8O5JMkuUw+4u4lmpT+2pNceGzzQ4kFrq05VBCOX9/8U=; b=gG9dvUOIk/M6UnKrK+YO/OeD8b3rX6MCBKgLyCXsSKJvH505DPCiWavkO8dqwRPj/L bKODm0ZptcWOQdIAwabI55gnw6XwkCa7Ip/CTjI88Fk/BD0HMJO5gpmkE46ZKO6zKIQL 5iOXdCkccvCFbqfVZTqZLKERckENSJ54jcmQXb1zEyifcy69Zhuiqc2rdfUutyjhXVYw TaEEQ+F8ph06dAYRUGL6cyXsSexmDbTAN6287iRrNP0JFyvfXLQcAKf5j9ccvXasTQ5O DiPOVrFL8S4KaDOempddTzhbIcdzRURYVS4seivCbLJ70bo4l3q5VCrw5SAl6QwRMhF9 jTDQ== X-Gm-Message-State: AElRT7F8j3FrSCQ7NWxlLXJnL9ICRQiCBEz/2G1MUcfF2K3B7WSije/a oWGBz5jv7wxaT74iwK9PIAARxK31 X-Received: by 10.107.3.41 with SMTP id 41mr4832316iod.17.1521711255513; Thu, 22 Mar 2018 02:34:15 -0700 (PDT) Received: from localhost.localdomain ([27.97.248.205]) by smtp.googlemail.com with ESMTPSA id f124sm1906814ioe.27.2018.03.22.02.34.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Mar 2018 02:34:15 -0700 (PDT) From: Gagandeep Singh To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Mar 2018 15:03:37 +0530 Message-Id: <20180322093337.2288-1-deepgagan231197@gmail.com> X-Mailer: git-send-email 2.14.1 Subject: [FFmpeg-devel] [PATCH] lavc/cfhd: added alpha decompanding in rgba12 ticket #6265 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 Cc: Gagandeep Singh MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" alpha decompanding curve added to post process the decoded alpha channel ticket #6265 --- libavcodec/cfhd.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libavcodec/cfhd.c b/libavcodec/cfhd.c index fd5555834b..e35732df45 100644 --- a/libavcodec/cfhd.c +++ b/libavcodec/cfhd.c @@ -37,6 +37,9 @@ #include "thread.h" #include "cfhd.h" +#define ALPHA_COMPAND_DC_OFFSET 256 +#define ALPHA_COMPAND_GAIN 9400 + enum CFHDParam { ChannelCount = 12, SubbandCount = 14, @@ -94,6 +97,20 @@ static inline int dequant_and_decompand(int level, int quantisation) FFSIGN(level) * quantisation; } +static inline void process_alpha(int16_t *alpha, int width) +{ + int i, channel; + for (i = 0; i < width; i++) { + channel = alpha[i]; + channel -= ALPHA_COMPAND_DC_OFFSET; + channel <<= 3; + channel *= ALPHA_COMPAND_GAIN; + channel >>= 16; + channel = av_clip_uintp2(channel, 12); + alpha[i] = channel; + } +} + static inline void filter(int16_t *output, ptrdiff_t out_stride, int16_t *low, ptrdiff_t low_stride, int16_t *high, ptrdiff_t high_stride, @@ -792,6 +809,8 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame, high = s->plane[plane].l_h[7]; for (i = 0; i < lowpass_height * 2; i++) { horiz_filter_clip(dst, low, high, lowpass_width, s->bpc); + if (act_plane == 3) + process_alpha(dst, lowpass_width * 2); low += lowpass_width; high += lowpass_width; dst += pic->linesize[act_plane] / 2;