From patchwork Tue Jul 26 22:07:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36992 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp233929pzb; Wed, 27 Jul 2022 02:35:08 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vHU5Y7VFbIeAtwMxRnDdeCvOadw2H4HQm/RsxQGlsjmdVTS1eE2nDNzt+GhiSBJsRQcR07 X-Received: by 2002:a05:6402:40cb:b0:43b:e909:f7cc with SMTP id z11-20020a05640240cb00b0043be909f7ccmr16948712edb.111.1658914508151; Wed, 27 Jul 2022 02:35:08 -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 s17-20020a170906285100b006feb76dbd51si15450379ejc.289.2022.07.27.02.35.07; Wed, 27 Jul 2022 02:35:08 -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=HzRQVmgL; 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 B73F168B909; Wed, 27 Jul 2022 12:31:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2020.outbound.protection.outlook.com [40.92.90.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C04BB68B909 for ; Wed, 27 Jul 2022 12:31:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f+kib+P4SrsjDwbZqdSRrBRCh83EMGJMiJgCX1TURgI26UvNnD99eNOCIgPZ/e+Dz1fPXFkIUG/Z+CsIf24YwGyMjHxt6/okucsxw+9Wj3UXW7NddGnVFxJd/BKwSG/2vXa50NpvTyYXOd4HaNy9sQHPcz+FV75RGaGx9+CpLJV7/gfHmMWrtFpzr1zKDh1HxDVYooJMLlKJhMxvllWqK6THIWb6LS0OV9DjDlz7tfNpbedVaoWhPdFXwN1VgxBgwGnZPcxcJtLYXyEBMhNo5/e+qUoKarWMhaxC+BD5Vn3/dmY574UiquEb4iAylUq7wXRqGig86RtlCWoEf51SvA== 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=KOG+jz1ofXj4g/EnJBGmb6l8krBCI3cbhblJpVWK/nU=; b=FhMqeoBXemOGMiQE8yQQviBNssf8zKl2ItN28u4Jg99/uA7BX6K1P3uAreHs+s+gREs2H+XIrAYt6KEJfVMRDXCMkEpRNV3QZLwJU3UXxy0AVUbjuHaKOJNTfvtJyJP1wXPqPQJWgHa20nt6QuPnohAFZhZH9WsKOuw/nqWYa+pFWP8AID9QKBxlDMb821aFrOarxei0EzJFysHm4qP8ukPfwEdy6gAFM0vMrIT9MB7XqTFW1Pu0JrsA8COE1h4xwJsLSvkJ5cYmDRXpuwAmuO6sR30FIOpA/PmAJX8kYqe5zADtgmMGaQzN1QNiM32wLei0eA3p1bu0WW+9OmIOdA== 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=KOG+jz1ofXj4g/EnJBGmb6l8krBCI3cbhblJpVWK/nU=; b=HzRQVmgL5QoDq1Hib/w3D5fB8PG5sxnHCmfQV5huSF0eRE2QhgqopEbdHV2le28z6IRlRWHCgmPvIDnJten+R0xHgT5UCB45c4AASmI/LQqJIuf8xOKf03575UJcr18OJ0ATStdGOtfOzYjyKhuH/kEzNy2rKaa1idErZEK0NpxvZudhl7P9NWLRq36WO8a+VdBL06WVI4wAKKXqkk+B+U8FkR395nRB9AbslnZtKZOartH63MJ2P1fGuL8Qqo1VUzh6rIOW/ohCjRBFPEmqfk7BJn4JKSKt6ox9PHk3efl6greI+gN+tr/Yojnh2bOImavbrqaVJ3VHT+E5CkueoA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB9PR01MB9174.eurprd01.prod.exchangelabs.com (2603:10a6:10:366::8) 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:10 +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:10 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Jul 2022 00:07:50 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [QAOPfD7zFzMEQQYq6O9evyXItQUBxl0Y] 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-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d591ca2-b50b-4d6c-2562-08da6f537762 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVFHiteK4sjkXoIVF2tzJUYFFFBH7fnh260x9H3g0+rl3BIpukJUS6nR/xn9AZh7RcqwpBxqtdGBNH1b4C71ibJ2RQCIPkuDSUEkKPh6kROVrenOMl2ABSTGRy3L6/EobMNUsyBUdg/IgmyWdNSvDPRiKDUbLFj0XLvvEdFgZ+eO3U3RGsYk4Tj6VzrEbxWT2YCS9wgCSb2PyMcHdTvY9FPMBaEzrmaz8W3mGtdoao/Mpc1JBtIO01Hws6zmphFPNk0VuaS3ziL/jkBH7LKn5mF+hZSZ36Ui1OVr2G5kurm8vcvOnjST5pC91f/maIZz7vNVQd+wDdkpdNCPYS67WMzJn12IY2QJpaLDldLSCZb3vAumC1XeANIIbPwBc33eafLaoCvukoJb7ohJ8B6T+poDdtt6/j3QhwlLfDoHfJCn6MqtF5G6M9OWdDCPGAaRXetUXiM6v3kd94XGEmb9uyCY619zYUocsmiOyrU5r8LNVSIrpbYkB/XgRwGcIwJKOTOvDgnzjTr7ZQQv3hE5996F91+BCsagaYB5rkQoNErhkRHLKsCvnoGKwOQeTfEEIs7Fg28ZbpF1vB7LBn32Sb2Bn6zdIkK87ciX6P9AWYukZXT16Zyo7RQcbwO3FOZ7Ys5yD2PzS4wQU6icRnNDP8Bo5mjJo0cW2jlT1awkbVJdBG+18Cqvf58j550jLCxMIhXbl6otFtGc9sg4QXlFtyB9Ni1x0KwLqU= X-MS-TrafficTypeDiagnostic: DB9PR01MB9174:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ma872WvmZZJAQ50EaKvoubVOYYt1+C8pHd7fV+crBY71XjtsiEHXKkW3cyCEs9pJvI4W09+ycmEdZHrkd/+mKtYeIukCkS/Yn+yZYxlmqt0YBZNvJPCGU0Hva8y2/TCRphnG15OJ4vS0wqqGW3V/PspaF6bGqpuPt+4oVXdqtkUhSQwHugVCz4Q+eS21Rh5/KdGeATeNe/sD7W+fNr132knEo9GhJeroWUQ25b/ct2kg/qyKoRKpnvIiQfUmLDJ1/UuuVTBs1UUJznJL95FWbOveQs0GDdDpVzdJdschA0kfEeOM4r+yzAts+6xHV6hfnIIWGwH2+CdsBQbLD+YYRIlshq1p13K0rNYQL0BNeRu/uuZAz/5qyg55LiGcjXDYbNeA9Q6mq+yYjXKQ3f/2jm9h+bvdstP/ifAe+GeT8AEQU8x22LH208tseGCHtowj2PuOZLonsCW6PaNHK+wil2qZ6ABEecDVHRQwIQK7MI1LUIhudjvnyLRaP55hShkeHTLMG2AcGdOjO+zjq9dhHU7eZom2COBnM55XVdiZ2gHr/0/MhGCmaBogO/+EMUdLmRVIjHXAkBoJsiYZ7+m98CYqED2WIu/8RQMfLuNoNGES5QGkg79AUtlrjpgr6KtO3rGjKjHoBVAyUVbhRJXKeQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: a6WRORAOJ9EBoQx8DSewtkfp6Ok7hBZQt3EUtKTKFfW43CsEhwoELahXkvoRJSH5Mnulu6yAE6ocXXuJhsohE0b/1rw99MQZ8S7MJ/d3497uFAxSbROhYz5oEbVR1WwNYoVimDH1cPwmvZfm3neogO6uni8ak417iGbTmE48sqFEXvesqMgiL9eU61MRAAXuweXARgwhncEXXUtQ2SRIS9est/5kQO9byHiKv/ilrB7wX2gvSOlo85hURj1EQ0QcSYHQxRjrwZEwxQEdGhkHNd7pWuFHZkO9lDIGe1T5Kuj/qimbDNsZJlaMnILyPCCgetnBM1mfbZmbo6J1a1CxngY6xRNQLgvBHYn9yy7JXStat8t16yBgvaxQ0eCd3Z7tW1ifRJOyfBikidoQgDJi0zxklsNfKFkae7yFsDGQw9zNtcar3yv0usvZGQkxumIKMrJMwMqKK311PchibGZ1woGGAaM11SrQaKxvPfie2prfCahMJ40rQ5eMKJyLtWbz2L0UYgcOhwVX4jvqq8lB5NkQpT7MyVmKrrV10Q0GJcVm/XicR1e2AMps3yM1eELl+3CpPHEyho9fE1zL9BA/oBcD0LGvfaEDwMxPwh7U/8mXojzfPzWDDfd2dLk3dDI0xB7uD/2FHEO2VqDZJK6GKY2Wo8crHjWPL0fgU1OrsRSJaz9W3/w5akAmCNypGsD6+uip7OVflMHgmUyahsKTqWyCtzM7xNa1RsCRAnPNW4nCWRMQzQ+ygbNRoY9ZBx1G6dsbQaeeU7ypaA5fjN2lL11Zku0YI7mfRuXugtx0+9PRhL12aVjKZFQ8KKLv8c+/yMuxdwo6M3FarNs1RvDmheYMe4mVDrM4Hfluv/ge0ctdTuLaM6yzpKGMPOr3/3FIL3BTHQqL+Zebc5obGt2/6Rq5XUEza3YuId+yoYswKxLL9fq30/D7uRfOg00aGztYqax68qJ1L4J5AfhHLAjGUZoLo8sSPwLAqtfhsPjex3X0q+6EyKQnw22wCg39aAqlF39ZQe6+91XFsIL0Yw1Ul2ChO59AaMfhdCkWwoQsJ9DtxaVqcqjgGX1VCqGa/oCwXfYvXY2B5Hn/zeDraBpy81VGqZjtVs/GF/HoQfELXRvPK2UxjFkQZWhr+UIwUCaKmb6kdoTGMBKF26NduisLnAg6G5mftNaVVLaQUBLnxvzoG6zYjCG23pKUssy0KU5+00w3EFcZ+yDZfr6qd3O0UHfnzxmx4/cAhpLyDSuqasYDOARsCTUpGEyA0a0Xce5AHBstHrNnhygVg2GLGwyHvUnR4AnlZIO0sry1hnIsBIU= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d591ca2-b50b-4d6c-2562-08da6f537762 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:10.4892 (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: DB9PR01MB9174 Subject: [FFmpeg-devel] [PATCH 15/39] avcodec/exr: 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: ND1YBFDUBS3c 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/exr.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/libavcodec/exr.c b/libavcodec/exr.c index e4b66a08ac..3a6b9c3014 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -196,7 +196,7 @@ typedef struct EXRContext { uint16_t offsettable[64]; } EXRContext; -static int zip_uncompress(EXRContext *s, const uint8_t *src, int compressed_size, +static int zip_uncompress(const EXRContext *s, const uint8_t *src, int compressed_size, int uncompressed_size, EXRThreadData *td) { unsigned long dest_len = uncompressed_size; @@ -255,7 +255,7 @@ static int rle(uint8_t *dst, const uint8_t *src, return 0; } -static int rle_uncompress(EXRContext *ctx, const uint8_t *src, int compressed_size, +static int rle_uncompress(const EXRContext *ctx, const uint8_t *src, int compressed_size, int uncompressed_size, EXRThreadData *td) { rle(td->tmp, src, compressed_size, uncompressed_size); @@ -365,7 +365,7 @@ static int huf_unpack_enc_table(GetByteContext *gb, return 0; } -static int huf_build_dec_table(EXRContext *s, +static int huf_build_dec_table(const EXRContext *s, EXRThreadData *td, int im, int iM) { int j = 0; @@ -440,7 +440,7 @@ static int huf_decode(VLC *vlc, GetByteContext *gb, int nbits, int run_sym, return 0; } -static int huf_uncompress(EXRContext *s, +static int huf_uncompress(const EXRContext *s, EXRThreadData *td, GetByteContext *gb, uint16_t *dst, int dst_size) @@ -588,7 +588,7 @@ static void wav_decode(uint16_t *in, int nx, int ox, } } -static int piz_uncompress(EXRContext *s, const uint8_t *src, int ssize, +static int piz_uncompress(const EXRContext *s, const uint8_t *src, int ssize, int dsize, EXRThreadData *td) { GetByteContext gb; @@ -674,7 +674,7 @@ static int piz_uncompress(EXRContext *s, const uint8_t *src, int ssize, return 0; } -static int pxr24_uncompress(EXRContext *s, const uint8_t *src, +static int pxr24_uncompress(const EXRContext *s, const uint8_t *src, int compressed_size, int uncompressed_size, EXRThreadData *td) { @@ -809,7 +809,7 @@ static void unpack_3(const uint8_t b[3], uint16_t s[16]) } -static int b44_uncompress(EXRContext *s, const uint8_t *src, int compressed_size, +static int b44_uncompress(const EXRContext *s, const uint8_t *src, int compressed_size, int uncompressed_size, EXRThreadData *td) { const int8_t *sr = src; int stay_to_uncompress = compressed_size; @@ -833,7 +833,7 @@ static int b44_uncompress(EXRContext *s, const uint8_t *src, int compressed_size for (iY = 0; iY < nb_b44_block_h; iY++) { for (iX = 0; iX < nb_b44_block_w; iX++) {/* For each B44 block */ if (stay_to_uncompress < 3) { - av_log(s, AV_LOG_ERROR, "Not enough data for B44A block: %d", stay_to_uncompress); + av_log(s->avctx, AV_LOG_ERROR, "Not enough data for B44A block: %d", stay_to_uncompress); return AVERROR_INVALIDDATA; } @@ -843,7 +843,7 @@ static int b44_uncompress(EXRContext *s, const uint8_t *src, int compressed_size stay_to_uncompress -= 3; } else {/* B44 Block */ if (stay_to_uncompress < 14) { - av_log(s, AV_LOG_ERROR, "Not enough data for B44 block: %d", stay_to_uncompress); + av_log(s->avctx, AV_LOG_ERROR, "Not enough data for B44 block: %d", stay_to_uncompress); return AVERROR_INVALIDDATA; } unpack_14(sr, tmp_buffer); @@ -868,7 +868,7 @@ static int b44_uncompress(EXRContext *s, const uint8_t *src, int compressed_size target_channel_offset += 2; } else {/* Float or UINT 32 channel */ if (stay_to_uncompress < td->ysize * td->xsize * 4) { - av_log(s, AV_LOG_ERROR, "Not enough data for uncompress channel: %d", stay_to_uncompress); + av_log(s->avctx, AV_LOG_ERROR, "Not enough data for uncompress channel: %d", stay_to_uncompress); return AVERROR_INVALIDDATA; } @@ -886,7 +886,7 @@ static int b44_uncompress(EXRContext *s, const uint8_t *src, int compressed_size return 0; } -static int ac_uncompress(EXRContext *s, GetByteContext *gb, float *block) +static int ac_uncompress(const EXRContext *s, GetByteContext *gb, float *block) { int ret = 0, n = 1; @@ -986,7 +986,7 @@ static float to_linear(float x, float scale) } } -static int dwa_uncompress(EXRContext *s, const uint8_t *src, int compressed_size, +static int dwa_uncompress(const EXRContext *s, const uint8_t *src, int compressed_size, int uncompressed_size, EXRThreadData *td) { int64_t version, lo_usize, lo_size; @@ -1181,7 +1181,7 @@ static int dwa_uncompress(EXRContext *s, const uint8_t *src, int compressed_size static int decode_block(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr) { - EXRContext *s = avctx->priv_data; + const EXRContext *s = avctx->priv_data; AVFrame *const p = s->picture; EXRThreadData *td = &s->thread_data[threadnr]; const uint8_t *channel_buffer[4] = { 0 };