From patchwork Tue Dec 27 23:18:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= X-Patchwork-Id: 39789 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bc95:b0:ad:ade2:bfd2 with SMTP id fx21csp3762407pzb; Tue, 27 Dec 2022 15:21:48 -0800 (PST) X-Google-Smtp-Source: AMrXdXvtr7q4wYjXQ5T5SJjaqeiWT1qocH//p1ut3qUgsb59ppcjRGPlwOoPqcUiPjUo7qSeb8yc X-Received: by 2002:a17:906:a18c:b0:7c1:5467:39b1 with SMTP id s12-20020a170906a18c00b007c1546739b1mr21212667ejy.72.1672183307661; Tue, 27 Dec 2022 15:21:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672183307; cv=none; d=google.com; s=arc-20160816; b=tOcqzjIENNCrQ/0c48Z8HpsXqoqC0VNuHN1NGoIOibVgCZtMDihJ+KYhYbwwnCRYR1 CSvZmMszllwMz6H6hT68kSkPeK/1fYvddD+stz/hMeNb7nEUzL95aYn8unxVMYlQK+Ep QN5Lj1a8e/mHKINcHVY5Bw0LDY237ZwP5yL9Ea/Z7//LP2sB/Vn/cYRDKlNqH72co6x2 xumgRqBSRfNWIYtdzxDNNHA2bkjGeXvHrlRUajTEviKL03tHx+ZbxrrEXnXMlGkjhOel HHYKniuBJgptg0kgL9Btb50ko/EpW11l5rj0YE10YpdtcFT7u2oNK9AE/bI7m33yxQRK F56Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=QVJk+kbGRqoMEiPSSffV2dE6ssp8Q7yle8F+NMf4KCg=; b=b1y3/VoTQzJ3WPyDOW/eJWtEfWD5wBZQwBHZNPhL6+CBf00HwUXc/l+sPmNbC+Ts0w VFjJB6dq1DS0ABfGEaf9XDjhFyYCTqmtUE34EtwiSKeVYNvt+xCftgEfQuwYIzW5tgwh 7k0GbamB5pCIXiHw278K8RKlRnEKF97aldVoJZIFF9vnGqQvhJWiEK+v6HjTrFGVECMX YuBBrNOWc2HwQFvvNh8JVg/BvXaN/oO1Jr5rJ39tc5X3Vw8okRbL4IyJrRCR4fj5w9QE efnQsTG6bTIp6BdcQtqwiZhJ+EuMcs8YUM5TmJQSOiUaBb3S7CL5DIoxc3sOzn2TMvpQ dfHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@pkh.me header.s=selector1 header.b=Wjxb9v45; 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=pkh.me Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id qa35-20020a17090786a300b007813594dc31si11702862ejc.523.2022.12.27.15.21.47; Tue, 27 Dec 2022 15:21:47 -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=@pkh.me header.s=selector1 header.b=Wjxb9v45; 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=pkh.me Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B9A6268BD65; Wed, 28 Dec 2022 01:18:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from ssq0.pkh.me (laubervilliers-656-1-228-164.w92-154.abo.wanadoo.fr [92.154.28.164]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7E5A68BC9D for ; Wed, 28 Dec 2022 01:18:35 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pkh.me; s=selector1; t=1672183100; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ou4MJHzF7K8lH+/EeTZULSIRbyDezN+OcHzUTOywVM0=; b=Wjxb9v45eg8pJAfYD4OPU5r00ts/dYIjrewxl92zjTiZBnn+x7BNp+9h4aKVvOUd4Rew5k TSs7R7rvhQ+Ek2vR7pdJUOSJ/nBaFHkdSXLUxiU4x7ayyamJp5aBHCXW47emIniVISK0AR 0OiTtfU70wHB3MUD0oZ1z1u8ePlhptY= Received: from localhost (ssq0.pkh.me [local]) by ssq0.pkh.me (OpenSMTPD) with ESMTPA id 78164afd; Tue, 27 Dec 2022 23:18:20 +0000 (UTC) From: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Dec 2022 00:18:08 +0100 Message-Id: <20221227231814.2520181-27-u@pkh.me> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221227231814.2520181-1-u@pkh.me> References: <20221105152617.1809282-1-u@pkh.me> <20221227231814.2520181-1-u@pkh.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 26/32] avfilter/palettegen: use lowbias32 for color hashing X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: n5fF/OSgx1Ou 1.12x faster overall in palettegen on my machine. --- libavfilter/vf_palettegen.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/libavfilter/vf_palettegen.c b/libavfilter/vf_palettegen.c index 6301cf6358..97e12f7274 100644 --- a/libavfilter/vf_palettegen.c +++ b/libavfilter/vf_palettegen.c @@ -63,8 +63,7 @@ enum { NB_STATS_MODE }; -#define NBITS 5 -#define HIST_SIZE (1<<(3*NBITS)) +#define HIST_SIZE (1<<15) typedef struct PaletteGenContext { const AVClass *class; @@ -387,27 +386,13 @@ static AVFrame *get_palette_frame(AVFilterContext *ctx) return out; } -/** - * Hashing function for the color. - * It keeps the NBITS least significant bit of each component to make it - * "random" even if the scene doesn't have much different colors. - */ -static inline unsigned color_hash(uint32_t color) -{ - const uint8_t r = color >> 16 & ((1<> 8 & ((1<