From patchwork Wed Mar 21 16:49:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 8075 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp5351819jad; Wed, 21 Mar 2018 09:50:46 -0700 (PDT) X-Google-Smtp-Source: AG47ELs8Z5589jK5y6bZDXfUiQwu6R8wb3aIbw56OEQiXiBLROGkTllnMlP+LoOCV5aM0EjWbvxG X-Received: by 10.28.4.86 with SMTP id 83mr3029786wme.13.1521651046430; Wed, 21 Mar 2018 09:50:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521651046; cv=none; d=google.com; s=arc-20160816; b=xa/cvsDCJdjZK6q+op8RbDq8yls/yhSJELckqHx6kKfAV4UIxvuIYpdkw8fS45RwMH 8tly0dw1DVpXWcvravyGXIpR7ozh+o8ThSwXCqwdohmbN+dN8e4U1b4zAXeYZPBH6HnX UEDU/UKgXxQALnzuGOeyvTma0kLHLstJjIoZPGF1zW6wzvnZ3+YAEW1ZARbiq1+WzMMu CBs6v+mIRlz3SZ1wssXYxzu9FOufe2dddYwWy2m2BeBM0IuFrMcdETcIp3lpP78qKSou ZgZyx9djWCYIJAhLscsB/up13M8RMCcROD8PXnkg7X5rFgbQEptj5JxkM+K/nenbXw6u EfbQ== 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=DMmeVr11shYNssk54u05RyD8QbKq6U0iVYri7XO/SfU=; b=Al6bU4hJ4Fx38RGifqUHqNR5eJ5yby+qHLfiDHcTq3GE6cxhRUyxX0R6Avc4GxnWTR KxVd3DtAvJ2n0wXMnmDGIkQaoaFep9oC2alhcc05y02TUFVaiOTe7k50tPWwovR9iJpf sEfhbH/g2Ig6S8uMFBlJYemssMp0zzQWC83fH0KvXao4SVMjj7FGculORBFZND1cQ+KZ eFtpf4XXHgQ6cBvTOV5rO/K3VLaoSq5Q85HfNGqgemDFGd5cbKI1YbslaAd8KElfAgqs Mb3LUIPVpUik8zRHsPo1Azl405RhfjgOTHqbjkyzZEb1NT6oIji/15xQ1/Z5m/eRIv3a Q1Vg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ENpm5xMa; 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 j13si3563811wrb.373.2018.03.21.09.50.46; Wed, 21 Mar 2018 09:50:46 -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=ENpm5xMa; 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 D682E680578; Wed, 21 Mar 2018 18:50:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f54.google.com (mail-pg0-f54.google.com [74.125.83.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1294D68031D for ; Wed, 21 Mar 2018 18:50:24 +0200 (EET) Received: by mail-pg0-f54.google.com with SMTP id l4so2148078pgp.11 for ; Wed, 21 Mar 2018 09:50:39 -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=dcxzZUp9zlExe59AnJgRhEYNjIrgdrqfTSq2C3pqsRk=; b=ENpm5xMatisyWMrhCj3VMOrof9m7UY3AbzVF4MWl1mVf6X9zMWC9Ih+wOVkFKp/opZ uMCgx6NkASGLfN5uKH7+zmK08u6FtyNEAzLx/FrRBItoKHmYBbJaL43xhQOoLM5v6eyz qkpBm0pEvzBYzmfz4Bvcx8xt3NLAgwAkSIrGYO0eGVzixbohggCTfu6inZkVrsCE9f+F aACIUvpDvWAOx5vw+d9fVpwvTykK94zD5Timm+N8T6UdpS7a+GlDDno+zZuNcgwTJxsr RS5JZYyIVDlBJAHbpW6FRKIwf/JAgPW/PBxhzbT3vOE5wzV2Q6AC70Cw/CYkHPMuIayO qoaA== 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=dcxzZUp9zlExe59AnJgRhEYNjIrgdrqfTSq2C3pqsRk=; b=rAeRyX5dEMNJIVzJpgKFKBFd08t7uzklWzJI0MoiXnFt4tNY4Dzu59EFB+yZ+/VSDM /UM1O8fDmaXs7WHPEwc73pzNk6cEqYGHP/Kh31pjcGxzg1kG1iH2DrI8P40QQgF9qOOL gf6w86lWcvrIbuqPaPDn/0pI4qJ3hUp1f93vX2wfFyDTc4i+IagnRjgctkzkG1o8BbX2 1mjpbnZypz7ZA26PHLdZvx2o4QcuzgdlDjIXobncuBWKG05062L83L6OiPGLdzFifqL/ fzdwS/QOTSiyEm8IeRZ5k5xwUJRJgx7RghGA29MIkg8P1AZBISlpahuDZog5f3k2tOaT KrAA== X-Gm-Message-State: AElRT7FMlpHyIMD3KO29ldolRWRTw58SJMbHysZdKkbTtqel1Jxeea/S 7Zc4a3fThvROfEHFfdMUqio6n8Xi X-Received: by 10.101.100.200 with SMTP id t8mr1187368pgv.120.1521651036895; Wed, 21 Mar 2018 09:50:36 -0700 (PDT) Received: from localhost.localdomain ([2402:8100:20bc:b6df:f021:7273:96a7:e5a1]) by smtp.googlemail.com with ESMTPSA id g26sm8836317pfk.173.2018.03.21.09.50.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Mar 2018 09:50:36 -0700 (PDT) From: Gagandeep Singh To: ffmpeg-devel@ffmpeg.org Date: Wed, 21 Mar 2018 22:19:58 +0530 Message-Id: <20180321164958.15469-1-deepgagan231197@gmail.com> X-Mailer: git-send-email 2.14.1 Subject: [FFmpeg-devel] [PATCH] lavc/cfhd: added alpha decompanding in rgba12 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 --- 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;