From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 62D574A4F6 for ; Fri, 29 Mar 2024 03:25:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 65CC468D74E; Fri, 29 Mar 2024 05:25:02 +0200 (EET) 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: =?us-ascii?Q?sWh9CNdHmanyI3TQAi8tFoU0GN/6X+odEn93k8GYwx7S7yUSAHYX4wRGjPNG?= =?us-ascii?Q?emhPYi0LB9j4LoDWb5V5+JViy8ObBSp0k82obVNjlg/GpK8dzM4nqfTjCtzH?= =?us-ascii?Q?sGfpyeSkGACl8ak9RZ8ngeBEd+0JwodIsFXXXd23n+ppV6QbolM8dEEY8Aqu?= =?us-ascii?Q?37XO16DYeGgNrsfE64ioRjwDdyPpeCZkqnT4Pzf6JmpCUfoXt4qXds8zeYey?= =?us-ascii?Q?wGhXX8xkEs22BWS6nR6J38E/SVwgDGxYurgq9Fn+QOH89ua5TtBu4CjsZ6L5?= =?us-ascii?Q?c13gQe4RajlP50ugG1QUlUzow/ey42HoVPXpIkDhxrp2mVZcPyC0VPurQGYk?= =?us-ascii?Q?C6xkWTzGK6KUVDwqGyGTdPbJmRHV7a8dovtlxyISysphhjM+mMjgjr3Zd6Qx?= =?us-ascii?Q?ImiknRpwDreeOgySAfNBWNUKBY4jG2JU9kB8JieFx4hRGnJlW3ToVXmGb4TE?= =?us-ascii?Q?JD+U6OMs4EA5tEBgsww2TN/F+2YrmL0pHY2yI5BMD2AvmjvHnU45iHhdX6I2?= =?us-ascii?Q?1ui8Prn9b0lzOfdZtnq5ya9KMU6pm2r0ReG9L3yljwHK+HakJEnkCwAKgHZz?= =?us-ascii?Q?p36rB8AmNDdd109EzFXTqSC2z0RjWCTQfXbU5KdWVwo3jhyKfvt0em9rrznf?= =?us-ascii?Q?T1CC90rA27+SLvweDNEE6bHu/OM1C3qR8iETXqWKiTrFsgmbuqMslctY6exs?= =?us-ascii?Q?i5WCHm01EXOhQErX8zMXQTORXaGQhrY0gRqW/BCWYJXwPx8ffqSW6Pma5nlj?= =?us-ascii?Q?/zQins4dRi4MJ/QJRPqQwG5D2/sHwpI4btGH7pqZNUmyLvkp1dz4cmSdFR5/?= =?us-ascii?Q?4NGX0kUahQJmNQnDTVrhkzwadpJqO5nIytZsNxDrViPzNLaIa7JT5XJvEWbT?= =?us-ascii?Q?Y0xZC21XV69XL+rI5U1zQPf6ExFyVrXCED+PKaI0aQv5/Exl48BfW4sHaxDm?= =?us-ascii?Q?TcGIjOxS2H6ltgXHqdSkN6pK0sfqcX0TeVJ22klPsmJuG/pgQoVUwpStS942?= =?us-ascii?Q?bAixMhd1i7zy3kl4NU3I5OOW//mgUH7jS/BLXwH1y32eegfR5K/2ZTnFW7A0?= =?us-ascii?Q?5bwjJ9OreU3zVvOZQ3J5kXKAwWBB4VFD6wHasUFYHY6G8xzTnWndIFwDdstS?= =?us-ascii?Q?CGcQfTaYIWGd2bcU4zJlqgZERUY55Abx89llAlyzQkuPERm9j3sD8RPBOYpZ?= =?us-ascii?Q?zEDYI8vQ9sWQpHr858Z2anoIUPPomYTJHzlLuV/1dvBTwAfuxpkX0Z987aAH?= =?us-ascii?Q?MaljjDByhjNlTM9VVoNilcTY7I6q3Nd9HF6BV+FX8g=3D=3D?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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