From patchwork Tue Jan 23 04:33:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 7393 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.156.27 with SMTP id q27csp3806957jak; Mon, 22 Jan 2018 20:33:55 -0800 (PST) X-Google-Smtp-Source: AH8x2264TE1MXaRjS304iMhzoF4N83tarn7i4z80tma8gawo8zNmzhrELlfaSabwgw4h6yQjsXyI X-Received: by 10.28.247.11 with SMTP id v11mr751978wmh.27.1516682035627; Mon, 22 Jan 2018 20:33:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516682035; cv=none; d=google.com; s=arc-20160816; b=m7Wlyt8no5auRD3zM10YRSiZQ1iwcLOBAsoTDAZOFn0F6F0MEIDRObwbdCh+JBWFjO GYDHw4PD7X3A05kwSKPEjbQD6cGFMcRwITXBRIERRyXxpXnYC17TJ1HdRt7BH9HjCJxK 9h2/UuiL0MvGNQiq77g23mxyZ22xSojYNGrFtDbwtvq50a3L74hH2f8dFQgSELKjV+DE 3yRvg0nXai8QJLTirQGsvFBM7YfANvrD49pSKKvUFtarQEmZeg2eedXq6Z6ka8hvByKN IEamfBX+Rx+TYmSfrYIpUfufyQfLHWZOMAp0QwYfJOZbyGpAM9Mf7DSxkbJFMT/9rvny hNVQ== 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 :content-language:mime-version:user-agent:date:message-id:from:to :dkim-signature:delivered-to:arc-authentication-results; bh=T3B+oTPCqG9vwxWfpdtXdvqK2hAstDysRsFSVaFJ1RY=; b=dFtn10obZAFf0du5UaSqLKEL6SlDO5J+y/GtRIb7T+nTzmt0ad1Kw4sIaQZLDt5nAu fuqgsXPMFoqD9OtuPFxYVwoN7+Z+V1U4HJf9qewkArBZHgmfq6GdV71IvMq/LHPhRnts yVW0Ijdx0IPqrkgaEKmGNZdJnvvGmxzJh2o9GhoBLnQaZdoQnjeoRdQR6B34GN1HFjw/ kMLoyax78teLXBcwHkK0lrVzRdIgojDuXwA7C8XBKpgqPsMIUVtbHO0fpwcwUZVIp8WS exWxIfoXEQzySK6GNvIiU8gQKU05cm7P/4GqUwuY5b/0/DE3gk9UaP7K6qujyFC4TXM+ 6lgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=sAtm5cbp; 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=NONE 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 a2si3805071wri.160.2018.01.22.20.33.47; Mon, 22 Jan 2018 20:33:55 -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 header.s=20161025 header.b=sAtm5cbp; 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=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 9126C689AE8; Tue, 23 Jan 2018 06:33:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f42.google.com (mail-pg0-f42.google.com [74.125.83.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8DD71680ADF for ; Tue, 23 Jan 2018 06:33:37 +0200 (EET) Received: by mail-pg0-f42.google.com with SMTP id y27so8840710pgc.5 for ; Mon, 22 Jan 2018 20:33:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=2FNGpAM2/YoIstzDfyi7VEJGq5iYTSSzIkf9qcx+VSY=; b=sAtm5cbpvfF9FgXsFFvTN/jbB8695WdQVsBaNuS5Qzx9bDlbMP22x7OLTOwgqKlj1v aSf3kfNjDfkuxRK5oRqEVeRkO7IsuVvm8JjBsyhs2HtxELrXzIt6BLchvzPIiRB/aiFF lTkSUnX99O4hFfZoxqCP7NgPQubxetCLVFiUpdw880cUlg1Bi3IvmYQBAgJG4iZq0ndJ dMbC1YCU5rk3iVWvcfA7dbWnfxIhueowVtzZwUUwM71Diu6PizH3ZssCOceIaxsG8m6i FcL/OBsPChkyyXTKiIJyJZMrtanMujnLz3Sq3kQlIXhmLEkfGGfOlPFLF5wTXZ6M/BHp 51Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=2FNGpAM2/YoIstzDfyi7VEJGq5iYTSSzIkf9qcx+VSY=; b=MU2sDmI3iBX7c8AgFm9T/of8z/ItbhoxRzI8ImgNzQWQTbRf+05OCJCRsbj+/P+rE/ o/np+4k0pul47AxtDUgq+b7gr6nXOdG/1W4qi6qyu+VkiSwgrkIDn47JaPHHkBZz22Zp Hw4GETLah2EJgBBNzxNahM8IFbTkI7jc2/BpPzW7I2X9oyhS+LCR934Ja58JhM8CO4Xj T3UcN7b5hTXaHEvVrLxa0nGAXDVc6H+fM9Gf9h/EhP/QHVvsJ9SCSkkZJ9lT9YntAtzP Z1eiZQL7W6qzWe32e94bTr7FvI9wiO4nFcRdlXKK0aMUiFXlbhkRKLtj3EZ3NiyR28F0 XFHg== X-Gm-Message-State: AKwxytfiF6S6AuPgZnNFSPnyuhm77tbIe9cISUi2Ar8qt3yckur1yo1d d30+w1sV7nQpcX76wL9ygB4= X-Received: by 10.99.56.18 with SMTP id f18mr7918745pga.438.1516682018341; Mon, 22 Jan 2018 20:33:38 -0800 (PST) Received: from [10.67.68.20] (fmdmzpr03-ext.fm.intel.com. [192.55.54.38]) by smtp.gmail.com with ESMTPSA id b6sm4063398pfc.139.2018.01.22.20.33.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 20:33:37 -0800 (PST) To: FFmpeg development discussions and patches , Mark Thompson From: Jun Zhao Message-ID: Date: Tue, 23 Jan 2018 12:33:35 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] [PATCH 3/4] lavfi/procamp_vaapi: fix the green output issue. 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" From ccfaaee784b2d2d25f3f71eda1e39a368d7611f5 Mon Sep 17 00:00:00 2001 From: Jun Zhao Date: Tue, 23 Jan 2018 11:26:54 +0800 Subject: [PATCH 3/4] lavfi/procamp_vaapi: fix the green output issue. Fix the green output issue when use procamp_vaapi without any arguments, and fix the typo. Signed-off-by: Jun Zhao --- libavfilter/vf_procamp_vaapi.c | 81 +++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 45 deletions(-) diff --git a/libavfilter/vf_procamp_vaapi.c b/libavfilter/vf_procamp_vaapi.c index 10f9a6ba0c..f692a52f51 100644 --- a/libavfilter/vf_procamp_vaapi.c +++ b/libavfilter/vf_procamp_vaapi.c @@ -44,10 +44,8 @@ #define SATURATION_MAX 10.0F #define SATURATION_DEFAULT 1.0F -#define EPSILON 0.00001F - typedef struct ProcampVAAPIContext { - VAAPIVPPContext vpp_ctx; // must be the first fileld + VAAPIVPPContext vpp_ctx; // must be the first field float bright; float hue; @@ -65,11 +63,6 @@ static float map(float x, float in_min, float in_max, float out_min, float out_m return (float)output; } -static int fequal(float a, float b) -{ - return fabs(a-b) < EPSILON; -} - static int procamp_vaapi_build_filter_params(AVFilterContext *avctx) { VAAPIVPPContext *vpp_ctx = avctx->priv; @@ -93,41 +86,37 @@ static int procamp_vaapi_build_filter_params(AVFilterContext *avctx) return AVERROR(EIO); } - if (!fequal(ctx->bright, BRIGHTNESS_DEFAULT)) { - procamp_params[i].type = VAProcFilterColorBalance; - procamp_params[i].attrib = VAProcColorBalanceBrightness; - procamp_params[i].value = map(ctx->bright, BRIGHTNESS_MIN, BRIGHTNESS_MAX, - procamp_caps[VAProcColorBalanceBrightness-1].range.min_value, - procamp_caps[VAProcColorBalanceBrightness-1].range.max_value); - i++; - } - - if (!fequal(ctx->contrast, CONTRAST_DEFAULT)) { - procamp_params[i].type = VAProcFilterColorBalance; - procamp_params[i].attrib = VAProcColorBalanceContrast; - procamp_params[i].value = map(ctx->contrast, CONTRAST_MIN, CONTRAST_MAX, - procamp_caps[VAProcColorBalanceContrast-1].range.min_value, - procamp_caps[VAProcColorBalanceContrast-1].range.max_value); - i++; - } - - if (!fequal(ctx->hue, HUE_DEFAULT)) { - procamp_params[i].type = VAProcFilterColorBalance; - procamp_params[i].attrib = VAProcColorBalanceHue; - procamp_params[i].value = map(ctx->hue, HUE_MIN, HUE_MAX, - procamp_caps[VAProcColorBalanceHue-1].range.min_value, - procamp_caps[VAProcColorBalanceHue-1].range.max_value); - i++; - } - - if (!fequal(ctx->saturation, SATURATION_DEFAULT)) { - procamp_params[i].type = VAProcFilterColorBalance; - procamp_params[i].attrib = VAProcColorBalanceSaturation; - procamp_params[i].value = map(ctx->saturation, SATURATION_MIN, SATURATION_MAX, - procamp_caps[VAProcColorBalanceSaturation-1].range.min_value, - procamp_caps[VAProcColorBalanceSaturation-1].range.max_value); - i++; - } + /* brightness */ + procamp_params[i].type = VAProcFilterColorBalance; + procamp_params[i].attrib = VAProcColorBalanceBrightness; + procamp_params[i].value = map(ctx->bright, BRIGHTNESS_MIN, BRIGHTNESS_MAX, + procamp_caps[VAProcColorBalanceBrightness-1].range.min_value, + procamp_caps[VAProcColorBalanceBrightness-1].range.max_value); + i++; + + /* contrast */ + procamp_params[i].type = VAProcFilterColorBalance; + procamp_params[i].attrib = VAProcColorBalanceContrast; + procamp_params[i].value = map(ctx->contrast, CONTRAST_MIN, CONTRAST_MAX, + procamp_caps[VAProcColorBalanceContrast-1].range.min_value, + procamp_caps[VAProcColorBalanceContrast-1].range.max_value); + i++; + + /* hue */ + procamp_params[i].type = VAProcFilterColorBalance; + procamp_params[i].attrib = VAProcColorBalanceHue; + procamp_params[i].value = map(ctx->hue, HUE_MIN, HUE_MAX, + procamp_caps[VAProcColorBalanceHue-1].range.min_value, + procamp_caps[VAProcColorBalanceHue-1].range.max_value); + i++; + + /* saturation */ + procamp_params[i].type = VAProcFilterColorBalance; + procamp_params[i].attrib = VAProcColorBalanceSaturation; + procamp_params[i].value = map(ctx->saturation, SATURATION_MIN, SATURATION_MAX, + procamp_caps[VAProcColorBalanceSaturation-1].range.min_value, + procamp_caps[VAProcColorBalanceSaturation-1].range.max_value); + i++; return ff_vaapi_vpp_make_param_buffers(avctx, VAProcFilterParameterBufferType, @@ -188,8 +177,10 @@ static int procamp_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame params.pipeline_flags = 0; params.filter_flags = VA_FRAME_PICTURE; - params.filters = &vpp_ctx->filter_buffers[0]; - params.num_filters = 1; + if (vpp_ctx->nb_filter_buffers) { + params.filters = &vpp_ctx->filter_buffers[0]; + params.num_filters = vpp_ctx->nb_filter_buffers; + } err = ff_vaapi_vpp_render_picture(avctx, ¶ms, output_surface); if (err < 0)