From patchwork Fri Mar 15 00:06:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47093 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:9204:b0:1a3:31a3:7958 with SMTP id tl4csp785667pzb; Thu, 14 Mar 2024 17:07:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVoqHlUIX0VIuKt5RsGjWXYDMAOI0+OewRhu8AZDhHBPkXRvQ3yigbp0L47thcyF/et/NSqQYhVqAj2LsB2xTZy5RXe00SgysWPsw== X-Google-Smtp-Source: AGHT+IHOA8N4DBKnTBJwvVp0m5GPm/9Lnxpg2yXXi0Oca7TIEQY+4kommKkrNZRDpzbTNZ0tKDAX X-Received: by 2002:aa7:d9d3:0:b0:565:6f27:9dcf with SMTP id v19-20020aa7d9d3000000b005656f279dcfmr1993596eds.34.1710461230225; Thu, 14 Mar 2024 17:07:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y12-20020a056402270c00b005688a0fa1c3si1305966edd.670.2024.03.14.17.07.09; Thu, 14 Mar 2024 17:07:10 -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=@outlook.com header.s=selector1 header.b=H5GEbD3R; 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 13DFE68CFF7; Fri, 15 Mar 2024 02:07:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2082.outbound.protection.outlook.com [40.92.75.82]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 39B3968C719 for ; Fri, 15 Mar 2024 02:06:59 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GY323AhNkgfWLHJVArv60kjwn53lGrpQC+TfpbWRb76/MkDAd4b/at+BKx1hrg47xCKBpWGG2Z0VIfiUWoPD/osJ42EJeTAclu8X/xK286Dn7/BF7kYOGEUBca5bJpn1V+eK42p4QW8vb6+g7bieQ1Q7Gta3fhtn3EFn4tjMzs+BAkdo7WzlfLz1CCxX9rHuItjYD/uAhZdNwSr577g0EB9ypeVNB1otSbmUzoG0X9/Db4Kao/PWFXCAYLkwcV3kqQFQZWFt7FDalICvmIVz2Kw4eJULl0umGsGOIvJTsIr5EQyXvFREbid9t+serrNz+XrkZX3xTxPUD2Bi9jNKTw== 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=BDb/PyhogjRggLgeiBZDx+OSSEyjpXbdi5GDVZBmCIs=; b=eqEC8ssAXxvveLfLwN2iEYV3u5BjJyJbOrPqRo+WVJ6nheU+SgjtfEnSR5evobGK6bDKjlhUnkZekUYbRj5Fpsmu5EYWbeZmK3wYUKStQWPRqtJr1SY5vJWQ7F/KsRC6cO22LoJo1uU7Dym2h2Lly1cjq7IUIwULEdwHqBs+QqN/02Njm+j/7ys5QDlgNNkFU8UGVfhylH+E9L4Zyr8qfSoCS6zilG3MKXms3k0WsNkwNEx9EYH63fi7ZEB2+0ppFQDnjiIzgW4rcHef5FUVCZM6BLmrOhXUt+Eo0HB49Q3/CGqALMNzCm1v5uIAnLnoQlCklyaFgzQ9kyA1lUGaeg== 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=BDb/PyhogjRggLgeiBZDx+OSSEyjpXbdi5GDVZBmCIs=; b=H5GEbD3Rs/CldS5NcnXZsiqDyBlLHpl2ZJSRZYRu1KLxijd+uGizHaD0pE4WijM9h2MjTYv2ss2SULCgGW3f8d0NAiLh3NLg4wM8oFsoOE5/LAK0uZVyU+YaENfnVicDLyDpE0xCpOSoa+9eZbwbBztSq9rRFlN+VgF6yzaTiBFmUqntLalP+T05to6YrM5S5TQsRuwjYdX1dWtiRqywqSlqkT+vRD1iZh+5TStONMyos5bUL57yyy/VuQDj0N8ZwqbFXeQymVr2zMNs310T0Si/98H4CBjYI6oSL08lD53canssCwnGxiHWBlaUEHX3qeaJAXaB2xD1kwb+cnF2BA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0363.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.21; Fri, 15 Mar 2024 00:06:57 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Fri, 15 Mar 2024 00:06:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 15 Mar 2024 01:06:50 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [KHVmOpyQjh51u/oqOM4CaSbzPq31ss0qJ1dpUnm8VHA=] X-ClientProxiedBy: FR3P281CA0163.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a2::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240315000650.3776033-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0363:EE_ X-MS-Office365-Filtering-Correlation-Id: c3a12cd2-54d7-4522-dbd6-08dc4483d41b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dr7jvGA8Gsvr1ctdC7wRpDwJ1aBTwaYqbGNLhiICES76un5Ir2xpk6/7fGwsm6Ldn/92IpaoA9013XNAK2dy6l1nWEIJUgYw5pvIFWJeqAb19b4gtozblNEy+xQFU/huQNExZINnUxEzLHQzjGTOEB6kBvamwhd9zRdJlW5nIliQADbgdfMY8yAZymzkqp+p7Z7p9jz0SfPiWwEO0gSF1Z+2ytsIesW67Z/kx6y0Yq3b3nFpg07gmvddgbXLGnzCO+VpyW1V1pgUL4+4dIRVYMFF3WYJyW0SLfpPE+uQNUF4yiD5bmX0Zo/FKgZQ+attFf6QXMVqz07L1Dy11nnTqWTYqVNgM9bPI5ZNKdw1QFdsiS1ArDyYZLcx3nBqH1PcF5+SXkEFbt60b8h2T8gthLxdZhD54eLlWd7/euV+i5/bfM5D8TLS2xdGAp2qJafZVS1IUCdo0g+axV3ZQRVBlnJjRuR+CwyLXvz895NNhnnH/FydlCcOyaRGuQcjKIlxoMUT4gFJHMYMEejVyj4UV8x5ZnTphVnT/FGC0rAwYcZlmrV6iq3UuJi/WaBybOTBRpR91WE7NlkeVkIjMXVS1gXKWOjLrFbBvSdY5EdRBWqSxuJzTiq0dBpQeEVe1Sfc X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pxU/ODJOBBHK7yuwHGPplF4gCPBy/844IIJnjjn9lb7RR31YXMLKDOvQYCa9cZX6QjVlJRzzYI8TFMZcJmoyY3HQ3PbDuxISoUI2BnoRNML7Ql8UEyDbhYe0UTck+fN/3J+aTmnb19xnpX4Dg/vjPP+M0T/ZbCtUCeQ35DZMgVYLA1/IX5UDGr3iE//OvEzjpdCPfeetJUy7tUhc8RFfHlKivX8DSKGIZFCLuJ1x0iL/kLgFrKFJpS5pTwsd6u7lfj5a5HukaC1yWYY3UsDKanjCYCWnPp/SJNTnE1tR07t90anK7NKoBaprilkqHM7eDdO4tZtPiC/kRaM9jmJIRt0F2ilDcPpzLscL5xNH/3hu0RYtxzp67h9KLU8YDCBDXboou/hTWKeJOOxfRJVC8sq9+V3hkaBQ9FpkMWuhd4L5MuCCpm9R2s1VI7Ct7miUchR51sUOxO2XuVw3Mu+Scdy2rkBbPArii/6wY1NhoVAeM6k3I956g1FTupEThuAVRPmxIG1m3HwnlmDs4lAMc537rAN7ZERybFhfIW4wmHoB6KK6znT6Ys/W2v8dnKSYG4HNa7EVKQqMxn3tmiGh+qY4R3fncwusR/2acd4pQ8cr5An1EJZZvbPJ0bgRVmF1qRD+mcQ4/qJBD2sKAtRIXT7XdOuD4IHSfC1QyoAlIy7lP3OxhsQLDdOwnczMUWN9uvgqFH89tzum42iK/PaiVQ2eGtxjvJxyem1qzYqeKfRG7NSgmu0wEDGPUuSWogbjnC1J+KTPdCqoaEj13NJdwsljAMF27oadtSkztHG3De3m6ZWNniv4su7HIZZ4bI/DhA2/BVJPXz4CI7vZN+7ofmhFTOEU/uvQLXyorlyPwlE5jQy6qKmiPZ6ywoa61SL8S6r39NhXQlR0nbmmxgt77GG8D/EtjJcn1LyXIWpnUYIXAqord0UclG4vbGZAOAYKGSPusYB3b1WC7uuaYzfEjEN4JhGHIIhg3Vs8djmCOZID9OQl9cydCIuRqfQVjP/l78Ho7UGs2dixnZ8xra1367X/ojJXcEfRVgpJiaH4J2/10jWkuRDTXEU4ogVT8kUm+jWaNyK3EKw8CKIafSlP8UyyOOylH8rK59zX6D0MuLzy8j7r3NbLMdi2DR1FrE9mCUaXIm+klks+jOgfTZ9wTPNaHxKg2H+vWkK8C2f0NTd/F7qryaEgXmFqAqZqJ7GtUAF02BZ4Tcn8537xTqWdi/nW8FZbwym6fKMnqOP2Qw+jWUKT7XhU0NQlWirMrrNklmCa2ycNFxfhHvV4fIBUcg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3a12cd2-54d7-4522-dbd6-08dc4483d41b X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2024 00:06:57.1677 (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: AS8P250MB0363 Subject: [FFmpeg-devel] [PATCH] avutil/hash: Avoid relocations for hash names 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: XCY5Gn0G/jTX These strings are so short (longest takes 11B) that using pointers is wasteful. Avoiding them also moves hashdesc into .rodata (from .data.rel.ro). Signed-off-by: Andreas Rheinhardt --- libavutil/hash.c | 71 +++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/libavutil/hash.c b/libavutil/hash.c index 12333982fb..43f77852da 100644 --- a/libavutil/hash.c +++ b/libavutil/hash.c @@ -38,22 +38,27 @@ #include "intreadwrite.h" #include "mem.h" +// ENTRY(HASH_TYPE, HASH_NAME, HASH_SIZE) +#define HASHES(ENTRY) \ + ENTRY(MD5, "MD5", 16) \ + ENTRY(MURMUR3, "murmur3", 16) \ + ENTRY(RIPEMD128, "RIPEMD128", 16) \ + ENTRY(RIPEMD160, "RIPEMD160", 20) \ + ENTRY(RIPEMD256, "RIPEMD256", 32) \ + ENTRY(RIPEMD320, "RIPEMD320", 40) \ + ENTRY(SHA160, "SHA160", 20) \ + ENTRY(SHA224, "SHA224", 28) \ + ENTRY(SHA256, "SHA256", 32) \ + ENTRY(SHA512_224, "SHA512/224", 28) \ + ENTRY(SHA512_256, "SHA512/256", 32) \ + ENTRY(SHA384, "SHA384", 48) \ + ENTRY(SHA512, "SHA512", 64) \ + ENTRY(CRC32, "CRC32", 4) \ + ENTRY(ADLER32, "adler32", 4) \ + enum hashtype { - MD5, - MURMUR3, - RIPEMD128, - RIPEMD160, - RIPEMD256, - RIPEMD320, - SHA160, - SHA224, - SHA256, - SHA512_224, - SHA512_256, - SHA384, - SHA512, - CRC32, - ADLER32, +#define HASH_TYPE(TYPE, NAME, SIZE) TYPE, + HASHES(HASH_TYPE) NUM_HASHES }; @@ -64,25 +69,29 @@ typedef struct AVHashContext { uint32_t crc; } AVHashContext; +#define HASH_MAX_SIZE(TYPE, NAME, SIZE) \ + HASH_MAX_SIZE_BEFORE_ ## TYPE, \ + HASH_MAX_SIZE_UNTIL_ ## TYPE ## _MINUS_ONE = FFMAX(SIZE, HASH_MAX_SIZE_BEFORE_ ## TYPE) - 1, +enum { + HASHES(HASH_MAX_SIZE) + MAX_HASH_SIZE +}; +_Static_assert(AV_HASH_MAX_SIZE >= MAX_HASH_SIZE, "AV_HASH_MAX_SIZE needs to be updated!"); + +#define HASH_MAX_NAME_SIZE(TYPE, NAME, SIZE) \ + HASH_MAX_NAME_SIZE_BEFORE_ ## TYPE, \ + HASH_MAX_NAME_SIZE_UNTIL_ ## TYPE ## _MINUS_ONE = FFMAX(sizeof(NAME), HASH_MAX_NAME_SIZE_BEFORE_ ## TYPE) - 1, +enum { + HASHES(HASH_MAX_NAME_SIZE) + MAX_HASH_NAME_SIZE +}; + static const struct { - const char *name; + const char name[MAX_HASH_NAME_SIZE]; int size; } hashdesc[] = { - [MD5] = {"MD5", 16}, - [MURMUR3] = {"murmur3", 16}, - [RIPEMD128] = {"RIPEMD128", 16}, - [RIPEMD160] = {"RIPEMD160", 20}, - [RIPEMD256] = {"RIPEMD256", 32}, - [RIPEMD320] = {"RIPEMD320", 40}, - [SHA160] = {"SHA160", 20}, - [SHA224] = {"SHA224", 28}, - [SHA256] = {"SHA256", 32}, - [SHA512_224] = {"SHA512/224", 28}, - [SHA512_256] = {"SHA512/256", 32}, - [SHA384] = {"SHA384", 48}, - [SHA512] = {"SHA512", 64}, - [CRC32] = {"CRC32", 4}, - [ADLER32] = {"adler32", 4}, +#define HASH_DESC(TYPE, NAME, SIZE) [TYPE] = { NAME, SIZE }, + HASHES(HASH_DESC) }; const char *av_hash_names(int i)