From patchwork Fri Mar 29 03:24:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47639 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp1754972pzb; Thu, 28 Mar 2024 20:25:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCULgNA1EHXD3HCoDapNVZnqIM5R8tHkNP9Lmd+CDjhkkRijK3DTU9JPn427vW8O9pJxuDzxTRqXftrmo9j7CYI4MUz2KV1a3qZODA== X-Google-Smtp-Source: AGHT+IEEEj6o4InvOSo57zfKuL0HXnL5CrmdIJ45ltTCbwp6zmMgS9x4oWj0BKWFtw2MbPJZllUK X-Received: by 2002:a17:906:39b:b0:a47:99c9:8823 with SMTP id b27-20020a170906039b00b00a4799c98823mr616419eja.42.1711682714648; Thu, 28 Mar 2024 20:25:14 -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 s10-20020a1709060c0a00b00a46abaf9fefsi1336966ejf.529.2024.03.28.20.25.14; Thu, 28 Mar 2024 20:25:14 -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="ZR2/T/H7"; 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 A8E3268D757; Fri, 29 Mar 2024 05:25:02 +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-db5eur02olkn2037.outbound.protection.outlook.com [40.92.50.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DC8B368D4A6 for ; Fri, 29 Mar 2024 05:24:55 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cVUt5Q8Jp9Krxp5OmnC9nLq1yfqOXJmxJViKOTwoWGy2hVT0qjqbD4RAlvHNJgSFp8L0wLqgg2QjFnws8NKj8BZOlmAvt5H5jknFab9A9StE4OASLGMAjSaKEVBHfFjXXzIspAep7pYxpKLrnKN/DAP01iObqbc6N3J7Cl8r4wviZOjRcQ060AQedJU/10rajZm90XMSrMQV7i5wJg5JHjB1s564wD9kp2/l41Oj9WtKS8iVpLLV0lKaY/pw5tbbxaoU1Afy2LpCMOyE83ijTUrqCbbGSh3hLCmmqgdi2BzHK4axs6FqMA7qnqJq5ioI/XFCBO/cgG3auQ221CiyDg== 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=RGPXq2S51f0jInGH3bZLWstSWfHc8wRsM9vBUqPNxbM=; b=E0csbSWSjAWQBr3vgIlokw83D4ZvllwXxVBn987p42qynscQeiiKcp2JM0LyzPYLZWOQH6zxXNe6kuHP3hr+ETjDOX1gYyh2u5sAqxOY3PZaU+NH5Z6oJykvkdZKKf/sOLftij0v5h109++AdkaPFxr0nxQatHwijsInVWsLzYm1Tfv9OEgUAiJm+c3RQN9fDMNzWw8f7gM3I/Vw4iktNb/1VkUYjt+GoDohYjFruV4zb1fVFIGbP8wqzdwPaLlvDsPy5dB2f4m4YJX1MjP5ib8j+D4BMDBQVETe3iLy+r2xmy5NKNveYIbdowrSb7QxJT3X9sxSi236nk75Wymbvw== 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=RGPXq2S51f0jInGH3bZLWstSWfHc8wRsM9vBUqPNxbM=; b=ZR2/T/H7nHmOmpAUz8/v7Ge/WUFsHcdNvOa7d9oPWaHbWy6nSdRLMa2Q39Ck9lFGFHwyBsdi0afFsuT6N/QChIEMNjPw0ez+MzecVKF0FWP/wdgqlyV91+TbuiBY8UoMwICQaKHncjz665rb3kQMOhOBWvn+zVxHSdvjUAZn3VFtnWNPUgGwwn+JoN5V4O8edmpZtEn3nFqOs0wdf333kGpMevlZHGfcQJrkKr9d3e0WfBcPuaPQBzJ4okI4zrL/CggmzaSgLFsnRbiAE+qgvhUSx6Sx9E3XzerZspuX3VTvF4+2N5sZofh6IAYTBX+q9qjYVlKjR7/Ig2lNNiCVfQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0116.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:173::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.39; Fri, 29 Mar 2024 03:24:40 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.039; Fri, 29 Mar 2024 03:24:40 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 29 Mar 2024 04:24:29 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [Zh272cBbX5wWzrWyzmzbDqWOKuN37YKf0m9jmLl6wbs=] X-ClientProxiedBy: FR0P281CA0061.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::16) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240329032429.2305146-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0116:EE_ X-MS-Office365-Filtering-Correlation-Id: d91de856-88be-42ec-2cd3-08dc4f9fc52c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ng3cP393NMfy9u4GQ4HGoisB7njo0iiicTGRDdl8ibG1qIt+T3mCo5yjDCZDk1ehzcWGXtUbzJFkPJx2dFPeim/vQVfbn9CCT0Zjsg3cmYxraUTJaXhQ//jaNpxn0bF58wQFK++om8QiUxXWcXSix/HRxk7J1KK5IyG1t6GL+eEfNYfFRBEx5HRdFw6mDtE1PXw4yeU572oCgJtUnLL8rH7tFBJZeUy5nMSii6K1PhVyAn/bb7vOlPUZoWRs8BOipVON1d9wFUlpI7zEZFnkq7LNpN3p01VPN0mbwEdVEbxtLzT/S7Wkockm3L0o98/+xnTd0PDwL0fLdRX5lXCTkyfMv6om0fbnRf6lU3n2DiquWvmffuQBnE8uVuBHKAD4nnLqX53t7ksUABIMKyt2r8QlB3v+x+n/gWzI44/bkfydUaVWFaFOXQndAOum/E0E5Y+SM1jpvh58aYwC/eqBFxBGZt6P79aj6apS0U4KbvclBU75Mcq103RrjkVypWG93ExlEJ1LltgqrdPZ085z8IuaeOQisekPbnhBgwbCsQ3pcfdvYtKNb2Cwa6tSnCiIdoRYMVlFdYdIpCbHzMPN3h52uQBcjSx7IaJTpIeyfARxPlit3Iznud2sSIDeF+iY X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sWh9CNdHmanyI3TQAi8tFoU0GN/6X+odEn93k8GYwx7S7yUSAHYX4wRGjPNGemhPYi0LB9j4LoDWb5V5+JViy8ObBSp0k82obVNjlg/GpK8dzM4nqfTjCtzHsGfpyeSkGACl8ak9RZ8ngeBEd+0JwodIsFXXXd23n+ppV6QbolM8dEEY8Aqu37XO16DYeGgNrsfE64ioRjwDdyPpeCZkqnT4Pzf6JmpCUfoXt4qXds8zeYeywGhXX8xkEs22BWS6nR6J38E/SVwgDGxYurgq9Fn+QOH89ua5TtBu4CjsZ6L5c13gQe4RajlP50ugG1QUlUzow/ey42HoVPXpIkDhxrp2mVZcPyC0VPurQGYkC6xkWTzGK6KUVDwqGyGTdPbJmRHV7a8dovtlxyISysphhjM+mMjgjr3Zd6QxImiknRpwDreeOgySAfNBWNUKBY4jG2JU9kB8JieFx4hRGnJlW3ToVXmGb4TEJD+U6OMs4EA5tEBgsww2TN/F+2YrmL0pHY2yI5BMD2AvmjvHnU45iHhdX6I21ui8Prn9b0lzOfdZtnq5ya9KMU6pm2r0ReG9L3yljwHK+HakJEnkCwAKgHZzp36rB8AmNDdd109EzFXTqSC2z0RjWCTQfXbU5KdWVwo3jhyKfvt0em9rrznfT1CC90rA27+SLvweDNEE6bHu/OM1C3qR8iETXqWKiTrFsgmbuqMslctY6exsi5WCHm01EXOhQErX8zMXQTORXaGQhrY0gRqW/BCWYJXwPx8ffqSW6Pma5nlj/zQins4dRi4MJ/QJRPqQwG5D2/sHwpI4btGH7pqZNUmyLvkp1dz4cmSdFR5/4NGX0kUahQJmNQnDTVrhkzwadpJqO5nIytZsNxDrViPzNLaIa7JT5XJvEWbTY0xZC21XV69XL+rI5U1zQPf6ExFyVrXCED+PKaI0aQv5/Exl48BfW4sHaxDmTcGIjOxS2H6ltgXHqdSkN6pK0sfqcX0TeVJ22klPsmJuG/pgQoVUwpStS942bAixMhd1i7zy3kl4NU3I5OOW//mgUH7jS/BLXwH1y32eegfR5K/2ZTnFW7A05bwjJ9OreU3zVvOZQ3J5kXKAwWBB4VFD6wHasUFYHY6G8xzTnWndIFwDdstSCGcQfTaYIWGd2bcU4zJlqgZERUY55Abx89llAlyzQkuPERm9j3sD8RPBOYpZzEDYI8vQ9sWQpHr858Z2anoIUPPomYTJHzlLuV/1dvBTwAfuxpkX0Z987aAHMaljjDByhjNlTM9VVoNilcTY7I6q3Nd9HF6BV+FX8g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d91de856-88be-42ec-2cd3-08dc4f9fc52c X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 03:24:40.8062 (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: PR3P250MB0116 Subject: [FFmpeg-devel] [PATCH 5/5] avcodec/huffyuvencdsp: Fix load of misaligned values 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: TX7Zx9bn1OiJ Affected many ffvhuff FATE tests. Signed-off-by: Andreas Rheinhardt --- libavcodec/huffyuvencdsp.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/libavcodec/huffyuvencdsp.c b/libavcodec/huffyuvencdsp.c index 36e8f6130b..27428635af 100644 --- a/libavcodec/huffyuvencdsp.c +++ b/libavcodec/huffyuvencdsp.c @@ -18,16 +18,32 @@ #include "config.h" #include "libavutil/attributes.h" +#include "libavutil/intreadwrite.h" #include "huffyuvencdsp.h" #include "mathops.h" +#if HAVE_FAST_64BIT +#define BITS 64 +typedef uint64_t uint_native; +#else +#define BITS 32 +typedef uint32_t uint_native; +#endif +#define RN AV_JOIN(AV_RN, BITS) +#define RNA AV_JOIN(AV_JOIN(AV_RN, BITS), A) +#define WNA AV_JOIN(AV_JOIN(AV_WN, BITS), A) + +// 0x7f7f7f7f or 0x7f7f7f7f7f7f7f7f or whatever, depending on the cpu's native arithmetic size +#define pb_7f (~(uint_native)0 / 255 * 0x7f) +#define pb_80 (~(uint_native)0 / 255 * 0x80) + // 0x00010001 or 0x0001000100010001 or whatever, depending on the cpu's native arithmetic size -#define pw_1 (ULONG_MAX / UINT16_MAX) +#define pw_1 ((uint_native)-1 / UINT16_MAX) static void diff_int16_c(uint16_t *dst, const uint16_t *src1, const uint16_t *src2, unsigned mask, int w){ long i; #if !HAVE_FAST_UNALIGNED - if((long)src2 & (sizeof(long)-1)){ + if ((uintptr_t)src2 & (sizeof(uint_native) - 1)) { for(i=0; i+3> 1) * pw_1; - unsigned long pw_msb = pw_lsb + pw_1; + uint_native pw_lsb = (mask >> 1) * pw_1; + uint_native pw_msb = pw_lsb + pw_1; - for (i = 0; i <= w - (int)sizeof(long)/2; i += sizeof(long)/2) { - long a = *(long*)(src1+i); - long b = *(long*)(src2+i); - *(long*)(dst+i) = ((a|pw_msb) - (b&pw_lsb)) ^ ((a^b^pw_msb)&pw_msb); + for (i = 0; i <= w - (int)sizeof(uint_native)/2; i += sizeof(uint_native)/2) { + uint_native a = RNA(src1 + i); + uint_native b = RN (src2 + i); + WNA(dst + i, ((a | pw_msb) - (b & pw_lsb)) ^ ((a^b^pw_msb) & pw_msb)); } } for (; i