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 4BA1D48D0C for ; Wed, 24 Jan 2024 19:51:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 97A5D68D063; Wed, 24 Jan 2024 21:51:16 +0200 (EET) Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2022.outbound.protection.outlook.com [40.92.58.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E66F168C351 for ; Wed, 24 Jan 2024 21:51:10 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X89H9WghIcqeAgzhEQzZrU+ghD7Y1mGlaug05ISt/hnO2cWSv+CvJjybbzqT1vwai63u85F7FXzbjJS/QYdAy37xz3VRrAiLnv2VjQ0SsMJiVWE1gwxMgdygXfrrQAKEprbrzz0C/BlhUr2l30VFEGSyJRuLfMyAaoJL87CVQfQypMk9zRRDJkpr46hTmV1cOBOQSm3zqIeB4YlF/kO+twsxDC4bX4tfibuVIVNT0r0XE2aQu47K2Z7SpSUej+kyUg8BFZOu0EwNRNS6CbM23UdhU3pjLkh083cwX30gaS5gQI2TWgOJKQmde3PDggV0LIsyM+mRHyhLXUUJsh1Ekw== 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=28ZG0MHVw1EYl0Q9JV3IU5V4+BBEZMkQ8XVHJGFB3Ks=; b=J1NnU90ndhS7LHqGo8EDStmmpvq3banEvXwePXdPC224AtWWNR+bTdygf7DjGzNHr/4+pqCLTN5SeF2yBuYHJsF8AG8JmBui1P71K6HEDelGD0WmNkjfNUjnp//9Ndhgz9D5ugn3EYvb7owYL/QOejZVUA4pdL1fwDDMtw0RPfxaK0jfbNIfxEgY+7wsI1zx8IvwAxxZoUr55YN7dqfrwtN9ZxefDzfHrCY7NXIsG6tK+W1aiRY72a63yZUCq9zyOhCibACvkPP8WjQT7WQb3a7+aKt8/TF8rte43hU+C9nTl3yn85Drwas/cMSSssgC0oQyZpx5dkeGK7MAWyCxSw== 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=28ZG0MHVw1EYl0Q9JV3IU5V4+BBEZMkQ8XVHJGFB3Ks=; b=oBWgOc39q4ZHz8KxKqKUHOtyvqW0MGFc2h9NItHmkHJWsyAbKkuYNnest4yr1jtcnS4lkMwz8a5lM8KVlpTHpBP8ZpfqlrlfxuVuvCKQbn94FUIML7VKmolodzFg9g/WTONwx+uK07O/vzRXW6wK58lreTTawb6ZIn3hsbl6ZdaLS8a4+2+FBwbraEmswjQbeIQVHh7Z64zw6IbbZPJhv+5VGWX8WVdTynkV3EIYHMZEfqCQCK2CaV62Q73f8bcDj+Svt3GavzznMclHhO9bCwcU10ws1nD4XYhfAqLAr9/p1uvkg3pP6em9ZgRiQ7TGEUxuV/V4ArFGFXReW4dUcw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0350.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Wed, 24 Jan 2024 19:51:09 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7202.031; Wed, 24 Jan 2024 19:51:09 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jan 2024 20:52:34 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [h2N8XgWcq9ifYdKPyRY0CSp1x8er93bVpJDoHjuunTo=] X-ClientProxiedBy: ZR0P278CA0019.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::6) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240124195239.558681-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0350:EE_ X-MS-Office365-Filtering-Correlation-Id: 77b22a22-4de4-4877-dba3-08dc1d15cf69 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IGqsw1C5OiwUjNixAN+c0LkXDpluTlr6RCzN+e8GZRD1fK1pWIZMYgewj+YnlQA3v/6jrJDlckD5RRM9Rh+kak7B9lv9OzqtF7/7XEwhwno1/IiaJJVpYzjHeK/50rZHsPUuWKFdlebrrCWvNbJhV/5FxPAcz6H0rA+I/sraKHCuBSURc6UEzCm3rIy3vCEgudaw/RfNC6mz2WGSa6J8qJ41sf6rsFDWvkjU1hZM+yCUJitUQpOFo4Hbhb4A1VYOCk4QAZXWrfD7Nck3J47IDcyuk872cAi8+27Wt37CNvX0b+PAoqXAcerovYeJWzh6pmsbuxQPHH0oWBGCEhmBFp5BQ0VwHBAn8temh2zeDRMjz2vmPyQzwdbsTjGpTGYhCqXcBWBPliFGsQTfszZ8vESbISmaJ7MjXKQWcUygqkx82CAf+x0Uy9FSbqgCiNeKPAjVjxFQ3VRADrm9cHwUSN3DvX+pTsy6OaChpK91La/h+5X7lKQzIybmRiPquiBFcbfaQCRFlarR/A8bzGibvrwpfgGQ1fJI5ZQG6QLWNDePbdmLeH3GmOZxQX43rjoo5DMCXDiMKh7vn4FRxmh+o8/qebrAWrPl9h0bmB/gp9oycEgYnejJfoLCdlklT4xB X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TAmcqIynYi5Z95LB5ETIgvg372abQ2LnfXlz8iS89bVTmEB0m+XSe4UXJdQn?= =?us-ascii?Q?le2IThCx6BT5M4r2etZXDXw/JAGd3aH3zcP65ONrnufRGFv71zc8A2AwSZ89?= =?us-ascii?Q?15aZWwj/MFHlcQefULOLchZWgHZuqfUavIJBX0E7HRDh3HRHXvS4qhIl2N+n?= =?us-ascii?Q?7BVSXywiztjSGZPVnl8jdoVSp8xclEPdCBzKouqkPt1Nd41n3+9Xf9jC05D9?= =?us-ascii?Q?1VjJxAPqtqn5b5EVRlrYX4D64woEZcLbXindA/gdaR4KmGJQ6xooxg3YvijQ?= =?us-ascii?Q?2lGfVHdj7whkmf7bQqRKmZlbJZUdMADTpX6SZw5luf3GwF2A53jPPGXUfmmf?= =?us-ascii?Q?wuuEFcMU/sD+VhmIvvalGAasvcsvgy+N9tR807g70RmEjADwaT6M8OcgjwUA?= =?us-ascii?Q?t6arwNCqav9bthpAcfO+8LZ1kpF02zHiF7wSicsIggJ2qVvFHH+9zT02eTVJ?= =?us-ascii?Q?ZWe/JHJm2sgT6Ql/BqB7hQtB7FBlcP7YeRg0VXSRy8UvmC3Nle0aS8re6DJM?= =?us-ascii?Q?3JSwwsFFedNpRLIjOGiuFv7p/go8FcwLFjzAfYfL636TwkAFiXlzXreXhgTR?= =?us-ascii?Q?pmPp212zlYYdY9dao+MIAlVbwc8oWcC8pXihDxIbVpIApsorV1dEooEAoddS?= =?us-ascii?Q?t1fxZzwyEYtTqxlAV828gJgAhGpF+qGy1rHNossyyivUqSgVnSoj9k9FSB+n?= =?us-ascii?Q?aToAUpakeHK4C6g75fei26y4fxvm9VlHjV9YgI5JIPlPPQev/cGj20YrKW+5?= =?us-ascii?Q?+qCyV/T4SbqWnNdH6t0oPR6rO2GZ7TZBRaOAQDHDD70fOMFzWqjc60lQNe4S?= =?us-ascii?Q?UwruBtLN8w0hO4IyDnNxbz4mEcFckB6lEQK3FiXMhaCmfAj7usbjsWjm23GP?= =?us-ascii?Q?54+LOuGyS6wsJuoFcrlD+EULsgbf4hUpoJgaph5QGboPcRtiEnvdTTI7OxkV?= =?us-ascii?Q?ZWTW/ahtAdAbUoJQZcfNSudcnvqC9M8+nN5TTEVuNbnWrQCARIy687o6/ujO?= =?us-ascii?Q?LU3tMNUTd73hsaTgMiTXfXdMysLKLFANU9tQJZt8FgykaUPeYBGsak09RiTw?= =?us-ascii?Q?FHZD+C2a3vRAnEzUDLGYIuEyBYQULyGM5no5rgqdJbJG/onSnMJiB9ply5K8?= =?us-ascii?Q?n67lkEWSshaOSlWlm7kdNtf7DqZ7XthQogbSOthB4fAji84QkvhQGx/O3iCJ?= =?us-ascii?Q?u/PZkPOQ4e7HaG4EZDIxaYex45Tw3OaPLYfnurb+oqRsTgiC/YJL7l1TtdEL?= =?us-ascii?Q?lXdeG7yg/Nuw7qYmkR83?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77b22a22-4de4-4877-dba3-08dc1d15cf69 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 19:51:09.2829 (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: DU2P250MB0350 Subject: [FFmpeg-devel] [PATCH 2/7] avcodec/dxvenc: Fix data races with slice threading 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: The old code set a common struct from each thread; this only "worked" (but is still UB) because the values written are the same for each thread. Fix this by moving the assignments to the main thread. (This also avoids casting const away from a const AVFrame*.) Signed-off-by: Andreas Rheinhardt --- libavcodec/dxvenc.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/libavcodec/dxvenc.c b/libavcodec/dxvenc.c index 10473038cc..94e522d72b 100644 --- a/libavcodec/dxvenc.c +++ b/libavcodec/dxvenc.c @@ -130,25 +130,6 @@ typedef struct DXVEncContext { HTEntry lut_lookback_ht[LOOKBACK_HT_ELEMS]; } DXVEncContext; -static int compress_texture_thread(AVCodecContext *avctx, void *arg, - int slice, int thread_nb) -{ - DXVEncContext *ctx = avctx->priv_data; - AVFrame *frame = arg; - - if (ctx->enc.tex_funct) { - ctx->enc.tex_data.out = ctx->tex_data; - ctx->enc.frame_data.in = frame->data[0]; - ctx->enc.stride = frame->linesize[0]; - return ff_texturedsp_compress_thread(avctx, &ctx->enc, slice, thread_nb); - } else { - /* unimplemented: YCoCg formats */ - return AVERROR_INVALIDDATA; - } - - return 0; -} - /* Converts an index offset value to a 2-bit opcode and pushes it to a stream. * Inverse of CHECKPOINT in dxv.c. */ #define PUSH_OP(x) \ @@ -252,7 +233,15 @@ static int dxv_encode(AVCodecContext *avctx, AVPacket *pkt, if (ret < 0) return ret; - avctx->execute2(avctx, compress_texture_thread, (void*)frame, NULL, ctx->enc.slice_count); + if (ctx->enc.tex_funct) { + ctx->enc.tex_data.out = ctx->tex_data; + ctx->enc.frame_data.in = frame->data[0]; + ctx->enc.stride = frame->linesize[0]; + avctx->execute2(avctx, ff_texturedsp_compress_thread, &ctx->enc, NULL, ctx->enc.slice_count); + } else { + /* unimplemented: YCoCg formats */ + return AVERROR_INVALIDDATA; + } bytestream2_init_writer(pbc, pkt->data, pkt->size); -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".