From patchwork Wed Mar 6 22:44:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46857 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d90e:b0:19e:cdac:8cce with SMTP id jd14csp688462pzb; Wed, 6 Mar 2024 14:45:14 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCV0kGtsIllRGXX9e0hV/T34RmGr7MghWyOTsXaX82/r8dew91dB1soy8oN7YfJ8OpDaPMvaRjQXlP5nfWKx5xu97MWnwQm7yp6NRg== X-Google-Smtp-Source: AGHT+IFNtx0rs77YNMdYsSIkqzjfYh1ZICNKIGMLMSpvED54zlYMMZPJ+xhbVEoReyBQ8euutaqs X-Received: by 2002:a50:9e4b:0:b0:565:6e34:da30 with SMTP id z69-20020a509e4b000000b005656e34da30mr11961816ede.21.1709765114150; Wed, 06 Mar 2024 14:45:14 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o2-20020a509b02000000b00565aefa1e0fsi6535581edi.515.2024.03.06.14.45.13; Wed, 06 Mar 2024 14:45:14 -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=@outlook.com header.s=selector1 header.b=kcfDMJMA; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4CE3D68BDB0; Thu, 7 Mar 2024 00:45:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2089.outbound.protection.outlook.com [40.92.50.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E6CCA68034D for ; Thu, 7 Mar 2024 00:45:04 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PDwEpI5jzlI5awB4qKufk4F1mBE/WlRqQV1/p+QLutw+IBLfLiMSLX8YcqvBI3C13MXRneR2tlekFba2dFVIvxZ0HM6kXzGByn4TmFPwgV9zQnIRy47u7dkUlnDYwvczaw7M12dLj/Hf7l2MjnSbPE8FvIYC1b47ik8q+fAog6KesPltqyOh3QR7n23zrA+vquMtAB7RLOWsfLbhwhs8DXZf20sJxPoGKr0lkwVxW61U3aqw5PWvxR/eyl4ZR3eCUwmWVFRP/UGZTw4rRsdqMfl3S/NioWd4MRHcxGEKYZVLKsLR/423NgeKYjVIqM+rqiK5kpPuqdjHWnAYhXvzAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SLRAe/eko+AmkEqhHqSYU0DDaEDwqsmsKu27qrzdIp0=; b=PQyDd+5gTcjKD0SoCueFJlp97HE1/B5uyAHn9hY14YyNR/90dBt/VIaEL7k1GDbUUXEuUtfr300oEsS2Q0YYCDfLLVPJYv9a4lRU8H+EynzAkNAsAWexRFSZYZF1i60WaKCK3lW8LGnRQ3mZmuAeF+ng9xOqGWeW7rg1hdIPcQxccWFKs63J0tBrMXlXJ88FoxL+vooY8y5YW8E68ZgqDAiXzSzLkLRghrm5lA0vizi4HFyqn84a0EWgLHW5BlO/tfxI5EHaSr1gUE2AmUAd5+VWpejGi/PHwwMNKOqQlJ090lRXysxOIvIZG8KtLP0nvrA2f6mvsYZ1RzS8WYstcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SLRAe/eko+AmkEqhHqSYU0DDaEDwqsmsKu27qrzdIp0=; b=kcfDMJMA6ZeNsznekUT1O/oTFnmWdJ4oL9QLS6I4B+FYCH9JbeZj6DGoLucruxaKVhwGVv66STMiAUqEasXdEvvj+CwU8lxlEeJsfUwnXxtYXd2Aef0xBfsmKlOK4j5OPpfKyd23ZvsAM1S+IYNRnASVLKhGfSyjjisIFbYBa5WmFIS/xkbQs8YSapbl02b1PCca2pd0pMv3vak4+IV5wM2IKeUy7hLkqGCdkST5l0XsEKZyrNrXP3Xk/e1ubZclNDPqXdjSDhwBYO68bxac3qoM01BS8x1POM8+RysrZe4I1M+YRqYjcQYNxNYhEZf6pTYUwI8ejQ4wcRFqHMP1mw== Received: from GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::15) by PR3P250MB0065.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:177::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.24; Wed, 6 Mar 2024 22:45:02 +0000 Received: from GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM ([fe80::a8f2:5082:22e4:8d1b]) by GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM ([fe80::a8f2:5082:22e4:8d1b%5]) with mapi id 15.20.7339.035; Wed, 6 Mar 2024 22:45:02 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Mar 2024 23:44:55 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [m0XnMPgWpzuxI8a9tQH9uEsy6Q8INUuaOBoE2kc/QUM=] X-ClientProxiedBy: ZR0P278CA0073.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::6) To GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::15) X-Microsoft-Original-Message-ID: <20240306224455.3348279-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1SPRMB0052:EE_|PR3P250MB0065:EE_ X-MS-Office365-Filtering-Correlation-Id: 2615323a-3fb7-4876-dba0-08dc3e2f0f66 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aSAyJ2OOWGFu+fuZx1b3Tn5oncVoC+Z1a6WFSQHgwY2D9TzI/4kraTUXeLGx4Bbh9lfaw4ms0cOLPcylBU6LoQjjIPYbOeFv5+uMQjI0xdmcFhswmcSzubdIPonENvA3XQHbt2vNcIIpREoOCWaqUL+gm4d+z/n3EQViJYJTmz3PIKgr/6NZMgdeJ2vdHPc55vQ7+XkrdV8Ml4P3dx7tMXLZnlzg1o6jQUjevTHrMaK1OepJvVU30hYcvF2zUwhblt5B0kE6VAdWkotjIlDN46nZmISpLupjrdB0A5SBsTIlhUOMvm1lO5eLZYRd///wAbPYtb12OjMNaGutlRT5wugPI0VYipEMcMdCtmc7thPQyBxFPWTvcFGoeycOXzWQ3aTPRqfZ0hSrxm+xvq2UvWn5U7cQllQiYhXMlyg+g3V2ZdqpuP32ubJgHWjX+PzVCGbXk7TkecD+wTiTRDQ0AY6QUGCqtmh4iaXALbOb68LYToL9SnQfRrKFOweupIbnhFLNVki6EJn8IK/Ft0UrPYMfoiHzY6WEYQu1ELhZc9GCKPmxfeAiA0PY2QSB5VBvuE0cyHfSNzCjumu03H48SkVUSXLtJ4h2LOeWt17/FHzjavI2RjLl7n1XCVdIkrQj X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eOg088tAXSqCLFqdWXRqt6xSjjyLQ/B2O8DI6gVDLnnxq7M4AkTTdxnFZx3NR7tb4n3aA64x6liyCnw39MWQ4tBD+AT2py0rl1PntRMyhJd+Pz2JT0UFkywdShn7Kw7VqDDky7NZGhW8/n/9OZKnpQDg9IBRUAD97pP9ZfdZKTFHjBgC6h8aRH4HmtwRZyNqsZXT09eeEv4gHDR3vbkHuF+UjYdmSY0EtUvYjHMmdnnxwY1VY4XfkOj7EvmKXGfYYyf/5Ca4uAyj1xEsugxbW8BBhJ6QS4k24RVwrJTVkFzu9d40It9xJqsgrW2KPMz0Gz7YQuhHzcjpaUlEizI+TiA1QrOi//7Zyx3qmgcNf8HPesWd8xkk5KAH3gIPzy/JdKOmpoCP6nMAfbkKtd5y/coq/Kzpu+qUgBIyHiQUfwgqCsGv2CTy2Z61l9Adk8bi5OregqefR97xC84Ap+zpFCQcsH/KqzuYFHD5ughCKEuTJzls6QurKF9o2NdVnymuI0QJ9M2pB32M+jZlLm6hrdBGN8Va5n1F6LEdjRDNtbkWN/R1XPbnZujnea39rk7kv/Pgh/gV+2PBorQog5Ucr69SAauEYrDrE2cUaLdwHit5koLHKiADq/jbKs+Cp0i73t2vDa4Y8G/0eASpIF5bhkfUWNrv4+fRqdPqhz/rGfK/4FaFYoSc8vWKuliM5essZfHyifyXNL21/86s3MuyBiWvxup3HAc9q/x4aDgw4X0g3cZnWHkC26ECbJa9H+x7pSya0rRGGruhbLidekOks/dsYcJQaFbhK28ViQDWbVSA4nV96+UMaNucqTAnRO/PkocT6CVxYpOvIodPPeEHEa/wgXgr3VHdxWo+jiJsWDHQx3Szc6t4ORzCOZHsu0QzQatpdZ0B6q3Tm0eVMtUH7WzSWK22cJDYTnIFUJgWHGv/uzS30/Zg2CiEN5nILFykxxhW5hKX0USuyAkkP0PGp/HnMNxrlJVBD1LxR+ibbfXPufy/mrXG1jOkDK9fNtRcuLV/b2VaGza5P1pNtkhxhHk3p1jtcBUhmqrazS6prRgkJ/FM2eGNI5D5wAu8ti9uu2zaVrP1NjZ/QsllQbfV5v+4mqhNU9rpFxapmpVYDppeMa7iv9lSJtcWbWTMg1t1p8iJtn46/blH6srtScyxRVF8a7JrvfRQVNttFdhAJkc+SUe29IvsfLVNwM77uczCN1Vkh1/r4H0qeHUeKjVEx5NNmfQ4A4cipz1jpNx+Zvd4CYk2OSTqNc8vYAdnsavb1B8ESoNe/egTz89wqXtV1Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2615323a-3fb7-4876-dba0-08dc3e2f0f66 X-MS-Exchange-CrossTenant-AuthSource: GV1SPRMB0052.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2024 22:45:02.4268 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P250MB0065 Subject: [FFmpeg-devel] [PATCH] avcodec/xpmdec: Use LUT for hex char->number conversion 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: G1GU2RmwCUdr Speeds up decoding and also reduces binary size. Signed-off-by: Andreas Rheinhardt --- libavcodec/xpmdec.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/libavcodec/xpmdec.c b/libavcodec/xpmdec.c index 5bc02378c8..804cf8568d 100644 --- a/libavcodec/xpmdec.c +++ b/libavcodec/xpmdec.c @@ -193,15 +193,22 @@ static const ColorEntry color_table[] = { static unsigned hex_char_to_number(uint8_t x) { - if (x >= 'a' && x <= 'f') - x -= 'a' - 10; - else if (x >= 'A' && x <= 'F') - x -= 'A' - 10; - else if (x >= '0' && x <= '9') - x -= '0'; - else - x = 0; - return x; +#define TIMES256(idx) \ +TIMES64(4 * (idx)) TIMES64(4 * (idx) + 1) TIMES64(4 * (idx) + 2) TIMES64(4 * (idx) + 3) +#define TIMES64(idx) \ +TIMES16(4 * (idx)) TIMES16(4 * (idx) + 1) TIMES16(4 * (idx) + 2) TIMES16(4 * (idx) + 3) +#define TIMES16(idx) \ +TIMES4(4 * (idx)) TIMES4(4 * (idx) + 1) TIMES4(4 * (idx) + 2) TIMES4(4 * (idx) + 3) +#define TIMES4(idx) \ +ENTRY(4 * (idx)) ENTRY(4 * (idx) + 1) ENTRY(4 * (idx) + 2) ENTRY(4 * (idx) + 3) +#define ENTRY(x) [x] = ((x) >= 'a' && (x) <= 'f') ? (x) - ('a' - 10) : \ + ((x) >= 'A' && (x) <= 'F') ? (x) - ('A' - 10) : \ + ((x) >= '0' && (x) <= '9') ? (x) - '0' : 0, + + static const uint8_t lut[] = { + TIMES256(0) + }; + return lut[x]; } /*