From patchwork Tue Jul 26 22:07:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36976 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp232745pzb; Wed, 27 Jul 2022 02:32:12 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uSGxXfChakkDwigwvYEKyzZxhcPZy+E2EAQpxqkIDdyMoJb6JtUFQYJ3oEqGEQ7kmGhJPg X-Received: by 2002:a05:6402:5192:b0:43b:d728:d2aa with SMTP id q18-20020a056402519200b0043bd728d2aamr22607499edd.185.1658914332036; Wed, 27 Jul 2022 02:32:12 -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 fm6-20020a1709072ac600b00722d8f8fe8asi14436901ejc.422.2022.07.27.02.32.11; Wed, 27 Jul 2022 02:32:12 -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=RWIfvPoj; 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 BA1FD68B8C5; Wed, 27 Jul 2022 12:30:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073045.outbound.protection.outlook.com [40.92.73.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E6A368B87F for ; Wed, 27 Jul 2022 12:30:43 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bEt7xMw9kM7YkFS/w0hWitOZ93BRaJXck/u7MuPib9Md4wUzWX/jtJ+Ix9VoixfQ6cjUWP21MCiNkvzK8kphJZ55ZFmVysZY0cHwuEw098/mwR+o6ECVU2MiuAwmlqNXMC9lfehJPqS7d0YodAq5HKxbL2mcaQqY2O4AIjIpYTFhr8C+gihZDQ0YbnLU64NhRiXc9VZNO+fBpch/qxEtBGZx2WHWYTQbS/b2sp3sfDLG1s+TQVjsRTMexdSFyTVGMLf81MJRuYB4N0aL/CEG0HH56mxEEZKIavZr+u7uJjfnoo6Yk/uPeuZJSd1unTm/BITp1siVqvy1AJDFTpC5Wg== 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=yUQag4ycwZNJ1SMvJ9hcihduA2IewCPr4ciFFpRFWpo=; b=IeV78nUH4zaOeMzEr+o4/5K6uTovQGNbFo5FVLunjwEE8pM1Ic6ydfcl+ZOhZJzBwG72bw//6hP66KvijBOmZP5Rc08e8o+uIZ0jaOP/557WE1PyIYmcJyhgXLFUkg0hKlQa1/IhqWa9VHafb7Uwb+p7eb0LNQSjIoEX3ouJJ63LK1ujFncnzjNbq02XaByCpV6NiDH6dTbLsjGFWjjxN766QqOLXYgX6cZ2fW6cgr/xldPwVzNPdWnv9P4NN8hoPtGzfHvnLFEth4ElZKBctiiIZ5SgdxuOgI1DMq1U9KZptp4yaH6kdwHYKLTV+DDYjTovelccSxmcJ23zBR3Qfg== 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=yUQag4ycwZNJ1SMvJ9hcihduA2IewCPr4ciFFpRFWpo=; b=RWIfvPojpimjcL48PqwxBeju6iSSEhvz5tZg+8Zkwa/v9LO9JGZ0luyFZGAq3QaADVtAFs8NY+9HkX/RcVYEnR05eNmPUZr/aqJWyPHz9JDE1y13I43YKv+kh8Y7Y9y8RiKFVfPjmapKhlDqM9sC9iks8m+n3+C0jUTl2k0V2boveElSnZT8SQEUDK1myfxU3c5V83fAfAmyE5NPG/AmGsMpzmjxjKm1Tl9FilgqHNtqRYirDkEk++wYq014q0ZLLg6TNY5UUKOrzuYeA/VathR4YHkDyvslexkhRGgXPUbdDvwOtSEzEdBU9lRI/TpLwCGcqaBxgrbag+g/jE99Nw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR01MB4626.eurprd01.prod.exchangelabs.com (2603:10a6:208:eb::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.25; Tue, 26 Jul 2022 22:09:07 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5458.025; Tue, 26 Jul 2022 22:09:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Jul 2022 00:07:48 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [2Gm/W+9jnJZiIcsc5/A8W0VkGAgllv3H] X-ClientProxiedBy: FR3P281CA0157.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a2::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220726220814.695563-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1929dc0-5c09-4b1f-3f3f-08da6f5375cf X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVFHiteK4sjkXoIVF2tzJUYFFFBH7fnh260x9H3g0+rl3BIpukJUS6nR/xn9AZh7RcqwpBxqtdGBNH1b4C71ibJ2RQCIPkuDSUGI8BVVw6CUbXROCOmh+s/++w71XebSphOy+ALdgy8R5oGYnZssvr44mpldMZjh6LEMfWvYTX4QQLTuAcnRZ/kMuIrQA/GGr2+HvYmnWsySuZFMn4tktWMW8ngK6YJ0+4B4ANPS7c/tZ1+UQjZwfOKN+n3gj27raa8ZQ49ZclmanB+rRNPBmx46HwOqhFPCKt8JIRvBywGBsPqwsE4zqMJcgOlJSbWCJaMgT3CusqOpy0YCuYikQTi0WmZXPjW1m3xF+Myowid5NnJwNDqmzpk9pYBHDaEcvPdq4kP+W/ueoVS+87dr3nuEhSg5JmsMY+UWtm/xDGBqBsi/SaNvOlenbG/3imhCbj3/1eJ/G76tsTPZ7lHtugNW3W1yI58dPJnznzQWktlX6qKBlqeFz935HgSq3xlke5ntaOBHxtFdcDVAVRR8O0qDlRQSltVDeGxzqDvYJMZ3vKTkrYlg34vPLSqoemhABeIcePDlzsVU1/9uz3us3YSaFIofDQgwEHxad/RkSYSllrkZ6hx6UC8sQujOVEVn4wbD4LwquxHtP6K7cpf3ocNLTc6tM/B7l8P/y+wAzSOsF0a7YPWB0a31SQBexWE5EIvkdIDfGUrvDAnt8nCRJbC2v4HRxaYeGs= X-MS-TrafficTypeDiagnostic: AM0PR01MB4626:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: I+GtGtcwvY0hpaTEMeBDX9MY3c2nupfji9tG9TShMKdAsWWciL/KrBOL8xw9Lp7WmTPMo2n8vg9h4JWePX+ovEGS96dThtWqZZYBN56cE+oPbhkFq7nimCnX/NUNGEYzrurTlYtN4taAb6A80rjW2MyK1ZzUN7Ie6Rhq3cGP1zSTFlxa/CqC/Y8P9iN/U/mRuQ5isb8iNP5HJn3jOs1yAQUjofvie44U4CvQkckUUlIBQmZpGrKY/v9lHeOoeGt/GXjKpY4l2pSKvwHsFK2sDAzFWe82oG2EKKk/hQ5lh1KziQRmfSrLBG2JkDN1+Nfcb8gaIg/r/xr2PjUgMgNQerZv8DEiB4zYcSh87cT4npVJlt4rRER60AsRvYlGGESiaHFcgs2spO7sSSygbSvTtFMjYWgFsmJyjzkGUzMhJ/stoPhZC+oDUfJ9RkGmouYx8s8IG/EuU1N1/IFoh3LeXPYLiyE+6xaDEp8lLKEmIF+J9vutWh0uNnEbaajvYVSFLdInVqhRnAY5btW/uv/fX+yo422wnun6xqyj8Lyw6utHtVy6IvFMmiyHKhFjbOeMIBcnGyYqR8xM4MU+KILN1oAyDAzu+vrWK9WP20JsFHJu8az7bZIGPwPRBW0v+Ye9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WmzpxPe9WQq6VnauNC21DFDgxvCiEzCNGmtAi5HdgIJyD4ivDezgu98xuKw7bz1HvN4bWEfDQ1yI9SsYw03Cmwa+LfGTx3dU3/yOYlUJFsY12EY7DQdSqzZBby22rgM3AdmhCzVJEphfZaLHV/rGJffviKjoDeC03/KtDz7OlPyZ56miMqgnnAbWjPnSDdU5gh/WaUc4nnbgJlwHVKcavFWlVedxwmd+fclNvGsWi3C3DPsbinHtOMtFFRC4GdvJ8O1qgEodaWlUgUPKX1COt5hwSVkD1asBayfc8cOhuc84BVZB40f1sSwY2L5sa9CWpfpBC8gQqSdKsuZkO5wDOztsy0CVi6l+2TZrqlO2iHJ47vp2UHUZt+RYXyoaHZZjNhn1NK+zHjbofe4SNHQwn69eXKoNoCKk7/cV0MKvHVc5F3SNZYb8TFiBYkYHj9AZy63Ae1PFd0THKJVP0cyCu4qx89KyUHtguXt+q0s6lpinn6GFMMiob0UYwqv05Xg29wzCrRiAvDp1QHzJwwUEApfBfzBiIGzqfpc3o3Japj1wv2QtVdDsAuUDtrm0MUK/fTDY6QIrKERPLlxvPzb/kdRVZSMUbveivf5XcwQ5mCvJYawsiZLRKAyMBR2uD7eyfLRApiHHHmOljozRbCJH7FYqmB7bXEaTlG0ax3+fimiZatOZSeuTL1X1aHWfPlSd2OVBuO4QXnqACOZe+eei6+iih/XgSUWsz07+4MFSDkFWpk+kXMSdUoSctyMP42OfLTeY6amOWSiKqPKEX4WpEWFmyaE0vJBT9UOtYXnvKDCnHokq5pHR/vRKdpQpyO3WdESF7Uq3dbUGJNWpWP0n+VtMovFncqHG8sWXotHU3kLFJjI7WLzu6abnFAb786KLWtko67wrWqDb3hrJdZHOdpZMr803yeFxbiHIPV1Qc6/noriUyhCpWtkt17o7o4gQnocojkuqYm+KTaCAgzMaFQJa4XiMRNmAKurvVUiQgLUrLaX0rc722AO+EUgHP7z1NpoIT57jj01SrlldeEbt/cyPr7EcHa7KL4aetpsbpXBILgs/AEYxAbXYU205rNSDMcavSXTPlmhkeQqKJRG0jMu02+acW9naXio01lpS3Cui6nMGMlDAkS9RHhcUWMoX6K9pJg5GMmHuYHuoNgGEvvAdIryzaIV50QmSt4mARkN0F2NEJcHEg/c9PLgFR+ZNg4ArDLcQRHajJ83ZQ0XZ9lM9nwiEggTv+as7dvPTCrUfPPbUDxB97uDypicL04IWJ5dOe0OdejmqPXHHAXiSmPO0Sazcy3csIiyAVcts6b8= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f1929dc0-5c09-4b1f-3f3f-08da6f5375cf X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2022 22:09:07.8956 (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: AM0PR01MB4626 Subject: [FFmpeg-devel] [PATCH 13/39] avcodec/diracdec: Constify slice threads' ptr to main context 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: 6bDfZaGSmvP3 Modifying the main context from a slice thread is (usually) a data race, so it must not happen. So only use a pointer to const to access the main context. Signed-off-by: Andreas Rheinhardt --- libavcodec/diracdec.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/libavcodec/diracdec.c b/libavcodec/diracdec.c index d8fdc27b2c..aef6ab20a3 100644 --- a/libavcodec/diracdec.c +++ b/libavcodec/diracdec.c @@ -486,7 +486,7 @@ UNPACK_ARITH(10, int32_t) * Decode the coeffs in the rectangle defined by left, right, top, bottom * [DIRAC_STD] 13.4.3.2 Codeblock unpacking loop. codeblock() */ -static inline int codeblock(DiracContext *s, SubBand *b, +static inline int codeblock(const DiracContext *s, SubBand *b, GetBitContext *gb, DiracArith *c, int left, int right, int top, int bottom, int blockcnt_one, int is_arith) @@ -596,7 +596,8 @@ INTRA_DC_PRED(10, uint32_t) * Dirac Specification -> * 13.4.2 Non-skipped subbands. subband_coeffs() */ -static av_always_inline int decode_subband_internal(DiracContext *s, SubBand *b, int is_arith) +static av_always_inline int decode_subband_internal(const DiracContext *s, + SubBand *b, int is_arith) { int cb_x, cb_y, left, right, top, bottom; DiracArith c; @@ -640,13 +641,13 @@ static av_always_inline int decode_subband_internal(DiracContext *s, SubBand *b, static int decode_subband_arith(AVCodecContext *avctx, void *b) { - DiracContext *s = avctx->priv_data; + const DiracContext *s = avctx->priv_data; return decode_subband_internal(s, b, 1); } static int decode_subband_golomb(AVCodecContext *avctx, void *arg) { - DiracContext *s = avctx->priv_data; + const DiracContext *s = avctx->priv_data; SubBand **b = arg; return decode_subband_internal(s, *b, 0); } @@ -721,9 +722,9 @@ static int decode_component(DiracContext *s, int comp) return; \ } \ -static void decode_subband(DiracContext *s, GetBitContext *gb, int quant, +static void decode_subband(const DiracContext *s, GetBitContext *gb, int quant, int slice_x, int slice_y, int bits_end, - SubBand *b1, SubBand *b2) + const SubBand *b1, const SubBand *b2) { int left = b1->width * slice_x / s->num_x; int right = b1->width *(slice_x+1) / s->num_x; @@ -775,7 +776,7 @@ static void decode_subband(DiracContext *s, GetBitContext *gb, int quant, */ static int decode_lowdelay_slice(AVCodecContext *avctx, void *arg) { - DiracContext *s = avctx->priv_data; + const DiracContext *s = avctx->priv_data; DiracSlice *slice = arg; GetBitContext *gb = &slice->gb; enum dirac_subband orientation; @@ -819,13 +820,13 @@ typedef struct SliceCoeffs { int tot; } SliceCoeffs; -static int subband_coeffs(DiracContext *s, int x, int y, int p, +static int subband_coeffs(const DiracContext *s, int x, int y, int p, SliceCoeffs c[MAX_DWT_LEVELS]) { int level, coef = 0; for (level = 0; level < s->wavelet_depth; level++) { SliceCoeffs *o = &c[level]; - SubBand *b = &s->plane[p].band[level][3]; /* orientation doens't matter */ + const SubBand *b = &s->plane[p].band[level][3]; /* orientation doens't matter */ o->top = b->height * y / s->num_y; o->left = b->width * x / s->num_x; o->tot_h = ((b->width * (x + 1)) / s->num_x) - o->left; @@ -840,7 +841,7 @@ static int subband_coeffs(DiracContext *s, int x, int y, int p, * VC-2 Specification -> * 13.5.3 hq_slice(sx,sy) */ -static int decode_hq_slice(DiracContext *s, DiracSlice *slice, uint8_t *tmp_buf) +static int decode_hq_slice(const DiracContext *s, DiracSlice *slice, uint8_t *tmp_buf) { int i, level, orientation, quant_idx; int qfactor[MAX_DWT_LEVELS][4], qoffset[MAX_DWT_LEVELS][4]; @@ -917,7 +918,7 @@ static int decode_hq_slice(DiracContext *s, DiracSlice *slice, uint8_t *tmp_buf) static int decode_hq_slice_row(AVCodecContext *avctx, void *arg, int jobnr, int threadnr) { int i; - DiracContext *s = avctx->priv_data; + const DiracContext *s = avctx->priv_data; DiracSlice *slices = ((DiracSlice *)arg) + s->num_x*jobnr; uint8_t *thread_buf = &s->thread_buf[s->thread_buf_size*threadnr]; for (i = 0; i < s->num_x; i++)