From patchwork Wed Nov 13 11:09:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 16243 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8415544A6C0 for ; Wed, 13 Nov 2019 13:15:29 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5D43968A5E5; Wed, 13 Nov 2019 13:15:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 01DBE6881BA for ; Wed, 13 Nov 2019 13:15:21 +0200 (EET) Received: by mail-pg1-f196.google.com with SMTP id w11so1168040pga.12 for ; Wed, 13 Nov 2019 03:15:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Ar5omXWomfPAqB9/dRYVlV/dFWS0YIPdHanHpHS7whw=; b=FAaEFBXyyRL12jDt+c4WOaOpV7TjXrA9+6a5mj/sdqNPENWtCC4pAGC3kZSyOQiL4b Bu24WdwFwb/IcVWGMeN0hie78EMm2Ubq+HEJLw/l7JSACqJ5gDv56ky9wWSy5PtxDpc9 5kKjfEQOnCW3CH3G2fOhFbxR3ByjL4ftvF0fMdpQYOHqtPDy3HQWxHopGD2RBiGk/wZA IwX8rO11OSQbFiB9Par8xsAr4+NIIx3EGBX0KJBVf9Fbx8HGoXPsbkWdk4Glg9eqy/oy fi6g+noxtKDb7L/MNV/BHYdazmb7B+3JhCkgXXzF1e+o5mHgyQN3Sh8gxvuK7trfriOG JRcQ== 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:in-reply-to :references; bh=Ar5omXWomfPAqB9/dRYVlV/dFWS0YIPdHanHpHS7whw=; b=qAdX0PmrMNJsEsJvbzzbuta/m80r4wWrqM7iE/SGvGD/xk8uCxPyY136O//I5vfep1 VOdjHhKvsoTkRKOSQYpgJPBLw7FhwHYk6y4jhUT35cMcz6Xe31FDsHcWZaS9Oyw/rEm4 Jx9oBHljPlJMPvncj4LaRkPGi0XIqrG4kYlCa7uprUVhBHDO2AN6/3FePg3ffp5A9sts btrKKSpfZ/DF5Az3NUCEtPBK6dagOzdUYjlluvdybcWsD+yx4CUpycQUDxs2wDCy0D/3 hfi6fGp5raZQj56pkXUasa91zRxUDx6iNKm64WvA+0AchIY12x6PX85jt5iI/afMVgfW uA3g== X-Gm-Message-State: APjAAAVQ4lh4/1ZaZupNJC3tT7RZCMwFnks5nbb2vqRX853iTqOFvKAk TKxMeQP+SdpQiXFm1qR8CuvcG+Vz X-Google-Smtp-Source: APXvYqx/hr+2zCTw44kasboEqY3k80/NuT9Eea6s8rbk0Cg5s79KeHDnbCBjCr+Ox+8Dz7q4ymdodA== X-Received: by 2002:a17:902:7444:: with SMTP id e4mr3123135plt.48.1573643405176; Wed, 13 Nov 2019 03:10:05 -0800 (PST) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id k5sm2133348pju.14.2019.11.13.03.10.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Nov 2019 03:10:04 -0800 (PST) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 13 Nov 2019 19:09:46 +0800 Message-Id: <20191113110947.7767-2-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20191113110947.7767-1-lance.lmwang@gmail.com> References: <20191113110947.7767-1-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v2 2/3] avfilter/vf_colorbalance: change to float to make framecrc same for 32 and 64bit system 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavfilter/vf_colorbalance.c | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/libavfilter/vf_colorbalance.c b/libavfilter/vf_colorbalance.c index 3fd1426696..1ab3a61039 100644 --- a/libavfilter/vf_colorbalance.c +++ b/libavfilter/vf_colorbalance.c @@ -36,9 +36,9 @@ typedef struct ThreadData { } ThreadData; typedef struct Range { - double shadows; - double midtones; - double highlights; + float shadows; + float midtones; + float highlights; } Range; typedef struct ColorBalanceContext { @@ -57,15 +57,15 @@ typedef struct ColorBalanceContext { #define OFFSET(x) offsetof(ColorBalanceContext, x) #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM static const AVOption colorbalance_options[] = { - { "rs", "set red shadows", OFFSET(cyan_red.shadows), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "gs", "set green shadows", OFFSET(magenta_green.shadows), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "bs", "set blue shadows", OFFSET(yellow_blue.shadows), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "rm", "set red midtones", OFFSET(cyan_red.midtones), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "gm", "set green midtones", OFFSET(magenta_green.midtones), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "bm", "set blue midtones", OFFSET(yellow_blue.midtones), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "rh", "set red highlights", OFFSET(cyan_red.highlights), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "gh", "set green highlights", OFFSET(magenta_green.highlights), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, - { "bh", "set blue highlights", OFFSET(yellow_blue.highlights), AV_OPT_TYPE_DOUBLE, {.dbl=0}, -1, 1, FLAGS }, + { "rs", "set red shadows", OFFSET(cyan_red.shadows), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "gs", "set green shadows", OFFSET(magenta_green.shadows), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "bs", "set blue shadows", OFFSET(yellow_blue.shadows), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "rm", "set red midtones", OFFSET(cyan_red.midtones), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "gm", "set green midtones", OFFSET(magenta_green.midtones), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "bm", "set blue midtones", OFFSET(yellow_blue.midtones), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "rh", "set red highlights", OFFSET(cyan_red.highlights), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "gh", "set green highlights", OFFSET(magenta_green.highlights), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, + { "bh", "set blue highlights", OFFSET(yellow_blue.highlights), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS }, { NULL } }; @@ -95,12 +95,12 @@ static int query_formats(AVFilterContext *ctx) return ff_set_common_formats(ctx, fmts_list); } -static int get_component(int c, int depth, double l, - double s, double m, double h) +static int get_component(int c, int depth, float l, + float s, float m, float h) { - const double a = 4, b = 0.333, scale = 0.7; - const double max = (1 << depth) - 1; - double v = c / max; + const float a = 4, b = 0.333, scale = 0.7; + const float max = (1 << depth) - 1; + float v = c / max; l /= max; @@ -112,7 +112,7 @@ static int get_component(int c, int depth, double l, v += m; v += h; v = av_clipd(v, 0, 1); - c = v * max; + c = v * max + 0.5; return av_clip_uintp2_c(c, depth); }