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 82C7942C4E for ; Sat, 2 Jul 2022 06:32:20 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 436F068B7CB; Sat, 2 Jul 2022 09:32:16 +0300 (EEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2039.outbound.protection.outlook.com [40.92.89.39]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 930E068B501 for ; Sat, 2 Jul 2022 09:32:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mK1rzTKYSTKUdWDj9TGo37jlI06NWmfl8GCZHxOo4Ozaxo/JDnGVKFEdxr+yN7L+gTY6aNmeqlHkj4G20twI78bbaehcVQBbSbTtCmr6CvQNve3MLysXYUb0QyiERaBMIKnuk0/AW2dqIfkBEeFK5ndYUZc+z/OlUj4ODZZ9nLOvgpL2loQyc0/42iz5dwo4cujjHk8PgDs7+4w0EJChSTKEbZTz9P6xjRwMsEXPxdQjQV46RVtSbq/KrgCAVN/sD0dyHHNLHA8iPKzPiO3U9SyVsXzW3TpvtNhwsak0jE84CaHibhA0f8THGjQu/MsXQc+zAIb25CNjLycIMlQPOA== 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=qJvnxAFm/h2ksmwJwNsVLOHYb+Z7N+uPl7aLttiilGg=; b=nT7aykhki2CeiPbg7CHZi918PQa1tHLypHpZuZAiv1xMEvHBeQBwKtv04Tr6uCEBopOErw55KLpn5FjYiuAqYVP33PtX4kM2UsN27vNjsaknhmwzbPI1DSA0Mk8T4r8O9mK/xeKC10fsQpZaNhD+SQZ/RbZh6QXg/+Jh5e3n/9eNHULCrlWOTLgQkuRMLoR032l6zeyLSDjxwxxAYN6hExipCWK8Xxs7qUz1q7idA3UY5EXskJsxKNugeg/bSWw8x30eXIZFQn6Ty3Cb4sr1GxsEOlhZFqbRLzKJsp1q3LWyzdsKHU8viBkQqDlL3xLGFWwgt379zOrIp9L6hAdj5A== 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=qJvnxAFm/h2ksmwJwNsVLOHYb+Z7N+uPl7aLttiilGg=; b=hpdLlr+WLUyATk2/Ejh5ey0JvtpLUKKsgTVujvjMxdMPEffYKwrfigTHebqDzxXX4BABAwqcNFY0nkJDG088BtKL5/JdiCA65Tj0a/szms47vD1es14tEomvUoZikMyokGW1oOLWzCAS8rTq1WSRgFulsH1N3O11F9oanc5zas22Fm7GELXn1Uh4R8vfkAcOsm2EytmN02jRz9xk4uBCVQq6WVTVYNm0tte+PqM7sykpzAoGV5tsiLni2FuEToQZu3kOALC4yqXKZKtvkJWQ9hPfXotIXWRmDykUQYC53NViHhx0V1T6HrxdaiE1qHGhe+x1jh2LD4K76MYvUeDRaA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR01MB5825.eurprd01.prod.exchangelabs.com (2603:10a6:208:15b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.18; Sat, 2 Jul 2022 06:32:08 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5373.018; Sat, 2 Jul 2022 06:32:08 +0000 Message-ID: Date: Sat, 2 Jul 2022 08:32:06 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220701212511.GY396728@pb2> From: Andreas Rheinhardt In-Reply-To: <20220701212511.GY396728@pb2> X-TMN: [CSLVBMJjt7q1fErEOXAtvG7S1tpKHb7M] X-ClientProxiedBy: AS9PR06CA0382.eurprd06.prod.outlook.com (2603:10a6:20b:460::11) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <0d84d95c-f78a-a397-bca3-5859ee263900@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8b5445d3-7c98-46f1-11fd-08da5bf49664 X-MS-TrafficTypeDiagnostic: AM0PR01MB5825:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: o0+eQgqVgJb92Fxa0cbuXLUfg57/mRgQMBqMn/hzyBW1uipoBNz7OkiKNPkzNWRS/6f2LL5zV/JviJWAvHriGXBG5sKIetFUOkmgNCzdmIQfpm+9BYoiKkvmLL8J5cQsTKck6Z4tfILTgKa0VjatU9h9x4eRxut/HwHNfStIUyRnTeBNig4X4fnZtFBukUHaAKuPJ6aO/VHoRcIQD5367hCb/JTCnxAZQkWNjlGDXz1C8JTuD0jjl+eV6wPdphYorXIMta2CTYF3yBEZAcSkRfoaptO/V3q98XwsTgnRBBu/+zGm894kwz6hM26vSAzurSY60ub52lUMi/nCVVXBDkNGGATqvKpFusQUM+7qLTMts8LR2BNZ8pk/GpoH6V+utGrg9LmKkrKP1JhJ2BAMhnD9KJRZ1F74ZY5Yai5G+sX1gWMEj9aIeG55FtHt4qr83lEsaYvqXEJqHoPSuUW+4Rgf9+Ns9Qo3BfkhdKRKkX/hA/OqaKkE2wwfO7G6KbHdA4O16J3w9vjSpSvPe0d/38drGN1lDUrf56TbZnhyUJSokqrMuV5gwftfreQfD07q2N5pS2xoHRkCkguVuYFCFOFu55urxLD9ZeRj/rbSWVedQbK88HVohkmfZXYKZMFdeF7POq95BNA7N/H0qRjInA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UWVQN1JtQzlGSGpBSjdFRmZGUWhqR2xLYjl2cENhbVdiN28wT1hXQjBTR0pD?= =?utf-8?B?YTVtTjJYaFJuZzlmN3U1aG9GcTlnZWdRSEhoN1Z2THByZXZBQ3hBQTVMeVAy?= =?utf-8?B?TUpzdzFIT0x2Vm5RY1RLWEp2Q1NMc1pvNUhCRllCdjlwUUYyRGIvOXp5QndQ?= =?utf-8?B?cnJzc3pDdXN3OGFFQXZLMTdXODB5WU5CZnVVcENScTJhbm50L2xxbmw3WGlO?= =?utf-8?B?WWtzOE54dUFzdG5LSEFub0hjdnA4RjVzS25NUnZBem9zWGNQeVNwbG42TktU?= =?utf-8?B?cm1IOTNGb0IyZmI3dWExVmd5cmZoT2t4bG1nSkdNeEZOeldNLzFNRWoramx3?= =?utf-8?B?NVovQmh0VzRHSnprdXBsYlI5d3oyemFVTmM0cGJTa09pQkVMM0VxY0J2UzNK?= =?utf-8?B?NTdKeEY2TjBIOUFqckhyc0dGeWxRZHlCa2V2cThmbmh6T1NUWHBVR2QxZnNG?= =?utf-8?B?cElNYXE1SkJXaWhjeHJGSU9qbUhKaDBsMUNEd2FaYU1MVWV6YmpjMWVVdmRl?= =?utf-8?B?bWNmRG5QVWhRMldHd0IvRFVyQml6blZVZHY2SisxcFhQTXZyWWY3Y1JzL0h2?= =?utf-8?B?U1B1RkgxV2dPU3ZLazBWQ0QvWFhyM1MxYlJMQ0x4RFRpcHMxQno0dDAyVitQ?= =?utf-8?B?SjRYd3VGTEFpdVRGTE1IT0hjanFPS0ZWQ2NJeGZrRU9xaStxREhZTVNyVEpG?= =?utf-8?B?Q2kyRHFBOGlwbTJuVTJlb28xc0ZTV0k2ZFEwWEc5c1VyUkg0N2ZkcElsc01L?= =?utf-8?B?YVBzWi9SVHZNWEh1SFVpQVVCQmUySTJsZS96Y2lQWXdvT3FWc25WOHpSY1pn?= =?utf-8?B?aGpyS3o5L3BZZFc5MGtsbEcwbmhuWllMNm91R3JKRDA2QU1rd2ZhT3RPM2Qz?= =?utf-8?B?d0tnRURjU0JEWDVndU1wWVJuU09zU1lBdTZUSHVzSmEvM3BPcnFxejdSMHdM?= =?utf-8?B?cCtpb0Z4TlRjQlBHd0RHeURmZmlXc1k3TmNpMGRpT0wvMnpxNnJrM0thd0ZT?= =?utf-8?B?dFlYNlQ3L0FvS3VWZ0lzRTRjNXJlcCs5eDhScU5QaGczRUdwUUQrWG43ZkJB?= =?utf-8?B?UTFaT0F6Z0hFV24xWlNFajRyWWt4cXlTemp2L3o2YldsUW5qeTFJUEN2L01S?= =?utf-8?B?V2tDNUowbU9lVWV0Q3RwZEptL2V3UnpvWkU0U2lYTnNEbTBRTFVwUDV5ZVlU?= =?utf-8?B?OHIzMy9jbGNTRytTRFdkemwwMFcwSzJ5cFVoUlR5ZlAzZHFscFd2bVhRQUNq?= =?utf-8?B?aG1xdE8rb05zQ20xZHFUcFBkaWhNR2VYczg4cVBWS3BVSS8zd3htVUJEU0Nm?= =?utf-8?B?VEZUdWRnV1pESndRMFFDbGh5Mko3L2ZLVXFwWm1aY3E3QlZQQVM2VmozZmlK?= =?utf-8?B?UDMySjhPOUFYVklXM0l3QWhrOEFTZG8rSXJFdVBlSmNnbEoxM2dPd1QvZjBL?= =?utf-8?B?bXVDdG1BU0VmVlhqeFBiL2JDUnRVZG1NLzI1dDhGVFRyY3dOaWlxSGJ3SkV5?= =?utf-8?B?elJ0ekRrd3NhVFJJUkNRTU9qQWpaZUEwczVGZnZOMngybWxURmRZdHZNVko3?= =?utf-8?B?Z0lnc1JHRm4yNG1KTllUMVlwOXZ5RnMxa3VoZk8xellBejJ0U21YK0p3NGdS?= =?utf-8?B?L21TcDNvOUNCVGpscDFTclczcXBNUFF1d216cmQzOEoxaUNtWG5ydE9IRG05?= =?utf-8?B?S0NNdXByNG9LL1RnckhkQnM0Tk5weFVCcWFwTSs5ZmZIVHFQTnFVL3NpQ1h0?= =?utf-8?Q?yuQPksdDK+6TCKFhkM=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b5445d3-7c98-46f1-11fd-08da5bf49664 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 06:32:08.3540 (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: AM0PR01MB5825 Subject: Re: [FFmpeg-devel] [PATCH 14/18] avcodec/hevcdec: Don't allocate redundant HEVCContexts 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 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: Michael Niedermayer: > On Fri, Jul 01, 2022 at 12:29:45AM +0200, Andreas Rheinhardt wrote: >> The HEVC decoder has both HEVCContext and HEVCLocalContext >> structures. The latter is supposed to be the structure >> containing the per-slicethread state. >> >> Yet up until now that is not how it is handled in practice: >> Each HEVCLocalContext has a unique HEVCContext allocated for it >> and each of these coincides except in exactly one field: The >> corresponding HEVCLocalContext. This makes it possible to pass >> the HEVCContext everywhere where logically a HEVCLocalContext >> should be used. And up until recently, this is how it has been done. >> >> Yet the preceding patches changed this, making it possible >> to avoid allocating redundant HEVCContexts. >> >> Signed-off-by: Andreas Rheinhardt >> --- >> libavcodec/hevcdec.c | 40 ++++++++++++++++------------------------ >> libavcodec/hevcdec.h | 2 -- >> 2 files changed, 16 insertions(+), 26 deletions(-) >> >> diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c >> index 9d1241f293..048fcc76b4 100644 >> --- a/libavcodec/hevcdec.c >> +++ b/libavcodec/hevcdec.c >> @@ -2548,13 +2548,12 @@ static int hls_decode_entry_wpp(AVCodecContext *avctxt, void *hevc_lclist, >> { >> HEVCLocalContext *lc = ((HEVCLocalContext**)hevc_lclist)[self_id]; >> const HEVCContext *const s = lc->parent; >> - HEVCContext *s1 = avctxt->priv_data; >> - int ctb_size = 1<< s1->ps.sps->log2_ctb_size; >> + int ctb_size = 1 << s->ps.sps->log2_ctb_size; >> int more_data = 1; >> int ctb_row = job; >> - int ctb_addr_rs = s1->sh.slice_ctb_addr_rs + ctb_row * ((s1->ps.sps->width + ctb_size - 1) >> s1->ps.sps->log2_ctb_size); >> - int ctb_addr_ts = s1->ps.pps->ctb_addr_rs_to_ts[ctb_addr_rs]; >> - int thread = ctb_row % s1->threads_number; >> + int ctb_addr_rs = s->sh.slice_ctb_addr_rs + ctb_row * ((s->ps.sps->width + ctb_size - 1) >> s->ps.sps->log2_ctb_size); >> + int ctb_addr_ts = s->ps.pps->ctb_addr_rs_to_ts[ctb_addr_rs]; >> + int thread = ctb_row % s->threads_number; >> int ret; >> >> if(ctb_row) { >> @@ -2572,7 +2571,7 @@ static int hls_decode_entry_wpp(AVCodecContext *avctxt, void *hevc_lclist, >> >> ff_thread_await_progress2(s->avctx, ctb_row, thread, SHIFT_CTB_WPP); >> >> - if (atomic_load(&s1->wpp_err)) { >> + if (atomic_load(&s->wpp_err)) { >> ff_thread_report_progress2(s->avctx, ctb_row , thread, SHIFT_CTB_WPP); > > the consts in "const HEVCContext *const " make clang version 6.0.0-1ubuntu2 unhappy > (this was building shared libs) > > > CC libavcodec/hevcdec.o > src/libavcodec/hevcdec.c:2574:13: error: address argument to atomic operation must be a pointer to non-const _Atomic type ('const atomic_int *' (aka 'const _Atomic(int) *') invalid) > if (atomic_load(&s->wpp_err)) { > ^ ~~~~~~~~~~~ > /usr/lib/llvm-6.0/lib/clang/6.0.0/include/stdatomic.h:134:29: note: expanded from macro 'atomic_load' > #define atomic_load(object) __c11_atomic_load(object, __ATOMIC_SEQ_CST) > ^ ~~~~~~ > 1 error generated. > src/ffbuild/common.mak:81: recipe for target 'libavcodec/hevcdec.o' failed > make: *** [libavcodec/hevcdec.o] Error 1 > > thx > Thanks for testing this. atomic_load is indeed declared without const in 7.17.7.2: C atomic_load(volatile A *object); Upon reflection this makes sense, because if atomics are implemented via mutexes, even a read may involve a preceding write. So I'll cast const away here, too, and add a comment. (It works when casting const away, doesn't it?) - Andreas _______________________________________________ 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".